8.4 机器人平台设计之Arduino与ROS通信
对于构建轮式机器人而言,电机驱动是一重要实现环节。
场景:在机器人架构中,如果要实现机器人移动,其中一种实现策略是:控制系统会先发布预期的车辆速度信息,然后驱动系统订阅到该信息,控制电机转速至预期速度,调速过程中需要时时测速用于计算实际速度与预期速度的差值,作为调速算法的输入数据,获取的实际速度还要反馈给控制系统,控制系统会计算实际位移并生成里程计信息。
在上述流程中,控制系统(ROS端)其实就是典型的发布和订阅实现,不再赘述,具体到驱动系统(Arduino)层面,需要解决的问题有如下几点:
一个周期伊始,Arduino 如何订阅控制系统发布的速度信息?
一个周期结束,Arduino 如何发布实际速度信息到控制系统?
一个周期之中,Arduino 如何驱动电机(正传、反转)?
一个周期之中,Arduino 如何实现电机测速?
一个周期之中,Arduino 如何实现电机调速?
针对后面三个问题,在8.3中已经介绍了电机基本控制、电机测速以及调速实现,本节主要讲解前两个相关知识点,如何实现驱动系统与控制系统通信,主要内容如下:
Arduino与ROS通信的环境搭建;
Arduino端发布消息,在ROS端订阅;
ROS端发布消息,在Arduino端订阅;