ROS Learning-018 Arduino-For-ROS-003 (总结篇) 模板程序 即 如何运行
2016-09-06 23:59
459 查看
Arduino For ROS-003 — (总结篇) 模板程序 即 如何运行
我的Ubuntu系统:Ubuntu 14.04.10 TLS 32位Arduino的版本:Arduino 1.6.11 Linux 32位
Arduino 板子的型号:Arduino UNO R3
使用 的ROS版本:ROS Indigo
如果你还没有搭建ROS与Arduino之间的连接关系的话, 请参考 这篇博客:搭建 ROS 和 Arduino 相连接的开发环境 ,进行搭建。
一. 下面,我来总结一下:如何写 Arduino For ROS 的程序
下面的步骤,就是编写 Arduino For ROS 程序的模板,即大概步骤。1 . 下面的头文件必须要有:
#include <ros.h>
2 . 并定义一个 ROS Node Handle :
ros::NodeHandle nh;
3 . 同时添加你需要发布( 或订阅 )的话题中消息类型 头文件:e.g.
#include <std_msgs/String.h> #include <tf/transform_broadcaster.h> #include <rosserial_arduino/Adc.h>
4 . 同时定义相关消息变量:
std_msgs::String str_msg; tf::TransformBroadcaster broadvaster; rosserial_arduino::Adc adc_msg;
5 . 定义发布器:
ros::Publisher chatter(“chatter”, &str_msg);
6 . 定义订阅器 和 编写回调函数:
void servo_cb(const std_msgs::Uint16& cmd_msg){ //自定义 } ros::Subscriber<std_msgs::Uint16> sub(“servo”, servo_cb);
7 . 在
setup()函数中初始化ROS Node Handle,并给它添加你定义的发布器:
void setup(){ nh.initNode(); nh.advertise(chatter); }
8 . 在
loop()函数中, 更新数据:
void loop(){ char hello[13] = “hello world!”; //获取数据 str_msg.data = hello; chatter.publish(&str_msg); nh.spinOnce(); }
二. 如果运行 Arduino For ROS 的程序:
运行,一共是两大步:第一步:
将程序烧写到 Arduino 板子上。请参考这篇博客:Ubuntu/Linux 系统下,如何给Arduino板子烧写程序第二步:
在 电脑上, 分别开3个终端,执行下面的命令:1 . 启动 ros 主程序节点:
roscore
2 . 启动 ros 串口监视节点:
rosrun rosserial_python serial_node.py /dev/ttyACM0 # 这个 /dev/ttyACM0 端口根据你的事情情况进行修改 # rosrun rosserial_python serial_node.py [端口名]
3 . 这个命令就要根据你程序的情况而定了。比如对于 上一篇博客 来说,这个命令就是: 监听
/chatter话题:
rostopic echo /chatter
搞定
相关文章推荐
- ROS Learning-018 Arduino-For-ROS-003 (总结篇) 模板程序 即 如何运行
- ROS Learning-017 Arduino-For-ROS-002 第一个程序: Hello World
- ROS Learning-017 Arduino-For-ROS-002 第一个程序: Hello World
- 如何调用一个程序,等待运行结束,并知晓程序运行成功与否:ShellExecuteEx;WaitForSingleObject;GetExitCodeProcess(C代码)
- Arduino 003 Ubuntu(Linux) 系统下,如何给板子烧写程序
- 《HBase in Action》 第三章节的学习总结 ---- 如何编写和运行基于HBase的MapReduce程序
- 如何在Intel伽利略上运行Arduino程序
- Arduino上运行ROS的helloword程序『已解决』
- Ubuntu下在Eclipse IDE for C/C++ Developers中如何运行C语言的GTK程序?(已解决)
- Android for Java - Eclipse开发Android程序如何在手机上运行
- Arduino 003 Ubuntu(Linux) 系统下,如何给板子烧写程序
- 如何调用一个程序,等待运行结束,并知晓程序运行成功与否:ShellExecuteEx;WaitForSingleObject;GetExitCodeProcess(C代码)
- 紧急求助国内外大侠:如何编写程序得到正在运行的ppt的当前页码和运行时间?
- 如何使自己的程序只运行一次
- 如何编写、保存、运行VML程序
- 如何在子目录中很好的运行asp.net程序?
- 如何在运行时切换WinForm程序使用的语言?
- NUnit2.2如何运行.net2.0beta2(or higher)程序
- 如何组织编写模板程序
- 如何运行JasperReport的例子程序