8.3.2 Arduino 与 ROS 交互_发布

需求:实现Arduino与ROS端交互,Arduino端创建发布节点,话题自定义,发布字符串消息"Hello World",ROS端订阅并打印订阅到的消息

实现:

1.Arduino端编写发布实现

/*
 * 创建发布者对象:
 *  话题:chatter
 *  消息:Hello World
 *  
 * 实现:
 * 1.导入相关头文件 ros.h std_msgs/String.h
 * 2.创建发布者对象
 * 3.setup 中初始化节点
 * 4.loop中发布消息
 * 
 */

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


ros::NodeHandle nh;
std_msgs::String msg;
ros::Publisher pub("chatter",&msg);
char str[15]="Hello World!!!";

void setup() {
  nh.initNode();//初始化 ros 节点
  nh.advertise(pub); //发布
}

void loop() {
  msg.data = str;
  pub.publish(&msg);
  nh.spinOnce();
  delay(1000);
}

2.ROS端启动串口通信

首先启动rosmaster:

roscore

再启动rosserial串口通信节点:

rosrun rosserial_python serial_node.py /dev/ttyACM0

启动串口通信中,不能通过Arduino IDE 向Arduino电路板上传程序,必须先关闭ros的串口通信节点才能上传,否则会导致上传失败。

3.ROS端订阅发布的消息

rostopic echo /chatter

结果:ROS端输出 HelloWorld

results matching ""

    No results matching ""