GKD.RoboCtrl
RoboMaster Linux 电控:异步 IO、设备驱动与机器人控制
载入中...
搜索中...
未找到
base.hpp
浏览该文件的文档.
1
6#pragma once
7
8#include <cstddef>
9
10#include "device/base.hpp"
11
12namespace roboctrl::device{
13
15struct euler_angle { fp32 roll{}, pitch{}, yaw{}; };
17struct three_axis { fp32 x{}, y{}, z{}; };
18
23enum class axis : std::size_t {
24 roll = 0,
25 pitch = 1,
26 yaw = 2,
27 x = 0,
28 y = 1,
29 z = 2,
30};
31
36struct imu_base : public device_base {
37protected:
38 three_axis acc_ {};
39 three_axis gyro_ {};
40 euler_angle angle_ {};
41
42public:
44 three_axis acceleration() const { return acc_; }
45 three_axis acc() const { return acc_; }
47 three_axis gyro() const { return gyro_; }
49 euler_angle angle() const { return angle_; }
51 fp32 acceleration(const axis a) const { return a == device::axis::x || a == device::axis::roll ? acc_.x : (a == device::axis::y || a == device::axis::pitch ? acc_.y : acc_.z); }
52 fp32 acc(const axis a) const { return acceleration(a); }
54 fp32 gyro(const axis a) const { return a == device::axis::x || a == device::axis::roll ? gyro_.x : (a == device::axis::y || a == device::axis::pitch ? gyro_.y : gyro_.z); }
56 fp32 angle(const axis a) const { return a == device::axis::x || a == device::axis::roll ? angle_.roll : (a == device::axis::y || a == device::axis::pitch ? angle_.pitch : angle_.yaw); }
57
58 inline explicit imu_base(const std::chrono::nanoseconds offline_timeout) : device_base{offline_timeout} {}
59};
60
61template <typename T>
62concept imu =
63 std::derived_from<T, imu_base>;
64} // namespace dev
设备抽象基类与通用概念。
axis
IMU 三轴枚举,兼容姿态/加速度轴序。
Definition base.hpp:23
设备基础类,提供判断设备离线的基础功能
Definition base.hpp:38
以弧度表示的欧拉角快照。
Definition base.hpp:15
IMU 基类,封装常见数据通道。
Definition base.hpp:36
fp32 gyro(const axis a) const
指定轴的角速度。
Definition base.hpp:54
euler_angle angle() const
获取欧拉角。(rad)
Definition base.hpp:49
three_axis gyro() const
获取三轴角速度。(rad/s)
Definition base.hpp:47
fp32 acceleration(const axis a) const
指定轴的加速度。
Definition base.hpp:51
fp32 angle(const axis a) const
指定轴的欧拉角。
Definition base.hpp:56
three_axis acceleration() const
获取三轴加速度。(rad/s^2)
Definition base.hpp:44
三轴物理量快照。
Definition base.hpp:17
float fp32
单精度浮点别名。
Definition utils.hpp:22