motors::DJIMotor
DJI 电机对象 注册到某条 CAN 总线的反馈映射表 解析 0x201 ~ 0x208 的反馈报文 保存零点、圈数、速度等状态 提供聚合发送所需的目标电流缓存 负责:
继承关系
- 基类
IMotor公开
构造与析构
2DJIMotor
motors::DJIMotor::DJIMotor (const Config &cfg)
上游未提供说明。
motors/DJI/dji.hpp:76~DJIMotor
motors::DJIMotor::~DJIMotor () override
上游未提供说明。
motors/DJI/dji.hpp:77成员函数
12CANBaseReceiveCallback
void motors::DJIMotor::CANBaseReceiveCallback (const CAN_HandleTypeDef *hcan, const CAN_RxHeaderTypeDef *header, const uint8_t *data)
统一的 CAN 接收入口 如果项目里已经有统一 CAN 分发器,推荐把它注册到分发器中;否则也可以在 HAL 的 FIFO 回调里直接调用它。
motors/DJI/dji.hpp:133CAN_FilterInit
void motors::DJIMotor::CAN_FilterInit (CAN_HandleTypeDef *hcan, uint32_t filter_bank)
初始化 DJI 反馈对应的 CAN 滤波器
motors/DJI/dji.hpp:122SendIqCommand
void motors::DJIMotor::SendIqCommand (CAN_HandleTypeDef *hcan, IqSetCMDGroup cmd_group)
把某组 DJI 电机当前缓存的电流值打包发送到总线
motors/DJI/dji.hpp:126decode
void motors::DJIMotor::decode (const uint8_t data[8])
解码 8 字节 DJI 反馈报文,并把单圈机械角度展开成连续角度 data CAN 数据段
motors/DJI/dji.hpp:98defaultControlMode
controllers::ControlMode motors::DJIMotor::defaultControlMode () const override
上游未提供说明。
motors/DJI/dji.hpp:101getAngle
float motors::DJIMotor::getAngle () const override
获取输出轴角度 角度,单位 deg
motors/DJI/dji.hpp:83getIqCMD
int16_t motors::DJIMotor::getIqCMD () const
取出缓存中的电流命令 SendIqCommand() 这个值会被统一打包发送。
motors/DJI/dji.hpp:117getVelocity
float motors::DJIMotor::getVelocity () const override
获取输出轴速度 速度;当前 DJI 实现单位为 rpm
motors/DJI/dji.hpp:88isConnected
bool motors::DJIMotor::isConnected () const override
上游未提供说明。
motors/DJI/dji.hpp:99resetAngle
void motors::DJIMotor::resetAngle () override
把当前反馈角度重置为零点
motors/DJI/dji.hpp:92setCurrent
void motors::DJIMotor::setCurrent (const float current) override
上游未提供说明。
motors/DJI/dji.hpp:108supportsCurrent
bool motors::DJIMotor::supportsCurrent () const override
上游未提供说明。
motors/DJI/dji.hpp:106成员变量
12abs_angle_
float motors::DJIMotor::abs_angle_
输出轴绝对角度,单位 deg
motors/DJI/dji.hpp:158angle_zero_
float motors::DJIMotor::angle_zero_
零点角度,单位 deg
motors/DJI/dji.hpp:140cfg_
Config motors::DJIMotor::cfg_
构造时保存的配置
motors/DJI/dji.hpp:138feedback_
struct motors::DJIMotor::@247072001077040017155050113057011053074357223165 motors::DJIMotor::feedback_
上游未提供说明。
motors/DJI/dji.hpp:155feedback_count_
uint32_t motors::DJIMotor::feedback_count_
接收到的反馈数据数量,用于上电自动清零
motors/DJI/dji.hpp:145inv_reduction_rate_
float motors::DJIMotor::inv_reduction_rate_
总减速比的倒数,用于把内部量换算到输出轴
motors/DJI/dji.hpp:142iq_cmd_
int16_t motors::DJIMotor::iq_cmd_
当前缓存的电流指令值
motors/DJI/dji.hpp:162mech_angle
float motors::DJIMotor::mech_angle
电机反馈侧单圈机械角度,单位 deg
motors/DJI/dji.hpp:149round_cnt
int32_t motors::DJIMotor::round_cnt
跨圈累计,用于把单圈机械角度展开成连续角度
motors/DJI/dji.hpp:154rpm
float motors::DJIMotor::rpm
电机侧转速,单位 rpm
motors/DJI/dji.hpp:150velocity_
float motors::DJIMotor::velocity_
输出轴角速度,单位 rpm
motors/DJI/dji.hpp:159watchdog_
service::Watchdog motors::DJIMotor::watchdog_
上游未提供说明。
motors/DJI/dji.hpp:146嵌套类型
3DJI 电机配置
motors/DJI/dji.hpp:65IqSetCMDGroup
电流指令发送分组 DJI 协议一次报文能携带 4 台电机的电流命令,因此按 1~4、5~8 分成两组。
IqCMDGroup_1_4 = 0U- 控制 1~4 号电机
IqCMDGroup_5_8 = 4U- 控制 5~8 号电机
Type
已封装的 DJI 电机类型
M2006_C610- M2006 + C610.
M3508_C620 = 0U- M3508 + C620.
MOTOR_TYPE_COUNT- 类型计数,占位用