upkie 9.0.0
Open-source wheeled biped robots
Loading...
Searching...
No Matches

◆ compute_base_angular_velocity_from_imu()

Eigen::Vector3d compute_base_angular_velocity_from_imu ( const Eigen::Vector3d &  angular_velocity_imu_in_imu,
const Eigen::Matrix3d &  rotation_base_to_imu 
)
inline

Compute the body angular velocity of the base from IMU readings.

Parameters
[in]angular_velocity_imu_in_imuAngular velocity from the IMU.
[in]rotation_base_to_imuRotation matrix from base to IMU.
Returns
Body angular velocity of the base frame.

Calculation checks:

  • \(I\): IMU frame
  • \(B\): base frame
  • \(W\): world (inertial) frame

Our input is \({}_I \omega_{WI}\), we seek \({}_B \omega_{WB}\).

\( \begin{align*} \dot{R}_{WI} & = R_{WI} ({}_I \omega_{WI} \times) \\ R_{WB} & = R_{WI} R_{IB} \\ \dot{R}_{WB} & = \dot{R}_{WI} R_{IB} \\ & = R_{WI} ({}_I \omega_{WI} \times) R_{IB} \\ & = R_{WI} R_{IB} ({}_B \omega_{WI} \times) \\ & = R_{WB} ({}_B \omega_{WI} \times) = R_{WB} ({}_B \omega_{WB} \times) \end{align*} \)

Thus \({}_B \omega_{WB} = R_{BI} {}_I \omega_{WI}\).