GKD.RoboCtrl
载入中...
搜索中...
未找到
serial_imu.cpp
1#include "device/imu/serial_imu.hpp"
2#include "device/imu/base.hpp"
3#include "io/serial.h"
4#include "utils/utils.hpp"
5
6using namespace roboctrl::device;
7
9{
10 float yaw;
11 float pitch;
12 float roll;
13 float yaw_v;
14 float pitch_v;
15 float roll_v;
16} __attribute__((packed));
17
18serial_imu::serial_imu(const info_type& info) :imu_base{100ms}, info_{info} {
19 auto& serial = roboctrl::get<io::serial>(info.serial_name);
20 serial.on_data(1,[&](const __serial_imu_pkg& pkg){
21 angle_ = {
22 utils::rad_format(pkg.roll * Pi_f / 180.f),
23 utils::rad_format(pkg.pitch * Pi_f / 180.f),
24 utils::rad_format(pkg.yaw * Pi_f / 180.f)
25 };
26 gyro_ = {
27 pkg.roll_v * (Pi_f / 180.f) / 1000.f,
28 pkg.pitch_v * (Pi_f / 180.f) / 1000.f,
29 pkg.yaw_v * (Pi_f / 180.f) / 1000.f
30 };
31
32 tick();
33 });
34}
IMU 抽象基类。
asio::awaitable< T > awaitable
协程任务类型。
Definition async.hpp:42
设备模块
Definition base.hpp:25
串口裸 IO 封装。
IMU 基类,封装常见数据通道。
Definition base.hpp:30
常用数值与字节工具集合。
constexpr auto Pi_f
单精度浮点类型的 Pi 常量。
Definition utils.hpp:34