UM6 Orientation Sensor

Hi there,

I am trying to use a UM6-LT Orientation Sensor in a small two wheeled inverted pendulum but am having some trouble getting stable angle position information from it.

What I am wondering is:

  1. I have the sensor PCB mounted flush to the side of the robot in a vertical orientation and am utilizing the ‘pitch’ Euler Angle. Can the sensor be operated reliably in this orientation or should it be mounted horizontally? I find the magnetometer is very sensitive, even when the EKF mag variance is set to a low value.

  2. Generally the only way I can get stable angle information is to physically hold the robot at the vertical (0 degrees) position and set this as the magnetometer and accelerometer reference points, zero the rate gyros and then reset the EKF each time the robot is started up. If I don’t do this, the angle information increases away from zero and sometimes could be 30 degrees out. Is zeroing and setting the reference points of all of these factors each use the best/intended way of operating the sensor?

Thanks in advance,



Could you describe the problem a little more? Are you saying that the pitch angle you are getting is 30 degrees of from what you would expect?

If you are just trying to detect the angle of the robot with respect to the floor, you shouldn’t need the magnetometer. According to section 9.2.1 of the UM6-LT datasheet, you can turn off ignore readings from the magnetometer, so you might try doing that.

I don’t see any problem with using the Euler pitch angle in that orientation, though there might be something I am overlooking. The sensor uses quaternions to track the orientation by default, so it would not be subject to the usual problems that happen when pitch is close to 90 degrees.

According to “AN-1003 Getting Started with the UM6 Orientation Sensor”, the rate gyros should be zeroed every time the sensor starts up, so that part of your procedure is recommended. I am not sure whether the other parts are necessary but it seems like they shouldn’t be necessary. You might try contacting the manufacturer, CH Robotics to see if they have suggestions.


Hi, just some tips from my experience with the UM6-LT

  1. Perform the magnetic calibration and make sure to rotate it through all headings. This can be a bit tedious but it seems to pay off.

  2. Zero the gyros after the device has been running for 30 seconds or so because the gyro internal temperature changes when the UM6-LT turns on. Be sure the chip is completely stable when the gyro’s are zeroed. It takes about 3 seconds as stated in the datasheet.

  3. It takes some testing to find the right EKF variance settings. I have found a Mag Variance of 40 and Accel Variance of 8 to work well for reducing the magnetic influence. Larger values = decreased weight/sensitivity. If you decrease the Process Variance, the gyro will be relied upon more.

  4. I have had the best results keeping the device mounted in a level orientation. Try to get this working first before you change the orientation. When setting the magnetic reference vector, make sure the device is pointed north. The Processed Y Mag value should be close to zero when you set the mag reference vector.

  5. The EKF always starts out zeroed when the device boots up. You might consider disabling gyro zeroing on startup. If there is any motion when the gyros are zeroing, it will severely affect the performance.

Hope that helps!