查看: 8000|回复: 6

[教程] 机器人操作系统 ROS使用Arduino

[复制链接]
1、安装 Arduino IDE 开发环境
sudo apt-get install arduino

2、执行下面的命令让你的账户能打开串口
sudo adduser 你的登陆名 dialout

3、连接你的Arduino设备,进行测试
如果你的Sketch的Tool > Port 菜单不为灰色的话,选中他,然后你的Arduino可以正常使用了。

4、下载 ASCIITable 例子程序,打开串口终端有输出字符说明下载程序和通信都没有问题。

5、 安装ROS相关包
sudo apt-get install ros-indigo-rosserial-arduino
进入rosserial-arduino 目录
cd /opt/ros/indigo/share/rosserial_arduino
执行 一个Python脚本,将/rosserial_arduino 下面的 ros_lib 这个库拷贝到Arduino 的sketchbook/libraries/
./make_libraries.py ~/sketchbook/libraries/
sketchbook 的位置你可以查看arduino IDE 界面上的 文件  -  参数设置 -程序库位置

6、测试ros_lib  下面的任意一个例子看看是否可以下载成功。

7、第一个程序
从下列工程中找到example5_1.ino
https://github.com/AaronMR/Learn ... e5_1/example5_1.ino

编译并上传到你的Arduino

在你的终端分别运行下列命令:
roscore  

终端2 (注意ttyACM0的设备名可能根据你使用的Arduino不同而不同,可以用Sketch确认)
rosrun rosserial_python serial_node.py /dev/ttyACM0

终端3
rostopic echo /chatter  


然后你就会从终端3上得到以下Log的循环输出
    data: chapter4_tutorials  
    ---  
    data: chapter4_tutorials  
    ---  
    data: chapter4_tutorials  
    ---  
    data: chapter4_tutorials  
    ---

8、第二个程序
example5_1相当简单易懂我们就不再做说明,现在来看一下example5_2
https://github.com/AaronMR/Learn ... e5_2/example5_2.ino

终端1和终端2的命令不变

在程序里,我们可以看到只要接收到/toggle_led topic的消息,我们就会改变红色LED的明亮状态。

    void messageCb( const std_msgs::Empty& toggle_msg){  
      digitalWrite(13, HIGH-digitalRead(13));   // blink the led  
    }  
      
    ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );  


所以在终端3中我们的命令是
rostopic pub toggle_led std_msgs/Empty -r 0.5
0.5Hz即每2秒发送一个空命令。随着终端3的命令,我们可以看到Arduino的LED周期性的闪烁了。

也可以发送一次 命令 让LED单独做一次反转
rostopic pub toggle_led std_msgs/Empty -1

大连林海  初级技神

发表于 2015-4-9 10:51:22

好高深 看不懂 嫩不能通俗的解释一下
回复 支持 反对

使用道具 举报

Jackie_Hao  见习技师

发表于 2015-12-6 23:28:01

这个是在什么系统下操作的?
回复 支持 反对

使用道具 举报

bobo  NPC
 楼主|

发表于 2015-12-15 14:41:54

Jackie_Hao 发表于 2015-12-6 23:28
这个是在什么系统下操作的?

Ubuntu系统
回复 支持 反对

使用道具 举报

Geemi  版主

发表于 2015-12-18 10:20:22

求图文教程
回复 支持 反对

使用道具 举报

凌风清羽  版主

发表于 2016-6-30 21:06:16

学习一下
回复 支持 反对

使用道具 举报

alientg  见习技师

发表于 2016-7-6 10:01:00

请问这个ROS能不能在机器人漫步的时候能收到传感器的反馈从而微改变漫步?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4 Licensed

QQ