One Motor 0.5.1
RoboMaster全平台一站式电机驱动库
载入中...
搜索中...
未找到
M3508.hpp
浏览该文件的文档.
1
7#ifndef M3508_HPP
8#define M3508_HPP
9
10#include "M3508Base.hpp"
11
14#include <atomic>
15
16
17namespace OneMotor::Motor::DJI
18{
23 enum class MotorMode
24 {
27 };
28
34 template <uint8_t id, MotorMode mode>
35 class M3508;
36
44 template <uint8_t id>
45 class M3508<id, MotorMode::Angular>final : public M3508Base<id>
46 {
47 public:
53 explicit M3508(Can::CanDriver& driver, const Control::PID_Params<float>& ang_params);
54
60 void setRef(float ref) noexcept;
61
67 void editAngPID(const std::function<void(PIDController*)>& func);
68
69 private:
71 void disabled_func_(Can::CanFrame&& frame) override;
73 void enabled_func_(Can::CanFrame&& frame) override;
74 std::unique_ptr<PIDController> ang_pid_;
75 std::atomic<float> ang_ref_;
76 };
77
89 template <uint8_t id>
90 class M3508<id, MotorMode::Position>final : public M3508Base<id>
91 {
92 public:
99 explicit M3508(Can::CanDriver& driver,
100 const Control::PID_Params<float>& pos_params,
101 const Control::PID_Params<float>& ang_params);
107 void setAngRef(float ang_ref) noexcept;
108
114 void setPosRef(float pos_ref) noexcept;
115
121 void editPosPID(const std::function<void(PIDController*)>& func);
122
128 void editAngPID(const std::function<void(PIDController*)>& func);
129
130 private:
132 void disabled_func_(Can::CanFrame&& frame) override;
134 void enabled_func_(Can::CanFrame&& frame) override;
135 std::unique_ptr<PIDController> pos_pid_;
136 std::unique_ptr<PIDController> ang_pid_;
137 std::atomic<float> pos_ref_;
138 std::atomic<float> ang_ref_ = {16384};
139 };
140}
141
142#endif //M3508_HPP
提供一个统一的CAN总线驱动接口。
定义了M3508电机的抽象基类。
Control::PIDController< Control::Positional, float, Control::WithDeadband, Control::WithIntegralLimit, Control::WithOutputLimit, Control::WithOutputFilter, Control::WithDerivativeFilter > PIDController
PID控制器的类型别名,方便在M3508类中使用。
定义 M3508Base.hpp:20
MotorMode
定义了M3508电机的控制模式。
定义 M3508.hpp:24
@ Position
位置闭环控制模式
定义 M3508.hpp:25
@ Angular
速度闭环控制模式
定义 M3508.hpp:26
定义了一个可配置的PID控制器。
CAN总线驱动类,封装了底层CAN接口的打开、关闭、发送和接收回调注册等操作。
定义 CanDriver.hpp:32
M3508Base(Can::CanDriver &driver)
基类构造函数。
定义 N_M3508Base.cpp:10
void editAngPID(const std::function< void(PIDController *)> &func)
在运行时修改速度环的PID参数。
定义 N_M3508.cpp:61
void setRef(float ref) noexcept
设置目标角速度。
定义 N_M3508.cpp:55
M3508(Can::CanDriver &driver, const Control::PID_Params< float > &ang_params)
速度模式的构造函数。
定义 N_M3508.cpp:41
void editAngPID(const std::function< void(PIDController *)> &func)
在运行时修改速度环的PID参数。
定义 N_M3508.cpp:132
void setAngRef(float ang_ref) noexcept
设置速度环的最大输出,即位置环PID的输出限幅。该选项目前没有实际作用。
定义 N_M3508.cpp:111
void setPosRef(float pos_ref) noexcept
设置目标位置(角度)。
定义 N_M3508.cpp:117
void editPosPID(const std::function< void(PIDController *)> &func)
在运行时修改位置环的PID参数。
定义 N_M3508.cpp:123
M3508(Can::CanDriver &driver, const Control::PID_Params< float > &pos_params, const Control::PID_Params< float > &ang_params)
位置模式的构造函数。
定义 N_M3508.cpp:95
M3508电机类的前向声明。
定义 M3508.hpp:35
一个与平台无关的CAN帧结构体。
定义 CanFrame.hpp:35
PID控制器的参数。
定义 PID.hpp:22