37728| 8
|
[教程] 机器人操作系统 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 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed