One Motor 0.5.1
RoboMaster全平台一站式电机驱动库
载入中...
搜索中...
未找到
M3508Base.hpp
浏览该文件的文档.
1
7#ifndef M3508BASE_HPP
8#define M3508BASE_HPP
9#include <expected>
10#include "M3508Frames.hpp"
13
14namespace OneMotor::Motor::DJI
15{
23
33 template <uint8_t id>
35 {
36 using Result = std::expected<void, std::string>;
37
38 public:
43 virtual ~M3508Base();
44
50 M3508Status getStatus() noexcept;
51
57 Result disable() noexcept;
58
64 Result enable() noexcept;
65
71 Result shutdown() noexcept;
72
73 protected:
79 explicit M3508Base(Can::CanDriver& driver);
80
85 virtual void disabled_func_(Can::CanFrame&& frame) = 0;
86
91 virtual void enabled_func_(Can::CanFrame&& frame) = 0;
92
97 static void shutdown_func_([[maybe_unused]] Can::CanFrame&& frame)
98 {
99 };
100
104 static constexpr uint16_t canId_ = id + 0x200;
105 };
106}
107
108#endif //M3508BASE_HPP
Control::PIDController< Control::Positional, float, Control::WithDeadband, Control::WithIntegralLimit, Control::WithOutputLimit, Control::WithOutputFilter, Control::WithDerivativeFilter > PIDController
PID控制器的类型别名,方便在M3508类中使用。
定义 M3508Base.hpp:20
定义了与大疆M3508/M2006电机相关的CAN数据帧结构体。
定义了一个可配置的PID控制器。
提供一个简单的自旋锁实现。
CAN总线驱动类,封装了底层CAN接口的打开、关闭、发送和接收回调注册等操作。
定义 CanDriver.hpp:32
一个通用的、可配置的PID控制器。
定义 PID.hpp:98
M3508Status getStatus() noexcept
获取电机当前的状态。
定义 N_M3508Base.cpp:33
virtual ~M3508Base()
虚析构函数。
定义 N_M3508Base.cpp:23
Result disable() noexcept
禁用电机。
定义 N_M3508Base.cpp:42
static constexpr uint16_t canId_
电机的CAN ID (标准ID范围 0x201-0x208)
定义 M3508Base.hpp:104
Can::CanDriver & driver_
CAN总线驱动的引用
定义 M3508Base.hpp:101
static void shutdown_func_(Can::CanFrame &&frame)
“关闭”状态下的回调函数,不做任何事情。
定义 M3508Base.hpp:97
Result shutdown() noexcept
关闭电机。
定义 N_M3508Base.cpp:60
virtual void disabled_func_(Can::CanFrame &&frame)=0
纯虚函数,由派生类实现在“禁用”状态下的CAN帧处理逻辑。
M3508Base(Can::CanDriver &driver)
基类构造函数。
定义 N_M3508Base.cpp:10
virtual void enabled_func_(Can::CanFrame &&frame)=0
纯虚函数,由派生类实现在“启用”状态下的CAN帧处理逻辑。
M3508Status status_
电机的状态信息
定义 M3508Base.hpp:103
Util::SpinLock status_lock_
用于保护状态访问的自旋锁
定义 M3508Base.hpp:102
Result enable() noexcept
启用电机。
定义 N_M3508Base.cpp:51
一个基础的、非递归的自旋锁。
定义 SpinLock.hpp:25
一个与平台无关的CAN帧结构体。
定义 CanFrame.hpp:35
位置式PID算法标签。
定义 PID.hpp:37
死区特性标签。如果误差的绝对值小于死区值,则PID输出保持不变。
定义 PID.hpp:50
微分项滤波特性标签。为微分项添加一个低通滤波器。
定义 PID.hpp:65
积分限幅特性标签。限制积分项的累积范围。
定义 PID.hpp:55
输出滤波特性标签。为最终输出添加一个低通滤波器。
定义 PID.hpp:70
输出限幅特性标签。限制PID控制器的最终输出范围。
定义 PID.hpp:75
经过处理和计算后的M3508电机状态。
定义 M3508Frames.hpp:57