nv-tlabs / ASE

Other
764 stars 122 forks source link

How to create a task where one humanoid tries to strike another #35

Closed Robokan closed 1 year ago

Robokan commented 1 year ago

I would like to create a task where one humanoid tries to strike another. I imagine a simple reward such as getting points when it strikes the other and losing points if it gets hit. I am interested in what kind of emergent behaviors might appear at it tries to learn to both attach and defend.

From the code it looks like humanoid.py itself handles the tensors assuming only one humanoid actor is present. It looks to be able to handle additional actors as long as the don't have DOF, etc. How would you put 2 humanoids both controlled by the NN in one environment? Another possibility is to allow the environments to interact with each other. For example the actors from environments 1 and 2 could try to strike each and then 3 and 4 do the same. One could continue that pattern for all actors as long as there is an even number of environments.

Are either of these feasible? If so what would be the easiest approach to take?

Robokan commented 1 year ago

I was able to get this to work by having the environments interact. It works great.

xbpeng commented 1 year ago

Glad that worked!

Robokan commented 1 year ago

Yes, I made a fight task where every other actor in each environment walks over and hits the other when I load the strike task checkpoint. So environment 1-2, 3-4, 5-6. Etc. Just implementing the reward now. My thoughts were to reward hitting and negative reward for being hit. Shield and sword can both be used to block. So the it learns both simultaneously. Any suggestions or insights with how you might do the reward? These things can be so tricky.

jacktheripper19 commented 1 year ago

Hello, You might want to check out https://github.com/inspirai/TimeChamber The do something very similar.

Robokan commented 1 year ago

Yes TimeChamber is amazing. Exactly what I was looking for. Thanks! Now to just get FBX import working to create some new characters.