CHR-6dm Attitude and Heading Reference System (IMU)

by

This Inertial Moment Unit (IMU) is a bunch of sensors  that are supposed to tell the robot’s brain the position and orientation of the robot. Typically solid state gyros, accelerometers and magnetometers are used. However, these sensors have varying degree of error, delay and accumulating delay and error. To deal with errors, the naive approach is to use a filter that smooths the signal but that approach creates delay. The textbook way of dealing with these limitations is to use a predictive algorithm that assumes that the measured object has body weight and inertia and in return provides a very low latency clean signal. Kalman Filter is the classic solution but more modern algorithms provide better results.

Instead of dealing with these problems, a recent development in IMU’s has spawned several small boards that integrate several sensors plus a small processor that does all the fancy math and sends out a low latency smooth signal in the form of a bit stream. All we lazy robot developers have to do is read the XYZ and yaw-pitch-roll data off the board’s serial connector.

To get the principal space position the IMU is once placed in  the head of our Jacobian1 robot.

The IMU that we are using is CHR-6dm Attitude and Heading Reference System.

” The CHR-6dm AHRS is a cost-effective
orientation sensor providing yaw, pitch, and
roll angle outputs at up to 300 Hz.  An
Extended Kalman Filter (EKF) combines data
from onboard accelerometers, rate gyros,
and magnetic sensors to produce yaw, pitch,
and roll angle estimates.
Communication with the CHR-6dm is
performed over a           L (3.3V) UART at 115200
Baud.  The AHRS can be configured to
transmit raw sensor in addition to angle estimates, and the transmission rate can be configured
in 1 Hz increments from 20 Hz to 300 Hz.  Alternatively, the CHR-6dm can operate in “silent
mode,” where data is transmitted only when specific requests are received over the UART.
Regardless of the transmission mode and rate, internal angle estimates are maintained at over
500 Hz to ensure long-term accuracy.
The CHR-6dm simplifies integration by providing a number of automatic calibration routines,
including rate gyro bias calibration, magnetometer hard and soft iron calibration, and
accelerometer “zeroing” to compensate for AHRS-platform misalignment.  All calibration routines
are triggered by sending simple commands over the serial interface.

The CHR-6dm AHRS is a cost-effective  orientation sensor providing yaw, pitch, and  roll angle outputs at up to 300 Hz.  An  Extended Kalman Filter (EKF) combines data  from onboard accelerometers, rate gyros,  and magnetic sensors to produce yaw, pitch,  and roll angle estimates.    Communication with the CHR-6dm is  performed over a           L (3.3V) UART at 115200  Baud.  The AHRS can be configured to  transmit raw sensor in addition to angle estimates, and the transmission rate can be configured  in 1 Hz increments from 20 Hz to 300 Hz.  Alternatively, the CHR-6dm can operate in “silent  mode,” where data is transmitted only when specific requests are received over the UART.   Regardless of the transmission mode and rate, internal angle estimates are maintained at over  500 Hz to ensure long-term accuracy.    The CHR-6dm simplifies integration by providing a number of automatic calibration routines,  including rate gyro bias calibration, magnetometer hard and soft iron calibration, and  accelerometer “zeroing” to compensate for AHRS-platform misalignment.  All calibration routines  are triggered by sending simple commands over the serial interface. …”

To test the IMU, we are using a RB110 Roboard and one of the first problems that we had, was that UART 3 and 4 were not found by Linux, so as temporary work around, we just disabled UART 0 and 1 in the BIOS and put the same IRQ interruption address of  0 and 1 , to 3 and 4.

To connect the IMU to the board, we have used the 5v from UART0 to supply the Vxx (see RB110 datasheet page 8 to 14) for the experience, once the power available on the Uart3 pins is Vxx.

On our first test, with Roboard and the IMU, is a little code running in the Roboard that unpack the data from IMU and just print it, with 115200 Baud of speed in UART3.

3 Responses to “CHR-6dm Attitude and Heading Reference System (IMU)”

  1. Norbert Turpin Says:

    Have you had much success in running the CHR-6dm Attitude and Heading Reference System? Im trying to wire the unit into a Logomatic V2 SD Datalogger and its not behaving the way it should. Im sure its a user error on my part but I havent had any other luck in finding resources of people using the unit at all. All Im trying to do is log the Pitch Roll and Yaw data on a vessel. Nothing will go over +/- 30 degrees, well the yaw could go 360 but Im sure thats not a problem.

  2. Michael Kanis Says:

    Hi,
    I am also trying to get this working (but connected to a RoBoard 100), but am getting no output at all. I am not even sure, if I have to connect the TX of the CHR-6dm with the TX of the RoBoard or if it is correct to connect TX → RX and vice versa.

    Also, could you post (or e-mail me) your test program (if you don’t mind)?

    I’m really a stuck and would appreciate it.

    Thanks
    Michael

  3. robomarinheiro Says:

    Hi
    For those who look to interface the IMU with the roboard, here goes how i’ve done it.

    https://docs.google.com/leaf?id=0B0PdCfTxHWVDMzM2NTE1ODUtOGU4MS00YTM3LWI5NjctMDBiNjY5ZDE2YzQ3&hl=en_GB

    A little tip, first use some small code just to send someting to the com port and with the pins RX and TX shunted, check if you get what you’re sending back. You can use the cables that come with the roboard to plug into the coms connector, the ones that i’ve used to solder to the IMU (com3 in my case).

    To use the code in linux, just put
    >> gcc IMUTesr.c -o d
    where “gcc” is the command to compile the “IMUTesr.c” c file, with “-o” to indicate the output file “executable” file named “d”

    to run the code just write in command line
    >> ./d 3 115200
    where ” ./d ” its the command to run the “d” file, “3” is the number of the com port where you connected the IMU to, and “115200” its the IMU baudrate.

    A little note, i’m working on roboard using PUTTY with a SSH connection using a network cable connected to my PC second network card.
    I’m also using WinSCP to access to the roboard file system end edit, copy, move, remove or whatever you need to do with the files.

    Hope this will help you

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s


%d bloggers like this: