Given are two sets of gyro data received from two IMUs.

One IMU is mounted on a car. X-Direction is in driving direction. Z is upwards to the sky.

The second IMU is mounted to the steering wheel. The Wheel rotates around the Z-axis. When the steering angle is 0° the XZ-plane is parallel with the driving direction. The steering wheel is tilted 65° ( around the y-axis).

When the steering wheel is e.g. turned 45° the car is driving in a curve. Therefore the IMU mounted on the wheel measures not only the 45° but also a fraction of the turning car-rotation. This results in a small error.

I want to transform the car gyro data into the frame of the steering wheel mounted IMU. After that those two could be subtracted leaving pure steering wheel rotation.

How can such a transformation be achieved?

I've tried this with Matlab and the robotic toolbox from Peter Corke

% Integrating gyro data
eulSteering = cumtrapz(steering_imu_gyro)*sampleRate;
eulCar = cumtrapz(carframe_imu_gyro)*sampleRate;

% correction
tilt = roty(-65*pi/180); % 65° rotation
for i = 2 : length(s2.gyr)
    rot = rotz(-angle(i-1));
    carIMU = rpy2r(eulCar(i-1,:)*pi/180);
    rotatedCarIMU = rot*(tilt*carIMU);
    angle(i,:) = (eulSteering(i-1,:)*pi/180-tr2rpy(rotatedCarIMU));

Wasn't totally wrong, but didn't improved the result either (I know the actual steering angle due to the cars CAN BUS).

  • 1
    $\begingroup$ If the two IMUs are mounted at the same place in the car (e.g. where the steering column passes through the dashboard), then the two readings should give the same acceleration vectors except for the angle and rotation of the steering wheel. IMUs are very noisy compared to rotary encoders, so it's not clear why you would use them. The acceleration vector will be mainly due to gravity (whose direction relative to the car is affected by the tilt of the car during cornering) and to the centrifugal force, while the rotation of the car (due to its heading changing) is probably negligible as you say. $\endgroup$
    – Matt
    May 30, 2018 at 8:17
  • $\begingroup$ That's the problem. The IMU on the steering wheel is mounted on the outer boarder, where the hands are. I know... I guess I can manage that. But for that I need those data transformed such that their axis's are aligned. $\endgroup$
    – Mr.Sh4nnon
    May 30, 2018 at 11:20
  • $\begingroup$ The centrifugal force, which is not negligible during normal driving, is different at different places in the car, since they have different distances from the center of rotation (which is ideally to the left or right of the rear wheels, but in practice is affected also by speed in a way that depends on the tires (including wear and inflation) and is hard to model accurately). And changes in the steering direction cause significant sideways acceleration at the front of the car, but not at the back. $\endgroup$
    – Matt
    May 30, 2018 at 13:12
  • $\begingroup$ To interpret IMU data with sensors located in different parts of the car, you would need to collect a lot of data at different speeds with different tire conditions. It becomes an empirical modeling problem, not a mathematics problem. $\endgroup$
    – Matt
    May 30, 2018 at 13:13
  • $\begingroup$ actually all of your concerns were part of my thesis. to get a rough estimation i’ve measured the displacment and the steering wheel tilt, since i‘m out of time. i only want to transform the collected data -65° around the y axis and a variable angle around the z axis. and that didn‘t worked so far :) $\endgroup$
    – Mr.Sh4nnon
    May 30, 2018 at 13:27


You must log in to answer this question.

Browse other questions tagged .