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-effectiveorientation sensor providing yaw, pitch, androll angle outputs at up to 300 Hz. AnExtended Kalman Filter (EKF) combines datafrom onboard accelerometers, rate gyros,and magnetic sensors to produce yaw, pitch,and roll angle estimates.Communication with the CHR-6dm isperformed over a L (3.3V) UART at 115200Baud. The AHRS can be configured totransmit raw sensor in addition to angle estimates, and the transmission rate can be configuredin 1 Hz increments from 20 Hz to 300 Hz. Alternatively, the CHR-6dm can operate in “silentmode,” 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 over500 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, andaccelerometer “zeroing” to compensate for AHRS-platform misalignment. All calibration routinesare 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.
December 17, 2010 at 1:48 pm |
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.
January 20, 2011 at 12:41 pm |
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
February 1, 2011 at 6:15 pm |
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