关于ROS和Arduino通信方式,刚开始大多使用的是rosserial_arduino这个库,随后又诞生了一个新的库名为ros_arduino_bridge,两者对比如下:
- rosserial_arduino:由于将Arduino内的程序写成ros节点形式,所以能够快速的通过ROS控制Arduino,并且可以忽略通信协议层,与之相同的还有rosserial_stm32f1库,但是由于将Arduino作为ROS节点,不可避免的产生通信延时较大的问题,而且运行该库是通过rosserial_python包内的serial_node.py启动,该脚本使用了tcpip协议,有点大材小用,uno速率会跟不上,导致启动过程中一崩溃很难在连接上的问题,学习ROS可以使用。
- ros_arduino_bridge:是自定义通信协议方式来与Arduino进行通信,和大多数控制形式一致,将通信协议固定可以让初学者在使用过程中了解通信协议,由于是自定义通信协议形式,可以即插即用,和rosserial_arduino有本质差别,不过在使用过程中需要自己配置,所以需要有一定的arudino编程基础,早期的EAI dashgo D1采用的就是这种形式,使用这个库可以缩短底盘开发时间,并且Arduino有很多开源包供使用,会相对轻松一些。
关于如何使用rosserial_arduino_bridge,作者在github的Readme中写的很清楚,当然,是使用英文编写,如果大家想要查看中文,