ROS与Arduino学习(二)HelloWorld

ROS与Arduino学习(二)HelloWorld

 

Tutorial Level:准备工作

Next Tutorial:订阅与发布

 

本节我们开始解读第一个历程,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);
}

 

Tips 1 头文件

两个头文件,一个是ros.h头文件。这个是必需的。另一个是std_msgs/String.h头文件,是消息程序包。用于节点之间发送消息功能。

 

 

Tips 2 声明

1句柄

ros::NodeHandle  nh;

 生成节点句柄

2话题

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

 发布一个话题,名字叫做chatter,消息内容

3消息对象

std_msgs::String str_msg;

 声明一个消息对象str_msg。其参数为data内容为消息内容。

 

Tips 3 发布消息

 chatter.publish( &str_msg );

 发布一个消息   话题.publish(&消息)

 

接下来要运行程序,和我们windows中操作一致,用串口就可以下载。下载进去我们做一个简单的测试,用我们的PC看一下这个话题的消息。

  1. 运行roscore
$ roscore
  1. 新终端运行,/dev/ttyUSB0为Arduino设备
rosrun rosserial_python serial_node.py /dev/ttyUSB0

rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0
  1. 显示主题chatter,获取Arduino板反馈的信息
rostopic echo chatter

在此可能会遇到一些问题。参考下面处理

/dev/ttyUSB0 permission denied


posted @ 2018-04-24 17:37  #Cloud  阅读(2093)  评论(0编辑  收藏  举报