使用Arduino开发板作为底层控制(base_controller),有rosserial_arduino和ros_arduino_bridge两种实现方式。其中 rosserial_arduino
将航迹推演、话题发布等都放在Arduino开发板上,占用资源大;而ros_arduino_bridge
在Arduino开发板上只用来控制电机、舵机驱动,将计算部分放在ROS从机中,大大节省Arduino开发板占用资源,此外可外接更多传感器。
本ROS小车选择ros_arduino_bridge
作为底层控制(base_controller)。
ros_arduino_bridge 框架结构(arduino篇)
ROSArduinoBridge #Arduino相关库定义
├── commands.h #定义命令
├── diff_controller.h #差分轮PID控制头文件
├── encoder_driver.h #编码器驱动头文件,定义插脚(pins)
├── encoder_driver.ino #编码器驱动实现, 读取编码器数据,重置编码器等
├── motor_driver.h #电机驱动头文件
├── motor_driver.ino #电机驱动实现,初始化控制器,设置速度
├── ROSArduinoBridge.ino #核心功能实现,
├── sensors.h #传感器头文件及实现
├── servos.h #伺服器头文件,定义插脚,类
└── servos.ino #伺服器实现
对底层控制 ros_arduino_bridge
代码修改主要放在encoder_driver
、motor_driver
、ROSArduinoBridge
、commands
上,其它如diff_controller
等暂时不需要修改。已整理修改后的代码,见 ROS-robot。