跳转至

第 18 章 综合实验 — 从感知到任务编排

本章把前面各章学到的能力串成完整的小项目。每个小节对应一个独立实验,读者可以按顺序做,也可以挑感兴趣的切入。章末给出"机器狗 + 机械臂"的综合系统,是整本教材的收尾。

章节组织说明

每一小节都统一为四段:项目目标实践内容产出要求实施指南(后续补)。

  • 前三段对应课程实验大纲里的口径,读者可以直接拿去对照任务书
  • 第四段是本教材独有,把"要做什么"细化成"怎么做",包含推荐工具链、关键代码骨架、常见坑位

🚧 本章持续完善中

小节框架已搭好,具体实施指南会在后续迭代中逐个补齐。目前占位的小节里,读者可以先参考项目目标和实践内容自行摸索,做完欢迎通过左下角反馈按钮提交踩坑报告。


18.1 建图导航基础集成

学时:综合 4 次实验(建议每次 2 学时,共 8 学时)

这一节把"感知 → 定位 → 建图 → 自主导航"串成完整链路,是第 10-12 章的综合复盘。共 4 个递进任务。

18.1.1 环境感知与目标识别

  • 理解 Go2 深度相机 / 激光雷达的原始数据格式(点云 / 深度图)
  • 掌握 OpenCV 基础图像处理:颜色空间转换、掩膜、形态学操作
  • 能让机器狗识别特定颜色的标记物并计算相对位置
  1. 点云 / 深度数据处理
  2. 图像处理基础
  3. 目标检测与定位
  • 硬件:Go2 机器狗(或仿真)
  • 软件:OpenCV、Go2 SDK / ROS2
  • 仿真或实机演示视频
  • 简短实验报告

实施指南(待补)

将补充:深度相机话题订阅、OpenCV HSV 空间颜色阈值选择、目标像素坐标 → 相机坐标系 → base 坐标系的 TF 链路。

18.1.2 姿态估计与定位

  • 理解机器人位姿估计的基本原理(航迹推算 / odometry)
  • 体会传感器融合思想(卡尔曼滤波的基本思路,概念级)
  • 学会坐标系变换 odom → base,在仿真或实机中验证
  1. 传感器融合(卡尔曼滤波思想,概念性)
  2. 航迹推算
  3. TF 静态 / 动态变换
  • 硬件:Go2 机器狗
  • 软件:ROS 2
  • 展示 tf2_echo odom base 输出与机器狗实际运动一致
  • 简短实验报告

实施指南(待补)

将补充:go2_driver_py 的 odom 发布逻辑回顾、robot_localization ekf 模板、实测航迹漂移量记录。

18.1.3 建图与路径规划

  • 使用 slam_toolbox 在未知环境中构建 2D 栅格地图
  • 学习 A* 路径规划算法的基本思想(图搜索)
  • 在已知地图上复现一次仿真路径规划
  1. SLAM 原理(概念性)
  2. 占据栅格地图
  3. 图搜索算法(A*)
  • 硬件:Go2 机器狗
  • 软件:ROS 2 / slam_toolbox / Nav2 planner
  • 保存一张 .pgm + .yaml 的栅格地图
  • 展示 A* 规划的路径截图

实施指南(待补)

将补充:对第 11 章建图流程的精简复盘、Nav2 planner_server 配 A* 的参数示例、可视化规划路径。

18.1.4 自主导航实战

  • 在已建地图中设置目标点,让机器狗利用 Nav2 路径规划与避障自主到达
  • 结合 18.1.1 的目标识别,实现"找到红色方块并停靠在其附近"的综合任务
  1. 功能模块集成(识别节点 + Nav2)
  2. 联调测试
  • 硬件:Go2 机器狗
  • 软件:ROS 2
  • 演示视频:机器狗从起点出发,找到红色方块并停靠
  • 简短实验报告

实施指南(待补)

将补充:"视觉识别 → 目标点坐标 → Nav2 goal"的消息链设计、停靠距离阈值调参、失败重试策略。


18.2 机器狗在不同地形环境下的运动控制

学时:4

  • 理解足式机器人动力学与 Go2 的控制接口
  • 掌握步态参数(步频 / 抬腿高度 / 速度)调整方式与地形交互特性
  • 思考 Sim-to-Real 差距:仿真里能走的地形实机未必能走
  • 培养机器人调试与数据分析能力
  1. 配置仿真平台(Gazebo + CHAMP,参考第 13 章)
  2. 基础运动复现
  3. 步态参数实验
  4. 地形构建(斜坡 / 梅花桩 / 碎石)
  5. 地形适应策略
  6. 避障集成
  • 仿真演示视频(≥ 10 秒)
  • 实验报告(含步态参数对比表、Sim-to-Real 反思)

实施指南(待补)

将补充:Gazebo world 文件编写(.world + .sdf 模型)、CHAMP 步态控制器关键参数表、"仿真能走 ↔ 实机不能走"的典型案例分析。


18.3 机器狗视觉导航与目标跟踪

学时:4

  • 理解视觉感知在仿真机器人中的实现原理
  • 掌握 Gazebo / Isaac Sim 中摄像头传感器配置与数据读取
  • 体验"感知 → 决策 → 执行"完整闭环
  • 熟悉 ROS 2 话题通信机制
  1. 环境搭建(仿真 + 摄像头挂载)
  2. 传感器配置(相机内参 / 发布频率)
  3. 视觉处理(目标检测)
  4. 坐标映射(像素 → 相机 → 世界)
  5. 跟踪控制(视觉伺服 / Nav2 动态目标点)
  6. 闭环验证
  • 仿真演示视频(≥ 10 秒)
  • 实验报告

实施指南(待补)

将补充:Gazebo libgazebo_ros_camera.so 插件配置、YOLO / OpenCV 简化检测节点模板、目标丢失时的行为回退策略。


18.4 机器狗多模态环境感知与异常预警

学时:6

  • 掌握多传感器联合配置与时间同步
  • 理解传感器噪声与真实环境差异
  • 体验多源数据融合算法验证流程
  • 培养仿真场景设计能力
  1. 多传感器配置(激光 + 深度相机 + IMU)
  2. 数据同步(message_filters / ApproximateTime)
  3. 单模态检测算法(激光障碍 / 视觉障碍各自独立)
  4. 多传感器融合逻辑实现
  5. 行为响应(异常预警 / 停机 / 绕行)
  6. 场景测试
  • 仿真演示视频
  • 实验报告(含融合前后对比)

实施指南(待补)

将补充:message_filters 时间同步代码片段、单模态 vs 融合的检出率对比、异常事件的话题协议设计。


18.5 机器狗语音交互与任务执行

学时:6

  • 理解仿真环境下语音交互功能的模拟方式
  • 掌握语音指令解析与机器人控制映射
  • 体验仿真-现实一致性设计
  • 培养复杂交互系统的仿真验证能力
  1. 语音模拟方案与指令系统设计(关键词 / NLU)
  2. 指令解析节点
  3. 动作执行(对接 Action / 第 9 章成果)
  4. 状态反馈(语音播报 / 文字回显)
  5. 任务组合测试
  • 仿真演示视频
  • 实验报告

实施指南(待补)

将补充:Vosk / Whisper 本地语音识别方案对比、指令 → Go2 Action Goal 的映射表、仿真中如何模拟语音输入(预录 wav 循环播放)。


18.6 机械臂的物资转运任务

学时:6

  • 掌握机械臂运动学与动力学建模
  • 理解视觉传感器与手眼标定
  • 体验运动规划(MoveIt 或等价工具)
  • 认识 Sim-to-Real 迁移的常见陷阱
  1. 配置仿真平台(Gazebo + 机械臂 URDF)
  2. 运动学验证(正 / 逆运动学)
  3. 视觉配置(抓取区相机)
  4. 手眼标定(eye-in-hand / eye-to-hand)
  5. 抓取规划(姿态 + 轨迹)
  6. 物理仿真验证(夹爪 + 物体接触)
  • 仿真演示视频
  • 实验报告

实施指南(待补)

将补充:MoveIt 配置流程、ArUco Marker 手眼标定脚本、典型抓取失败模式(滑落 / 穿模 / IK 无解)及解法。


18.7 机器狗与机械臂的自主搬运系统

学时:6

本节是整本教材的收尾,把前面所有能力组装成一个"机器狗驮机械臂主动搬运"的完整仿真系统。

  • 理解高层决策 - 低层执行的分层思想
  • 掌握行为树 / 状态机的实现方式
  • 体验模块化技能封装
  • 培养仿真系统调试能力
  1. 配置仿真平台(机器狗 + 机械臂联合仿真)
  2. 4 个技能仿真实现(移动 / 抓取 / 搬运 / 放置)
  3. 行为树决策层(BehaviorTree.CPP / py_trees)
  4. 仿真闭环集成
  5. 参数调优与测试
  • 仿真演示视频(完整搬运流程)
  • 实验报告(含行为树截图 + 技能抽象说明)

实施指南(待补)

将补充:BehaviorTree.CPP 的 XML 骨架、技能接口设计规范(每个技能都是一个 Action Server)、典型失败模式的回退分支。


小结与下一步

  • 本章 7 个实验把前面各章能力组合成可交付的小项目
  • 18.1 是基础复盘,18.2-18.6 是单点能力深化,18.7 是整体综合
  • 完成情况与实施细节会随迭代持续补充

完成本章的读者,手上应该有: - 1 张自己建的地图(18.1.3) - 7 段仿真 / 实机演示视频 - 7 份实验报告

下一章 第 19 章 未来方向 — RL 与具身智能 里,我们把视野拉得更远一点,聊聊这套栈之后的演进路线。