21 实践课-AI 协同开发实战与仿真场景综合调试
- AI 协同开发实战与仿真场景综合调试
关联:索引
- 推荐系统:Ubuntu 22.04;ROS2 Humble;Gazebo Fortress(Ignition Gazebo 6,常用入口
ign gazebo;部分系统用gz sim)。 - 必备能力:会用
ign sdf -k或gz sdf -k校验 SDF;会用ros2 topic list/info/hz/bw给出通信证据;会统一设置use_sim_time:=true。 - 工程口径:本讲不强制统一你们的工程目录结构,但必须做到“可复现启动”(launch 固化),并且所有改动都有证据。
术语约定(本讲统一口径):
- 证据链:改了什么(参数/代码/配置)→ 为什么改(针对现象)→ 怎么验证(命令/日志/对比实验)→ 结果如何(截图/数据)。
- 最小闭环:地面 + 传送带区域 + 1 个苹果 + 1 个相机 + 1 条控制指令通路(哪怕是 one-shot),能跑通再扩展。
- 现象对齐:目标是“现象满足需求”(不穿透、送料稳定、抓取成功率提升、延迟下降),而不是“参数看起来专业”。
本节课只完成一件事:每组交付“可复现启动的最小闭环 + 可审计的证据链”。更完整的物理调参与延迟优化迭代,作为课后小组项目继续推进。
每组下课前必须提交 4 类东西(缺一项就算未完成):
- 一份 checklist(物理/数据/控制/性能四栏)。
- 一份最小闭环 world(允许简化传送带/机械臂,只要能跑通并能给证据)。
- 一条数据链路证据(Gazebo 端或 ROS2 端至少一条“确实在发”的证据)。
- 一次迭代证据链记录(物理稳定或延迟优化二选一,只做 1 次也可以)。
- 教师展示一条“从现象到证据”的样例:用 3 条命令证明 world 能跑、传感器在发、数据能被观察到。
提示词结构直接复用模板;本节课只要求你们拿到三样输出:布局表、checklist 初稿、最小 world 骨架。
小组填空版提示词(直接复制,把 <> 替换成你们组数据):
你是 Gazebo Fortress(Ignition Gazebo 6)+ ROS2 Humble 的仿真工程师。
我组场景目标:<一句话说明:分拣产线仿真 + 传感器采集 + 控制闭环>
启动入口:<ign gazebo 或 gz sim>;SDF 版本:<1.8 或你环境版本>
单位与坐标:米/弧度;world: x 前 y 左 z 上;yaw 绕 z
设备与约束:
- 传送带区域:<尺寸 m、期望速度 m/s 或先用接触面代替>
- 物料苹果:<半径 m、质量 kg、数量、初始位姿范围>
- 机械臂工作区:<先留接口/或给出模型名与位姿>
- 分拣箱:<数量、尺寸、位姿>
传感器与交互:
- 相机:<分辨率、update_rate、Gazebo 内部 topic 名>
- 需要进入 ROS2 的话题:<列清单>
- 控制闭环:<控制话题名、频率、期望看到的现象反馈>
验收指标(必须量化):
- 送料稳定:<10s 内不穿透/抖动阈值/滑移上限>
- 延迟:<端到端延迟上限 + 测量方法>
输出要求:
1)先输出一张布局表(设备、pose、尺寸、关键参数)
2)再输出一份综合调试 checklist(物理/数据/控制/性能)
3)最后输出一个“最小可运行”world 骨架
并在末尾列出 3 条验收命令:SDF 校验、启动仿真、确认关键 topic/数据存在
衔接说明:验证与审计的原则、常见错误类型,已在中给出。本节课只按“可执行步骤 + 交付门槛”推进。
3.1)SDF 校验(先校验再启动)
ign sdf -k sorting_integration_min.world
gz sdf -k sorting_integration_min.world
3.2)启动仿真并提高日志详细度
ign gazebo -r -v 4 sorting_integration_min.world
gz sim -r -v 4 sorting_integration_min.world
3.3)用 topic 给出“传感器确实在发”的证据
ign topic -l
gz topic -l
ign topic -e -t /sim/camera/rgb -n 1
交付门槛(5 条审计清单,过不了就先别扩展场景):
- 版本一致:
<sdf version="...">与环境匹配。 - name 唯一:model/link/collision 名不重复。
- 物理可信:动态物体必须有
<inertial>与<collision>。 - 单位一致:尺寸(m)、质量(kg)、角度(rad)量级合理。
二选一即可:做 1 次改动 + 1 次回归验证 + 写清证据链。
4A)物理稳定性快调(穿透/抖动/打滑)
优先顺序:先稳定(穿透/抖动)再谈打滑。
- 首选改动项:
max_step_size、接触kp/kd/min_depth、摩擦mu/mu2(一次只改一个变量或强耦合组)。 - 证据要求:同一初始条件对比截图/视频 + 启动日志关键字 +(可选)位姿/速度话题或统计输出。
4B)延迟/负载快测(先测再改)
先用命令测频率与带宽,再做最小改动(优先降分辨率或 update_rate),然后回归验证。
ros2 topic hz --qos-profile sensor_data /camera/image_raw
ros2 topic bw --qos-profile sensor_data /camera/image_raw
ros2 topic info -v /camera/image_raw
每组把证据链写成 5 行模板并提交(截图/日志/命令输出均可):
改动项:
原因(针对现象):
验证命令/证据:
结果(与上一版对比):
结论(保留/回滚/继续迭代):
- 跑通你们组的最小闭环 world,并提交至少 3 条证据(SDF 校验、启动日志、topic 证据)。
- 完成一次最小迭代(二选一:物理稳定或延迟/负载),并按“证据链模板”提交记录。
课后拓展(小组项目):
- 物理引擎参数调优:至少完成 3 次迭代(每次只改一个变量/强耦合组),并保留对比证据。
- 交互延迟优化:至少完成 2 次迭代(每次都有测量证据与回归验证)。
- 整理模块学习笔记:梳理“仿真建模、传感器配置、ROS2 交互、AI 协同开发”的核心要点与典型坑。
任务 1:生成分拣产线综合调试 checklist
请生成一份“分拣产线仿真综合调试 checklist”,按四栏输出:物理稳定性、数据链路(Gazebo→bridge→ROS2)、控制闭环(ROS2→仿真执行器)、性能与延迟。
要求:
1)每一项都给出“验收证据”(命令/日志关键字/截图要求)
2)每一项都给出“最小回归验证步骤”
3)最后给出 10 条常见问题与最快定位路径(先查什么、再查什么)
任务 2:针对仿真效果问题给出调参建议(带迭代顺序)
我现在的现象是:(用 2-3 句话描述,例如:苹果在传送带上打滑且偶尔穿透;夹爪闭合时苹果弹飞)
我当前关键参数是:(贴出 physics 步长/迭代、苹果 collision 的 mu/kp/kd/min_depth 等)
我的验收指标是:(贴出量化指标)
请输出:
1)最可能的 3 个根因假设(按优先级)
2)每个假设对应的“最小改动”与“预期现象变化”
3)一套 5 步迭代顺序(每步只改一个变量),并写出每步的回归验证命令
任务 3:生成模块核心知识点总结笔记(用于复盘)
请用“可复现工程口径”总结本模块核心要点,必须覆盖:SDF/建模要素、传感器配置、ros_gz_bridge/桥接验收、use_sim_time 与证据链、物理调参方法、延迟优化方法、常见坑与排查路线。
输出要求:
- 以清单形式输出(每条 1-2 句)
- 每个要点配 1 条最常用命令或验证方法
作业:不布置
1)提交分拣产线完整仿真场景文件包(含 .world/.sdf/urdf/launch/config 等所有配置文件)。
2)提交仿真场景综合测试报告(500 字左右),包含:
- 传感器数据采集效果(频率/稳定性证据)
- 设备控制闭环测试结果(闭环行为与证据)
- 物理引擎参数调优过程(至少 3 次迭代,含“参数→现象→证据→结论”)
- 交互延迟优化措施(至少 2 次迭代,含测量方法与对比结果)
3)提交 AI 协同开发记录(300 字左右):
- AI 交互截图/日志
- 生成的方案/代码
- 修改后的代码
- 代码适配与场景优化说明
4)撰写模块学习心得(200 字左右):
- 总结仿真开发与 AI 协同应用的收获与不足
- 结合产业实训需求,规划后续优化方向
Markdown 与代码自检清单(已执行口径)
- 标题层级连续:从
#到##到###无跳级。 - 代码块成对闭合:所有 fenced code block 已闭合且有语言标签。
- 术语一致:Gazebo Fortress / Gazebo Sim(Fortress)/ ROS2 Humble / use_sim_time / /clock / 证据链 口径一致。