GKD.RoboCtrl
载入中...
搜索中...
未找到
base.hpp
浏览该文件的文档.
1
6#pragma once
7
8#include <array>
9#include <span>
10
11#include "device/base.hpp"
12
13namespace roboctrl::device{
14
18enum class axis : std::size_t {
19 roll = 0,
20 pitch = 1,
21 yaw = 2,
22 x = 0,
23 y = 1,
24 z = 2,
25};
26
30struct imu_base : public device_base {
31protected:
32 std::array<fp32, 3> acc_ {};
33 std::array<fp32, 3> gyro_ {};
34 std::array<fp32, 3> angle_ {};
35
36public:
38 auto acc() const { return std::span{ acc_ }; }
40 auto gyro() const { return std::span{ gyro_ }; }
42 auto angle() const { return std::span{ angle_ }; }
44 fp32 acc(const axis axis) const { return acc_[std::to_underlying(axis)]; }
46 fp32 gyro(const axis axis) const { return gyro_[std::to_underlying(axis)]; }
48 fp32 angle(const axis axis) const { return angle_[std::to_underlying(axis)]; }
49
50 inline explicit imu_base(const std::chrono::nanoseconds offline_timeout) : device_base{offline_timeout} {}
51};
52
53template <typename T>
54concept imu =
55 std::derived_from<T, imu_base>;
56} // namespace dev
设备抽象基类与通用概念。
asio::awaitable< T > awaitable
协程任务类型。
Definition async.hpp:42
设备模块
Definition base.hpp:25
axis
IMU 三轴枚举,兼容姿态/加速度轴序。
Definition base.hpp:18
设备基础类,提供判断设备离线的基础功能
Definition base.hpp:38
IMU 基类,封装常见数据通道。
Definition base.hpp:30
fp32 acc(const axis axis) const
指定轴的加速度。
Definition base.hpp:44
auto gyro() const
获取三轴角速度。(rad/s)
Definition base.hpp:40
auto acc() const
获取三轴加速度。(rad/s^2)
Definition base.hpp:38
fp32 gyro(const axis axis) const
指定轴的角速度。
Definition base.hpp:46
auto angle() const
获取欧拉角。(rad)
Definition base.hpp:42
fp32 angle(const axis axis) const
指定轴的欧拉角。
Definition base.hpp:48
float fp32
单精度浮点别名。
Definition utils.hpp:22