import libraries

  #include "tap/board/board.hpp"
#include "drivers_singleton.hpp"
#include "tap/communication/serial/uart_terminal_device.hpp"
  

use the tap::communicatin::serial namespace for convenience

  using namespace tap::communication::serial;
  

initialize the board, a timer, and the IOStream.

  
src::Drivers *drivers = src::DoNotUse_getDrivers();     // gets the driver object
Board::initialize();     // initialize the whole board

tap::arch::PeriodicMicroTimer RunTimer(100000);  

UartTerminalDevice ter(drivers);
ter.initialize();
modm::IOStream s(ter);
  

initialize the imu

      drivers->bmi088.initialize(20,0,0);
  

every 100000 micro seconds read update the imu with drivers->bmi088.periodicIMUUpdate() and print the roll, pitch, and yaw.

          if(RunTimer.execute()){
            drivers->bmi088.periodicIMUUpdate();

            double roll = drivers->bmi088.getRoll();
            double pitch = drivers->bmi088.getPitch();
            double yaw = drivers->bmi088.getYaw();
            // double ax = drivers->bmi088.getAx();
            // double ay = drivers->bmi088.getAy();
            // double az = drivers->bmi088.getAz();
            // double gx = drivers->bmi088.getGx();
            // double gy = drivers->bmi088.getGy();
            // double gz = drivers->bmi088.getGz();

            s.printf("roll %f | pitch %f | yaw %f\n", roll, pitch, yaw);
        }
  

Code

  #include "tap/board/board.hpp"
#include "drivers_singleton.hpp"
#include "tap/communication/serial/uart_terminal_device.hpp"


using namespace tap::communication::serial;

int main(){
    src::Drivers *drivers = src::DoNotUse_getDrivers();     // gets the driver object
    Board::initialize();     // initialize the whole board

    tap::arch::PeriodicMicroTimer RunTimer(100000);  

    UartTerminalDevice ter(drivers);
    ter.initialize();
    modm::IOStream s(ter);

    drivers->bmi088.initialize(20,0,0);

    while(true){
        if(RunTimer.execute()){
            drivers->bmi088.periodicIMUUpdate();

            double roll = drivers->bmi088.getRoll();
            double pitch = drivers->bmi088.getPitch();
            double yaw = drivers->bmi088.getYaw();
            // double ax = drivers->bmi088.getAx();
            // double ay = drivers->bmi088.getAy();
            // double az = drivers->bmi088.getAz();
            // double gx = drivers->bmi088.getGx();
            // double gy = drivers->bmi088.getGy();
            // double gz = drivers->bmi088.getGz();

            s.printf("roll %f | pitch %f | yaw %f\n", roll, pitch, yaw);
        }
    }
}