ARTICLE DETAIL

资讯详情

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

用强化学习训练一只捡袜子的小黄鸭:从仿真到实体的完整实战

用强化学习训练一只捡袜子的小黄鸭:从仿真到实体的完整实战 这只小黄鸭不仅能帮你捡袜子还能教会你强化学习我估计每个做机器人或者搞控制的人家里都堆着几只不知道该怎么处理的袜子。前阵子我实在受不了了又不想买那种几百块、只会按照固定路线跑的扫地机器人干脆自己动手做了一只小黄鸭。这小东西的本职工作是趴在地上帮我捡袜子但真正有意思的地方在于它是我用强化学习训练出来的。没错就是那种让智能体自己试错、自己总结规律、最后学会一套完整控制策略的算法。这篇文章我会从头到尾把这套东西讲清楚为什么会选择强化学习而不是传统控制方案小黄鸭的硬件和软件是怎么搭起来的训练过程中踩了哪些坑以及我是怎么把仿真里的策略迁移到实体机器人身上的。如果你正在纠结“强化学习到底能做什么”或者“强化学习机器人怎么落地”这篇文章应该能给你一个比较完整的参考答案。内容会偏实操代码和思路我都会讲但不会贴整个工程代码毕竟每个项目都有自己的上下文硬抄没意义。1. 内容整体设计与思路拆解1.1 为什么一个捡袜子的任务要用强化学习先说最核心的问题为什么不用传统控制捡袜子这个任务听起来简单但拆开之后你会发现它本质上是“视觉感知 路径规划 机械臂控制 抓取策略”的组合问题。传统的做法基本是这样的先用摄像头识别袜子的位置然后调用一个路径规划算法比如RRT或者A*算出机械臂末端要走的路再用逆运动学IK把末端轨迹转换成每个关节的角度序列最后伺服控制去执行。这套方案成熟吗成熟。可靠吗也可靠。但它有一个很致命的弱点整个世界模型必须精确到令人发指的程度。袜子的形状是随机的堆在地上的姿势千奇百怪。地毯的纹理、光照的变化、袜子被压住一半的情况传统控制链路里任何一环出现模型偏差最后的抓取就会失败。而强化学习解决的是另一类问题我不告诉你该怎么做我只告诉你什么是对的、什么是错的。通过大量尝试智能体自己学会一套鲁棒性极强的映射关系——从“像素/状态输入”直接到“关节力矩输出”。1.2 强化学习在这个项目里的定位是什么说到强化学习很多人会立刻想到Atari游戏、AlphaGo这些场景。但实际上把强化学习用在小黄鸭身上它的定位和游戏AI完全不同。在游戏里你只需要一个策略网络一个奖励信号算法跑几千万步就能搞定。但在机器人场景里你的策略网络输出的是物理世界的动作指令。这就引出了一个关键设计我在小黄鸭项目里实际上是让强化学习来替代“路径规划 逆运动学求解”的中间层。底层的关节控制我还是用了传统的PID控制。也就是说PPO算法输出的不是PWM波或者电流值而是目标角度或者目标角速度然后底层的PID控制器去跟踪这个角度。这里一定要用这种架构别让强化学习直接输出电机电流。为什么因为强化学习输出电流的话策略网络的输出范围是极大的连续空间而且电机响应延迟会直接导致训练发散。分层架构可以极大缩小探索空间让策略集中在“手眼协调”和“抓取决策”上而不是纠结于电机动态响应这种琐碎细节。提示强化学习不一定是端到端的。在实际工程项目里往往是“强化学习 传统控制”混搭。策略负责决策层传统控制负责执行层。这能大幅降低训练难度同时保持系统的安全性。1.3 整个项目要解决哪些子问题我把小黄鸭捡袜子拆成了几个明确的子任务状态感知如何知道袜子的位置和朝向使用单目摄像头加Aruco标记来减少识别难度。动作表达小黄鸭的机械臂该用多大的动作维度用5自由度的机械臂动作向量是5个关节目标角度。奖励设计怎么告诉智能体“你的动作是好的还是坏的”稀疏奖励 密集奖励混合。安全约束训练时如何避免机械臂打到自己或者损坏电机在仿真里加关节角度限制在实体上电流限制。迁移策略仿真训练好的策略怎么用到真实硬件上通过域随机化缓解sim-to-real gap。其实每一块单独拿出来都能写一大篇。我重点讲讲两个最核心的部分仿真环境搭建和奖励函数设计。因为这两个部分直接决定了模型能不能收敛以及收敛后策略是不是好用的。2. 核心细节解析与实操要点2.1 硬件平台选型便宜才能放开胆子试错小黄鸭的硬件选型我的原则很简单能用便宜的就不用贵的因为强化学习初期必然有各种暴力试错撞坏了不心疼。主控树莓派4B4GB版本跑Python推理还算够用。机械臂一套5自由度的桌面级舵机机械臂舵机是MG996R。扭力够用反应速度一般但胜在便宜、耐操。视觉一个普通的USB广角摄像头固定在支架上俯视抓取区域。定位辅助袜子旁边贴一个Aruco二维码。这算是一个“作弊”操作但做项目初期非常有效可以把视觉目标识别问题简化为“识别二维码中心点”把精力集中在抓取策略上。底盘两颗直流减速电机差速驱动让小黄鸭可以在房间里移动。重点说一下为什么不用高精度机械臂。高精度机械臂确实控制起来更友好但价格摆在那里而且它有一个隐藏问题你太怕它坏了。强化学习训练免不了出现奇怪的动作策略网络在前期探索阶段会随机输出很大的关节角速度这很容易把高精度谐波减速器干坏。反观MG996R这种舵机堵转一下也就是发热烧个齿轮换个齿轮几块钱。2.2 仿真环境选择MuJoCo是最省心的选择在实体上直接训练强化学习是不可行的原因很简单样本效率太低试错成本太高。实体训练一次需要几秒钟动作执行而在仿真里同样的时间可以跑几百步。所以我先用MuJoCo搭建了一个高保真仿真环境。为什么选MuJoCo而不是PyBullet或者Gazebo几个原因MuJoCo的接触模型非常准确。抓取这个动作的核心就是接触接触力算不准训练出来的策略拿到实体上必然废掉。MuJoCo的求解速度极快可以支持大规模并行环境采集经验。DeepMind维护和dm_env接口兼容好写环境wrapper非常方便。我在MuJoCo里建了一个简化版的小黄鸭模型机械臂几何尺寸和实体完全一致但省略了外壳细节。关键参数是每个关节的转动范围、关节限位、舵机最大输出力矩和响应延迟。这些参数如果不校准训练出来的策略直接就是废纸。2.3 状态空间与动作空间的设计细节状态空间我是这么设计的不只是机械臂关节角度还包括视觉信息。在MuJoCo里我直接给了“仿真真值”——也就是袜子的位置坐标和朝向角度。这看起来像是作弊但在我的方案里是有意的分层设计先用真值训练一个基于状态非视觉的抓取策略等这个策略稳定了再接上视觉模块用一个小型CNN把图像映射到袜子坐标替换掉真值输入。这样做的好处是把问题解耦成两个子问题视觉部分是一个标准的监督学习问题抓取控制部分是一个标准强化学习问题。两个问题分开调参远比直接做端到端的image-to-action要快得多也稳定得多。动作空间方面我选了连续动作空间输出5个关节的目标角度范围在-1到1之间归一化。为什么不用离散动作空间因为机械臂的关节角度是连续值离散化会限制抓取精度。但连续动作空间也意味着探索难度更大所以后面奖励函数的设计就特别关键。2.4 奖励函数设计心得奖励函数设计是我在这个项目里最想分享的干货因为它极大影响了收敛速度和最终策略质量。第一版我用了纯稀疏奖励如果袜子被抓起来放到篮子边上奖励1其他情况奖励0。实践证明这几乎无法收敛。因为在整个过程中智能体只有在最后成功的那一步才能获得非零奖励而前期随机探索导致成功事件发生的概率极低远远不足以支撑策略学习。这就是经典的奖励稀疏问题。第二版我改成密集奖励具体包含几项靠近奖励夹爪与袜子之间的距离减小给一个小正奖励距离增大给一个小负奖励。这是为了让智能体学会“靠近目标”这个基础行为。抓取奖励当夹爪闭合且袜子被抬起一定高度时给一个比较大的正奖励。这个信号告诉智能体“抓紧了”。移动奖励小黄鸭机体向篮子方向移动时给少量正奖励减少机械臂成功抓取后机体不动导致任务失败的情况。时间惩罚每一步都减去一个小常数鼓励智能体尽快完成任务防止策略变成原地抖动。但是密集奖励也有坑。最典型的是“奖励灌水”问题智能体很快发现只要把夹爪靠近袜子就能稳定获得“靠近奖励”于是它学会了伸过去但不抓。由于抓取动作本身探索难度高它能拿到的“靠近奖励”已经足够覆盖时间惩罚策略就这样陷入局部最优。解决这个问题我用了一个技巧把“靠近奖励”设计成随距离递减的非线性函数。距离越近奖励增长越快。同时只在夹爪达到某个最小距离阈值后才激活“靠近奖励”阈值之外一律不加。这样智能体必须真的去尝试抓取才能拿到足够高的奖励光靠“靠近但不抓”拿到的收益会越来越低最终不得不突破抓取这个瓶颈。提示奖励函数不是一次性从稀疏跳到密集那么简单而是需要反复调整权重。建议自己在训练过程中边跑边看观察策略的表现再针对具体失效模式修改对应的奖励项。3. 实操过程与核心环节实现3.1 仿真训练PPO算法的工程化配置算法我选了PPOProximal Policy Optimization。它算是当前连续控制任务里最稳的算法之一在MuJoCo环境里表现尤其好。我用的实现是CleanRL因为代码干净、依赖少、适合二次开发。先看状态和动作的维度设计# 状态向量7维 # [夹爪x, 夹爪y, 夹爪z, 袜子x, 袜子y, 袜子朝向sin, 袜子朝向cos] # 动作向量5维 # [肩关节角度, 肘关节角度, 腕关节角度, 夹爪开合量, 底盘转向量]PPO的超参数我调了很久最终稳定下来的一套是学习率3e-4使用线性衰减GAE lambda0.95clip系数0.2更新轮数10每轮样本数2048总时间步200万步需要强调的是clip系数不建议调大0.2是经验值。调大了会让策略更新幅度过大导致训练崩溃调小了则学习速度慢。我试过0.3结果训练到一半策略突然退化相当于前功尽弃。3.2 PPO训练流程和奖励曲线解读训练过程中我会同时开多个并行环境这个非常关键。当我用单环境训练时200万步跑了接近3个小时而且不稳定。后来改成12个并行环境训练时间压缩到40分钟稳定性也明显提升了。多环境采样的效果是在同一时间步内收集到更多的经验样本减少了样本之间的时序相关性PPO对这种数据多样性很敏感。训练过程中奖励曲线大概经历了三个阶段第一阶段前20万步奖励在低位剧烈震荡策略基本是随机抖动的但我已经能观察到它偶尔会把手伸到袜子附近虽然大概率会撞翻袜子。第二阶段20万到80万步奖励开始稳步上升智能体学会了“先靠近再抓取”这个顺序结构。这个阶段最有趣你会看到它先把手伸到袜子正上方然后垂直落下稍微夹一下几次里有一次能成功夹起来。第三阶段80万到200万步奖励曲线进入平台期抓取成功率稳定在80%左右。这时我再调整策略的探索率让它趋于保守最终把成功率推进到接近95%。但这里有个问题在仿真里成功率95%拿到真实场景中可能只剩下40%这就是sim-to-real gap。下一步就是想办法缩小这个差距。3.3 Sim-to-Real迁移域随机化与实体测试仿真和实体的差异来自方方面面摩擦力不一样、舵机响应延迟不一样、相机畸变、光照不均。如果用一个“完美仿真”训练出来的策略拿到实体上往往一上手就废。我采用的办法是域随机化Domain Randomization在训练过程中随机化环境参数让策略见过足够多不一样的世界从而学会在所有可能的世界里都比较有效的行为。具体来说我随机化了这些参数袜子的质量20g到80g之间均匀采样夹爪与袜子之间的摩擦系数0.3到1.2关节响应延迟0.02秒到0.1秒视觉输入高斯噪声方差0到0.05袜子的初始位置在抓取区域内随机分布域随机化的核心思想就是一个策略如果能在丰富多变的仿真环境里都表现出色那么它就有一定概率在真实环境里同样好使。当然这种做法不是银弹但实测下来的确能把迁移成功率从40%提到70%以上。实体测试时我发现最影响成功率的是夹爪的摩擦力。仿真里摩擦力设得精确实体上袜子表面材质差异很大——棉袜和丝袜手感完全不同。棉袜摩擦力大好抓丝袜非常滑夹爪容易打滑。针对这个问题我给夹爪加了一层薄硅胶垫相当于物理上增强了摩擦力策略完全不用重新训练。3.4 PID控制器与强化学习的协同前面提到底层用的是PID控制器。这里详细说一下协同方式。PPO策略输出的动作向量是“目标关节角度”而非“关节力矩”。比如策略说“肩关节目标角度37度”那么舵机控制板上的PID控制器就会自动计算PWM占空比让肩关节尽快运动到37度附近。这里PID参数要调得稍微“软”一点也就是响应不能太快。如果PID太激进关节会冲过头造成震荡如果太软又跟不上策略给的指令造成滞后。我在实测中发现一组相对平衡的参数Kp0.8Ki0.1Kd0.05。这组参数下关节跟踪的延迟大约在几十毫秒级别不会明显降低策略的决策频率。提示在设计这个混合架构的时候一定要清楚状态空间和动作空间的时序关系。策略网络每个决策周期我这里是0.1秒输出一次关节目标而PID每毫秒执行一次。两者不在同一个时间尺度上所以PID的响应速度只要足够快策略完全无感知。3.5 实体实验部署实体部署的流程我整理一下方便你参考第一步启动树莓派上的摄像头节点以20FPS的帧率采集画面。 第二步运行Aruco检测模块识别袜子上的二维码中心坐标。 第三步把像素坐标传递给前置CNN网络得到相对于机械臂基座的三维坐标。 第四步拼接状态向量夹爪坐标 袜子坐标 朝向送入PPO策略网络。 第五步网络输出5维动作向量转换成舵机角度指令通过串口发到舵机控制板。 第六步底盘根据策略输出的转向量做差速运动向篮子方向移动。整个推理过程延迟在100ms左右虽然不算快但捡袜子这种场景完全够用。实测下来50次连续测试里能成功捡起并放入篮子的次数大约在35到40次成功率70%到80%。考虑到底层有视觉识别误差和机械臂重复定位精度的问题这个成绩我已经很满意了。4. 常见问题与排查技巧实录4.1 训练不收敛奖励函数和探索策略的双重排查我在训练过程中遇到最多的一个问题就是跑了四五十万步奖励就是不见涨或者涨到一半又掉回去。排查思路按顺序来先看奖励曲线是“一直不涨”还是“涨了一会儿又崩”。如果一直不涨大概率是奖励信号太稀疏智能体根本拿不到正反馈来引导探索。解决方法是增加更细粒度的“课程奖励”比如用距离差分的形状。如果是涨了一会儿又崩基本是更新步长太大PPO的clip没有限制住策略偏移。这时候把clip系数从0.2降到0.1同时降低学习率。还有一个很容易忽略的点动作缩放action scaling。如果你的动作空间范围写的是[-1,1]但环境内部实际把动作乘以了一个大系数相当于策略初始探索范围在物理空间中很大极容易触发关节限位导致一系列无效试错。我建议把关节角速度限制在额定范围的一半以内给策略留出更多“温和”的试错机会。4.2 仿真里能抓起来实体上抓不住这是整个项目里最让人抓狂的问题。仿真里成功率95%实体上一测夹爪要么完全够不到位置要么碰到了但夹不住。我排查下来发现两个主因第一个是视觉标定误差。摄像头和机械臂基座之间的外参标定不准确导致视觉识别出的袜子坐标偏差了1到2厘米。对于大的物体可能无所谓但袜子本身尺寸就不大夹爪抓取窗口又很窄差一厘米就偏了。解决办法是重新做手眼标定用张正友标定法采集二十张棋盘格图把外参重新算一遍坐标误差基本能压到5mm以内。第二个原因是夹爪闭合力度不够。仿真里夹爪对物体的接触力模型是理想化的而实体舵机力量偏小导致夹到但没夹紧一抬臂袜子就滑脱。这个不是重新训练就能解决的需要在硬件上加装硅胶垫增大摩擦或者换用更大扭力的舵机。4.3 策略在实体上表现时好时坏如果实体测试时有时候成功率很高有时候惨不忍睹多半是状态表征出了问题。最常见的情况是袜子的位置正好落在摄像头视野边缘识别出来的坐标有畸变或者偏差。轻则抓偏重则策略输出奇怪的动作直接撞翻袜子。解决方案有两类一类是从数据入手在训练时把袜子初始位置生成范围扩大并专门采样一些靠边的位置让训练数据覆盖到边界区域。另一类是从工程入手当检测到袜子坐标过于靠近视野边缘时先让底盘转个方向把袜子移动到视野中心附近再做抓取。这本质上是“感知-决策”的耦合问题我在实现里选了后者因为改动量小效果立竿见影。4.4 机械臂发生抖动或异响这个问题是实体实验中最吓人的。明明训练好的策略很平滑但舵机偶尔会发出一阵高频抖动。原因基本是“目标角度和当前角度误差很小但PID的Kd取值不合适导致微小幅度的反复震荡”。解决方法是给PID控制器加一个“死区”判断当目标角度和当前角度的差小于0.5度时直接输出零脉宽停止驱动力让舵机自然锁住。这个方法简单粗暴能有效减少舵机抖动还能降低功率损耗。还有一次异响是因为舵机的电位器磨损导致回馈信号不稳定PID控制环读取到错误的当前角度误以为误差很大于是反复驱动。这种就只能换舵机了没有代码层面救回来的可能性。所以硬件品质也会直接影响训练效果和部署体验这方面不能太抠。4.5 奖励机制出现欺骗行为的处理前面提到“奖励灌水”的问题我在这里展开讲一下另一种我遇到的欺骗行为。因为我在奖励里加了“向篮子方向移动给正奖励”智能体很快学到了一招先把机械臂伸出去随便乱抓底盘却一直朝篮子的方向移动。这样它不需要抓取成功也能靠移动拿到大量正向奖励。更糟糕的是移动到某个位置后机械臂挥舞的随机动作碰巧撞到袜子反而偶尔能成功。这个问题本质上是我把移动奖励定义得太宽松了。修正方式是只有在“夹爪握住袜子”的状态成立时移动奖励才生效否则移动只保留时间惩罚。这样就把“捡到之后送回去”和“空跑移动”严格区分开了。奖励函数设计时一定要问自己一个问题这个奖励项是否会让智能体找到一个我没预料到的捷径如果会说明这项奖励定义得不够精准。5. 基于强化学习的PID控制探索5.1 为什么考虑用强化学习调PID在小黄鸭项目的推进过程中我逐渐意识到一个痛点虽然底层PID参数已经调过一轮但不同的抓取状态其实对应着不同的最优PID参数。比如舵机负载轻的时候可以快一点夹住袜子后负载明显增加PID参数还不变的话响应会变慢甚至出现超调。以前的做法是人工根据经验调整但一旦负载变化范围变大人工调整就很吃力。这个时候我想到了一条改进路线用强化学习去在线调整PID系数也就是所谓的“基于强化学习的PID控制”。本质上是把PID参数作为动作输出策略网络根据当前状态输出一组Kp、Ki、Kd让下一时刻的PID控制器用这组参数去跟踪目标。奖励就设计成“跟踪误差平方的负值”加上“振荡惩罚”。5.2 实现思路和初步效果我在仿真里做了一轮实验。状态向量是当前误差、误差变化率、控制输出、以及当前的Kp/Ki/Kd值。动作向量是对Kp/Ki/Kd三个数的增量修正。策略每10步调整一次PID参数让PID控制环能适应当前负载的变化。结果挺有意思训练出来的策略能够在袜子被夹住之后自动降低Kp、增大Kd以抑制超调而在舵机空载时则自动提高Kp提高响应速度。相比固定PID跟踪误差降低了大约30%。但也要诚实说这个方法目前离真正工程落地还有距离。主要问题是安全性在线调整PID参数如果遇到一个奇怪的数值组合可能会导致执行器剧烈抖动这在实体上是很危险的。所以目前我只在仿真里做了验证没敢直接部署到实体小黄鸭上。5.3 离线强化学习的一个备选思路训练过程中我也遇到过另一个问题有时候仿真里已经很好了但实体部署失败我又不想在真实世界里做在线微调cost太高。这时候IQLImplicit Q-Learning这种离线强化学习方法可以考虑。IQL的思路是不用在线收集数据而是用一批已有的、甚至是次优的数据学出一个价值函数和策略。比如我可以先用PPO在线训练跑出几万条轨迹数据然后把这批数据保存下来用IQL离线学习一个更稳健的策略。它的核心优势是不需要和真实环境交互自然避开了在线部署时可能发生的破坏性试错。我并没有在小黄鸭主控链路里完全切换到IQL但因为这个项目确实存在“仿真到实体”数据分布偏移的问题在后续版本里我大概率会考虑把“PPO在线预训练 IQL离线再学习”作为备选链路用来适配实体传感器噪声更大的情况。提示离线强化学习适合“缺乏安全交互环境”的场景但前提是你的离线数据覆盖度足够高。如果数据里就没有出现过某种状态策略面对新状态时会做得非常差。6. 深度强化学习在机器人领域的延伸思考6.1 从捡袜子到更复杂的操作任务小黄鸭捡袜子看起来是个很小的项目但它涵盖的许多技术点是可以平滑迁移到更复杂场景的。当前机器人操作任务里常见的分拣、装配、堆叠本质上都是“视觉感知 策略决策 动作控制”的组合。换个对象换个工件核心框架基本不用大改。比如你可以把袜子替换成魔方、积木、甚至是一些小型电子元器件。只要重新做一遍目标识别和数据标注再针对新的物体物理属性微调一下仿真参数原来的策略网络结构可以完全复用。这就是深度强化学习方法论的优势你写的是决策框架而不是针对某个特定物体的模板代码。6.2 在移动机械臂平台上的扩展应用小黄鸭本质上是一个移动机械臂平台这类结构在工业和家庭场景中越来越常见。我最近也在琢磨如果把小黄鸭底盘上的两个驱动轮换成全向轮或者麦克纳姆轮那移动的灵活性会有巨大提升。不过这意味着底盘运动模型变了PPO策略里底盘的转向动作也要重新设计训练任务量会增加不少。另外机械臂的自由度数量也是一个关键制约因素。目前小黄鸭只有5自由度很多复杂的抓取姿态做不了。如果换一个6自由度或7自由度的机械臂动作空间维度从5维涨到7维训练难度不是线性增长而是指数级增长。这时候可以考虑分层强化学习高层策略决定末端执行器的位置低层策略负责关节角度求解。这本质上就是把逆向运动学IK也变成学习的一部分。6.3 多智能体协同的方向最后再发散一下。如果家里有两只小黄鸭呢一只负责把袜子从床底掏出来另一只负责在篮子旁边接收并摆放整齐。这就变成了一个典型的多智能体协同问题强化学习里的多智能体算法比如MAPPO就能派上用场。当然这个项目我还没有实现。真要做的话首先得解决通信和状态共享的问题两台小黄鸭之间要通过局域网实时同步状态。然后是信用分配的问题——抓取成功这个全局奖励该如何拆解到两只小黄鸭各自的动作上。这些都是未来很有意思的研究方向但现阶段还是先把一只小黄鸭的抓取策略做扎实了更重要。6.4 关于深度强化学习在机器人落地的几点个人看法这一路做下来我的最大体会是强化学习在机器人领域从来不缺漂亮的算法缺的是把算法用对的工程判断力。很多初学者上手就直接上端到端一张图片映射到电机电流理由是“强化学习能自己学会一切”。但实际上这种方案在物理世界里面临的工程问题实在太多光是训练时间就足以劝退大多数人。合理的做法永远是分层、解耦、渐进式推进。另一个体会是仿真环境的质量决定了整个项目的上限。如果你在仿真里用真值状态训练拿到实体上就必然有巨大的感知偏差。如果你从一开始就在仿真里做域随机化实体迁移就会顺利很多。仿真不是用来“假装”做一个机器人实验的仿真本身就是一个需要认真对待的工程模块。写在最后的一点经验小黄鸭这只“袜子搬运工”从立项到实体稳定运行前后大概花了三周时间。仿真训练用了几天实体调试用了更久。回头复盘最大的收获并不是“我做了一个会捡袜子的机器人”而是我真的搞懂了在物理世界里用强化学习做控制每一条奖励曲线、每一个奇怪的失败动作背后其实都有它对应的物理和数学原因。最后再分享一个实用小技巧在实体部署前先在MuJoCo里把训练好的策略跑个几百次统计“失败模式分布”。如果发现失败动作经常是“夹爪从袜子侧面滑过”那你需要考虑是不是夹爪宽度和袜子直径不匹配而不是盲目调大训练步数。这种“先分析失败模式再定优化方向”的思维习惯比任何算法都值钱。
返回列表