-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Using CALM with a different humanoid.xml #16
Comments
For |
If you don't want to actuate a joint, I would try to set the corresponding entry in the action vector to 0. |
A follow up to the above - turns out I might have been running it with the wrong config after running it with
In the above command I have replaced the AMP Humanoid .xml with my custom humanoid and replaced the motion with my custom retargetted data. But I end up getting this error:
Any clue as to what might be the issue here? My sigmas are set to non trainable and constant. Edit1: |
From my experience that's usually when you have NANs either in your model weights or in your inputs. Does it work correctly without the added changes and with the default AMP humanoid? |
So here's what's weird to me is - The training runs without any issues if I use the following configs:
It crashes when I use: I have ensured by explicitly checking the inputs i.e. observations are always non Edit1: Thanks again for all the help! |
Are the tensors generated in CALM/calm/env/tasks/humanoid_amp_getup.py Line 65 in 4f6bdb9
Are self._fall_root_states and self._fall_dof_pos without any NANs?
|
I managed to figure out the issue! |
A follow up question on this -
Currently the mean episode length I get is around 15-20 by itter 5k.
The command I am testing on is:
However when I run the default llc training for sword shield humanoid:
I get about 200 ep mean length after 2k itters |
Episodes should be up to 300 frames and terminate early the agent falls down. Other metrics for learning is to track the discriminator reward. However, since we are training with a discriminative objective, it is a bit tricky (like with the entire GAN line of work) to track performance. I am not sure what to expect with your model, as it is both a different structured humanoid and you seem to have changed some control parameters. |
Okay - after fixing the XLM and motion_lib - I am getting an ep mean length of about 250 which is still less than the expected 290.
Could you shed light on the intuition behind tuning these values? |
It depends what you're trying to solve. As you can see here:
From my experience combining the conditional and unconditional discriminator doesn't always work well. The unconditional discriminator attempts to push the controller towards the "average" data distribution, whereas the conditional one pushes it to match the state distribution for the current conditioned motions. The two may be combined in a smart way, by providing discriminative rewards in the transition periods between motions, but we have not attempted this and it is mostly speculation. |
Thanks for the insight. Do you have any clue as to why this might be happening? Is there a hard coded reference height somewhere in the code base? Edit: |
I don't recall any offsets for the reference motions. For example, when training on the sword and shield dataset the character does not learn to tip-toe. |
Yes, maybe it's an issue with the way I have configured my xml - |
An update on this - it was due to the way I had configured my xml, fixing that helped me improve the results. |
Would be cool to see some results once you can share! :) |
I had some questions regarding the way the observation space is structured: Question:
Where do I change the actual observation being passed?
Edit: All of the observations are computed in _compute_observation() function in humanoid.py
For the rotation -> The question I have here is why use tangent normal? Why not convert it to euler angles? I am still confused by how body_ang_vel is handeled as I though it's a
|
critic: CALM/calm/learning/calm_agent.py Line 105 in 4f6bdb9
encoder: CALM/calm/learning/calm_agent.py Line 298 in 4f6bdb9
policy: like critic -- current pose + latent discriminator: we have two. one sees a sequence of 10 frames. the other sees 10 frames + latent. |
I am trying setup training with a different
mjcx/humnoid.xml
file however I am facing a lot of dimension issues and observation space issues if I just replace theasset_file
.What files and changes do I have to do in order for the repo to work on a custom humanoid.xml with retargetted motions
Edit 1:
I have a humanoid with the 33 nodes in the SkeletonTree and a matching retargetted mocap.
But don't want to actuate all of the joints - only want to actuate a subset similar to that of the AMP humanoid.
Is there a way I can extend the current repo to match the above?
Edit 2:
Can you also elaborate on how the following vars in the observation space is constructed?
The text was updated successfully, but these errors were encountered: