DeepMimic
DeepMimic copied to clipboard
Why do actions have a different normalization range?
Hello,
I notice (in CtCtrlUtil.cpp
) that:
BuildOffsetScalePDRevolute
and BuildOffsetScalePDSpherical
, compute the scale as follow:
double curr_scale = 1 / (val_high - val_low);
curr_scale *= 0.5;
It maps [val_low, val_high]
in [-0.25, 0.25]
(supposing that val_low = -val_high
).
Instead, BuildOffsetScalePDPrismatic
, BuildOffsetScalePDPlanar
, compute the scale as follow:
out_scale[i] = 2 / (val_high - val_low);
It maps [val_low, val_high]
in [-1, 1]
(supposing again val_low = -val_high
).
Any reason for this difference? And if I have to add a goal scale, do I have to resize it in what range ([-0.25, 0.25]
or [-1, 1]
)?
Thanks in advance.
The revolute joints specify target angles in units of radians, while the spherical joints specify quaternions. So the units are different, and requires different scaling. In general, try to keep things in the range of [-1, 1].