您的位置:首页 > 产品设计 > UI/UE

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

如果你还没有搭建ROSArduino之间的连接关系的话, 请参考 这篇博客:搭建 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


搞定

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu linux arduino ros indigo