ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

四足机器人仿真训练实战:从运动控制到Sim2Real迁移

四足机器人仿真训练实战:从运动控制到Sim2Real迁移 这些年机器人赛道的热度一直居高不下。无论是四足机器人、人形机器人还是各种垂直场景的智能装备每隔一段时间就会出现在科技新闻和资本话题里。宇树科技作为国内四足机器人和人形机器人领域关注度很高的公司常常被当作讨论的样本。很多人看到“蒸发2000亿”这类描述第一反应是去看股价和行情但对于做技术的人来说我更想聊的是另一层东西当行业热度起伏时真正值得沉淀下来的到底是什么这篇文章我不想分析资本市场也不打算讨论估值模型。我想从一名开发者的视角把和宇树科技、四足机器人、运动控制、仿真训练相关的技术栈拆开聊聊如何从零开始搭建一套四足机器人仿真训练环境理解步态规划、强化学习、Sim2Real 迁移的核心思路并且给你一套可以复现的代码骨架和排错清单。如果你是刚开始接触机器人开发的学生或者在工作中需要评估机器人方案的后端工程师又或者只是对宇树科技这类公司使用的技术栈好奇这篇文章都适合你。读完以后你能理解四足机器人运动控制的整体流程能搭起一个最小可用的仿真训练项目也能知道真实项目落地时最容易在哪里翻车。1. 背景与核心概念1.1 从产品热度说起提到宇树科技很多人的第一印象是那只跑起来很稳的四足机器人或者是后来推出的人形机器人产品。这家公司早期以四足机器人进入大众视野产品线覆盖教育、科研、巡检、表演等场景。它的走红一方面来自产品的机械结构和运动控制表现另一方面也来自行业对机器人落地前景的想象。但“市值蒸发2000亿”这一类说法其实反映的是整个机器人赛道在资本层面的波动。热点来时资金会把预期拉得很高热度退去时又容易出现集体回调。对技术人来说这种波动不应该干扰我们的学习主线。因为无论资本态度如何变化机器人的机械设计、运动控制、环境感知、仿真训练等底层技术始终都在持续演进。换句话说产品会被讨论市值会波动但技术栈的积累是长期有效的。这篇文章要做的就是把和四足机器人开发最相关的技术链路梳理清楚。1.2 四足机器人是什么四足机器人简单来说就是依靠四条腿运动的机器人。和轮式机器人相比四足机器人在复杂地形上的通过能力更强可以爬上台阶、跨过障碍、适应不平整路面。它比双足机器人更容易保持静态稳定也比履带式机器人更灵活。从应用场景看四足机器人常见的用途包括工业巡检在化工厂、电力管廊、矿山等环境中代替人工巡检。应急救援进入人类难以到达的危险区域执行探测任务。科研教学作为多传感器融合、运动控制、强化学习算法的实验平台。表演展示通过编队、舞蹈、互动等方式展示机器人的运动能力。四足机器人整体上是一个复杂的软硬件系统包含机械结构、电机驱动、传感器、嵌入式控制、上位机算法等多个部分。对于初学者来说最容易上手的方向是“运动控制”和“仿真训练”因为这两个方向不需要一开始就接触底层电机调试也能直观感受到算法的效果。1.3 运动控制与仿真训练运动控制解决的是“机器人怎么动起来”的问题。具体来说包括给定目标速度机器人如何调整腿的摆动频率和幅度。遇到障碍物时如何切换步态。身体倾斜时如何恢复平衡。传统方法依赖运动学、动力学建模和步态规划工程上很成熟但面对复杂地形时扩展性有限。近年来强化学习被引入四足机器人控制让机器人通过大量仿真试错来学习运动策略效果在很多场景下超过了手工设计的控制器。仿真训练就是在虚拟环境中让机器人先“跑起来”。为什么要先仿真原因很简单真实环境中的调试成本太高了。让真实机器人摔一次可能就要修半天而在仿真环境里摔多少次都只是数据。仿真环境还可以加速时间流逝、批量并行训练让几百万次试错在几小时内完成。当然仿真也有一个经典难题——Sim2Real Gap。也就是仿真里学到的策略迁移到真实机器人上时效果会打折扣。后面我会专门讲这个问题。2. 环境准备与版本说明2.1 整体技术选型在开始搭建之前先看到我们需要的核心组件组件用途常用选择操作系统运行开发工具和仿真环境Ubuntu 20.04 / 22.04编程语言编写算法和控制逻辑Python 3.8机器人仿真器提供虚拟物理环境和传感器模拟MuJoCo / Isaac Sim / Gazebo深度学习框架训练强化学习策略PyTorch强化学习库封装训练流程和算法rl_games / stable-baselines3 / skrl运动控制库实现基础控制接口legged_gym 或自研代码版本需要根据你的项目实际情况调整本文示例以常见环境为例重点演示配置思路。如果你使用的是其他操作系统或版本请按官方文档对应调整。2.2 安装 Python 和 PyTorch先用 conda 创建一个独立的 Python 环境避免不同项目的依赖冲突。conda create -n legged_robot python3.8 conda activate legged_robot pip install torch torchvisionPyTorch 的安装命令会根据你的 CUDA 版本变化。如果你只有 CPU也可以安装 CPU 版本但训练速度会慢很多。建议先确认自己的显卡型号和驱动再选择对应的安装命令。2.3 安装 MuJoCoMuJoCo 是一个轻量级物理仿真器由 DeepMind 开源维护非常适合做四足机器人运动控制研究。它会自动处理刚体动力学、接触碰撞、关节约束等计算可以直接安装 Python 绑定。pip install mujoco安装完成后可以用下面的代码快速验证环境是否正常import mujoco xml mujoco worldbody light nametop pos0 0 1.5/ body namebox pos0 0 0.5 geom typebox size0.2 0.2 0.2 mass1/ freejoint/ /body /worldbody /mujoco model mujoco.MjModel.from_xml_string(xml) data mujoco.MjData(model) mujoco.mj_step(model, data) print(data.qpos)如果上面代码能打印出位置数据说明 MuJoCo 安装成功。2.4 准备一个机器人模型文件四足机器人仿真训练需要一个 URDF 或 MJCF 格式的模型描述文件。这个文件描述了机器人的连杆、关节、质量、碰撞形状等属性。宇树科技的一些产品会提供官方 SDK 或模型文件具体以你拿到的资源为准如果没有可以使用开源的四足机器人模型来练习。你也可以自己写一个简化的 MJCF 模型。下面是一个只有髋关节和膝关节的简化四足模型示例用于感受模型结构和仿真加载过程mujoco modelsimple_quadruped compiler angledegree/ option timestep0.002/ worldbody light namelight pos0 0 3/ geom nameground typeplane size5 5 0.1/ body namebase pos0 0 0.5 freejoint/ geom namebase_geom typebox size0.15 0.08 0.04 mass3/ !-- 腿部结构省略 -- /body /worldbody /mujoco需要注意的是这只是一个占位模型。真正用于训练的模型需要包含 12 个关节的全部定义并且要精心调节质量、摩擦系数、电机力矩等参数否则仿真结果会和真实机器人差得很远。3. 核心语法、配置或原理拆解3.1 运动学基础在四足机器人控制里我们经常听到“正运动学”和“逆运动学”。它们的区别很简单正运动学已知每个关节的角度求机器人的足端位置。逆运动学已知希望足端到达的位置求每个关节应该转多少角度。控制机器人行走时我们通常先规划足端的运动轨迹再用逆运动学解算关节角度。逆运动学求解方法有解析法和数值法。四足机器人腿部结构一般是三连杆解析法可以给出闭式解效率高适合实时控制。以一条腿为例如果我们已知髋关节到足端的水平距离和垂直距离就可以通过余弦定理计算出膝关节角度。具体公式推导很多教材都有这里不展开但你需要理解逆运动学的目标是把“足端目标位置”转换为“关节目标角度”。3.2 步态规划步态就是四条腿按什么顺序抬腿和落地。最常见的步态包括Walk 步态慢速移动四条腿依次抬起。Trot 步态对角的两条腿同时抬起类似马的快步走。Bound 步态前两条腿一起抬起后两条腿一起蹬地适合高速奔跑。以 Trot 步态为例定义四条腿为 FL左前、FR右前、RL左后、RR右后。Trot 步态将四条腿分成两组(FL, RR)和(FR, RL)。同一组的两条腿相位相同两组之间相位差 180 度。用数学语言来描述就是phase 2 * pi * t / T其中T是步态周期t表示时间。当phase pi时第一组腿处于支撑相第二组腿处于摆动相当phase pi时两组交换。这样用一个简单的相位变量就能控制整个步态循环。步态规划的输出是足端在空间中的参考轨迹。最常见的轨迹是摆线轨迹抬腿时足端从后方抬起到前方再落下。这种轨迹可以让身体运动更平滑减少冲击。3.3 强化学习训练框架近年来四足机器人运动控制最热门的路线是强化学习。和传统方法相比强化学习不依赖精确的动力学模型而是通过“试错”来学习策略。基本流程是在仿真环境中定义机器人的状态空间例如关节角度、角速度、身体朝向。定义动作空间例如目标关节角度或力矩。设计奖励函数告诉机器人“怎样做是对的”。让机器人不断尝试动作根据奖励更新策略网络。训练完成后将策略导出并在真实机器人上部署。奖励函数的设计尤为关键。如果奖励太稀疏机器人不知道做什么如果奖励设计不当机器人可能学会“钻空子”例如利用仿真漏洞来获取奖励。比如你希望机器人向前跑如果只奖励前进速度机器人可能学会侧翻然后滑行虽然速度很快但完全不是正常步态。所以通常要加上关节力矩惩罚、身体姿态惩罚、动作平滑度奖励等辅助项。3.4 Sim2Real 迁移思路Sim2Real 是强化学习部署到真实机器人时最难的问题。仿真和真实环境永远不可能完全一致差异来源于传感器噪声。关节延迟。摩擦力不均匀。电机力矩输出误差。机械结构公差。解决 Sim2Real 的常用方法是Domain Randomization也就是在训练时随机化仿真的物理参数。比如随机改变机器人连杆质量、电机力矩、摩擦力、地面摩擦系数等让策略在多种环境下都能工作从而增强对真实环境的泛化能力。另一个常用手段是课程学习。先让机器人在简单地形上训练比如平地和低矮台阶等策略稳定后再逐步增加地形难度避免一开始就把机器人困在无法完成的任务里。4. 完整实战案例4.1 项目结构设计为了让你能直接跑起来我设计了一个最小化的四足机器人仿真训练项目。它不依赖完整的大规模训练框架只使用 MuJoCo 物理仿真和 numpy 计算完成一个简化版 Trot 步态的开环控制演示。这个项目的价值在于搭建好模型和运动控制框架让你能看到机器人动起来。项目结构如下legged_demo/ ├── models/ │ └── quadruped.xml ├── scripts/ │ ├── kinematics.py │ └── run_trot.py └── README.md4.2 创建简化的四足机器人模型在models/quadruped.xml中我们定义一个包含躯干和四条腿的简化模型。每条腿有髋关节和膝关节两个自由度所以整机共 8 个自由度简化处理实际四足机器人通常是 12 个自由度。mujoco modeltrot_quadruped compiler angledegree/ option timestep0.002/ default joint damping0.1 armature0.01/ geom friction0.8 density1000/ /default worldbody light namelight pos0 0 3/ geom nameground typeplane size5 5 0.1/ body namebase pos0 0 0.45 freejoint/ geom namebase_geom typebox size0.15 0.08 0.04 mass3/ !-- FL leg -- body nameFL_hip pos0.12 0.07 0 joint nameFL_hip_joint typehinge axis0 1 0 range-30 30 limitedtrue/ geom nameFL_hip_geom typebox size0.03 0.02 0.03 mass0.2/ body nameFL_thigh pos0 -0.02 -0.1 joint nameFL_knee_joint typehinge axis0 1 0 range-180 0 limitedtrue/ geom nameFL_thigh_geom typecapsule fromto0 0 0 0 0 -0.18 size0.015 mass0.3/ body nameFL_foot pos0 0 -0.18 geom nameFL_foot_geom typesphere size0.02 mass0.1/ /body /body /body !-- FR leg -- body nameFR_hip pos0.12 -0.07 0 joint nameFR_hip_joint typehinge axis0 1 0 range-30 30 limitedtrue/ geom nameFR_hip_geom typebox size0.03 0.02 0.03 mass0.2/ body nameFR_thigh pos0 0.02 -0.1 joint nameFR_knee_joint typehinge axis0 1 0 range-180 0 limitedtrue/ geom nameFR_thigh_geom typecapsule fromto0 0 0 0 0 -0.18 size0.015 mass0.3/ body nameFR_foot pos0 0 -0.18 geom nameFR_foot_geom typesphere size0.02 mass0.1/ /body /body /body !-- RL leg -- body nameRL_hip pos-0.12 0.07 0 joint nameRL_hip_joint typehinge axis0 1 0 range-30 30 limitedtrue/ geom nameRL_hip_geom typebox size0.03 0.02 0.03 mass0.2/ body nameRL_thigh pos0 -0.02 -0.1 joint nameRL_knee_joint typehinge axis0 1 0 range-180 0 limitedtrue/ geom nameRL_thigh_geom typecapsule fromto0 0 0 0 0 -0.18 size0.015 mass0.3/ body nameRL_foot pos0 0 -0.18 geom nameRL_foot_geom typesphere size0.02 mass0.1/ /body /body /body !-- RR leg -- body nameRR_hip pos-0.12 -0.07 0 joint nameRR_hip_joint typehinge axis0 1 0 range-30 30 limitedtrue/ geom nameRR_hip_geom typebox size0.03 0.02 0.03 mass0.2/ body nameRR_thigh pos0 0.02 -0.1 joint nameRR_knee_joint typehinge axis0 1 0 range-180 0 limitedtrue/ geom nameRR_thigh_geom typecapsule fromto0 0 0 0 0 -0.18 size0.015 mass0.3/ body nameRR_foot pos0 0 -0.18 geom nameRR_foot_geom typesphere size0.02 mass0.1/ /body /body /body /body /worldbody /mujoco这个模型把腿部做了简化大腿部分使用从髋关节向下延伸的capsule几何体来表示膝盖关节只允许向一个方向旋转模拟真实四足机器人腿部的外形和运动范围。4.3 编写运动学计算模块在scripts/kinematics.py中我们实现单腿的逆运动学。已知足端相对髋关节的位置求解髋关节和膝关节角度。import numpy as np L1 0.1 # 髋关节到膝关节的长度 L2 0.18 # 膝关节到足端的长度 def leg_inverse_kinematics(x, y, z): 计算单腿逆运动学。 参数 x: 足端相对髋关节的前方偏移 y: 足端相对髋关节的侧向偏移 z: 足端相对髋关节的高度向上为正 返回 hip_angle, knee_angle单位弧度 # 侧向髋关节角度 hip_yaw np.arctan2(y, np.sqrt(x**2 z**2)) # 在 xz 平面内计算膝关节角度 d np.sqrt(x**2 z**2) cos_knee np.clip((d**2 - L1**2 - L2**2) / (2 * L1 * L2), -1.0, 1.0) knee_angle np.pi - np.arccos(cos_knee) alpha np.arctan2(z, x) beta np.arccos(np.clip((L1**2 d**2 - L2**2) / (2 * L1 * d), -1.0, 1.0)) hip_pitch alpha beta return hip_pitch, knee_angle这里把腿部抽象为一个二连杆结构忽略侧向髋关节偏移的细节。在完整项目中你需要根据实际机械尺寸修正。4.4 编写 Trot 步态控制器在scripts/run_trot.py中我们使用 MuJoCo 加载模型并利用逆运动学计算关节角度。import mujoco import numpy as np import time MODEL_PATH models/quadruped.xml # 步态周期 PERIOD 0.4 # 抬腿高度 SWING_HEIGHT 0.05 # 步长 STEP_LENGTH 0.04 LEG_NAMES [FL, FR, RL, RR] # Trot 配对(FL, RR) 为 A 组(FR, RL) 为 B 组 # 相位差为 0.5 个周期 def compute_foot_positions(t): phase (t / PERIOD) % 1.0 foot_positions {} for i, leg in enumerate(LEG_NAMES): if leg in [FL, RR]: leg_phase phase else: leg_phase (phase 0.5) % 1.0 # 默认站立位置 if F in leg: x0 0.12 else: x0 -0.12 if L in leg: y0 0.07 else: y0 -0.07 z0 0.0 # 足端相对髋关节的垂直偏移假设站立时在 0 if leg_phase 0.5: # 支撑相足端从 (x0 step/2) 向后移动到 (x0 - step/2) k leg_phase * 2 x x0 STEP_LENGTH / 2 - STEP_LENGTH * k z 0.0 else: # 摆动相足端从 (x0 - step/2) 抬起移动到 (x0 step/2) k (leg_phase - 0.5) * 2 x x0 - STEP_LENGTH / 2 STEP_LENGTH * k z SWING_HEIGHT * np.sin(np.pi * k) foot_positions[leg] (x, y0, z) return foot_positions def set_joint_targets(model, data, foot_positions): for leg, (x, y, z) in foot_positions.items(): hip_angle, knee_angle leg_inverse_kinematics(x, y, 0.45 - 0.02 - z) # MuJoCo 中自由度按照模型中的顺序排列 hip_joint_name f{leg}_hip_joint knee_joint_name f{leg}_knee_joint hip_id mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_JOINT, hip_joint_name) knee_id mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_JOINT, knee_joint_name) data.qpos[hip_id] hip_angle data.qpos[knee_id] knee_angle def main(): model mujoco.MjModel.from_xml_path(MODEL_PATH) data mujoco.MjData(model) renderer mujoco.Renderer(model, 640, 480) t0 time.time() for i in range(3000): t time.time() - t0 foot_positions compute_foot_positions(t) set_joint_targets(model, data, foot_positions) mujoco.mj_step(model, data) if i % 20 0: renderer.update_scene(data) # 这里只是渲染保存或展示需要额外处理 print(fstep{i}, base_position{data.qpos[0:3]}) renderer.close() if __name__ __main__: main()需要说明的是上面这个控制器直接把逆运动学结果写到data.qpos上这在 MuJoCo 中相当于“位置控制”。如果你想要力矩控制需要计算 PD 控制律也就是根据当前关节位置和目标位置的误差输出关节力矩。4.5 运行与验证在项目根目录执行cd legged_demo python scripts/run_trot.py如果一切正常你会看到程序输出 base_position 的数值且 x 方向的位置随时间变化说明机器人在向前移动。在你自己的机器上你可以打开 MuJoCo 的可视化窗口观察机器人是否以 Trot 步态前进。4.6 结果说明上面这个例子是一个开环控制的演示。所谓开环就是控制器不做状态反馈只是按固定节拍输出关节角度。它的优点是简单缺点是遇到障碍或外力时机器人容易摔倒。在实际产品中机器人一定会加入反馈控制例如姿态反馈、足端力反馈甚至是通过视觉感知提前调整步态。这个例子虽然简单但可以帮助你建立起“模型文件 逆运动学 步态规划 仿真器”的完整链路。之后无论是替换成更复杂的模型还是加入强化学习都是在这一套基础设施上做扩展。5. 常见问题与排查思路5.1 仿真中机器人很快就摔倒问题现象常见原因解决思路机器人一启动就倒地初始姿态不稳定质心位置不在支撑多边形内调整初始 qpos降低机体重心增大腿部站立横向距离步态混乱四条腿乱动相位设置错误检查 Trot 步态的相位配对确认 A/B 组相位差为 0.5机器人原地打滑地面摩擦系数太小增大friction参数检查足端碰撞几何是否正确关节角度超限逆运动学解算出的角度超出关节限位检查腿部长度参数和足端轨迹范围必要时限制步长排查顺序建议先看初始姿态再检查关节限位然后看摩擦系数最后分析步态相位逻辑。5.2 逆运动学解算角度异常逆运动学常见的坑是目标点在机械臂的不可达范围内。比如腿部长度只有 0.28 米你却要求足端高度为 0.5 米代入公式时余弦定理中间量会超出[-1, 1]的范围导致arccos报错。解决方法是使用np.clip对中间量做裁剪同时在上层判断目标点的可达性。5.3 强化学习训练不收敛如果你从开环控制进入到强化学习训练最常见的问题包括奖励函数稀疏机器人在环境中随机探索很难碰到“正确行为”。状态空间设计不合理状态中缺少关节速度、身体姿态信息策略无法感知自身状态。训练步数不足强化学习通常需要数百万步交互不是几千步就能学出来的。物理参数固定如果训练环境永远不变策略会很脆弱换到新环境就失效。建议从简单的任务开始例如“保持直立不摔倒”成功后再扩展到“向前走指定距离”。逐步增加难度暴露问题后再优化奖励函数和网络结构。5.4 仿真环境和真实机器人差异大Sim2Real Gap 是机器人领域最经典的问题之一。当你把仿真训练好的策略部署到真实机器人时会发现动作变得抖动。机器人无法保持平衡。步态周期有明显延迟。常见原因包括仿真中没有加入传感器噪声、电机延迟、通信延迟或者摩擦力等物理参数和真实环境差异太大。解决方案就是对系统建模时加入噪声模型使用 Domain Randomization 训练并在仿真中模拟真实控制器的延迟特性。6. 最佳实践与工程建议6.1 代码组织与配置管理机器人项目的代码量通常不小建议从一开始就按功能模块拆分models/机器人模型文件。configs/参数配置使用 YAML 管理不要硬编码在代码里。scripts/训练、测试、可视化的入口。src/核心算法库包括运动学、控制、奖励函数、环境封装。训练参数、机器人物理参数、奖励权重都应该放进配置文件方便做实验对比。实验日志中要记录参数版本和代码版本否则几个月后你很难复现某一次训练结果。6.2 仿真和实物的关系仿真训练的目标不是让机器人“在仿真里完美”而是“在部署到真实环境时成功率高”。因此不要花太多精力去调仿真参数匹配某个特定场景而应该专注于让策略在不同场景下都具备鲁棒性。这也是为什么知名机器人公司大多会在训练阶段刻意增加随机性。随机化不仅包括物理参数还包括初始状态、地面摩擦、目标速度、外部扰动等。一个在大量随机环境中都表现良好的策略才更有可能通过 Sim2Real 迁移的考验。6.3 安全边界真实机器人调试时的安全更加重要尤其是中大型四足机器人或人形机器人一旦失控可能对人和设备造成伤害。在这里整理几条必须遵守的安全规范在仿真环境中充分验证后再上真实机器人测试。首次上真机时使用安全绳或限制活动范围。准备急停按钮确保紧急情况下能立即切断电机输出。在代码中限制最大关节速度和最大输出力矩防止失控。所有危险测试必须有两人以上在场一人操作一人监护。6.4 日志与数据记录训练和测试过程中要记录充分的日志包括机器人的关节角度、关节速度。关节输出力矩。身体姿态IMU 数据。奖励值及其各个组成部分。每个 episode 的运动距离、摔倒次数。这些数据不仅有助于分析模型失败的原因也能帮助你在仿真和真实之间做对比。比如发现仿真中机器人可以轻松跨越 5cm 台阶但真实机器人失败率很高就可以反推是否为足端摩擦力模型不准确。6.5 版本管理与可复现性机器人项目涉及大量脚本和模型文件建议使用 Git 做版本管理同时把依赖锁定在配置文件中。对于训练得到的模型权重文件建议使用专门的模型管理方式记录训练时间、数据版本、参数版本。如果你和团队协作开发还建议约定环境命名规范。例如训练环境使用TrotEnv-v1这样的命名配置版本使用v1.2.0这样清晰的语义化版本号。后期排查问题时能省下大量时间。7. 总结与学习路线这篇文章从机器人热点的讨论切入重点梳理了四足机器人开发的技术主线。你可以看到不管外界怎么评价一家公司或一个赛道运动控制、仿真训练、Sim2Real 这几项核心技术都不会过时。通过动手搭建一个简化的四足机器人 Trot 步态仿真你掌握的不仅仅是几个 Python 脚本而是一整套思考机器人问题的方法。如果你刚从零开始接触这个方向建议按下面的路径继续学习补充机器人学基础学习坐标系变换、旋转矩阵、刚体运动学、动力学。推荐阅读《机器人学导论》或《Modern Robotics》的前半部分。熟悉一款物理仿真器把 MuJoCo 教程完整过一遍知道如何定义关节、传感器、执行器。掌握强化学习理论了解策略梯度、PPO、状态空间、动作空间、奖励函数设计动手写一个小规模的 CartPole 例子。复现一个开源运动控制项目找一个人气的四足机器人强化学习开源项目跑通训练和部署流程。回到真实硬件上验证通过仿真训练得到的策略结合真实机器人平台做迁移测试记录差异并迭代。最后给你一个实用建议不管你用的是什么机器人、什么仿真器先把跑步的完整链路跑通再追求步态的完美。很多初学者一开始就想实现教科书级的最优步态结果卡在环境安装和模型配置上浪费了大量时间。先把最简单的动作做出来再逐步迭代这样你的技术成长路径会更加顺畅。如果这篇文章对你有帮助可以收藏备用。也欢迎在评论区聊聊你在机器人仿真训练中遇到过的奇怪问题我会尽量帮你分析。
返回列表