I am using the UM7-LT orientation sensor. I have successfully programmed it, and have it reporting data as expected. The issue I am having is when the sensor is sitting perfectly still, it reports a clockwise rotation around the Z axis (up, out of the sensor) at a rate of about 1 degree per second. This is very consistent across power cycles and calibration commands. This is also consistent whether I set Euler angle reports or Quaternion reports. Perhaps I am not properly configuring the sensor on startup or during use?
I am performing the following steps on startup (every startup, I have not committed any settings to flash):
- CREG_COM_RATES[1-6] - 0x0[1-6], all data bytes set to 0 (no raw broadcasts)
- CREG_COM_RATES7 - 0x07, data bytes: 0x00, 0x40, 0x00, 0x00 (5 Hz attitude rate)
- CREG_MISC_SETTINGS - 0x08, data bytes: 0x00, 0x00, 0x00, 0x01 (disable Quaternion mode, enable magnetometer)
- ZERO_GYROS - 0xAD, all data bytes set to 0 (perform zero gyro calibration)
- SET_MAG_REFERENCE - 0xB0, all data bytes set to 0 (set magnetic reference)
I am very careful to ensure the sensor is on a stable surface, facing north, when booted. All help and guidance are welcome. Thank you.
Hello.
Does the drift continue indefinitely, or does it eventually settle at a presumably incorrect yaw heading?
- Patrick
It continues for at least a couple hours, and the rate seems consistent at 1 degree per second. I have only let it run for about 4 hours (sitting still on a tabletop), but it didn’t seem to change rate during that time. It appears to drift indefinitely. I have not found a way to counteract it.
Can you post more details about how you are reading the sensor, such as:
- SPI or serial
- broadcast or polling
- which registers
Please try checking the DREG_HEALTH register and let us know what that reports. Also, have you tried calibrating the magnetometer?
- Patrick
Hi,
I am reading the broadcast sensor data over serial. I am using the following configurations, all programmed over serial using the binary interface:
- CREG_COM_RATES[1-6] - 0x0[1-6] - All data bytes set to zero, disable all raw broadcasts
- CREG_COM_RATES7 - 0x07 (7) - Set CHR NMEA Attitude rate to 5Hz (B2 = 0x40)
- CREG_MISC_SETTINGS - 0x08 (8) - Enable CHR NMEA Attitude mode and Magnetometer (B0 = 0x01)
During calibration (which I run every time the device is powered), I set the magnetometer reference:
- SET_MAG_REFERENCE - 0xB0 (176)
The DREG_HEALTH register has the MG_N bit set (“norm of the magnetometer measurement is too far away from 1.0 to be trusted”). I have not otherwise tried calibrating the magnetometer. Is there a process I could follow for that?
I recommend you try to follow the procedures demonstrated in these YouTube videos:
You can download the latest version of the Redshift Serial Interface Software from the UM7-LT’s product page under the “Resources” tab.
- Patrick
I’ll give it a go. Thank you.
Hi Patrick,
I ran the calibration. The imu is substantially more stable. Thank you for your help.
2 Likes