1#include "device/imu/serial_imu.hpp"
2#include "device/imu/serial_imu_codec.hpp"
10serial_imu::serial_imu(
const info_type& info) :
imu_base{100ms}, info_{info} {
11 auto& serial = roboctrl::get<io::serial>(info.serial_name);
12 serial.on_data(1, [
this](
const std::array<std::byte, 24>& bytes) {
13 const auto packet = decode_serial_imu(bytes);
16 {info_.roll_sign, info_.pitch_sign, info_.yaw_sign},
17 {info_.roll_rate_sign, info_.pitch_rate_sign, info_.yaw_rate_sign}, info_.gyro_scale);
19 angle_ = sample->angle;
std::optional< serial_imu_sample > convert_serial_imu(const serial_imu_packet &packet, three_axis angle_sign, three_axis rate_sign, float gyro_scale)