world frame appears too low for real robot

Issue #5 wontfix
Stephen Hart created an issue

We have noticed that the /world frame appears to be in the incorrect position. This side view in RViz shows what we see:

world_offset.png

The line is the grid (from the side). This means the robot thinks it is deep in the "ground," resulting in very high steps when running tests like boxStep.py.

We are not noticing this when we run the sim.

Comments (8)

  1. Stephen Hart reporter

    one issue here, could be that we aren't 100% sure what the expected startup procedure should be. We start the robot in the air, wait till it goest through its preying mantis pose, then lower it to the ground (after a few seconds, it straightens out a bit). Given that this height offset is not always quite in the right place, it occurred to me that if the odom "resets" at some point during this procedure, and we don't know exactly where or when, this could be a culprit. But i'm largely shooting in the dark here....

  2. DouglasS

    @swhart115 You're right on all accounts; in that you are starting the robot up correctly but this startup sequence is most likely the culprit in regards to this bug. Still deciding on our course of action here; it may involve doing quite a bit of work in our internal state estimator so we can probably fix it but it may take a bit.

  3. Stephen Hart reporter

    @dljsjr one thing I was thinking on my way home was that I was just starting the scripts up in the wrong order. I typically start the control computer program when the robot is in the air, but wait till its settled on the ground before starting up the ros nodes (ihmc_robot.launch). Does this matter? Should I just start up the launch while its still in the air?

  4. DouglasS

    @swhart115 No, it doesn't matter. The frame that the API node uses is generated by the controller and simply exposed to ROS. Our current thought for a quick fix is that we will provide an additional frame, probably called /ground, that will put the ground in the right place. All control operation will still happen in the world frame that gets defined when the controller initializes.

  5. btshrewsbury NA

    @swhart115 - After looking at it a little we decided the world offset is normal and providing a /ground might be bad for the other teams, we don't have ground and world co-located. We track the ground height in the UI using the ankle frame in world plus the foot bottom to ankle offset. You can inject a ground frame in world using a static transform before you start walking, but we find the ground plane quickly becomes off once we stand up or down on anything. We use an ankle height of 0.084m.

  6. Stephen Hart reporter

    Once we get the neck issue straightened out from Issue #3 (the rosparam solution), we can probably write something to handle this until we figure out the right solution.

  7. btshrewsbury NA

    World frame is set depending on where the robot is when the controller is started. After review we decided this is the expected behavior.

  8. Log in to comment