赛道选择

赛道 https://github.com/xxraincandyxx/Robocup-docs/tree/master/docs

QQ

QQ

优先选择 通用服务机器人项目 (General Purpose Service Robot - GPSR) 赛道(文件 5.2),而不是居家服务机器人项目(文件 5.1)。

选择通用服务机器人的原因:

  1. 硬件匹配度与技术挑战多样性:
    • 机械臂核心任务: GPSR 的核心任务包括准确接受指令、获取物品、递交给客人、清理垃圾(抓取和放置) 。这些任务高度依赖机械臂功能,能最大化地发挥其作用,并为团队提供更复杂的抓取与操作挑战。
    • 核心技术涵盖广: GPSR 的测试重点包括定位、导航、抓取、人/物识别、人机交流和自然语言处理 (NLP)。这涵盖了移动服务机器人技术栈的几乎所有关键领域,能为 12 人团队提供多样化的工作分配。
  2. 团队分工优势:
    • GPSR 任务的模块化程度高,涵盖导航、视觉、机械臂操作和高层语义理解/交互。这非常适合 12 人团队进行合理分组和并行开发,减少模块间的耦合。
  3. 高效性(C++ 优化)的体现:
    • 虽然两个项目都可以用 C++ 优化,但 GPSR 中的 导航、动态避障、实时目标检测(物品/人)、以及机械臂运动规划(MoveIt 2) 都是性能优化的关键点,全部可以用 C++ 在 ROS2 中高效实现。

赛道对比居家服务机器人(Home Service)通用服务机器人 (GPSR)团队适配性
核心任务自主巡游,识别家庭成员的日常行为 (如躺下、摔倒、挥手),并做出运动反馈。自然语言交互,区分主人/客人,抓取指定物品并递送,拾取垃圾并放入垃圾桶。GPSR 的抓取与自然语言任务更适合多硬件集成和团队分工。
关键技术人体/人脸识别、人体行为识别、物品识别、自主导航、机械臂操作。人体/人脸识别、物品识别、自主导航、语音交互/NLP机械臂抓取GPSR 的NLP/抓取模块为 C++ 优化和团队分组提供了更清晰的界限。

ROS2 系统结构(基于 GPSR)

为了构建一个高效、可靠、集成 C++ 和 Python 的 ROS2 系统,我建议采用三层架构和 C++ 优先策略。

🤖 ROS2 系统分层架构

层级模块/功能组核心语言(效率优先)ROS2 关键技术功能要求匹配(GPSR)
高层控制任务管理器 (Task Commander)Python (或 C++ State Machine)Behavior Trees (行为树) 或 State Machines (状态机)系统集成、人机交互、任务流程控制
中层处理感知 (Perception)C++OpenCV/PCL, YOLO/TensorRT 加速推理人体或人脸识别、物品识别、定位客人/物品/垃圾位置
导航 (Navigation)C++Nav2 Stack (SLAM, AMCL, Planner, Controller)自主导航、到达指定房间、动态避障/避开主人
操作 (Manipulation)C++MoveIt 2, 逆运动学 (IK)、运动规划机械臂抓取(物品/垃圾)、递交、放置
人机交互 (HRI)PythonASR/NLP 库集成,TTS 库集成语音交互、准确接受客人的指令
底层驱动硬件驱动 (Drivers)C++rclcpp, ROS2 Hardware Interface机器人底盘(狗)、机械臂、相机、雷达等的低延迟控制和数据发布

C++ 优先原则的实施点:

  • 导航 (Navigation): 整个 Nav2 Stack(定位、路径规划、控制器)应全部使用 C++ 实现,以确保在家庭环境中实现高效、实时的运动控制和动态避障。
  • 感知 (Perception): 相机/雷达数据融合、目标检测模型推理(使用 TensorRT 或优化的 OpenCV/ONNX Runtime)以及3D 目标位姿估计是计算密集型任务,必须用 C++ 实现,以保证高帧率和低延迟。
  • 操作 (Manipulation): 机械臂的运动规划 (MoveIt 2) 默认高效,但与低层驱动的通信以及实时轨迹执行应全部在 C++ 环境中处理,确保抓取动作的精准和快速。

任务分化

12 人团队可以平均划分为 4 个核心子团队,每个子团队 3 人,并设置一名核心负责人,实现高效的并行开发。

团队编号团队名称核心任务与职责负责人/联络点
A高层逻辑与集成 (High-Level)任务管理器(Task State Machine/BT 的设计与实现)。负责系统集成、任务流程的宏观调度,处理不同模块间的逻辑交互和异常处理。团队总负责人或技术架构师。
B导航与底盘控制 (Navigation & Base)底盘驱动(C++ 实现)、SLAM/定位 (AMCL/SLAM Toolbox)、Nav2 参数优化。负责机器人自主进场、自主导航到指定房间/位置、自主离场。侧重运动控制与嵌入式系统的人员。
C感知与视觉 (Perception & Vision)视觉算法:物体识别、人脸识别、区分主人/客人3D 位姿估计(提供物品/垃圾在机器人坐标系下的精确位置)。雷达/相机数据融合侧重计算机视觉与深度学习的人员。
D操作与交互 (Manipulation & HRI)机械臂 MoveIt 2 配置与规划抓取策略(Fetch/Cleanup/递交)。语音交互/NLP(ASR/TTS 模块集成,命令解析与语义理解)。侧重机械臂运动规划与 NLP/语音处理的人员。

分工的协同机制:

  1. 接口定义: 在项目启动阶段,四个团队必须共同定义清晰的 ROS2 接口 (Interfaces/Messages/Services)。例如,团队 C 必须承诺以统一的 Service/Topic 格式向团队 D 和 A 发布 “Item/Trash/Guest 3D Pose”。
  2. 里程碑制: 将 GPSR 任务分解为小里程碑(如:A. 进场与识别客人;B. 接收指令并导航到物品;C. 抓取与递送;D. 清理垃圾)。
  3. C++ 代码规范: 统一团队的 C++ 代码风格和性能要求,确保 C++ 模块的效率和可靠性。Python 仅用于高层逻辑和 NLP 库的调用封装。

技术簇

编号任务名摘要需求难度
A高层逻辑与集成 (High-Level)负责系统集成(构建 ROS 系统)、任务流程的宏观调度,处理不同模块间的逻辑交互。熟悉 ROS, C++, Python, 强项目、代码能力4.0/5.0
B导航控制 (Navigation)SLAM/定位 (AMCL/SLAM Toolbox)、Nav2 参数优化。负责机器人自主进场、自主导航到指定房间/位置、自主离场。Python (可能 C++), SLAM~4.2/5.0
C底盘控制 (Base)底盘驱动(C++ 实现)机器狗的 SDK $\rightarrow$ 二次开发C++ $\rightarrow$ C++, Python, Issac3.5/5.0 $\rightarrow$ 4.5/5.0
D视觉 (Vision)视觉算法:物体识别、人脸识别、区分主人/客人Python (可能 C++), CV3.5/5.0
E感知 (Perception)3D 位姿估计(提供物品/垃圾在机器人坐标系下的精确位置, 机械臂位姿规划)。雷达/相机数据融合Python (可能 C++), 机械臂, CV, DL4.7/5.0
F操作 (Manipulation)机械臂 MoveIt 2 配置与规划C++, 机械臂3.2/5.0
G交互 (HRI)语音交互/NLP(ASR/TTS 模块集成,命令解析与语义理解)。Python, NLP3.5/5.0
H嵌入式相关 (Embedding)未知 (请务必选择至少一个其他方向)C/C++, Python3.0/5.0

核心 ROS2 系统结构:细化与接口定义

ROS2 系统的核心是各节点(Node)通过接口(Topics, Services, Actions)进行通信,实现任务流程。以下是四个核心团队的模块划分和关键接口定义:

A. 高层逻辑与集成团队 (High-Level) - 3 人

目标: 实现任务的解析、状态机的设计和执行,确保整个比赛流程的健壮性。

模块名称 (Node)语言/技术栈主要功能团队成员分工 (3 人)
task_commanderPython/C++ (Behavior Tree Library)状态机/行为树 (BT) 实现。调度 Navigation, Perception, Manipulation 模块,处理任务流程中的异常和逻辑跳转。1 人:架构师/流程控制(负责 BT 结构设计与调试)
instruction_parserPython接收 HRI 团队的解析结果,将其转换为机器可执行的结构化任务指令列表 (e.g., [navigate_to(kitchen), grasp_item(apple), deliver_to(guest)])。1 人:任务解析与结构化(负责指令格式转换与异常处理)
system_monitorC++收集所有关键节点的健康状态(心跳包),监控 CPU/内存占用,在关键模块崩溃时触发紧急停止或恢复流程。1 人:集成与监控(负责所有模块的集成和系统健康度维护)

关键 ROS2 接口定义 (自定义 msgs/srv/action):

接口类型接口名称发送方接收方接口内容说明
ActionExecuteTasktask_commander所有子系统请求:string task_name (e.g., “Navigate”), string goal_param (e.g., “kitchen”)。反馈:int progress。结果:bool success
Topicparsed_commandinstruction_parsertask_commanderstd_msgs::String 或自定义 TaskArray.msg,传递结构化指令序列。
ServiceEmergencyStopsystem_monitor所有底层驱动/运动节点请求:bool stop_flag。响应:bool confirmed

B. 导航与底盘控制团队 (Navigation & Base) - 3 人

目标: 实现机器狗底盘的稳定运动、高精度定位和快速路径规划(C++ 优化)。

模块名称 (Node)语言/技术栈主要功能团队成员分工 (3 人)
dog_base_driverC++与机器人底盘控制器通信,将速度指令转换为底层运动信号,发布底盘里程计 (odom)。1 人:底盘驱动与通信(负责驱动代码的编写和底层硬件集成)
nav2_config_nodeC++Nav2 Stack(Controller, Planner, Smoother)的配置与 C++ 优化。负责地图构建 (SLAM)、定位 (AMCL) 和路径规划。1 人:SLAM 与定位(负责地图构建、定位精度、传感器融合)
nav_goal_serverC++接收高层指令,向 Nav2 Stack 发送目标点 (goal),处理导航失败/重试逻辑。1 人:路径规划与控制(负责 Nav2 参数调优,确保运动效率和动态避障)

关键 ROS2 接口定义 (使用标准 msgs/action):

接口类型接口名称发送方接收方接口内容说明
Actionnav2_msgs/NavigateToPosenav_goal_serverNav2 Stack标准导航 Action,请求机器人移动到目标位置。
Topic/odomdog_base_driverNav2 Stack/其他nav_msgs::Odometry,底盘里程计信息。
Topic/scan / /camera/depth/points传感器驱动Nav2 Stack/感知激光雷达点云/深度相机数据,用于避障和 SLAM。

C. 感知与视觉团队 (Perception & Vision) - 3 人

目标: 实现高精度、低延迟的视觉感知,为导航和操作提供准确的 3D 位姿信息(C++ + 加速推理)。

模块名称 (Node)语言/技术栈主要功能团队成员分工 (3 人)
object_detectorC++ (TensorRT/ONNX Runtime)2D 目标检测 (物品/垃圾/人脸/客人),确保推理速度。将结果发布到 detection_2d1 人:深度学习部署与加速(负责模型训练、C++ 加载与 GPU/TensorRT 加速部署)
pose_estimatorC++ (PCL/OpenCV)3D 位姿估计:结合 2D 检测结果和深度图/点云,计算目标物体在机器人坐标系 (base_link) 下的精确 3D 坐标和姿态。1 人:3D 视觉与点云处理(负责 3D 几何算法和点云滤波)
face_identity_nodeC++人脸识别与身份判断(主人/客人/裁判)。并发布人物的名称和位置。1 人:识别与身份绑定(负责人脸识别模型和身份管理逻辑)

关键 ROS2 接口定义 (自定义 msgs/srv):

接口类型接口名称发送方接收方接口内容说明
ServiceGetItemPosemanipulation_serverpose_estimator请求:string item_name, int count。响应:geometry_msgs::PoseArray item_poses (物品在 base_link 的 3D 位姿列表)。
Topicdetection_2dobject_detectorpose_estimatorsensor_msgs::Image + 自定义 BoundingBoxes.msg (2D 框和类别)。
Topicperson_identityface_identity_nodetask_commander自定义 Person.msgstring name, string role (Guest/Host), geometry_msgs::Point position

D. 操作与交互团队 (Manipulation & HRI) - 3 人

目标: 实现机械臂的精准运动规划和抓取,以及机器人的语音交互能力。

模块名称 (Node)语言/技术栈主要功能团队成员分工 (3 人)
manipulation_serverC++ (MoveIt 2)机械臂 Action Server。接收抓取/放置 Action 请求,调用 MoveIt 2 进行运动规划,处理抓取前、抓取中、抓取后的逻辑。1 人:MoveIt! 2 配置与规划(负责运动学模型、规划器调优、抓取 Action 处理)
arm_driverC++机械臂底层驱动:与机械臂控制器通信,执行 MoveIt 2 发布的轨迹。1 人:硬件驱动与安全(负责驱动代码、安全限位、与 arm_driver 集成)
hri_nodePython (ASR/NLP/TTS libs)人机交互:语音识别 (ASR)、自然语言理解 (NLP) 和语音合成 (TTS)。将 ASR 结果转换为文本,并将文本指令发布给 instruction_parser1 人:HRI 与 NLP(负责语音库的封装、命令识别逻辑、TTS 反馈)

关键 ROS2 接口定义 (自定义 action/srv):

接口类型接口名称发送方接收方接口内容说明
ActionExecuteGrasptask_commandermanipulation_server请求:string item_name, geometry_msgs::Pose target_pose。反馈:int step。结果:bool grasped
Topicspeech_recognition_texthri_nodeinstruction_parserstd_msgs::String,发布 ASR 识别出的原始文本指令。
Topictext_to_speech_commandtask_commanderhri_nodestd_msgs::String,高层逻辑向 HRI 发送需要播报的文本。

细化团队分工列表

为了确保 12 人并行开发且 C++ 性能要求得到满足,以下是每个团队 3 人的细致分工:

团队编号姓名(可自行替换)核心职责(C++/Python)C++/Python 偏向关键产出
AA1架构师Behavior Tree C++库的集成与实现,系统主状态机设计。C++为主鲁棒的任务行为树代码
高层逻辑A2流程控制指令结构化逻辑(Python 实现),与 Perception/HRI/Manipulation 接口联调。Python 为主instruction_parser 逻辑
3 人A3集成/监控系统健康监控节点,所有 ROS2 接口的定义与维护。C++为主system_monitor 节点,接口文件
BB1底盘驱动机器狗底盘驱动 C++ 实现,底层数据发布(odom等)。C++ 驱动高效、低延迟的 dog_base_driver
导航控制B2SLAM/定位地图构建与定位精度优化(AMCL/SLAM Toolbox 参数调优与传感器融合)。C++ 优化精准的定位与地图
3 人B3路径规划Nav2 控制器与规划器 C++ 参数调优,动态避障策略。C++ 优化高效的 Nav2 配置
CC1深度学习目标检测模型训练、C++部署与加速(TensorRT/ONNX)。C++ 加速快速的 object_detector 节点
感知视觉C23D 视觉2D 到 3D 位姿估计的 C++ 实现,点云处理(PCL/OpenCV)。C++ 算法精确的 GetItemPose 服务
3 人C3人脸/身份人脸识别 C++ 库集成与身份绑定,区分主人/客人/裁判逻辑。C++ 算法face_identity_node 节点
DD1运动规划MoveIt 2 配置、IK/FK 求解器配置,Action Server 的 C++ 逻辑编写。C++ MoveIt鲁棒的 manipulation_server
操作交互D2抓取控制抓取策略的实现与测试,机械臂驱动与安全限位 C++ 逻辑。C++ 驱动稳定的抓取流程代码
3 人D3HRI/NLP语音识别与语义理解库的封装(Python),TTS 播报逻辑。Python HRI可靠的 hri_node 封装