四足强化入门3---Robot Lab重点机器人配置,训练和调参

1,Robot Lab机器人架构介绍

#从本质上说,这个主类的作用把locomotion强化学习任务所有关键元素全部组织成一个标准化,可复用的,可继承的环境模板,为后续不同机器人只要在这个模板上替换自己信息配置,奖励函数权重,少量参数就可以快速构建训练环境

1)MySceneCfg:

主要定义了,机器人,地形,传感器,灯光(主要影响视觉)

其中传感器contact_forces 挂在所有机器人的刚体上,保留了3步历史帧,跟踪腾空时间,足式机器人很多都是和contact_forces有关,脚是不是着地了,腾空时间是不是合理,有没有拌脚,有没有滑步,有没有非法接触

2)ObsevationsCfg:

分成俩组,分别是PolicyCfg,CriticCfg,相当于Actor-Critic网络策略

PolicyCfg:

线速度,角速度,投影重力方向,速度命令,投影关节位置,关节速度等,这些关键观测用来闭环控制,而且观测很多都加了 noise = Unoise的噪声 enable_corruption

CriticCfg:

把噪声去除掉,disable_corruption

3)ActionsCfg:

覆盖所有actions,只控制关节位置动作mdp.JointPositionActionCfg

对于足式机器人直接学Torque很难,学习到某一位置,比较平滑,use_default_offset默认站姿态比较合理

4)CommandCfg:

强化主要目的接近线速度,横向速度,角速度,朝向等,会有范围约束的命令

5)MDP

5.1)Rewards奖励

奖励函数比较重要,后面单独说

disable_zero_weight_rewards

5.2)TermianationsCfg:

时间timeout,terrain_out of bounds,illegal_contact重置交互,节省算力

5.3)EventCfg:

随机化目的是让刚体材质,质量,外力等外界环境具有随机化干扰,不是线性稳定理想输入,让策略更加鲁棒

5.4)CriculumCfg:

用逐步提高复杂地形,command等使得模型逐渐收敛,更强泛化性,

这四个5.1~5.4决定机器人学什么,在哪学,如何学,以及变难怎么逐步学习

子类配置实例,

rough_env_cfg:几个关键Notes

比如惩罚 人型机器人不允许摔倒,所以需要惩罚比四足大,

Scale,人型角速度较大,需要归一化和其他观测相近的范围:base_ang_vel.scale = 0.25

Curriculums课程学习关掉,是一种实践经验,人型机器人训练初期连站立都比较难,更别说速度指令的响应,若是启用了速度课程学习,地形课程学习,机器人由于是初期没学到任何东西,最后全部集中在简单平地上,没办法学习到多态化的地形学习

所以经验是现在平地学到稳定的模型,然后再考虑到迁移到复杂地形

flat_env_cfg :在平地减少z轴角速度跟踪变成1,在平地上对于角速度跟踪更加容易实现,权重过高,会忽略线速度跟踪,新机器人若是在rough平面训练遇到了困难,需要现在平地进行训练排查问题,若连平地训练都不行的话,说明在基础配置上。

rsl_rl_ppo_cfg:在定义完事件和任务后,需要让机器人学习如何完成这个任务,在强化学习过程中,Agent是负责学习决策,rsl_rl是决定性框架(苏黎世理工联邦实验室开发高性能学习库)与IsaacLab兼容性,被广泛适用,网络架构和PPO超参数

#基础训练参数:

num_steps_per_env = 24 # 每个环境每轮收集24步数据

max_iterations = 20000 # 总训练迭代次数(主训练,2万次)

save_interval = 200 # 每200次迭代保存一次模型

experiment_name = "unitree_g1_rough" # 实验名称(日志/模型保存文件夹)

#策略网络配置poilcy (Actor-Critic)网络结构

policy = RslRlPpoActorCriticCfg( init_noise_std=1.0, # 初始探索噪声标准差 actor_obs_normalization=False, # 演员网络不做观测归一化 critic_obs_normalization=False, # 评论家网络不做观测归一化

actor_hidden_dims=[512, 256, 128], # 演员网络隐藏层:3层大网络 ,

critic_hidden_dims=[512, 256, 128], # 评论家网络隐藏层:和演员一致

activation="elu", # 激活函数:ELU(比ReLU更稳定) )

#PPO算法核心参数 algorithm

algorithm = RslRlPpoAlgorithmCfg( value_loss_coef=1.0, # 价值损失权重 use_clipped_value_loss=True, # 开启裁剪版价值损失

clip_param=0.2, # PPO 裁剪系数(核心)

entropy_coef=0.008, # 熵系数:鼓励探索(0.008 适中)

num_learning_epochs=5, # 每批数据训练5个epoch

num_mini_batches=4, # 数据分为4个小批次

learning_rate=1.0e-3, # 学习率:1e-3

schedule="adaptive", # 自适应学习率调度

gamma=0.99, # 折扣因子:未来奖励权重

lam=0.95, # GAE 优势函数参数

desired_kl=0.01, # 目标KL散度:控制更新步长

max_grad_norm=1.0, # 梯度裁剪,防止梯度爆炸 )

#平摊地面配置:

@configclass

class UnitreeG1FlatPPORunnerCfg(UnitreeG1RoughPPORunnerCfg):

def post_init(self):

super().post_init() # 继承父类所有参数

仅覆写2个关键参数

self.max_iterations = 1500 # 大幅减少训练次数(快速验证) self.experiment_name = "unitree_g1_flat" # 重命名实验

entropy_coef=0.008, # 熵系数:鼓励探索(0.008 适中) 人型是0.008但是四足是0.01,因为四足本身具有天然的稳定性,需要更大的探索

2,强化学习配置及机器人添加

2.1)创建资产配置

asserts文件夹里 建立以机器人命名.py

spawn是指定了机器人加载方式,urdf和usd

fix_base=fasle 足式机器人基座可以移动

。。。

init_stata

actuators

2.2)创建RL_Agent配置

从类似机器人可参考的代码拷贝过来后面做微调,网络结构一般就是3层MPL结构(512,256,128)

2.3)创建粗糙地形环境配置

任务具体定义,小跑步态,

self.rewards.feet_gait.params["synced_feet_pair_names"] = (

("FL_FOOT_LINK", "RR_FOOT_LINK"),

("FR_FOOT_LINK", "RL_FOOT_LINK"),

)

action scale:关节位置动作空间配置:缩放 + 裁剪 + 指定关节

ABAD 关节(髋关节)动作更精细,缩小到原动作的 1/8;其他关节动作放大到原动作的 1/4。

reduce action scale

self.actions.joint_pos.scale = {".*_ABAD_JOINT": 0.125, "^(?!.*_ABAD_JOINT).*": 0.25}
正则匹配规则

  1. .*_ABAD_JOINT:匹配所有以 _ABAD_JOINT 结尾的关节 → 缩放系数 0.125(动作幅度最小)
  2. ^(?!.*_ABAD_JOINT).*反向匹配 → 匹配所有不含 _ABAD_JOINT 的其他关节 → 缩放系数 0.25(动作幅度稍大)

self.actions.joint_pos.clip = {".*": (-100.0, 100.0)}

范围 (-100.0, 100.0):缩放后的动作值会被强制限制在这个区间内(防止动作值过大导致机器人异常)

self.actions.joint_pos.joint_names = self.joint_names

2.4)创建平地地形环境配置

粗糙地形简单配置,

2.5)注册gym环境

在_init_.py中注册 gym.register

验证 ~/IsaacLab/isaaclab,sh -p scripts/tools/list.envs.py --keyword Agibot

rough 默认训练20000轮

3,训练与参数解析

3.1)核心训练进度参数:

参数 数值 意义
Learning iteration 27/20000 27/20000 当前训练迭代数 / 总迭代数。强化学习中每一次迭代包含多组环境交互与模型更新,代表机器人已完成 27 轮学习,仍需完成 19973 轮。
Total steps: 392512 392512 累计环境交互步数。每一步代表机器人与环境完成一次状态感知 - 动作执行 - 奖励反馈的循环,数值越大表示训练时长 / 交互量越足。
Steps per second: 30592 30592 每秒处理步数。训练性能核心指标,反映硬件(如 Orin NX/RK3588)+ 算法的运算效率,数值越高训练速度越快。
Collection time: 3.0515 3.0515 经验收集耗时(单位:秒)。本轮迭代中收集训练数据(机器人与环境交互)所用时间,数值越小收集效率越高。
Learning time: 0.1625 0.1625 模型更新耗时(单位:秒)。本轮迭代中神经网络(如 PPO 算法)梯度计算、参数更新的耗时,体现算法计算效率。

3.2)模型损失和奖励

参数 数值 意义
Mean surrogate loss: 16.7806 16.7806 PPO 算法核心损失。代理损失衡量策略网络(Actor)新旧动作分布的差异,是强化学习中最关键的损失项,用于限制策略更新幅度避免训练崩溃。
Mean entropy loss: 13.35 13.35 熵损失。熵代表策略的 "探索性",熵越高表示机器人动作选择越随机(探索能力强),越低则越趋向固定动作( exploitation exploitation)。
参数 数值 意义
Mean reward: -13.35 -13.35 本轮迭代平均累计奖励。强化学习目标是最大化奖励,当前为负数,说明机器人当前策略表现不佳(未达成任务目标,如未站稳、动作异常)。
Mean action std: 0.99 0.99 动作输出标准差。反映策略网络输出动作的不确定性,接近 1.0 表示动作分布较广,探索性适中;过低会陷入局部最优,过高则训练不稳定。

3.3)细分维度奖励

参数 数值 子任务意义
Episode Reward/lin vel z -0.0054 线速度 z 轴奖励。衡量机器人垂直方向运动控制(如保持高度、避免跌落),负数说明垂直方向控制偏差大。
Episode Reward/ang vel x/y -0.0181/-0.0181 角速度 x/y 轴奖励。衡量机器人横滚 / 俯仰姿态控制,负数表示姿态不稳定(如侧翻、前倾后仰)。
Episode Reward/joint torque -0.0181 关节扭矩奖励。惩罚扭矩过大,负数说明电机负载过高(可能是机械卡顿 / 控制参数不当)。
Episode Reward/joint acc -0.0084 关节加速度奖励。惩罚关节运动过快,负数表示关节动作急促易磨损 / 失稳。
Episode Reward/stand still -0.0884 静止姿态奖励。核心任务之一,衡量机器人保持静止的能力,负数说明静止控制失败(如轻微晃动 / 位移)。
Episode Reward/pop stability -0.0010 种群稳定性奖励(多智能体场景)。单智能体下可忽略,负数表示群体协作稳定性差(若为单智能体则是算法适配问题)。
Episode Reward/action rate -0.2942 动作频率奖励。惩罚动作过于频繁 / 缓慢,负数说明当前动作频率偏离任务最优区间。
Episode Reward/undesired contacts -0.3715 非期望接触奖励。惩罚非目标部位接触(如机器人腹部 / 背部触地),负数说明存在碰撞、摔倒风险。
Episode Reward/traj lin vel -0.0852 轨迹线速度奖励。衡量机器人沿目标轨迹运动的能力,负数说明轨迹跟踪偏差大。
Episode Reward/traj ang vel -0.0437 轨迹角速度奖励。衡量轨迹转向 / 姿态跟随能力,负数说明转向 / 姿态调整不准确。
Episode Reward/feet air time -0.0018 足部腾空时间奖励(四足机器人)。四足行走中控制足部腾空时长,负数说明步态节奏错误(如踮脚 / 拖地)。
Episode Reward/feet height -0.0399 足部高度奖励。控制足部离地高度,负数说明足部擦地 / 抬过高导致能耗增加。
Episode Reward/feet slide -0.0265 足部滑动奖励。四足行走中禁止足部水平滑动,负数说明行走时足部打滑(地面摩擦力不足)。
Episode Reward/body height -0.0000 机身高度奖励。保持机身稳定高度,0 分说明当前高度控制精准,无偏差。

3.4)环境与训练指标

基础环境指标

参数 数值 意义
Metrics/base_velocity/error 0.9968 基底速度误差。实际速度与目标速度的偏差,接近 1.0 说明速度控制精准(误差小)。
Metrics/base_velocity/ang vel 0.9986 基底角速度误差。实际角速度与目标角速度的偏差,接近 1.0 说明姿态转向控制精准。
Metrics/base_orientation/error 0.0000 基底姿态误差。机身俯仰 / 横滚 / 偏航角的偏差,0 分说明姿态完全贴合目标,无偏差。

训练终止指标

参数 数值 意义
Episode Termination/terr_out of bounds 0.0000 越界终止率。机器人超出训练环境边界(如空间限制)的次数占比,0 分说明全程未越界,环境边界适配良好。

3.5)训练效率参数

参数 数值 意义
Iteration time: 3.215 3.215 单轮迭代总耗时(Collection time + Learning time)。3 秒左右 / 轮属于高效训练,反映硬件算力与算法优化水平。
Time elapsed: 00:01:27 00:01:27 累计训练时长。从开始训练到当前迭代的总耗时,1 分 27 秒说明训练启动不久,处于初期阶段。
相关推荐
shy^-^cky2 小时前
[特殊字符] Roberts、Sobel、Prewitt 边缘检测算子全对比
深度学习·图像分割·边缘检测·sobel·roberts·边缘检测算子·prewitt
AI医影跨模态组学2 小时前
ESMO Open 中国医学科学院肿瘤医院:整合影像组学、病理组学和活检适应性免疫评分预测局部晚期直肠癌远处转移
人工智能·深度学习·机器学习·论文·医学·医学影像
Ztopcloud极拓云视角2 小时前
GPT-6 & DeepSeek V4 双雄临近:企业多模型路由网关实战指南
人工智能·gpt·deepseek·gpt-6
hughnz2 小时前
AI和自动化让油田钻工慢慢消失
大数据·人工智能
jay神3 小时前
大米杂质检测数据集(YOLO格式)
人工智能·深度学习·yolo·目标检测·毕业设计
GIS数据转换器3 小时前
延凡低成本低空无人机AI巡检方案
大数据·人工智能·信息可视化·数据挖掘·无人机
流云枫3 小时前
把小说变成短视频/漫画——全流程技术复盘
人工智能
飞Link3 小时前
【AI大模型实战】万字长文肝透大语言模型(LLM):从底层原理解析到企业级Python项目落地
开发语言·人工智能·python·语言模型·自然语言处理
TechMasterPlus3 小时前
OpenClaw 源码深度解析:下一代 AI Agent 框架的架构设计与实现原理
人工智能