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

搞定

ROS Learning-018 Arduino-For-ROS-003 (总结篇) 模板程序 即 如何运行的更多相关文章

  1. Arduino可穿戴教程之第一个程序——上传运行程序(四)

    Arduino可穿戴教程之第一个程序——上传运行程序(四) 2.4.5  上传程序 现在所有Arduino IDE的设置都完成了,我们就可以将示例程序上传到板子中了.这非常简单,只需要单击如图2.45 ...

  2. ROS Learning-016 Arduino-For-ROS-001 搭建 Arduino 和 ROS 之间相连接的开发环境

    Arduino For ROS-001 - 搭建 ROS 和 Arduino 相连接的开发环境 我的Ubuntu系统:Ubuntu 14.04.10 TLS 32位 Arduino的版本:Arduin ...

  3. (二)ROS系统架构及概念 ROS Architecture and Concepts 以Kinetic为主更新 附课件PPT

    第2章 ROS系统架构及概念 ROS Architecture and Concepts PPT说明: 正文用白色,命令或代码用黄色,右下角为对应中文译著页码. 这一章需要掌握ROS文件系统,运行图级 ...

  4. SLAM+语音机器人DIY系列:(二)ROS入门——4.如何编写ROS的第一个程序hello_world

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  5. ROS学习手记 - 8 编写ROS的Publisher and Subscriber

    上一节我们完成了 message & srv 文件的创建和加入编译,这次我们要玩简单的Publisher 和 Subscriber 要玩 Publisher 和 Subscriber, 需要具 ...

  6. ROS学习手记 - 7 创建ROS msg & srv

    至此,我们初步学习了ROS的基本工具,接下来一步步理解ROS的各个工作部件的创建和工作原理. 本文的详细文档:http://wenku.baidu.com/view/623f41b3376baf1ff ...

  7. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters

    上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameters 我不理解为何 ROS wiki 要把service与parameter放在一起介绍, 很想分 ...

  8. ROS学习笔记一(ROS的catkin工作空间)

    在安装完成ROS indigo之后,需要查看环境变量是否设置正确,并通过创建一个简单的实例来验证ROS能否正常运行. 1 查看环境变量 在ROS的安装过程中,我们执行了如下命令:(此命令就是向当前用户 ...

  9. ROS学习笔记一:ROS安装与测试

    1 Ubuntu和ROS版本的对应关系 Ubuntu 和 ROS 都存在不同的版本,其对应关系如下: 注:如果Ubuntu版本和ROS版本不对应的话,安装就不会成功了- 笔者安装的是Ubuntu14. ...

随机推荐

  1. Mybatis 接口方式对数据的增删改查 一对一关联查询

    数据库中有两个表 student 和studentInfo student表中的字段和数据 studentInfo表中的字段 ok数据库说完了,开始建立一个项目,对数据库中的数据进行操作吧 新建jav ...

  2. JavaUtil_10_joda-time_用法入门

    二.参考资料 1. Joda-Time 2.jodaTime 的使用说明 3.强大易用的日期和时间库 Joda Time

  3. skynet源码阅读<5>--协程调度模型

    注:为方便理解,本文贴出的代码部分经过了缩减或展开,与实际skynet代码可能会有所出入.    作为一个skynet actor,在启动脚本被加载的过程中,总是要调用skynet.start和sky ...

  4. The Sum of 0 for four numbers(拆解加二分思想)

    个人心得:单纯用二分法一直超时,后面发现我的那种方法并没有节省多少时间,后面看了大神的代码,真的是巧妙, 俩个数组分别装a+b,c+d.双指针一个指向最后,从第一个开始想加,加到刚好大于0停止,再看是 ...

  5. 常用Request对象获取请求信息

    Request.ServerVariables(“REMOTE_ADDR”) ‘获取访问IPRequest.ServerVariables(“LOCAL_ADDR”) ‘同上Request.Serve ...

  6. HDU1423:Greatest Common Increasing Subsequence

    浅谈\(DP\):https://www.cnblogs.com/AKMer/p/10437525.html 题目传送门:http://acm.hdu.edu.cn/showproblem.php?p ...

  7. bzoj 1016 [JSOI2008]最小生成树计数——matrix tree(相同权值的边为阶段缩点)(码力)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1016 就是缩点,每次相同权值的边构成的联通块求一下matrix tree.注意gauss里的 ...

  8. Extjs5.0 学习之路【结构篇】

    Extjs5.0在原有的MVC模式下增加了一个MVVM Extjs5.0项目文件执行顺序. 新增特性一  bind---data

  9. 蓝桥杯 算法训练 ALGO-129 特殊的数字四十

    算法训练 特殊的数字四十   时间限制:1.0s   内存限制:256.0MB 特殊的数字四十 问题描述 1234是一个非常特殊的四位数,因为它的各位数之和为10,编程求所有这样的四位十进制数. 输出 ...

  10. 蓝桥杯 历届试题 PREV-2 打印十字图

    历届试题 打印十字图   时间限制:1.0s   内存限制:256.0MB 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并 ...