跳转到内容

MotorDrivers::VESC API

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

30 / 74 个公开 API 符号没有说明。

命名空间

1

1

motors::VESCMotor

VESC 电调对象 电流控制 内部速度控制 常见状态反馈解析 当前封装重点覆盖: 角度反馈 速度反馈 电流输入 内部速度输入 从能力模型上看,VESC 这一路主要提供: 当前 VESC 实现里,速度接口单位为 rpm。

motors/VESC/vesc.hpp:36

结构体

2

函数

25

VESC_CAN_Fifo0ReceiveCallback

                    void VESC_CAN_Fifo0ReceiveCallback (CAN_HandleTypeDef *hcan)
                  

VESC FIFO0 中断回调包装 CANBaseReceiveCallback() 如果项目没有统一 CAN 分发器,可以直接使用这个 HAL 包装;否则更推荐统一把报文分发到。

motors/VESC/vesc.hpp:280

VESC_CAN_Fifo1ReceiveCallback

                    void VESC_CAN_Fifo1ReceiveCallback (CAN_HandleTypeDef *hcan)
                  

VESC FIFO1 中断回调包装 CANBaseReceiveCallback() 如果项目没有统一 CAN 分发器,可以直接使用这个 HAL 包装;否则更推荐统一把报文分发到。

motors/VESC/vesc.hpp:287

motors::VESCMotor::CANBaseReceiveCallback

                    void motors::VESCMotor::CANBaseReceiveCallback (const CAN_HandleTypeDef *hcan, const CAN_RxHeaderTypeDef *header, const uint8_t *data)
                  

CAN 基础接收回调 hcan CAN 句柄 header CAN 报文头 data 数据 如果项目里已经有统一 CAN 分发器,推荐把它注册到分发器中;否则也可以在 HAL 的 FIFO 回调里直接调用它。

motors/VESC/vesc.hpp:199

motors::VESCMotor::CAN_FilterInit

                    void motors::VESCMotor::CAN_FilterInit (CAN_HandleTypeDef *hcan, uint32_t filter_bank)
                  

是否支持内部位置控制 协议本身存在位置设定命令,但当前这个类没有把它作为稳定接口对外开放。 不重写 internalPositionSupportLevel(),继承基类默认 NotSupported。 hcan CAN 句柄 filter_bank 滤波器组 初始化 CAN 滤波器

motors/VESC/vesc.hpp:189

motors::VESCMotor::VESCMotor

                    motors::VESCMotor::VESCMotor (const Config &cfg)
                  

上游未提供说明。

motors/VESC/vesc.hpp:140

motors::VESCMotor::clamp

                    float motors::VESCMotor::clamp (float value, float abs_max)
                  

限幅 value 输入值 abs_max 最大绝对值 限幅后的值

motors/VESC/vesc.hpp:261

motors::VESCMotor::decode

                    void motors::VESCMotor::decode (StatusCommand status_cmd, const uint8_t data[8])
                  

解码状态反馈 status_cmd 状态指令 data 数据

motors/VESC/vesc.hpp:253

motors::VESCMotor::defaultControlMode

                    controllers::ControlMode motors::VESCMotor::defaultControlMode () const override
                  

上游未提供说明。

motors/VESC/vesc.hpp:155

motors::VESCMotor::getAngle

                    float motors::VESCMotor::getAngle () const override
                  

获取输出轴角度 角度,单位 deg

motors/VESC/vesc.hpp:147

motors::VESCMotor::getVelocity

                    float motors::VESCMotor::getVelocity () const override
                  

获取输出轴速度 速度;当前 VESC 实现单位为 rpm

motors/VESC/vesc.hpp:152

motors::VESCMotor::internalVelocitySupportLevel

                    InternalVelocitySupportLevel motors::VESCMotor::internalVelocitySupportLevel () const override
                  

上游未提供说明。

motors/VESC/vesc.hpp:165

motors::VESCMotor::isConnected

                    bool motors::VESCMotor::isConnected () const override
                  

上游未提供说明。

motors/VESC/vesc.hpp:160

motors::VESCMotor::resetAngle

                    void motors::VESCMotor::resetAngle () override
                  

上游未提供说明。

motors/VESC/vesc.hpp:153

motors::VESCMotor::sendSetCommand

                    void motors::VESCMotor::sendSetCommand (SetCommand cmd, float value) const
                  

发送设置指令 cmd 指令 value 值

motors/VESC/vesc.hpp:267

motors::VESCMotor::setCurrent

                    void motors::VESCMotor::setCurrent (float current) override
                  

上游未提供说明。

motors/VESC/vesc.hpp:163

motors::VESCMotor::setInternalVelocity

                    void motors::VESCMotor::setInternalVelocity (float rpm, float maxi) override
                  

发送内部速度参考 VESC 内部速度模式不支持 maxi,该参数被忽略。

motors/VESC/vesc.hpp:174

motors::VESCMotor::supportsCurrent

                    bool motors::VESCMotor::supportsCurrent () const override
                  

上游未提供说明。

motors/VESC/vesc.hpp:162

motors::VESCMotor::~VESCMotor

                    motors::VESCMotor::~VESCMotor () override
                  

上游未提供说明。

motors/VESC/vesc.hpp:141

motors::VESC_CAN_Fifo0ReceiveCallback

                    void motors::VESC_CAN_Fifo0ReceiveCallback (CAN_HandleTypeDef *hcan)
                  

上游未提供说明。

motors/VESC/vesc.cpp:290

motors::VESC_CAN_Fifo1ReceiveCallback

                    void motors::VESC_CAN_Fifo1ReceiveCallback (CAN_HandleTypeDef *hcan)
                  

上游未提供说明。

motors/VESC/vesc.cpp:306

motors::be_to_i16

                    static int16_t motors::be_to_i16 (const uint8_t *bytes)
                  

上游未提供说明。

motors/VESC/vesc.cpp:81

motors::be_to_i32

                    static int32_t motors::be_to_i32 (const uint8_t *bytes)
                  

上游未提供说明。

motors/VESC/vesc.cpp:74

motors::find_map

                    static FeedbackMap * motors::find_map (const CAN_HandleTypeDef *hcan)
                  

上游未提供说明。

motors/VESC/vesc.cpp:27

motors::register_motor

                    static bool motors::register_motor (CAN_HandleTypeDef *hcan, const size_t id, VESCMotor *motor)
                  

上游未提供说明。

motors/VESC/vesc.cpp:37

motors::unregister_motor

                    static bool motors::unregister_motor (CAN_HandleTypeDef *hcan, const size_t id)
                  

上游未提供说明。

motors/VESC/vesc.cpp:61

枚举

2

motors::VESCMotor::SetCommand

VESC CAN 指令集(设置类) 对应 VESC_CAN_PocketSet_t.

SetCurrent = 1U
设置电流, Data: current * 1000 (int32)
SetCurrentBrake = 2U
设置刹车电流, Data: current * 1000 (int32)
SetCurrentBrakeRel = 11U
设置相对刹车电流,Data: ratio (-1 to 1) * 100,100 (int32)
SetCurrentRel = 10U
设置相对电流,Data: ratio (-1 to 1) * 100,000 (int32)
SetDuty = 0U
设置占空比, Data: Duty Circle * 100,000 (int32)
SetPosition = 4U
设置位置, Data: pos * 1,000,000 (int32)
SetRPM = 3U
设置电角转速, Data: ERPM (int32)
motors/VESC/vesc.hpp:43

motors::VESCMotor::StatusCommand

VESC CAN 状态反馈指令集 对应 VESC_CAN_PocketStatus_t. 下面各状态包的字段说明,按“当前公开资料 + 本项目解码实现”整理。 如果注释里写了“推测”,表示该字段含义或物理单位在当前资料下并非完全确认。

VESC_CAN_STATUS_1 = 9U
状态包 1 int32 Data[0..3]:ERPM(Electrical RPM,电角转速), int16 Data[4..5]:总电流 * 10,当前按安培 A 解释 int16 -1 ~ 1 Data[6..7]:占空比 * 1000,即最新 duty cycle,理论范围约为 数据布局:
VESC_CAN_STATUS_2 = 14U
状态包 2 Amp Hours * 10000 int32 Data[0..3]:累计放电安时, Amp Hours Charged * 10000 int32 Data[4..7]:累计回充安时, 数据布局:
VESC_CAN_STATUS_3 = 15U
状态包 3 Watt Hours * 10000 int32 Data[0..3]:累计放电瓦时, Watt Hours Charged * 10000 int32 Data[4..7]:累计回充瓦时, 数据布局:
VESC_CAN_STATUS_4 = 16U
状态包 4 int16 degC Data[0..1]:FET 温度 * 10,单位按摄氏度推测 int16 degC Data[2..3]:电机温度 * 10,单位按摄氏度推测 int16 Data[4..5]:输入电流 * 10,单位按安培 A 推测 int16 Data[6..7]:PID 位置量 * 50,当前项目把它当作 0~360 deg 单圈位置来使用,但该字段的原始含义与单位仍带推测成分 数据布局:
VESC_CAN_STATUS_5 = 27U
状态包 5 Tachometer Value int32 Data[0..3]:转速计原始值,当前项目仅按原始计数保存,其精确物理含义仍带推测成分 int16 Data[4..5]:输入电压 * 10, Data[6..7]:保留字段 输入电压与转速计原始值 数据布局:
motors/VESC/vesc.hpp:61

变量

40

motors::FeedbackMap::hcan

                    CAN_HandleTypeDef* motors::FeedbackMap::hcan
                  

上游未提供说明。

motors/VESC/vesc.cpp:21

motors::FeedbackMap::motors

                    FixedPointerMap<size_t, VESCMotor, MOTORS_VESC_MAX_NUM> motors::FeedbackMap::motors
                  

上游未提供说明。

motors/VESC/vesc.cpp:22

motors::VESCMotor::Config::auto_zero

                    bool motors::VESCMotor::Config::auto_zero
                  

上电收够一段稳定反馈后,是否自动把当前角度设为零点

motors/VESC/vesc.hpp:136

motors::VESCMotor::Config::electrodes

                    uint8_t motors::VESCMotor::Config::electrodes
                  

电机极对数,用于机械 rpm 与 ERPM 的换算。 注意这里填写的是“极对数”,不是总极数。 例如 14 极电机,这里应填写 7。 electrodes 字段名沿用历史命名,当前不改动接口以兼容现有代码。

motors/VESC/vesc.hpp:133

motors::VESCMotor::Config::hcan

                    CAN_HandleTypeDef* motors::VESCMotor::Config::hcan
                  

所在 CAN 总线

motors/VESC/vesc.hpp:123

motors::VESCMotor::Config::id

                    uint8_t motors::VESCMotor::Config::id
                  

控制器 id,0xFF 代表广播

motors/VESC/vesc.hpp:124

motors::VESCMotor::Config::reduction_rate

                    float motors::VESCMotor::Config::reduction_rate
                  

外接减速比(VESC 上位机设置的减速比不生效)

motors/VESC/vesc.hpp:134

motors::VESCMotor::Config::reverse

                    bool motors::VESCMotor::Config::reverse
                  

是否反转输出方向

motors/VESC/vesc.hpp:137

motors::VESCMotor::abs_angle_

                    float motors::VESCMotor::abs_angle_
                  

输出轴绝对角度,单位 deg

motors/VESC/vesc.hpp:245

motors::VESCMotor::amp_hours_charged

                    float motors::VESCMotor::amp_hours_charged
                  

累计回充安时

motors/VESC/vesc.hpp:226

motors::VESCMotor::current_in

                    float motors::VESCMotor::current_in
                  

输入电流,来自状态包 4,单位按 A 推测

motors/VESC/vesc.hpp:223

motors::VESCMotor::current_motor

                    float motors::VESCMotor::current_motor
                  

电机电流,来自状态包 1

motors/VESC/vesc.hpp:222

motors::VESCMotor::erpm2velocity_

                    float motors::VESCMotor::erpm2velocity_
                  

ERPM 到输出轴机械 rpm 的换算系数

motors/VESC/vesc.hpp:242

motors::VESCMotor::feedback_

                    struct motors::VESCMotor::@223340151256342242217002162075325224265227245202 motors::VESCMotor::feedback_
                  

上游未提供说明。

motors/VESC/vesc.hpp:237

motors::VESCMotor::feedback_count_

                    uint32_t motors::VESCMotor::feedback_count_
                  

反馈计数,用于上电自动清零

motors/VESC/vesc.hpp:215

motors::VESCMotor::inv_reduction_rate_

                    float motors::VESCMotor::inv_reduction_rate_
                  

外接减速比倒数

motors/VESC/vesc.hpp:243

motors::VESCMotor::kSetCurrentBrakeMax

                    float motors::VESCMotor::kSetCurrentBrakeMax
                  

上游未提供说明。

motors/VESC/vesc.hpp:207

motors::VESCMotor::kSetCurrentBrakeRelMax

                    float motors::VESCMotor::kSetCurrentBrakeRelMax
                  

上游未提供说明。

motors/VESC/vesc.hpp:211

motors::VESCMotor::kSetCurrentMax

                    float motors::VESCMotor::kSetCurrentMax
                  

上游未提供说明。

motors/VESC/vesc.hpp:206

motors::VESCMotor::kSetCurrentRelMax

                    float motors::VESCMotor::kSetCurrentRelMax
                  

上游未提供说明。

motors/VESC/vesc.hpp:210

motors::VESCMotor::kSetPositionMax

                    float motors::VESCMotor::kSetPositionMax
                  

上游未提供说明。

motors/VESC/vesc.hpp:209

motors::VESCMotor::mos_temperature

                    float motors::VESCMotor::mos_temperature
                  

MOSFET 温度,来自状态包 4,单位按 degC 推测

motors/VESC/vesc.hpp:231

motors::VESCMotor::motor_temperature

                    float motors::VESCMotor::motor_temperature
                  

电机温度,来自状态包 4,单位按 degC 推测

motors/VESC/vesc.hpp:230

motors::VESCMotor::pos

                    float motors::VESCMotor::pos
                  

单圈位置,当前项目按 0~360 deg 使用,来自状态包 4

motors/VESC/vesc.hpp:220

motors::VESCMotor::sign_

                    float motors::VESCMotor::sign_
                  

方向符号,正转为 1,反转为 -1

motors/VESC/vesc.hpp:241

motors::VESCMotor::tachometer_value

                    float motors::VESCMotor::tachometer_value
                  

原始转速计值,来自状态包 5,精确物理含义仍待确认

motors/VESC/vesc.hpp:234

motors::VESCMotor::velocity_

                    float motors::VESCMotor::velocity_
                  

输出轴角速度,当前实现单位 rpm

motors/VESC/vesc.hpp:246

motors::VESCMotor::watchdog_

                    service::Watchdog motors::VESCMotor::watchdog_
                  

上游未提供说明。

motors/VESC/vesc.hpp:216

motors::VESCMotor::watt_hours_charged

                    float motors::VESCMotor::watt_hours_charged
                  

累计回充瓦时

motors/VESC/vesc.hpp:228

宏定义

1

文件

2