项目 / Portfolio

基于 ROS2 的仓储机器人系统

本科毕业设计

面向中小型仓库的自动化需求,开发并验证了一套集成自主导航、视觉识别与机械臂抓取的机器人系统,基于 ROS2 构建。

仿真环境中的机器人硬件平台渲染图
300 轮任务成功率
96.7%
视觉识别成功率(100轮测试)
100%
定位方差降低
63.7%~80.8%
类识别目标
3
轮连续测试
300

做这个的原因

中小型仓库的分拣、巡检工作大多还依赖人工,重复性高、效率有限。这个项目验证一套自主移动机器人能不能把导航、识别、抓取整条链路跑通,为后续加更多传感器和功能打基础。

系统架构

系统分三层:物理仿真层(Gazebo,负责机器人物理特性和传感器数据)、中间件层(ROS2 Nav2 + AMCL,负责定位和路径规划)、应用层(Python 主控脚本 + YOLOv5,负责任务调度和目标识别)。三层之间通过 ROS2 的 Topic、Service、Action 机制异步通信。

系统架构图:物理仿真层、中间件层、应用层三层结构及各层间的 Topic/Service/Action 通信
基于 ROS2 的系统架构与数据流

仿真环境与建图

仿真基于开源项目 wpr_simulation2 搭建,仓库里设置了三个目标点(钉子、木板、涂料)和一个无线充电站。通过 SLAM 建图生成 2D 栅格地图,作为后续导航和路径规划的基础。

Gazebo 中的 3D 仿真仓库场景,可见三个目标点和无线充电站
3D 仿真仓库布局
SLAM 建图生成的黑白灰 2D 栅格占据地图
SLAM 生成的最终 2D 栅格地图

导航与避障

Nav2 负责接收目标坐标、生成全局和局部路径、输出速度控制指令。开机时让机器人原地自转一圈完成初始定位标定,6 次重复测试显示这个机制让 X、Y 轴的定位方差分别降低了约 63.7% 和 80.8%。针对 Nav2 偶尔提前误报"到达目标"的问题,额外加了一层距离校验——校验失败会自动重新导航,不会让机器人半路停下或跳过目标点。

RViz 中的路径规划可视化,热力图色彩显示代价地图与规划路径
路径规划与目标点导航
RViz 局部代价地图与障碍物检测可视化,画中画显示 Gazebo 仿真画面
局部代价地图与障碍物检测

视觉识别

到达目标点、机器人静止 3 秒等相机画面稳定后触发 YOLOv5 识别。优化后的模型在 100 轮连续测试中对三类目标(钉子、木板、涂料)的识别成功率达到 100%,平均置信度保持在 0.89 以上。每次识别的结果——轮次、目标名称、耗时、成功状态、置信度——实时写入本地日志文件。

YOLOv5 识别结果对比图:左侧摄像头原始画面,右侧标注了识别框和置信度的检测结果
摄像头原始画面(左)与 YOLO 识别结果(右)

系统稳定性

主控脚本自动循环执行"导航→识别→返回充电站"的完整任务闭环。300 轮连续测试中,总体成功率达到 96.7%,10 次失败分散在不同轮次,没有集中爆发的规律。

300 轮任务完成时间的散点图,红点标出了失败轮次
300 轮任务完成时间分布,红点为失败轮次
任务成功率统计饼图,成功与失败轮次占比
任务成功率统计

机械臂抓取

基于开源抓取例程做了二次开发,把默认测试场景替换成本项目的仓库地图,验证了机器人在当前框架下执行抓取和搬运任务的可行性。测试中观察到机械爪缺乏实时力反馈,抓取时偶尔会打滑,抓取稳定性还有提升空间,但作为概念验证已经达到预期目标。

Gazebo 仿真中机械臂抓取并搬运目标物品的渲染画面,场景中含人形模型作为参照
在自定义仓库环境中抓取和搬运目标物品

未来方向

未来的优化方向主要有两个:一是引入多传感器融合,结合 Kinect 深度相机的视觉里程计和底盘 IMU 数据,提升复杂场景下的定位稳定性;二是把 YOLOv5 的视觉输出和机械臂控制实时联动,通过 RGB-D 相机获取目标的实时三维坐标,动态生成抓取轨迹,而不是依赖预设坐标。

← 查看其他项目