跳转到内容

MotorDrivers::VESC API

文档稀疏
符号
70
已记录
42
类型
3
继承关系
1
源码分支
main

28 / 70 个公开 API 符号没有说明。

继承关系总览

继承图尚未加载。

全部继承关系

共 3 个类型

类型目录
结构体

motors::FeedbackMap

查看源码

上游未提供类型说明。

成员变量

2

motors

变量公开
        FixedPointerMap<size_t, VESCMotor, MOTORS_VESC_MAX_NUM> motors::FeedbackMap::motors
      

上游未提供说明。

motors/VESC/vesc.cpp:22
类

motors::VESCMotor

查看源码

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

继承关系

基类
  • IMotor公开

构造与析构

2

成员函数

14

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:198

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:188

clamp

函数私有静态
        float motors::VESCMotor::clamp (float value, float abs_max)
      

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

motors/VESC/vesc.hpp:260

decode

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

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

motors/VESC/vesc.hpp:252

defaultControlMode

函数公开const
        controllers::ControlMode motors::VESCMotor::defaultControlMode () const override
      

上游未提供说明。

motors/VESC/vesc.hpp:154

getAngle

函数公开const
        float motors::VESCMotor::getAngle () const override
      

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

motors/VESC/vesc.hpp:146

getVelocity

函数公开const
        float motors::VESCMotor::getVelocity () const override
      

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

motors/VESC/vesc.hpp:151

internalVelocitySupportLevel

函数公开const
        InternalVelocitySupportLevel motors::VESCMotor::internalVelocitySupportLevel () const override
      

上游未提供说明。

motors/VESC/vesc.hpp:164

isConnected

函数公开const
        bool motors::VESCMotor::isConnected () const override
      

上游未提供说明。

motors/VESC/vesc.hpp:159

sendSetCommand

函数私有const
        void motors::VESCMotor::sendSetCommand (SetCommand cmd, float value) const
      

发送设置指令 cmd 指令 value 值

motors/VESC/vesc.hpp:266

setCurrent

函数公开
        void motors::VESCMotor::setCurrent (float current) override
      

上游未提供说明。

motors/VESC/vesc.hpp:162

setInternalVelocity

函数公开
        void motors::VESCMotor::setInternalVelocity (float rpm, float maxi) override
      

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

motors/VESC/vesc.hpp:173

supportsCurrent

函数公开const
        bool motors::VESCMotor::supportsCurrent () const override
      

上游未提供说明。

motors/VESC/vesc.hpp:161

成员变量

31

current_in

变量公开
        float motors::VESCMotor::current_in
      

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

motors/VESC/vesc.hpp:222

current_motor

变量公开
        float motors::VESCMotor::current_motor
      

电机电流,来自状态包 1

motors/VESC/vesc.hpp:221

erpm2velocity_

变量私有
        float motors::VESCMotor::erpm2velocity_
      

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

motors/VESC/vesc.hpp:241

feedback_

变量私有
        struct motors::VESCMotor::@223340151256342242217002162075325224265227245202 motors::VESCMotor::feedback_
      

上游未提供说明。

motors/VESC/vesc.hpp:236

feedback_count_

变量私有
        uint32_t motors::VESCMotor::feedback_count_
      

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

motors/VESC/vesc.hpp:214

inv_reduction_rate_

变量私有
        float motors::VESCMotor::inv_reduction_rate_
      

外接减速比倒数

motors/VESC/vesc.hpp:242

kSetCurrentBrakeMax

变量私有静态
        float motors::VESCMotor::kSetCurrentBrakeMax
      

上游未提供说明。

motors/VESC/vesc.hpp:206

kSetCurrentBrakeRelMax

变量私有静态
        float motors::VESCMotor::kSetCurrentBrakeRelMax
      

上游未提供说明。

motors/VESC/vesc.hpp:210

kSetCurrentMax

变量私有静态
        float motors::VESCMotor::kSetCurrentMax
      

上游未提供说明。

motors/VESC/vesc.hpp:205

kSetCurrentRelMax

变量私有静态
        float motors::VESCMotor::kSetCurrentRelMax
      

上游未提供说明。

motors/VESC/vesc.hpp:209

kSetPositionMax

变量私有静态
        float motors::VESCMotor::kSetPositionMax
      

上游未提供说明。

motors/VESC/vesc.hpp:208

mos_temperature

变量公开
        float motors::VESCMotor::mos_temperature
      

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

motors/VESC/vesc.hpp:230

motor_temperature

变量公开
        float motors::VESCMotor::motor_temperature
      

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

motors/VESC/vesc.hpp:229

pos

变量公开
        float motors::VESCMotor::pos
      

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

motors/VESC/vesc.hpp:219

tachometer_value

变量公开
        float motors::VESCMotor::tachometer_value
      

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

motors/VESC/vesc.hpp:233

velocity_

变量私有
        float motors::VESCMotor::velocity_
      

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

motors/VESC/vesc.hpp:245

嵌套类型

3

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:42

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:60
结构体

motors::VESCMotor::Config

查看源码

VESC 配置结构体 对应 VESC_Config_t.

成员变量

6

auto_zero

变量公开
        bool motors::VESCMotor::Config::auto_zero
      

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

motors/VESC/vesc.hpp:135

electrodes

变量公开
        uint8_t motors::VESCMotor::Config::electrodes
      

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

motors/VESC/vesc.hpp:132

reduction_rate

变量公开
        float motors::VESCMotor::Config::reduction_rate
      

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

motors/VESC/vesc.hpp:133

其他公开符号

函数

5

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

变量

1

motors::map

变量静态
        std::array<FeedbackMap, CAN_NUM> motors::map
      

上游未提供说明。

motors/VESC/vesc.cpp:25

宏定义

1

文件

2