ROS Learning-017 Arduino-For-ROS-002 第一个程序: Hello World
2016-09-06 23:48
429 查看
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
如果你还没有搭建ROS与Arduino之间的连接关系的话, 请参考 这篇博客:搭建 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 机器人操作系统变得更加实战性,更加被我们所凌驾。
相关文章推荐
- ROS Learning-017 Arduino-For-ROS-002 第一个程序: Hello World
- ROS Learning-018 Arduino-For-ROS-003 (总结篇) 模板程序 即 如何运行
- ROS Learning-018 Arduino-For-ROS-003 (总结篇) 模板程序 即 如何运行
- ROS Learning-013 beginner_Tutorials (编程) 编写ROS服务版的Hello World程序(Python版)
- ROS Learning-013 beginner_Tutorials (编程) 编写ROS服务版的Hello World程序(Python版)
- ROS Learning-011 beginner_Tutorials (编程) 编写 ROS 话题版的 Hello World 程序(Python版)
- ROS Learning-011 beginner_Tutorials (编程) 编写 ROS 话题版的 Hello World 程序(Python版)
- PyQt 第一个程序 “Hello World”
- 第一个qt程序:hello world!
- PyQt 第一个程序 “Hello World”
- 第一个QT程序,Hello World
- 第二章 第二节 Linux设备驱动程序之--我的第一个程序 Hello World
- 第一个C#程序Hello World!(Windows Forms版本)
- 第一个程序,Hello World
- Skyeye模拟uClinux上运行的第一个程序:Hello World
- Java 技术基础笔记(2)—— 创建第一个Java程序 Hello World
- windows azure 第一个程序Hello World
- ruby 学习_1 --第一个ruby程序,hello world
- 第一个DWR程序:Hello World
- 我的第一个JSP(Hello World)程序