controllers
上游未提供说明。
controllers/motor_pos_controller.cpp:100.1.0+d8ebbce805b26 / 42 个公开 API 符号没有说明。
上游未提供说明。
controllers/motor_pos_controller.cpp:10电机位置控制器 对初学者来说,可以把它理解成“把目标角度逐步变成驱动器能理解的控制命令”的中间层。
controllers/motor_pos_controller.hpp:29电机速度控制器 外部 PID 模式下,输出为电流 / 力矩类命令 内部速度模式下,直接把目标速度交给驱动器内部闭环 它负责把“目标速度”转换成电机可以执行的命令:
controllers/motor_vel_controller.hpp:27位置控制器配置
controllers/motor_pos_controller.hpp:35速度控制器配置
controllers/motor_vel_controller.hpp:33
controllers::MotorPosController::MotorPosController (motors::IMotor *motor, const Config &cfg)
motor 被控制的电机 cfg 控制器配置
controllers/motor_pos_controller.hpp:56
void controllers::MotorPosController::setRef (float position, float max_velocity=kNoLimit)
设置位置参考 position 目标输出轴角度,单位 deg max_velocity 位置环输出的最大目标角速度限制; 传 kNoLimit(默认)表示不施加额外限制
controllers/motor_pos_controller.hpp:69
void controllers::MotorPosController::update () override
周期更新控制器
controllers/motor_pos_controller.hpp:62
controllers::MotorPosController::~MotorPosController () override
上游未提供说明。
controllers/motor_pos_controller.hpp:57
controllers::MotorVelController::MotorVelController (motors::IMotor *motor, const Config &cfg)
motor 被控制的电机 cfg 控制器配置
controllers/motor_vel_controller.hpp:49
bool controllers::MotorVelController::enable () override
上游未提供说明。
controllers/motor_vel_controller.hpp:52
auto & controllers::MotorVelController::getPID ()
直接访问内部 PID 对象
controllers/motor_vel_controller.hpp:73
void controllers::MotorVelController::setRef (float velocity, float max_current=kNoLimit)
设置速度参考 velocity 目标输出轴速度,单位 rpm max_current 外部 PID 模式下临时电流/力矩输出上限; 传 kNoLimit(默认)表示不施加额外限制
controllers/motor_vel_controller.hpp:68
void controllers::MotorVelController::update () override
周期更新控制器
controllers/motor_vel_controller.hpp:61
controllers::MotorVelController::~MotorVelController () override
上游未提供说明。
controllers/motor_vel_controller.hpp:50
ControlMode controllers::MotorPosController::Config::ctrl_mode
控制模式,Default 时跟随电机默认模式
controllers/motor_pos_controller.hpp:41
uint32_t controllers::MotorPosController::Config::internal_set_ratio
当驱动器支持内部位置指令时,发送频率相对于控制器 update 频率的分频。 用于只需要较低频率维持控制指令,同时需要节约总线负载的情况 如果只能发送内部速度指令,则会降速度指令的频率为位置环更新频率 应 >= 1
controllers/motor_pos_controller.hpp:49
uint32_t controllers::MotorPosController::Config::pos_vel_freq_ratio
位置环相对更新周期的分频,应 >= 1
controllers/motor_pos_controller.hpp:39
PIDMotor::Config controllers::MotorPosController::Config::position_pid
位置环 PID 配置,用于“角度 -> 目标角速度”
controllers/motor_pos_controller.hpp:37
PIDMotor::Config controllers::MotorPosController::Config::velocity_pid
速度环 PID 配置,用于“目标角速度 -> 电流输出”
controllers/motor_pos_controller.hpp:38
size_t controllers::MotorPosController::internal_set_prescaler_
内部指令发送分频计数器
controllers/motor_pos_controller.hpp:85
uint32_t controllers::MotorPosController::internal_set_ratio_
内部指令发送分频比
controllers/motor_pos_controller.hpp:86
float controllers::MotorPosController::kNoLimit
上游未提供说明。
controllers/motor_pos_controller.hpp:71
float controllers::MotorPosController::max_velocity_
位置环输出速度限幅
controllers/motor_pos_controller.hpp:81
uint32_t controllers::MotorPosController::pos_vel_freq_ratio_
位置环相对 update 的分频比
controllers/motor_pos_controller.hpp:83
uint32_t controllers::MotorPosController::pos_vel_prescaler_
位置环分频计数器
controllers/motor_pos_controller.hpp:77
PIDMotor controllers::MotorPosController::position_pid_
外层位置环
controllers/motor_pos_controller.hpp:74
float controllers::MotorPosController::position_ref_
当前位置参考,单位 deg
controllers/motor_pos_controller.hpp:79
PIDMotor controllers::MotorPosController::velocity_pid_
内层速度环
controllers/motor_pos_controller.hpp:75
ControlMode controllers::MotorVelController::Config::ctrl_mode
控制模式,Default 时跟随电机默认模式
controllers/motor_vel_controller.hpp:36
uint32_t controllers::MotorVelController::Config::internal_set_ratio
当可以发送内部速度指令时,发送频率相对于 update 频率的分频。 用于只需要较低频率维持控制指令,同时需要节约总线负载的情况 应 >= 1
controllers/motor_vel_controller.hpp:42
PIDMotor::Config controllers::MotorVelController::Config::pid
外部 PID 配置;在内部速度模式下该项无效
controllers/motor_vel_controller.hpp:35
size_t controllers::MotorVelController::internal_set_prescaler_
内部速度指令发送分频计数器
controllers/motor_vel_controller.hpp:83
size_t controllers::MotorVelController::internal_set_ratio_
内部速度指令发送分频比
controllers/motor_vel_controller.hpp:84
float controllers::MotorVelController::kNoLimit
上游未提供说明。
controllers/motor_vel_controller.hpp:75
float controllers::MotorVelController::max_current_
电流/力矩输出限幅
controllers/motor_vel_controller.hpp:81
PIDMotor controllers::MotorVelController::pid_
速度环 PID
controllers/motor_vel_controller.hpp:78
float controllers::MotorVelController::velocity_target_
目标速度,默认单位 rpm
controllers/motor_vel_controller.hpp:79通用位置控制器实现 syhanjin 2026-01-28
controllers/motor_pos_controller.cpp通用位置控制器 syhanjin 2026-01-28 ControlMode InternalPos :电机只支持位置指令时,直接把目标角度交给驱动器 InternalVelPos :电机同时支持速度指令和位置指令时,位置控制器直接发送位置指令 内部速度模式:位置环先算出目标角速度,再交给驱动器内部速度环 外部 PID 模式:位置环算目标角速度,速度环再算电流输出 这个控制器统一处理“目标是一个角度”的场景。 根据电机支持的能力和的选择,它会自动走不同的控制路径:
controllers/motor_pos_controller.hpp通用速度控制器实现 syhanjin 2026-01-28
controllers/motor_vel_controller.cpp通用速度控制器 syhanjin 2026-01-28 _rad _rps getVelocity() setInternalVelocity() 这里的“速度”应理解为电机角速度参考。 整个电机控制驱动里,速度默认单位都是 rpm,除非变量名明确带有、等后缀。 控制器要求参考值和绑定电机的/保持一致。
controllers/motor_vel_controller.hpp