bobo 发表于 2015-4-1 11:32:15

机器人操作系统 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 发表于 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能不能在机器人漫步的时候能收到传感器的反馈从而微改变漫步?

发表于 2019-9-3 16:20:59

太深奥了,求入门教程

Arcanum 发表于 2020-10-30 17:07:12

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

LINUX系统
页: [1]
查看完整版本: 机器人操作系统 ROS使用Arduino