本项目面向户外高尔夫球场自动化作业场景,为移动机器人提供 AI 视觉感知、目标识别、状态判断和任务辅助决策能力。系统接入左右相机、激光点云、里程计、地图、设备状态等多源数据,完成高尔夫球识别、球满判断、卡球检测、三角标识识别、前方障碍检测、局部/全局球密度地图生成等功能。
机器人在作业过程中可根据视觉检测结果统计球量、判断是否需要返航卸球,并结合行为树状态、任务状态、电量信息和地图区域信息进行联动控制。同时系统支持动态参数配置、图像缓存、检测结果解析、ROS 服务调用、状态发布、异常告警和 rosbag 数据保存,便于现场调试、算法验证和后续数据回放分析。
项目基于 ROS2 构建,核心模块采用 C++ 实现,结合 OpenCV 完成图像处理、结果绘制和图像保存,通过 WebSocket/服务接口对接 AI 推理模块,并将检测结果解析为机器人可消费的业务状态。
系统按照功能拆分为参数管理、检测调度、图像缓存、文件管理、灯光控制、捡球检测、卡球检测、标识检测、前方检测和禁区管理等模块。主节点订阅相机图像、机器人里程计、行为树状态、设备状态和地图更新信息,根据采样周期触发不同检测任务,并通过线程池异步执行耗时逻辑,避免阻塞 ROS 回调。
在前方检测部分,系统融合相机内参、雷达到相机外参、TF 坐标变换和点云数据,将视觉识别结果映射到地图栅格,生成全局球密度图、局部密度图和增量更新数据。禁区管理模块根据历史障碍记录、机器人位置、地图区域和重叠检测逻辑,支持自动生成、合并、发布和清理限制区域。
参数管理模块支持静态配置加载和动态参数更新,提供获取/设置捡球检测参数的 ROS 服务,可在线调整最大捡球时间、卸球阈值、亮度和灯光模式。QoS 策略上,图像、点云、里程计采用低延迟传感器 QoS,地图、状态和密度类数据采用可靠或 transient_local 策略,保证新启动节点可以获取最新状态。
我的职责
负责 AI 感知主流程和多个核心业务模块的开发维护,包括 ROS2 节点设计、话题订阅发布、服务接口、动态参数管理、检测结果解析、图像缓存、线程池异步调度、QoS 策略配置和单元测试补充。参与高尔夫球检测、球满判断、卡球检测、前方球密度图、禁区自动标注等功能的工程化落地,并结合现场调试结果优化检测频率、状态联动、异常处理和数据保存逻辑。
项目亮点
支持多源传感器融合,结合相机、点云、里程计和地图数据实现机器人作业场景感知。
使用 ROS2 QoS 策略区分实时数据和状态数据,兼顾低延迟、可靠性和晚启动状态同步。
检测任务采用异步线程池调度,降低图像处理和 AI 推理对主回调链路的影响。
支持动态参数在线调整,方便现场根据光照、球量和作业策略快速调优。
提供密度图、限制区域、图像保存和 rosbag 数据记录能力,便于算法迭代和问题复盘。