DeepMimic icon indicating copy to clipboard operation
DeepMimic copied to clipboard

Why do actions have a different normalization range?

Open AGPX opened this issue 4 years ago • 1 comments

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.

AGPX avatar May 03 '20 21:05 AGPX

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].

xbpeng avatar May 03 '20 21:05 xbpeng