[Documentation] [TitleIndex] [WordIndex

The um7 package provides a ROS driver node for the CH Robotics UM7 Orientation sensor (IMU). It communicates with the UM7 over its serial bus, converts the data to ROS standards, and publishes the data on standard ROS topics.

The sensor hardware includes 3 axis angular rate, acceleration and magnetometer data. It has a built-in Extended Kalman Filter (EKF) which generates orientation data for all three axes in both Quaternion and Euler form. It also provides a sensor temperature reading.

The UM7 is available directly from chrobotics.com or from other sellers, e.g. pololu.com. It is available in two forms: the UM7-LT which is an unenclosed circuit board and the UM7 which provides an enclosure. This driver supports both.

CH Robotics also provides "CHRobotics Serial Interface" software which allows complete configuration of the sensor, testing capability and Calibration for the magnetometer. This software runs on Windows.


Hardware Installation:

The sensor should be mounted on the vehicle in the default configuration if possible (see below). If you don't, you will have to perform transforms of the data in your applications to restore the proper orientation of the readings.

The sensor should be mounted parallel to the Earth with the component side pointed up. To optimize performance, you can shim the sensor mounting so that the X and Y acceleration signals are zero when the vehicle is level. To minimize cross-coupling between the X and Y axis, the sensor should be pointed in the direction of normal forward movement of the vehicle as accurately as practical. (see pictures below)

To optimize magnetometer data, the sensor should be located as far as practical from iron parts on the vehicle, from electrical motors and from high current power wires. Suitable places on the vehicle can be found by using a hand-held compass. With power on the vehicle, verify that the compass heading in the proposed location is close to the heading of the compass when held far from the vehicle and any sources of magnetic distortion. Retest with any electric motors running.

A magnetometer calibration procedure is provided by the CHRobotics Serial Interface software. Unfortunately, no directions for this procedure are in the UM7 documentation. Procedures for the predecessor device, the UM6, can be found at: www.chrobotics.com/docs/AN-1003-GettingStartedUM6.pdf and will work with minor adaptations.



Software Installation:

sudo apt-get install ros-$ROS_DISTRO-um7

Run the driver:

rosrun um7 um7_driver _port:=/dev/ttyUSB0

Note: the "port" assignment actually defaults to "/dev/ttyUSB0", so if your sensor is on that port, the parameter setting shown above is unnecessary.

Note: if you get a "Couldn't find executable named um7_driver below /opt/ros/$ROS_DISTRO/share/um7" message, try restarting linux. I don't know why; but it has happened to me a couple times. It should only happen on the first attempt to run.



imu/data (sensor_msgs/Imu)

imu/mag (geometry_mags/Vector3Stamped)

imu/rpy (geometry_msgs/Vector3Stamped)

imu/temperature (std_msgs/Float32)

Note: To clarify data polarities, I will describe them in terms of aircraft motion. NU/ND is aircraft nose up (as in climbing or nose down as in descent. RWD/LWD is right wing down as in an aircraft turning to the right in flight; left wing down to turn to the left. NR/NL is nose right as if the aircraft is turning right on the ground, and nose left for turn to the left.

angular rotation about the X axis (roll) is positive for RWD. rotation about the Y axis (pitch) is positive for ND. Rotation about the Z axis (yaw) is positive for NL.

Angular positions are the same polarities as angular rate. ND is positive, RWD is positive and NL is positive:

Acceleration in the X axis is positive for acceleration in the forward direction. Acceleration in the Y axis is positive for acceleration to the left Acceleration in the Z axis is positive for acceleration in the upward direction.



2024-07-20 14:46