一、安装环境

1.安装Arduino

sudo apt-get install arduino

2.启动arduino并进行相关设置

arduino

3.安装软件包rosserial arduino

sudo apt-get install ros-melodic-rosserial-arduino
sudo apt-get install ros-melodic-rosserial

4.把ros_lib文件复制到arduino libraries里

我们要把ros的库放到arduino的库里,在你的电脑文件里分别找到ros_lib文件和libraries文件的位置,并进行复制,来启用二者的通信。
在ros_lib文件路径下打开新的终端:

 sudo cp -r ros_lib /usr/share/arduino/libraries/

检查此时的ros_lib包,会发现里面文件很少,之后编译会出现错误ros/node_handle.h No such file 我就是出现了这样的错误,不用担心,再主目录下或打开新终端输入:

rosrun rosserial_arduino make_libraries.py [PathToYourSketchbookLibraries]

此时主目录会出现这个文件,按上面的方法将新的ros_lib复制到arduino libraries里就可以了。

在这里插入图片描述

重新打开arduino,在sketch->import library查看是否添加了ros_lib的库。

二、创建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);
}

在这里插入图片描述

上传之后我们打开ROS查看消息,运行roscore

roscore

打开新终端运行节点,此时arduino就相当于ROS上的一个结点:(插上板子,在串口那儿查看自己的串口,我的是/dev/ttyACM0)

rosrun rosserial_python serial_node.py /dev/ttyACM0

在这里插入图片描述

再打开新终端,查看当前话题发布的消息

rostopic echo /chatter

在这里插入图片描述

成功创建ROS与Arduino之间的通信,之后再更新啦!