rosserial_arduino包与arduino交互时rosmsg报错

前提条件

1、Arduino IDE正常安装好
2、本次采用的是arduino nano开发板和kinetic版本ROS
3、从未安装过rosserial_arduino包

二进制安装rosserial_arduino包

打开终端输入sudo apt-get install ros-kinetic-rosserial-arduinosu都apt-get install ros-kinetic-rosserial两个二进制包
rosserial_arduino包与arduino交互时rosmsg报错
rosserial_arduino包与arduino交互时rosmsg报错

配置arduino IDE

打开arduino IDE找到preferences,点击查看sketchbook目录
rosserial_arduino包与arduino交互时rosmsg报错
rosserial_arduino包与arduino交互时rosmsg报错
找到sketchbook目录,并在此打开终端输入rosrun rosserial_arduino make_libraries.py .创建ros_lib包。如果存在ros_lib包删除即可。
rosserial_arduino包与arduino交互时rosmsg报错

向arduino nano烧录程序

打开arduino IDE,在file栏下点开examples,划到ros_lib栏选择helloword打开。
rosserial_arduino包与arduino交互时rosmsg报错
对于arduino nano,需要把port 换成是自己设备的串口,我这里是ttyUSB0,并且board arduino uno改成arduino nano;Processor选择ATmega328P的Old BootLoader。
rosserial_arduino包与arduino交互时rosmsg报错
新开终端输入sudo chmod 666 /dev/ttyUSB0赋予权限,点击箭头烧录程序。

运行rosserial_arduino

打开终端先运行roscore
rosserial_arduino包与arduino交互时rosmsg报错
由于是二进制安装的,与官方教程不大一样的在于serial node.py在rosserial_python目录下,输入rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0运行程序,注意烧录和这里打开的串口都要是arduino nano的串口,结果发现报错。
rosserial_arduino包与arduino交互时rosmsg报错

解决报错问题

打开终端输入sudo apt-get install ros-kinetic-genpy,再运行rosserial_arduino文件即可。
rosserial_arduino包与arduino交互时rosmsg报错
rosserial_arduino包与arduino交互时rosmsg报错
输入命令rostopic echo /chatter查看arduino nano发布的话题消息。
rosserial_arduino包与arduino交互时rosmsg报错
参考了博客:http://blog.****.net/WinTeRomING/article/details/108402250