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 (总结篇) 模板程序 即 如何运行的更多相关文章

  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. 剑指offer--22.反转链表

    时间限制:1秒 空间限制:32768K 热度指数:440624 本题知识点: 链表 题目描述 输入一个链表,反转链表后,输出新链表的表头. /* struct ListNode { int val; ...

  2. Leetcode 509. Fibonacci Number

    class Solution(object): def fib(self, N): """ :type N: int :rtype: int ""&q ...

  3. 如何使用SOCKET 发送HTTP1.1 GET POST请求包

    http://blog.csdn.net/yc0188/article/details/4741871 http://docs.linuxtone.org/ebooks/C&CPP/c/ch3 ...

  4. PHP JSON文件解析并获取key、value,判断key是否存在

    /****************************************************************************** * PHP JSON文件解析并获取key ...

  5. POJ - 2079:Triangle (旋转卡壳,求最大三角形)

    Given n distinct points on a plane, your task is to find the triangle that have the maximum area, wh ...

  6. uoj#87. mx的仙人掌

    //Achen #include<bits/stdc++.h> #define For(i,a,b) for(int i=(a);i<=(b);i++) #define Rep(i, ...

  7. 【LeetCode】025. Reverse Nodes in k-Group

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k  ...

  8. mybatis与oracle使用总结

    Oracle使用总结 1.新建表删除表 新建表语句: CREATE TABLE +表名{ } create table AFA_USER ( USER_ID VARCHAR2() not null, ...

  9. Composer + thinkphp5.1安装与使用

    Composer 是 PHP 的一个依赖管理工具.我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我 ...

  10. DataX实现oracle到oracle之间的数据传递

    首先需要注意的是DATAX是通过JDBC的方式读取ORACLE数据,然后通过OCI的方式写数据,DX也可以通过JDBC写的方式进行,但是OCI比JDBC速度更快.   进入DataX安装目录的bin目 ...