libstp
Robotics library for Botball
Loading...
Searching...
No Matches
libstp::hal::imu::IIMU Struct Referenceabstract

Interface for IMU abstraction. More...

#include <IIMU.hpp>

Inheritance diagram for libstp::hal::imu::IIMU:
[legend]

Public Member Functions

virtual ~IIMU ()=default
virtual void read (float *accel, float *gyro, float *magneto)=0
 Read accel, gyro, and magnetometer vectors into caller-owned buffers.
virtual void calibrate ()=0
 Run platform-specific IMU calibration if implemented.
virtual float getHeading ()=0
virtual void getAngularVelocity (float *gyro)
void setYawRateAxisMode (const TurnAxisMode mode)
 Configure which axis getYawRate() reports, using the enum form.
void setYawRateAxisMode (const std::string &mode)
 Configure which axis getYawRate() reports, using a string alias.
TurnAxisMode getYawRateAxisMode () const
std::string getYawRateAxisModeName () const
float getYawRate ()
virtual void getLinearAcceleration (float *linear_accel)=0
virtual void getQuaternion (float *quat)=0
virtual void getIntegratedVelocity (float *vel)
virtual void resetIntegratedVelocity ()
virtual bool waitForReady (int timeout_ms=1000)=0
 Wait until the implementation has enough data to provide orientation.

Detailed Description

Interface for IMU abstraction.

This interface allows for mocking the IMU in unit tests and enables dependency injection in odometry classes.

Definition at line 96 of file IIMU.hpp.

Constructor & Destructor Documentation

◆ ~IIMU()

virtual libstp::hal::imu::IIMU::~IIMU ( )
virtualdefault

Member Function Documentation

◆ calibrate()

virtual void libstp::hal::imu::IIMU::calibrate ( )
pure virtual

Run platform-specific IMU calibration if implemented.

Implemented in libstp::hal::imu::IMU.

◆ getAngularVelocity()

virtual void libstp::hal::imu::IIMU::getAngularVelocity ( float * gyro)
inlinevirtual

Get angular velocity (gyroscope) in body frame

Parameters
gyroOutput array [x, y, z] for angular velocity in rad/s

Reimplemented in libstp::hal::imu::IMU.

Definition at line 115 of file IIMU.hpp.

◆ getHeading()

virtual float libstp::hal::imu::IIMU::getHeading ( )
nodiscardpure virtual

Get firmware-computed heading in radians

Returns
Heading in radians (converted from firmware degrees)

Implemented in libstp::hal::imu::IMU.

◆ getIntegratedVelocity()

virtual void libstp::hal::imu::IIMU::getIntegratedVelocity ( float * vel)
inlinevirtual

Get firmware-integrated velocity from accelerometer in body frame (m/s)

Parameters
velOutput array [x, y, z] for velocity

Reimplemented in libstp::hal::imu::IMU.

Definition at line 198 of file IIMU.hpp.

◆ getLinearAcceleration()

virtual void libstp::hal::imu::IIMU::getLinearAcceleration ( float * linear_accel)
pure virtual

Get gravity-compensated linear acceleration in body frame

Parameters
linear_accelOutput array [x, y, z] for linear acceleration in m/s²

Implemented in libstp::hal::imu::IMU.

◆ getQuaternion()

virtual void libstp::hal::imu::IIMU::getQuaternion ( float * quat)
pure virtual

Get the DMP 6-axis fused orientation quaternion (gyro+accel).

Its roll/pitch is gravity-referenced and drift/vibration-immune, making it a far better tilt source than the raw accelerometer while the robot is driving. When no quaternion has been received (e.g. a firmware build that does not publish it), the output is all-zero so callers can detect "no data" via |q| < 0.5.

Parameters
quatOutput array [w, x, y, z] (unit quaternion).

Implemented in libstp::hal::imu::IMU.

◆ getYawRate()

float libstp::hal::imu::IIMU::getYawRate ( )
inline

Get the angular rate around the configured turn axis. Default is world z-axis ("world_z"), which matches the original yaw-rate behavior. Body-axis modes ("body_x", "body_y", "body_z") return the raw body-frame gyro component and are useful when the robot rotates while tilted/upright.

Returns
Angular rate in rad/s along the configured turn axis

Definition at line 154 of file IIMU.hpp.

◆ getYawRateAxisMode()

TurnAxisMode libstp::hal::imu::IIMU::getYawRateAxisMode ( ) const
inlinenodiscard

Definition at line 137 of file IIMU.hpp.

◆ getYawRateAxisModeName()

std::string libstp::hal::imu::IIMU::getYawRateAxisModeName ( ) const
inlinenodiscard

Definition at line 142 of file IIMU.hpp.

◆ read()

virtual void libstp::hal::imu::IIMU::read ( float * accel,
float * gyro,
float * magneto )
pure virtual

Read accel, gyro, and magnetometer vectors into caller-owned buffers.

Implemented in libstp::hal::imu::IMU.

◆ resetIntegratedVelocity()

virtual void libstp::hal::imu::IIMU::resetIntegratedVelocity ( )
inlinevirtual

Reset the firmware-integrated velocity offset (next read returns zero)

Reimplemented in libstp::hal::imu::IMU.

Definition at line 203 of file IIMU.hpp.

◆ setYawRateAxisMode() [1/2]

void libstp::hal::imu::IIMU::setYawRateAxisMode ( const std::string & mode)
inline

Configure which axis getYawRate() reports, using a string alias.

Definition at line 130 of file IIMU.hpp.

◆ setYawRateAxisMode() [2/2]

void libstp::hal::imu::IIMU::setYawRateAxisMode ( const TurnAxisMode mode)
inline

Configure which axis getYawRate() reports, using the enum form.

Definition at line 123 of file IIMU.hpp.

◆ waitForReady()

virtual bool libstp::hal::imu::IIMU::waitForReady ( int timeout_ms = 1000)
pure virtual

Wait until the implementation has enough data to provide orientation.

Implemented in libstp::hal::imu::IMU.


The documentation for this struct was generated from the following file:
  • /home/runner/work/raccoon-lib/raccoon-lib/modules/libstp-hal/include/hal/IIMU.hpp