8.5 机器人平台设计之底盘实现(上)
到目前为止,基于Arduino的机器人控制系统相关知识点就已经介绍完毕了,下一步我们就可以着手构建自己的机器人底盘了,该底盘可以订阅上位机(ROS端)发布的速度消息,并解析消息控制电机运动以实现底盘的前进、后退、左转、右转....并且还可以发布自身的实际速度消息,上位机订阅到速度消息之后会生成里程计数据,甚至底盘也可以直接发布里程计消息。该实现大致分为两大部分:
- 硬件组装
- 程序设计
当然硬件组装更多的是考察大家的动手能力,只需要按照演示组装机器人底盘即可,我们的重点在于程序实现:Arduino端的程序如何设计?ROS端的程序如何设计?关于程序设计在此我们又有两种实现策略:
- 通过 rosserial_arduino 实现
- 调用第三方: ros_arduino_bridge
关于两种实现策略:
- 前者将Arduino内的程序写成ros节点形式,所以能够快速的通过ROS控制Arduino,并且可以忽略通信协议层,但是由于将Arduino作为ROS节点,不可避免的产生通信延时较大的问题,且整个功能必须从0开始实现,编程效率偏低。
- 后者是通过自定义通信协议方式来与Arduino进行通信,较之于前者更为灵活高效,不过在使用过程中需要自己配置,且官方提供的案例所需硬件国内不易购买,还需要适配硬件并添加相应的驱动。
受于篇幅限制,本节主要介绍硬件的组装与基于rosserial_arduino的底盘程序设计,下一节会介绍 ros_arduino_bridge 的使用。