-
Notifications
You must be signed in to change notification settings - Fork 6
Observation,Action.Reward,Hyper Params
Flood Sung edited this page May 8, 2023
·
1 revision
policy_obs | root_h, root_rot_obs, local_root_vel, local_root_ang_vel, dof_pos, dof_vel, flat_local_key_pos, commands, jump_sigcommands包含了lin_vel_x, lin_vel_y, ang_vel_yaw, jump_up_height, loc_height,其中,jump_up_height是root目标跳跃高度范围,在[0.4, 0.7]之间随机采样,loc_height是正常locomotion过程中的root高度,目前是固定设置为0.32,后期也可随机采样jump_sig是触发jump的信号,在{0, 1}之间取值,1为jump,0为locomotion,训练期间定时随机采样,当agent到达目标目标高度后,对应的jump_sig置0 |
---|---|
critic_obs | 与policy_obs一致 |
amp_policy_obs | policy_obs去掉commands以及jump_sig |
amp_expert_obs | 与amp_policy_obs一致 |
12个DOF的位置(实际上网络输出的是与默认初始位置下对应DOF角度的偏移量),经过PD控制器输出12个电机的torques,控制API用的set_dof_actuation_force_tensor(最新的代码已改为位置控制)
policy net输出增加了tanh,把action映射到[-1, 1]之间(原始的AMP4Hardware输出是linear,似乎不太合理?因为
_reward_jump_up | Jump root高度差:$e^{h}{jump}=||x^{h}-\hat{x}^{h}{jump}||{2}$Loc root高度差:$e^{h}{loc}=||x^{h}-\hat{x}^{h}{loc}||{2}$其中,$\hat{x}^{h}{jump}$和$\hat{x}^{h}{loc}$分别是jump时的目标root高度和locomotion时的目标root高度If jump_sig==1,$r_{jump}=exp(-e^{h}{jump})$If jump_sig==0时,$r{jump}=exp(-e^{h}{loc})$If jump_sig==1 and $e^{h}{jump}<0.05$,$r_{jump}=100$ |
---|---|
其余reward | 和locomotion一致 |
列举几个在cmd jump中比较关键的参数:
jump_up_height | 设置在[0.4, 0.7]之间似乎更合理,如果直接设置为0.7基本很难跳起来,因为mocap中的jump高度没有这么高,随机初始化的时候很难获得到达目标高度的奖励 |
---|---|
disc_grad_penalty | Amp loss中的梯度惩罚系数,这里设置为大概0.02以下才能完成jump任务,在AMP4Hardware中为5.0,在AMP humanoid backflip中为0.2,对于高动态的动作,这个参数需要尽可能小一些 |
learning_rate | [5e-5, 5e-4]区间内比较合理,另外发现,在训练cmd jump时,需要用adaptive lr,不然一些时候value funtion会阶越式地输出很大的值 |
amp_task_reward_lerp | 决定task和style reward的权重,设置为0.3比较合理 |
jump_goal | 到达目标高度时给予的奖励,实验中设置的100,值太小也跳不起来,具体什么范围比较合理暂时没有做实验 |