ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

Robot Localization output incorrect for movement in Y axis with Vectornav IMU

asked 2019-09-19 13:39:30 -0500

jawsqb gravatar image

Hello,

I am using Robot Localization to localize rover with an Marvelmind Indoor GPS, Vectornav IMU and Wheel Encoder Odometry.

For the vectornav imu I am using code set from: https://github.com/dawonn/vectornav

I have ensured that the vectornav IMU follow ENU standard. However the output orientation is flipped only on the Y axis (With respect to actual movement in real life) but correct when moving along x axis in the global frame.

image description

In the test above I moved the rover in a square as representation with the blue arrows. However the ekf output is in yellow and does not match the actual robots orientation only in the Y axis. The robot turns in the correct direction however its just not matching up with the Blue arrows (The real movement of the robot) as its only flipped in one axis.

When I switch the vectornav imu code to the NED format I get this:

image description

In which the red arrows is the EKF output and the orange is the real robot movement. How all the arrows are moving in the square pattern that I moved the robot however the actual robot had movement that was vertically flipped.

Thoughts? Please let me know if there is more information I can provide for troubleshooting!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
2

answered 2019-09-19 22:27:14 -0500

Some thoughts, may be right, may be not.

Some (nicer) IMUs will have a different coordinate system and you should make sure to check the docs, and I think this is what you may be seeing here. IMUs report things in the inertia frame of reference, so +Z is anti-gravity direction which is pretty much the opposite as most would think. If you're saying that the Y axis seems to be flipped, that's makes me suspect that the frame is actually rotated 180 about the X axis so that the Y is opposing and the +Z is in the "intuitive" direction meaning _proper_ acceleration vs. acceleration.

Sidenote: That's a very very nice IMU which comes with an extremely powerful SDK, I hope you're making good use of it and not just fusing the raw output to R_L :-)

edit flag offensive delete link more

Comments

So I am matching the outputs to what the robot localization site is recommending reference below. Though I am somewhat confused by terminology that if the "right side up" position means that it is just sitting flat. Or that if the Right side of the IMU is actually facing up.

The weird issue is that I am getting correct orientation in the odometry frame of ekf output when fusing just wheel odometry and imu. However when I fuse the ekf in the map frame to include the indoor GPS map I get the above behavior.

I'm just confused as to why even though I conform it to the REP standard it is giving me behavior like this in the map frame but not odometry frame.

IMU Setup Recommendation: http://docs.ros.org/indigo/api/robot_...

jawsqb gravatar image jawsqb  ( 2019-09-20 08:58:07 -0500 )edit

I'd recommend at least trying my suggestion and seeing if that helps. Also keep in mind that R_L recommends to run 2 filters: a local filter of IMU/odom for odom->base_link and then another with GPS+(stuff?) for the map->odom. Make sure you're not trying to dump everything into 1 filter

stevemacenski gravatar image stevemacenski  ( 2019-09-20 14:21:23 -0500 )edit

Question Tools

2 followers

Stats

Asked: 2019-09-19 13:39:30 -0500

Seen: 696 times

Last updated: Sep 19 '19