ROS Learning-018 Arduino-For-ROS-003 (总结篇) 模板程序 即 如何运行

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

搞定

原文地址:https://www.cnblogs.com/aobosir/p/5928565.html