仿真用可控制的条件暴露问题。模型越复杂不一定越适合当前问题:检查雅可比可以只用几行数值计算,调试通信需要节点与时钟,研究接触则需要足够可信的几何、摩擦与求解器。先写要验证的假设,再选择环境。
不同层次能证明什么
| 环境 | 适合的检查 | 仍然缺少什么 |
|---|---|---|
| 原创小型数值模型 | 公式、滤波、优化、控制与训练循环 | 真实传感器、结构及复杂接触 |
| ros2_control mock | 接口、名称、资源与控制器管线 | 可信动力学和执行器行为 |
| Gazebo等系统仿真 | ROS集成、传感器与环境交互 | 模型未覆盖的真实误差 |
| MuJoCo等动力学仿真 | 多体、控制、接触与学习任务 | 真实材料、执行器、延迟的全部细节 |
| 真实设备实验 | 指定设备与条件下的实际表现 | 未测场景和设备上的保证 |
MuJoCo的接触、约束与积分器具有具体数值假设,应按官方计算说明理解参数。更小步长可能改变稳定性和成本,不能仅凭画面流畅判断接触可信。
版本应按组合固定
ROS发行版、操作系统、Gazebo、Nav2、MoveIt及控制插件需要作为一组记录。2026-10-24核对官方表,Jazzy仍在支持期,常见官方配对为Gazebo Harmonic;Lyrical列出的配对是Jetty。新版本的存在不证明所有教程和第三方插件已在该组合跑通。ROS发布表与Gazebo兼容表应在安装前再次核对。
本专区已执行的小实验使用Python 3.12.14、NumPy 2.3.5,或只用Python标准库;尚未运行ROS、Gazebo、MuJoCo、PyTorch,未验证这些框架的运行兼容性。涉及它们的章节提供接口、官方入口与验收步骤,不能把数值实验结果移作框架或真机性能。
每个项目保存:代码版本、命令、系统与库版本、配置、随机种子、数据/模型来源和许可、文件校验、训练预算及评价条件。模型权重与数据集版本也要固定,不能只写“下载最新模型”。随机种子有助于复查,但不保证跨硬件、库版本和并行调度逐位一致。
评价任务完成,也评价失败
导航至少记录到达率、碰撞、路径/时间、定位与跟踪误差、重规划和恢复。机械臂至少记录抓取/放置成功判据、位姿误差、掉落、碰撞、周期及重试。学习实验还要分开训练曲线、离线损失与闭环任务结果,报告多个种子及测试分布。
同一模型评估多次时,不能把相邻视频帧随机拆进训练和测试后声称泛化。按episode、场景、物体或设备划分,应与要回答的问题一致。只换一个随机种子不等于换了环境分布。失败样例同样要保存,不能仅挑成功视频。
从仿真走向实物
先检查单位、关节方向、传感器时间与驱动反馈;再在设备允许的条件下测试有限动作、跟踪和停止,逐步增加负载与场景复杂度。域随机化可覆盖部分质量、摩擦和延迟变化,但随机范围需要依据设备与观测,不是越大越好。仿真中的高成功率并不能证明已完成sim-to-real。
练习:为导航、机械臂或学习项目补一份实验记录,明确一个已经检查的结论和一个尚不能下的结论。自查:如果画面相同、控制周期不同,还能把两次运行视为同一实验吗?