Open Xianqi-Zhang opened 3 weeks ago
Hi @Xianqi-Zhang, I don't think this is a bug. Note that:
1) self.action_low
and self.action_high
are the actual limits of the actuators, while we set self.action_space.high
to +1s, and self.action_space.low
to -1s. This is intended, since we always unnormalize before applying the actions to the robot.
2) The H1 robot is position controlled, and it's not initialized with zero actions. So, if you provide zeros, it will move to reach the corresponding position.
Hope this helps clarifying! Please let me know if this is still an issue for you.
Hi, Thanks for your reply. The H1 robot is position controlled. So if I want the robot stand still, the action should be set as:
action = ob['proprio'][:env.action_space.shape[0]]
Is this correct? Do I need to set something about qvel?
(The title of the question has been modified to avoid misunderstanding.)
Thank you for your any reply. Best regards.
Hi, Thanks for your sharing. I would like to report a bug.
Since
self.action_high
andself.action_low
initialized beforeself.action_space
defination, they are random values, making action normalize/unnormalize not corrctly in step().https://github.com/carlosferrazza/humanoid-bench/blob/3951d65bc85e16a562d091a7f4820150c20ed91f/humanoid_bench/env.py#L145-L149 https://github.com/carlosferrazza/humanoid-bench/blob/3951d65bc85e16a562d091a7f4820150c20ed91f/humanoid_bench/tasks.py#L53-L55
Test code:
If you execute an zero action (np.zeros((61, ))), which means I don't want to control any joints, since the action is not normalized/unnormalized correctly, the env still execute a non-zero action, making the robot will still move around instead of staying still.
P.S. Could you tell me where are the action execution and robot control related code ? Maybe you need to update training curves in the paper and the repo...
Best regards.