-
Notifications
You must be signed in to change notification settings - Fork 498
Add ability to set IMU initial Orientation on boot #1959
Comments
Original comment by DouglasS (Bitbucket: DouglasS). This should definitely be improved. The way IMUs are simulated in Gazebo right now does not match the way most IMUs work in the real world w.r.t. the frame in which they report their rates. While some IMU packages or robots themselves may do some fancy filtering and cleaning up of stuff before sending out data this is not the IMU itself that does this but the robot's/kit's API. For example, Atlas has the ability to report an estimated pose for the pelvis that is gleaned from IMU data but this is not the IMU itself, just something nice provided by the Atlas API. |
Original comment by DouglasS (Bitbucket: DouglasS). To clarify on my previous point. On a real IMU, most of them are set up in such a way that they use a combination of the Earth's gravity and if a magnetometer is available the Earth's magnetic field to orient their local reference frame (usually an NED style frame) in some nominal "world" coordinates. Based on that, you would typically see this sort of hypothetical scenario: If you create a sim world w/ 2 of the same robot, one facing true north, and one facing true south, the robot facing true south should have a yaw/heading/whatever you want to call it that's 180º separated from the robot facing true north, and if it spins around to face the exact same direction then it should be reporting the same yaw/orientation/heading/whatever, barring difference like simulated noise or whatever. In the current implementation of IMUs in Gazebo, this is not possible without doing some work in code or a plugin or something. So it doesn't reflect accurately how most IMUs actually work. |
Original comment by DouglasS (Bitbucket: DouglasS). For posterity, here's a link to the product page (which includes data sheets and user manuals) for a commonly used IMU. We've used older models on past humanoids and Valkyrie is currently using them. |
Original comment by Jordan Lack (Bitbucket: jordanlack). Doug++ |
Original comment by John Hsu (Bitbucket: hsu, GitHub: hsu). pull request #2316, added In conjunction with sdformat pull request, provided transforms needed for a few simple reference frames e.g. NED, NWU, etc.. |
Original comment by John Hsu (Bitbucket: hsu, GitHub: hsu). stumped by the use case where the IMU uses accelerometer reading to align +/-z with gravity, but leaves heading undetermined. Does the heading align with IMU body X-Y frame? Is there a real world example device that we can model after? Thanks |
Original comment by Nate Koenig (Bitbucket: Nathan Koenig).
|
Original comment by John Hsu (Bitbucket: hsu, GitHub: hsu). pull request #2339 merged |
Original comment by Jordan Lack (Bitbucket: jordanlack). Is there any plan to fix this bug in any upcoming gazebo version @chapulina? It's a pretty critical flaw in the implementation of the simulated IMU that I doubt would take much code to fix. |
Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters). I think calling I'm looking into changing the behavior |
Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters). in for noetic and foxy, we will warn if the legacy behavior is in use |
which is the initial orientation of the default imu data from gazebo plugin? is it NED or NWU? |
Original report (archived issue) by John Hsu (Bitbucket: hsu, GitHub: hsu).
Current implementation ImuSensor::SetReferencePose() is inadequate for typical simulation use.
Users desire the ability to specify what ImuSensor::Orientation() returns after the sensor is created in the world.
The reason being some of the existing IMU sensors in the market returns it's own frame orientation in the NED frame upon boot up, and the ability to do this is in simulation is critical. With existing API, the user would have to first rotate IMU to align with NED frame before calling
ImuSensor::SetReferencePose
.Proposed solution here is to add
The text was updated successfully, but these errors were encountered: