跳转到内容

MotorDrivers::Controller API

文档稀疏
符号
42
已记录
36
修订版本
0.1.0+d8ebbce805b2

6 / 42 个公开 API 符号没有说明。

命名空间

1

2

controllers::MotorPosController

电机位置控制器 对初学者来说,可以把它理解成“把目标角度逐步变成驱动器能理解的控制命令”的中间层。

controllers/motor_pos_controller.hpp:29

controllers::MotorVelController

电机速度控制器 外部 PID 模式下,输出为电流 / 力矩类命令 内部速度模式下,直接把目标速度交给驱动器内部闭环 它负责把“目标速度”转换成电机可以执行的命令:

controllers/motor_vel_controller.hpp:27

结构体

2

函数

10

controllers::MotorPosController::MotorPosController

                    controllers::MotorPosController::MotorPosController (motors::IMotor *motor, const Config &cfg)
                  

motor 被控制的电机 cfg 控制器配置

controllers/motor_pos_controller.hpp:56

controllers::MotorPosController::setRef

                    void controllers::MotorPosController::setRef (float position, float max_velocity=kNoLimit)
                  

设置位置参考 position 目标输出轴角度,单位 deg max_velocity 位置环输出的最大目标角速度限制; 传 kNoLimit(默认)表示不施加额外限制

controllers/motor_pos_controller.hpp:69

controllers::MotorVelController::MotorVelController

                    controllers::MotorVelController::MotorVelController (motors::IMotor *motor, const Config &cfg)
                  

motor 被控制的电机 cfg 控制器配置

controllers/motor_vel_controller.hpp:49

controllers::MotorVelController::setRef

                    void controllers::MotorVelController::setRef (float velocity, float max_current=kNoLimit)
                  

设置速度参考 velocity 目标输出轴速度,单位 rpm max_current 外部 PID 模式下临时电流/力矩输出上限; 传 kNoLimit(默认)表示不施加额外限制

controllers/motor_vel_controller.hpp:68

变量

23

controllers::MotorPosController::Config::ctrl_mode

                    ControlMode controllers::MotorPosController::Config::ctrl_mode
                  

控制模式,Default 时跟随电机默认模式

controllers/motor_pos_controller.hpp:41

controllers::MotorPosController::Config::internal_set_ratio

                    uint32_t controllers::MotorPosController::Config::internal_set_ratio
                  

当驱动器支持内部位置指令时,发送频率相对于控制器 update 频率的分频。 用于只需要较低频率维持控制指令,同时需要节约总线负载的情况 如果只能发送内部速度指令,则会降速度指令的频率为位置环更新频率 应 >= 1

controllers/motor_pos_controller.hpp:49

controllers::MotorPosController::Config::pos_vel_freq_ratio

                    uint32_t controllers::MotorPosController::Config::pos_vel_freq_ratio
                  

位置环相对更新周期的分频,应 >= 1

controllers/motor_pos_controller.hpp:39

controllers::MotorPosController::Config::position_pid

                    PIDMotor::Config controllers::MotorPosController::Config::position_pid
                  

位置环 PID 配置,用于“角度 -> 目标角速度”

controllers/motor_pos_controller.hpp:37

controllers::MotorPosController::Config::velocity_pid

                    PIDMotor::Config controllers::MotorPosController::Config::velocity_pid
                  

速度环 PID 配置,用于“目标角速度 -> 电流输出”

controllers/motor_pos_controller.hpp:38

controllers::MotorVelController::Config::ctrl_mode

                    ControlMode controllers::MotorVelController::Config::ctrl_mode
                  

控制模式,Default 时跟随电机默认模式

controllers/motor_vel_controller.hpp:36

controllers::MotorVelController::Config::internal_set_ratio

                    uint32_t controllers::MotorVelController::Config::internal_set_ratio
                  

当可以发送内部速度指令时,发送频率相对于 update 频率的分频。 用于只需要较低频率维持控制指令,同时需要节约总线负载的情况 应 >= 1

controllers/motor_vel_controller.hpp:42

controllers::MotorVelController::Config::pid

                    PIDMotor::Config controllers::MotorVelController::Config::pid
                  

外部 PID 配置;在内部速度模式下该项无效

controllers/motor_vel_controller.hpp:35

controllers::MotorVelController::internal_set_prescaler_

                    size_t controllers::MotorVelController::internal_set_prescaler_
                  

内部速度指令发送分频计数器

controllers/motor_vel_controller.hpp:83

文件

4

controllers/motor_pos_controller.hpp

通用位置控制器 syhanjin 2026-01-28 ControlMode InternalPos :电机只支持位置指令时,直接把目标角度交给驱动器 InternalVelPos :电机同时支持速度指令和位置指令时,位置控制器直接发送位置指令 内部速度模式:位置环先算出目标角速度,再交给驱动器内部速度环 外部 PID 模式:位置环算目标角速度,速度环再算电流输出 这个控制器统一处理“目标是一个角度”的场景。 根据电机支持的能力和的选择,它会自动走不同的控制路径:

controllers/motor_pos_controller.hpp

controllers/motor_vel_controller.hpp

通用速度控制器 syhanjin 2026-01-28 _rad _rps getVelocity() setInternalVelocity() 这里的“速度”应理解为电机角速度参考。 整个电机控制驱动里,速度默认单位都是 rpm,除非变量名明确带有、等后缀。 控制器要求参考值和绑定电机的/保持一致。

controllers/motor_vel_controller.hpp