Gazebo | Ignition | Community
Ask Your Question

Revision history [back]

How to create code that helps Atlas manage a fall?

Hi there,

I have chosen as my final University project the robot Atlas, specifically helping him manage the impact of a fall.

My plan is to develop a code for Atlas that would help him manage a fall if he is pushed from behind just like in the video: https://youtu.be/rVlhMGQgDkY?t=2m4s

The goal is to extend the arms towards the ground before the impact, just like most of the humans would.

I have basic knowledge of C++, I am reading everything I can find on Bitbucket about Atlas, and I have done sports, so I know what the reaction would be. In the gazebosim tutorials, I have found a python plugin, changed a few numbers around and got the following simulation: https://www.youtube.com/watch?v=hhda328RWNE The code to extend the arms comes at the same time as it makes the step, basically starting to extend the arms before realizing it will fall. I know that this version of the robot is slower than the much newer _4 or _5 versions which have electrical motors for arm joints.

The simulation is in user control mode. I intend to have this reaction in BDI or even a stand-alone python plugin not in user control mode, maybe as an extension of FREEZE or whenever the status_error_falling gets thrown.

The pseudo code:

**if STATUS_FAILED_TRANS_COM_POS or STATUS_FAILED_TRANS_COM_VEL or STATUS_ERROR_FALLING

then extend_hands()**

Obviously, this solution is for when the push comes from behind or the robot falls forward. If this gets results, and it will, then the other types of falls can be addressed: lateral and backward.

Any suggestions on how to create the code in C++ or Python or if my approach is feasible are welcomed.