本ROS小车实现自主搬运功能,主要可分为以下几个大步骤:
- 机器人搭建与底盘调试
- 机器人建模与仿真
- 同时定位和地图构建
- 路径规划与自主避障
- 自主搬运动作规划
总体框架如下:
搬运机器人模块选型与搭建
目前ROS搬运小车经历三个版本。在硬件上,下位机方面主要选择arduino mega 2560
作为控制板,驱动电机和舵机,完成编码计数的上传。上位机方面基于机器人操作系统 ROS,以“ROS 主机(PC 电脑)+ROS 从机(树莓派 3B)”配合 Arduino mega 开发板作为控制系统,通过电源模块等驱动系统来驱动编码电机、舵机手爪等部件。外部传感器采用惯性测量单元 IMU、USB 摄像头、激光雷达提高机器人定位精度、识别二维码目标点位姿以及自主搬运功能的实现。其中搬运机器人底盘是关键,如果机器人底盘不满足实验要求,后续任务将无法进行。
数据通信方面,传感器模块和arduino mega 2560
开发板与ROS从机(树莓派3B
)通过USB口串口通信;ROS从机(树莓派3B
)与ROS主机(PC电脑
)之间以局域网不同IP地址通过SSH连接相互通信。
备注
(1)底层控制可选择STM32开发板
或者Arduino开发板
。
(2)ROS主机可选择虚拟机VMware 15.5
安装Ubuntu 系统
。
(3)ROS从机可选择树莓派
或者工控机
。
推荐树莓派
,因为树莓派
是一款微型电脑,搭配wifi模块和4个USB口,性能基本满足ROS一般任务要求,此外计算量大的部分可以放在ROS主机上。
(4)SLAM构建地图可以选择激光SLAM或者视觉SLAM。
激光SLAM 可选择 思岚 RPLIDAR
激光雷达传感器;
视觉SLAM 可选择 kinect 深度相机
。
(5)本ROS小车电机驱动板(6WD扩展板
)有些小瑕疵,非I/O直接驱动,且电机接口较小。可替换选择PIKIROBOT ROS电机驱动板
,有STM32和Arduino等多种型号。
(6)底板可自己画好图纸定制亚克力板。
实现搬运功能所需步骤
机器人底盘运动控制
- 电机、舵机驱动测试;
- 机器人底盘PID运动控制,确保机器人走直线不偏斜;
- 速度(线速度、角速度)校准实验,确保机器人在真实环境前进距离和航迹推算距离保持一致。
- 里程计信息融合(功能包 /robot_pose_ekf),提高机器人定位和航迹推算精度。
机器人建模与仿真
- TF坐标树的维护
- 建立urdf模型、xacro模型、SolidWorks模型
- ArbotiX + Rviz 控制机器人可视化行走
- Gazebo 模拟仿真。(可参考 turtlebot3 功能包)
同时定位和地图构建
- 激光SLAM算法功能包 /hector 使用与理论分析
- 激光SLAM算法功能包 /gmapping 使用与理论分析
- 激光SLAM算法功能包 /karto 使用与理论分析
- 激光SLAM算法功能包 /cartographer 使用与理论分析
自主导航
- 理解 /navigation功能包(机器人地图定位/amcl、路径规划/move_base)
- 全局路径规划器( Dijkstra 算法、A*算法等插件使用)
- 本地路径规划(dwa方法、teb方法等插件使用)
搬运动作规划
- 摄像头驱动与畸变校准
- 二维码识别
- 搬运动作规划