项目 / Portfolio
基于 ROS2 的仓储机器人系统
本科毕业设计
面向中小型仓库的自动化需求,开发并验证了一套集成自主导航、视觉识别与机械臂抓取的机器人系统,基于 ROS2 构建。
- 300 轮任务成功率
- 96.7%
- 视觉识别成功率(100轮测试)
- 100%
- 定位方差降低
- 63.7%
~80.8% - 类识别目标
- 3
- 轮连续测试
- 300
做这个的原因
中小型仓库的分拣、巡检工作大多还依赖人工,重复性高、效率有限。这个项目验证一套自主移动机器人能不能把导航、识别、抓取整条链路跑通,为后续加更多传感器和功能打基础。
系统架构
系统分三层:物理仿真层(Gazebo,负责机器人物理特性和传感器数据)、中间件层(ROS2 Nav2 + AMCL,负责定位和路径规划)、应用层(Python 主控脚本 + YOLOv5,负责任务调度和目标识别)。三层之间通过 ROS2 的 Topic、Service、Action 机制异步通信。
仿真环境与建图
仿真基于开源项目 wpr_simulation2 搭建,仓库里设置了三个目标点(钉子、木板、涂料)和一个无线充电站。通过 SLAM 建图生成 2D 栅格地图,作为后续导航和路径规划的基础。
导航与避障
Nav2 负责接收目标坐标、生成全局和局部路径、输出速度控制指令。开机时让机器人原地自转一圈完成初始定位标定,6 次重复测试显示这个机制让 X、Y 轴的定位方差分别降低了约 63.7% 和 80.8%。针对 Nav2 偶尔提前误报"到达目标"的问题,额外加了一层距离校验——校验失败会自动重新导航,不会让机器人半路停下或跳过目标点。
视觉识别
到达目标点、机器人静止 3 秒等相机画面稳定后触发 YOLOv5 识别。优化后的模型在 100 轮连续测试中对三类目标(钉子、木板、涂料)的识别成功率达到 100%,平均置信度保持在 0.89 以上。每次识别的结果——轮次、目标名称、耗时、成功状态、置信度——实时写入本地日志文件。
系统稳定性
主控脚本自动循环执行"导航→识别→返回充电站"的完整任务闭环。300 轮连续测试中,总体成功率达到 96.7%,10 次失败分散在不同轮次,没有集中爆发的规律。
机械臂抓取
基于开源抓取例程做了二次开发,把默认测试场景替换成本项目的仓库地图,验证了机器人在当前框架下执行抓取和搬运任务的可行性。测试中观察到机械爪缺乏实时力反馈,抓取时偶尔会打滑,抓取稳定性还有提升空间,但作为概念验证已经达到预期目标。
未来方向
未来的优化方向主要有两个:一是引入多传感器融合,结合 Kinect 深度相机的视觉里程计和底盘 IMU 数据,提升复杂场景下的定位稳定性;二是把 YOLOv5 的视觉输出和机械臂控制实时联动,通过 RGB-D 相机获取目标的实时三维坐标,动态生成抓取轨迹,而不是依赖预设坐标。