ROS Learning-017 Arduino-For-ROS-002 第一个程序: Hello World

Arduino For ROS-002 — 第一个程序: Hello World

我的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 IDE 软件

打开一个终端,执行下面的命令其中 Arduino IDE 软件

arduino

这里写图片描述

二. 打开 HelloWorld 示例程序

打开 HelloWorld 的示例程序。File -> Examples -> ros_lib -> HelloWorld

这里写图片描述

/*
 * rosserial Publisher Example
 * Prints "hello world!"
 */

#include <ros.h>
#include <std_msgs/String.h>

ros::NodeHandle  nh;

std_msgs::String str_msg;
ros::Publisher chatter("chatter", &str_msg);

char hello[13] = "hello world!";

void setup()
{
  nh.initNode();
  nh.advertise(chatter);
}

void loop()
{
  str_msg.data = hello;
  chatter.publish( &str_msg );
  nh.spinOnce();
  delay(1000);
}

三. 将程序烧写到 Arduino 板子上。

如果你不知道如何将 程序烧写到 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 端成功的订阅了 Arduino 端发布的 名为 /chatter 的话题。

这里写图片描述

五. 代码讲解:

1 . 下面的头文件必须要有:

#include <ros.h>

2 . 并定义一个 ROS Node Handle

ros::NodeHandle nh;

3 . 在 1. 添加必要头文件后,同时添加你需要发布( 或订阅 ) 的话题中消息类型 头文件:

#include <std_msgs/String.h>

4 . 同时定义相关 消息变量

std_msgs::String str_msg;

5 . 定义 发布器

ros::Publisher chatter("chatter", &str_msg);    //定义一个名为:"chatter" 的发布器,里面存放了一个 std_msgs::String 类型的消息变量。

6 . 在 setup() 函数中初始化 ROS Node Handle,并给它添加你定义的发布器:

void setup()
{
  nh.initNode();
  nh.advertise(chatter);      //添加上面定义的发布器
}

7 . 在 loop() 函数中, 更新数据:

char hello[13] = "hello world!";

void loop()
{
  str_msg.data = hello;
  chatter.publish( &str_msg );   //发布消息
  nh.spinOnce();                 //必须写的函数,功能:更新缓存
  delay(1000);                   //延伸1秒钟
}

搞定

总结:
编写 Arduino 使用 ROS 库的编写的程序是可以总结出一个程序模板的,我们可以按照这个模板来编写其他 Arduino 使用 ROS 库 的程序。
所以,下一讲,我们来提前前总结一下:Arduino 使用 ROS 库 编写的程序的程序模板。简单的说就是:如何写Arduino For ROS的程序。

之后,再后面的博客中,我会以控制一些常用的电子模块为例,再介绍更多的Arduino For ROS 的程序。让 ROS 机器人操作系统变得更加实战性,更加被我们所凌驾。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值