1. 项目概述
在四足机器人控制领域,奖励函数设计是强化学习训练的核心难点之一。legged_gym作为开源的机器人仿真训练框架,其奖励函数模块直接决定了训练效果和最终性能。今天我们就来深度拆解legged_robot.py中的奖励函数设计逻辑,分享我在实际调参过程中积累的实战经验。
这个模块之所以重要,是因为它相当于机器人的"指挥棒"——通过精心设计的奖励机制,我们可以引导机器人逐步学会行走、奔跑甚至完成复杂地形穿越。不同于传统控制方法需要手动设计每个关节的运动轨迹,强化学习通过奖励函数就能让机器人自主探索出最优运动策略。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 奖励函数设计原理
2.1 基础奖励项构成
legged_robot.py中的奖励函数主要由以下几个核心部分组成:
- 线性速度跟踪奖励:
python复制lin_vel_error = torch.sum(torch.square(command[:, :2] - base_lin_vel[:, :2]), dim=1)
lin_vel_reward = torch.exp(-lin_vel_error/0.25)
这里采用指数衰减形式,当实际速度与指令速度误差越大时,奖励衰减越快。0.25是温度系数,控制衰减速度。
- 角速度跟踪奖励:
python复制ang_vel_error = torch.square(command[:, 2] - base_ang_vel[:, 2])
ang_vel_reward = torch.exp(-ang_vel_error/0.25)
- 姿态稳定奖励:
python复制up_reward = torch.square((torch.tensor(1.0) - up_proj))
通过计算躯干与垂直方向的夹角,鼓励机器人保持直立姿态。
- 足端滑动惩罚:
python复制foot_vel = torch.norm(foot_velocities, dim=2)
sliding_reward = torch.exp(-foot_vel/0.25)
2.2 权重分配策略
各奖励项的权重配置直接影响训练方向。典型配置如下表所示:
| 奖励项 | 默认权重 | 作用
