ODrive干货 #3 ODriveTool 指令大全

ODrive干货 #3 ODriveTool 0.5.1.post0 指令大全

版本说明

ODrivetool 版本: 0.5.1.post0(pip install odrive==0.5.1.post0)

ODrive 硬件版本: v3.6-56V

ODrive 硬件内部固件版本: fw-v0.5.1

指令前缀说明

  • [RO] 只读属性
    • 读:直接输入指令回车即可返回属性值
  • [RW] 可读可写属性
    • 读:直接输入指令回车即可返回当前属性值
    • 写:输入 指令 = [值] Enter 即可对属性进行赋值操作。如:odrv0.config.brake_resistance = 2 Enter
  • [OP] 执行函数
    • 输入指令和函数输入参数回车即可执行。如:odrv0.get_adc_voltage(2) Enter

文章目录

odrv0

[RO] odrv0.vbus_voltage

类型为 [float],单位为 [V],当前 DC 总线上的电压。

[RO] odrv0.ibus

类型为 [float],单位为 [A],当前 DC 总线上的电流。

当此值为正时表示 ODrive 正在消耗能量,此值为负时表示 ODrive 正在反向向电源回冲能量。

此值等于流过电机的电流加上流过制动电阻的电流,流过电机的电流是 ODrive 测量得到的,流过制动电阻的电流是 ODrive 基于制动电阻阻值(odrv0.config.brake_resistance)计算得到的。

[RW] odrv0.ibus_report_filter_k

类型为 [float],DC 总线上的电流(odrv0.ibus)滤波增益。

设置范围为 0~1,当设置为小于1时 odrv0.ibus 将更加平滑,越接近 0 得到的曲线越平滑,但是相应的滞后越严重,当设置为1时将不使用滤波。这个参数只影响 odrv0.ibus 的输出,对于 ODrive 内部电流计算没有任何影响。

[RO] odrv0.serial_number

类型为 [uint64_t],ODrive 硬件序列号。

[RO] odrv0.hw_version_major

类型为 [uint8_t],ODrive 硬件主版本号。

[RO] odrv0.hw_version_minor

类型为 [uint8_t],ODrive 硬件次版本号。

[RO] odrv0.hw_version_variant

类型为 [uint8_t],ODrive 硬件变种版本,用来细分硬件电压版本,如 56v 电压版本此值为 56,24v 电压版本此值为 24。

[RO] odrv0.fw_version_major

类型为 [uint8_t],固件主版本号。

[RO] odrv0.fw_version_minor

类型为 [uint8_t],固件次版本号。

[RO] odrv0.fw_version_revision

类型为 [uint8_t],固件修正版本号。

[RO] odrv0.fw_version_unreleased

类型为 [uint8_t],固件版本是否为官方发布,如果为官方发布版本此值为 0,否则为 1。

[RO] odrv0.brake_resistor_armed

类型为 [bool],用来表示当前制动电阻PWM控制信号是否使能。

[RO] odrv0.brake_resistor_saturated

类型为 [bool],用来表示当前制动电阻控制信号是否饱和,当占空比大于等于 %95 时即认为饱和。

[RO] odrv0.user_config_loaded

类型为 [bool],用来查看启动后配置是否被正确加载,如果配置加载正确此值为 True,否则为 False。

[RW] odrv0.test_property

类型为 [uint32_t],测试用,用来测试属性的读写是否正常。

[OP] odrv0.test_function(delta: int32_t)

测试用,用来测试函数执行是否正常,返回值为内部静态变量加上函数输入的 delta 值。

[OP] odrv0.get_adc_voltage(gpio: int)

获取GPIO端口采集到的电压,单位为[V],仅在 GPIO 端口 1、2、3、4 支持 ADC 输入。

[OP] odrv0.save_configuration()

将配置保存到内部 FLASH 内。

[OP] odrv0.erase_configuration()

擦除 FLASH 中的配置,下次重新启动后所有配置变为默认配置。

[OP] odrv0.reboot()

重启 ODrive 硬件。

[OP] odrv0.enter_dfu_mode()

使 ODrive 进入 DFU 模式。

odrv0.system_stats

[RO] odrv0.system_stats.uptime

类型为 [uint32_t],单位为 [ms],系统启动后运行时间。

[RO] odrv0.system_stats.min_heap_space

类型为 [uint32_t],单位为 [Bytes],获取未分配的内存堆历史最小值,用来调试堆栈分配。

[RO] odrv0.system_stats.min_stack_space_axis0

类型为 [uint32_t],单位为 [Bytes],获取 axis0 线程未分配的栈内存历史最小值,用来调试堆栈分配。

[RO] odrv0.system_stats.min_stack_space_axis1

类型为 [uint32_t],单位为 [Bytes],获取 axis1 线程未分配的栈内存历史最小值,用来调试堆栈分配。

[RO] odrv0.system_stats.min_stack_space_comms

类型为 [uint32_t],单位为 [Bytes],获取通讯线程未分配的栈内存历史最小值,用来调试堆栈分配。

[RO] odrv0.system_stats.min_stack_space_usb

类型为 [uint32_t],单位为 [Bytes],获取USB线程未分配的栈内存历史最小值,用来调试堆栈分配。

[RO] odrv0.system_stats.min_stack_space_uart

类型为 [uint32_t],单位为 [Bytes],获取UART线程未分配的栈内存历史最小值,用来调试堆栈分配。

[RO] odrv0.system_stats.min_stack_space_can

类型为 [uint32_t],单位为 [Bytes],获取CAN线程未分配的栈内存历史最小值,用来调试堆栈分配。

[RO] odrv0.system_stats.min_stack_space_usb_irq

类型为 [uint32_t],单位为 [Bytes],获取USB IRQ线程未分配的栈内存历史最小值,用来调试堆栈分配。

[RO] odrv0.system_stats.min_stack_space_startup

类型为 [uint32_t],单位为 [Bytes],获取startup线程未分配的栈内存历史最小值,用来调试堆栈分配。

[RO] odrv0.system_stats.stack_usage_axis0

类型为 [uint32_t],单位为 [Bytes],获取 axis0 线程的栈内存用量,用来调试堆栈分配。

[RO] odrv0.system_stats.stack_usage_axis1

类型为 [uint32_t],单位为 [Bytes],获取 axis1 线程的栈内存用量,用来调试堆栈分配。

[RO] odrv0.system_stats.stack_usage_comms

类型为 [uint32_t],单位为 [Bytes],获取通讯线程的栈内存用量,用来调试堆栈分配。

[RO] odrv0.system_stats.stack_usage_usb

类型为 [uint32_t],单位为 [Bytes],获取USB线程的栈内存用量,用来调试堆栈分配。

[RO] odrv0.system_stats.stack_usage_uart

类型为 [uint32_t],单位为 [Bytes],获取UART线程的栈内存用量,用来调试堆栈分配。

[RO] odrv0.system_stats.stack_usage_can

类型为 [uint32_t],单位为 [Bytes],获取CAN线程的栈内存用量,用来调试堆栈分配。

[RO] odrv0.system_stats.stack_usage_usb_irq

类型为 [uint32_t],单位为 [Bytes],获取USB IRQ线程的栈内存用量,用来调试堆栈分配。

[RO] odrv0.system_stats.stack_usage_startup

类型为 [uint32_t],单位为 [Bytes],获取startup线程的栈内存用量,用来调试堆栈分配。

odrv0.system_stats.usb

[RO] odrv0.system_stats.usb.rx_cnt

类型为 [uint32_t],usb 接收数据包计数。

[RO] odrv0.system_stats.usb.tx_cnt

类型为 [uint32_t],usb 发送数据包计数。

[RO] odrv0.system_stats.usb.tx_overrun_cnt

类型为 [uint32_t],usb 发送数据包过载计数。

odrv0.system_stats.i2c

[RO] odrv0.system_stats.i2c.addr

类型为 [uint8_t],i2c 地址。

[RO] odrv0.system_stats.i2c.addr_match_cnt

类型为 [uint32_t],i2c 地址匹配计数。

[RO] odrv0.system_stats.i2c.rx_cnt

类型为 [uint32_t],i2c 数据包接收计数。

[RO] odrv0.system_stats.i2c.error_cnt

类型为 [uint32_t],i2c 错误计数。

odrv0.can

[RW] odrv0.can.error

类型为 [enum],can 错误标志。

ERROR_NONE                       = 0x00000000,
ERROR_DUPLICATE_CAN_IDS          = 0x00000001,

odrv0.can.config

[RO] odrv0.can.config.baud_rate

类型为 [uint32_t],当前can波特率。

[RW] odrv0.can.config.protocol

类型为 [enum],can通讯所使用的协议。

PROTOCOL_SIMPLE = 0

[OP] odrv0.can.set_baud_rate(baudRate: uint32)

设置 can 通讯波特率。目前支持以下波特率:

  • 125000
  • 250000
  • 500000
  • 1000000

odrv0.config

[RW] odrv0.config.enable_uart

类型为 [bool],是否启用 uart 通讯。

注意: 更改后需要保存并重新启动 ODrive 才能生效

[RW] odrv0.config.uart_baudrate

类型为 [uint32_t],uart 通讯波特率。

[RW] odrv0.config.enable_i2c_instead_of_can

类型为 [bool],是否启用 i2c 通讯而不是 can 通讯,设置为 True 使用 i2c,False 使用 can。

注意: 更改后需要保存并重新启动 ODrive 才能生效

[RW] odrv0.config.enable_ascii_protocol_on_usb

类型为 [bool],是否启用 usb 支持 ascii 协议解析。

[RW] odrv0.config.max_regen_current

类型为 [float],单位为 [A],最大再生电流,此值应为正值,当反向电流高于此值时开始启动制动电阻进行反向电流的消耗。

注意: 此值必须大于等于 0,不能为负值,否则制动电阻将持续消耗能量,会烧坏制动电阻

[RW] odrv0.config.brake_resistance

类型为 [float],单位为 [ohm],制动电阻的阻值,如果不使用或不接制动电阻设置为 0 即可。

[RW] odrv0.config.dc_bus_undervoltage_trip_level

类型为 [float],单位为 [V],设置低电压报警阈值,当 DC 电压低于此值电机将停止并报错。

[RW] odrv0.config.dc_bus_overvoltage_trip_level

类型为 [float],单位为 [V],设置过压报警阈值,当 DC 电压高于此值电机将停止并报错。

[RW] odrv0.config.enable_dc_bus_overvoltage_ramp

类型为 [bool],是否启用过压爬升特性。如果启用此特性,ODrive 将会把更多的能量消耗在制动电阻上,来降低母线上的电压。当母线电压大于 odrv0.config.dc_bus_overvoltage_ramp_start 时开始按比例增加制动电阻的占空比,当母线电压大于等于 odrv0.config.dc_bus_overvoltage_ramp_end 时制动电阻上的占空比将增加 100%。

​ * vbus_voltage == dc_bus_overvoltage_ramp_start => brake_duty_cycle += 0%

​ * vbus_voltage == dc_bus_overvoltage_ramp_end => brake_duty_cycle += 100%

注意: 当此特性启用时,电机不运行时依然会起作用

注意: 当不使用制动电阻时,此特性不起作用

[RW] odrv0.config.dc_bus_overvoltage_ramp_start

类型为 [float],单位为 [V],设置过压爬升特性的开始阈值。

注意: 此值应高于母线供电电压,如果低于供电电压值,制动电阻将持续消耗能量,会烧坏制动电阻

[RW] odrv0.config.dc_bus_overvoltage_ramp_end

类型为 [float],单位为 [V],设置过压爬升特性的结束阈值。

注意: 此值应高于 odrv0.config.dc_bus_overvoltage_ramp_start

[RW] odrv0.config.dc_max_positive_current

类型为 [float],单位为 [A],供电设备能够输出的最大电流。

[RW] odrv0.config.dc_max_negative_current

类型为 [float],单位为 [A],供电设备能够反向吸收的最大电流。此值应当为负值,当 odrv0.ibus 小于此值时 ODrive 将报错,当设为负无穷大时将不进行检查报错。

odrv0.config.gpio1_pwm_mapping

[RW] odrv0.config.gpio1_pwm_mapping.endpoint

设置 GPIO 1 作为 PWM 输入时和被控制量的映射,如果希望 PWM 输入控制 axis0 电机的转速odrv0.config.gpio1_pwm_mapping.endpoint = odrv0.axis0.controller._remote_attributes[‘input_vel’]。

如果希望解除映射可以输入 odrv0.config.gpio1_pwm_mapping.endpoint = None。

[RW] odrv0.config.gpio1_pwm_mapping.min

映射被控制量的最小值,当 PWM duty 为 1 ms 时,被控量为此值。

[RW] odrv0.config.gpio1_pwm_mapping.max

映射被控制量的最大值,当 PWM duty 为 2 ms 时,被控量为此值。

odrv0.config.gpio2_pwm_mapping

[RW] odrv0.config.gpio2_pwm_mapping.endpoint

设置 GPIO 2 作为 PWM 输入时和被控制量的映射,如果希望 PWM 输入控制 axis0 电机的转速 odrv0.config.gpio2_pwm_mapping.endpoint = odrv0.axis0.controller._remote_attributes[‘input_vel’]。

如果希望解除映射可以输入 odrv0.config.gpio2_pwm_mapping.endpoint = None。

[RW] odrv0.config.gpio2_pwm_mapping.min

映射被控制量的最小值,当 PWM duty 为 1 ms 时,被控量为此值。

[RW] odrv0.config.gpio2_pwm_mapping.max

映射被控制量的最大值,当 PWM duty 为 2 ms 时,被控量为此值。

odrv0.config.gpio3_pwm_mapping

[RW] odrv0.config.gpio3_pwm_mapping.endpoint

设置 GPIO 3 作为 PWM 输入时和被控制量的映射,如果希望 PWM 输入控制 axis0 电机的转速输odrv0.config.gpio3_pwm_mapping.endpoint = odrv0.axis0.controller._remote_attributes[‘input_vel’]。

如果希望解除映射可以输入 odrv0.config.gpio3_pwm_mapping.endpoint = None。

[RW] odrv0.config.gpio3_pwm_mapping.min

映射被控制量的最小值,当 PWM duty 为 1 ms 时,被控量为此值。

[RW] odrv0.config.gpio3_pwm_mapping.max

映射被控制量的最大值,当 PWM duty 为 2 ms 时,被控量为此值。

odrv0.config.gpio4_pwm_mapping

[RW] odrv0.config.gpio4_pwm_mapping.endpoint

设置 GPIO 4 作为 PWM 输入时和被控制量的映射,如果希望 PWM 输入控制 axis0 电机的转速odrv0.config.gpio4_pwm_mapping.endpoint = odrv0.axis0.controller._remote_attributes[‘input_vel’]。

如果希望解除映射可以输入 odrv0.config.gpio4_pwm_mapping.endpoint = None。

[RW] odrv0.config.gpio4_pwm_mapping.min

映射被控制量的最小值,当 PWM duty 为 1 ms 时,被控量为此值。

[RW] odrv0.config.gpio4_pwm_mapping.max

映射被控制量的最大值,当 PWM duty 为 2 ms 时,被控量为此值。

odrv0.config.gpio3_analog_mapping

[RW] odrv0.config.gpio3_analog_mapping.endpoint

设置 GPIO 3 作为 模拟输入时和被控制量的映射,如果希望模拟输入控制 axis0 电机的转速 odrv0.config.gpio3_analog_mapping.endpoint = odrv0.axis0.controller._remote_attributes[‘input_vel’]。

如果希望解除映射可以输入 odrv0.config.gpio3_analog_mapping.endpoint = None。

[RW] odrv0.config.gpio3_analog_mapping.min

映射被控制量的最小值,当输入电压为 0 v 时,被控量为此值。

[RW] odrv0.config.gpio3_analog_mapping.max

映射被控制量的最大值,当输入电压为 3.3 v 时,被控量为此值。

odrv0.config.gpio4_analog_mapping

[RW] odrv0.config.gpio4_analog_mapping.endpoint

设置 GPIO 4 作为 模拟输入时和被控制量的映射,如果希望模拟输入控制 axis0 电机的转速。odrv0.config.gpio4_analog_mapping.endpoint = odrv0.axis0.controller._remote_attributes[‘input_vel’]。

如果希望解除映射可以输入 odrv0.config.gpio4_analog_mapping.endpoint = None。

[RW] odrv0.config.gpio4_analog_mapping.min

映射被控制量的最小值,当输入电压为 0 v 时,被控量为此值。

[RW] odrv0.config.gpio4_analog_mapping.max

映射被控制量的最大值,当输入电压为 3.3 v 时,被控量为此值。

odrv0.axis0

[RW] odrv0.axis0.error

类型为 [enum],axis0 错误代码。

ERROR_NONE                       = 0x00000000,
ERROR_INVALID_STATE              = 0x00000001,
ERROR_DC_BUS_UNDER_VOLTAGE       = 0x00000002,
ERROR_DC_BUS_OVER_VOLTAGE        = 0x00000004,
ERROR_CURRENT_MEASUREMENT_TIMEOUT = 0x00000008,
ERROR_BRAKE_RESISTOR_DISARMED    = 0x00000010,
ERROR_MOTOR_DISARMED             = 0x00000020,
ERROR_MOTOR_FAILED               = 0x00000040,
ERROR_SENSORLESS_ESTIMATOR_FAILED = 0x00000080,
ERROR_ENCODER_FAILED             = 0x00000100,
ERROR_CONTROLLER_FAILED          = 0x00000200,
ERROR_POS_CTRL_DURING_SENSORLESS = 0x00000400,
ERROR_WATCHDOG_TIMER_EXPIRED     = 0x00000800,
ERROR_MIN_ENDSTOP_PRESSED        = 0x00001000,
ERROR_MAX_ENDSTOP_PRESSED        = 0x00002000,
ERROR_ESTOP_REQUESTED            = 0x00004000,
ERROR_HOMING_WITHOUT_ENDSTOP     = 0x00020000,
ERROR_OVER_TEMP                  = 0x00040000,

[RO] odrv0.axis0.step_dir_active

类型为 [bool],step/dir 是否使能。

[RO] odrv0.axis0.current_state

类型为 [enum],axis0 当前状态机。

AXIS_STATE_UNDEFINED             = 0,
AXIS_STATE_IDLE                  = 1,
AXIS_STATE_STARTUP_SEQUENCE      = 2,
AXIS_STATE_FULL_CALIBRATION_SEQUENCE = 3,
AXIS_STATE_MOTOR_CALIBRATION     = 4,
AXIS_STATE_SENSORLESS_CONTROL    = 5,
AXIS_STATE_ENCODER_INDEX_SEARCH  = 6,
AXIS_STATE_ENCODER_OFFSET_CALIBRATION = 7,
AXIS_STATE_CLOSED_LOOP_CONTROL   = 8,
AXIS_STATE_LOCKIN_SPIN           = 9,
AXIS_STATE_ENCODER_DIR_FIND      = 10,
AXIS_STATE_HOMING                = 11,

[RW] odrv0.axis0.requested_state

类型为 [enum],命令 axis0 进入某个状态。

AXIS_STATE_UNDEFINED             = 0,
AXIS_STATE_IDLE                  = 1,
AXIS_STATE_STARTUP_SEQUENCE      = 2,
AXIS_STATE_FULL_CALIBRATION_SEQUENCE = 3,
AXIS_STATE_MOTOR_CALIBRATION     = 4,
AXIS_STATE_SENSORLESS_CONTROL    = 5,
AXIS_STATE_ENCODER_INDEX_SEARCH  = 6,
AXIS_STATE_ENCODER_OFFSET_CALIBRATION = 7,
AXIS_STATE_CLOSED_LOOP_CONTROL   = 8,
AXIS_STATE_LOCKIN_SPIN           = 9,
AXIS_STATE_ENCODER_DIR_FIND      = 10,
AXIS_STATE_HOMING                = 11,

[RO] odrv0.axis0.loop_counter

类型为 [uint32_t],axis0 内部循环计数。

[RO] odrv0.axis0.lockin_state

类型为 [enum],电机锁定运行状态。

LOCKIN_STATE_INACTIVE            = 0,
LOCKIN_STATE_RAMP                = 1,
LOCKIN_STATE_ACCELERATE          = 2,
LOCKIN_STATE_CONST_VEL           = 3,

[RO] odrv0.axis0.is_homed

类型为 [bool],是否已找回零点。

[OP] odrv0.axis0.watchdog_feed()

axis0 看门狗喂狗。

[OP] odrv0.axis0.clear_errors()

清除 axis0 上的错误。

odrv0.axis0.config

[RW] odrv0.axis0.config.startup_motor_calibration

类型为 [bool],ODrive上电后是否自动进行电机校准。

[RW] odrv0.axis0.config.startup_encoder_index_search

类型为 [bool],ODrive上电后是否自动进行编码器索引搜索,只有在启用编码器索引信号时才生效。

[RW] odrv0.axis0.config.startup_encoder_offset_calibration

类型为 [bool],ODrive上电后是否自动进行编码器偏移校准。

[RW] odrv0.axis0.config.startup_closed_loop_control

类型为 [bool],ODrive上电后是否自动进入闭环控制。

[RW] odrv0.axis0.config.startup_sensorless_control

类型为 [bool],ODrive上电后是否自动进入无感控制模式。

[RW] odrv0.axis0.config.startup_homing

类型为 [bool],ODrive上电后是否自动进行找零点。

[RW] odrv0.axis0.config.enable_step_dir

类型为 [bool],是否启用 step/dir 输入控制。

注意:当 odrv.config.enable_uart 为 True 时 M0 电机无法使用 step/dir 控制

[RW] odrv0.axis0.config.step_dir_always_on

类型为 [bool],step/dir 输入控制在电机处于非闭环状态下是否依然有效 。

[RW] odrv0.axis0.config.turns_per_step

类型为 [float],step/dir 每步对应电机转动圈数。

[RW] odrv0.axis0.config.watchdog_timeout

类型为 [float],单位为 [s],axis0 内部看门狗超时时间设置。

[RW] odrv0.axis0.config.enable_watchdog

类型为 [bool],是否启用 axis0 内部看门狗。

[RW] odrv0.axis0.config.step_gpio_pin

类型为 [uint16_t],axis0 step 对应的 GPIO。

[RW] odrv0.axis0.config.dir_gpio_pin

类型为 [uint16_t],axis0 dir 对应的 GPIO。

[RW] odrv0.axis0.config.can_node_id

类型为 [uint32_t],axis0 的 can 通讯端点 ID。

[RW] odrv0.axis0.config.can_node_id_extended

类型为 [bool],axis0 的 can 通讯是否为扩展帧。

[RW] odrv0.axis0.config.can_heartbeat_rate_ms

类型为 [uint32_t],单位为 [ms],axis0 的 can 通讯发送心跳时间间隔。

odrv0.axis0.config.calibration_lockin
[RW] odrv0.axis0.config.calibration_lockin.current

类型为 [float],单位为 [A],电机开环旋转校准编码器时的电机电流。

[RW] odrv0.axis0.config.calibration_lockin.ramp_time

类型为 [float],单位为 [s],电机开环旋转校准编码器时电流爬升到设置的电机电流所需的时间。

[RW] odrv0.axis0.config.calibration_lockin.ramp_distance

类型为 [float],单位为 [rad],电机开环旋转校准编码器时转速爬升的距离。

[RW] odrv0.axis0.config.calibration_lockin.accel

类型为 [float],单位为 [rad/s^2],电机开环旋转校准编码器时转速爬升的加速度。

[RW] odrv0.axis0.config.calibration_lockin.vel

类型为 [float],单位为 [rad/s],电机开环旋转校准编码器时设定的旋转速度。

odrv0.axis0.config.sensorless_ramp
[RW] odrv0.axis0.config.sensorless_ramp.current

类型为 [float],单位为 [A],电机无感模式开环启动的电机电流。

[RW] odrv0.axis0.config.sensorless_ramp.ramp_time

类型为 [float],单位为 [s],电机无感模式开环启动的电流爬升时间。

[RW] odrv0.axis0.config.sensorless_ramp.ramp_distance

类型为 [float],单位为 [rad],电机无感模式开环启动的爬升距离。

[RW] odrv0.axis0.config.sensorless_ramp.accel

类型为 [float],单位为 [rad/s^2],电机无感模式开环启动的加速度。

[RW] odrv0.axis0.config.sensorless_ramp.vel

类型为 [float],单位为 [rad/s],电机无感模式开环启动的目标转速。

[RW] odrv0.axis0.config.sensorless_ramp.finish_distance

类型为 [float],单位为 [rad],电机无感模式开环启动的运行距离。

[RW] odrv0.axis0.config.sensorless_ramp.finish_on_vel

类型为 [bool],是否将达到目标转速作为开环启动结束标志。

[RW] odrv0.axis0.config.sensorless_ramp.finish_on_distance

类型为 [bool],是否将达到目标距离作为开环启动结束标志。

[RW] odrv0.axis0.config.sensorless_ramp.finish_on_enc_idx

类型为 [bool],是否将检测到编码器索引信号作为开环启动结束标志。

odrv0.axis0.config.general_lockin
[RW] odrv0.axis0.config.general_lockin.current

类型为 [float],单位为 [A],电机开环运行模式的电机电流。

[RW] odrv0.axis0.config.general_lockin.ramp_time

类型为 [float],单位为 [s],电机开环运行模式的电流爬升时间。

[RW] odrv0.axis0.config.general_lockin.ramp_distance

类型为 [float],单位为 [rad],电机开环运行模式的爬升距离。

[RW] odrv0.axis0.config.general_lockin.accel

类型为 [float],单位为 [rad/s^2],电机开环运行模式的加速度。

[RW] odrv0.axis0.config.general_lockin.vel

类型为 [float],单位为 [rad/s],电机开环运行模式的目标转速。

[RW] odrv0.axis0.config.general_lockin.finish_distance

类型为 [float],单位为 [rad],电机开环运行模式的运行距离。

[RW] odrv0.axis0.config.general_lockin.finish_on_vel

类型为 [bool],是否将达到目标转速作为开环运行的结束标志。

[RW] odrv0.axis0.config.general_lockin.finish_on_distance

类型为 [bool],是否将达到目标距离作为开环运行的结束标志。

[RW] odrv0.axis0.config.general_lockin.finish_on_enc_idx

类型为 [bool],是否将检测到编码器索引信号作为开环运行的结束标志。

odrv0.axis0.fet_thermistor

[RW] odrv0.axis0.fet_thermistor.error

类型为 [enum],axis0 MOSFET 温度错误标志。

ERROR_NONE                       = 0x00000000,
ERROR_OVER_TEMP                  = 0x00000001,
[RO] odrv0.axis0.fet_thermistor.temperature

类型为 [float],单位为 [℃],当前测量得到的 axis0 MOSFET 温度。

odrv0.axis0.fet_thermistor.config
[RW] odrv0.axis0.fet_thermistor.config.temp_limit_lower

类型为 [float],单位为 [℃],当 axis0 MOSFET 温度高于此值时 ODrive 开始减小电流输出。

[RW] odrv0.axis0.fet_thermistor.config.temp_limit_upper

类型为 [float],单位为 [℃],当 axis0 MOSFET 温度高于此值时 ODrive 将停止电流输出并报出电机温度过高错误。

[RW] odrv0.axis0.fet_thermistor.config.enabled

类型为 [bool],是否启用 axis0 MOSFET 温度测量。

odrv0.axis0.motor_thermistor

[RW] odrv0.axis0.motor_thermistor.error

类型为 [enum],电机温度错误标志。

ERROR_NONE                       = 0x00000000,
ERROR_OVER_TEMP                  = 0x00000001,
[RO] odrv0.axis0.motor_thermistor.temperature

类型为 [float],单位为 [℃],当前测量得到的电机温度。

odrv0.axis0.motor_thermistor.config
[RW] odrv0.axis0.motor_thermistor.config.gpio_pin

类型为 [uint32_t],测量电机温度所使用的 GPIO。

[RW] odrv0.axis0.motor_thermistor.config.poly_coefficient_0

类型为 [float],测量电机温度所使用的 PTC 温度系数 0。

[RW] odrv0.axis0.motor_thermistor.config.poly_coefficient_1

类型为 [float],测量电机温度所使用的 PTC 温度系数 1。

[RW] odrv0.axis0.motor_thermistor.config.poly_coefficient_2

类型为 [float],测量电机温度所使用的 PTC 温度系数 2。

[RW] odrv0.axis0.motor_thermistor.config.poly_coefficient_3

类型为 [float],测量电机温度所使用的 PTC 温度系数 3。

[RW] odrv0.axis0.motor_thermistor.config.temp_limit_lower

类型为 [float],单位为 [℃],当电机温度高于此值时 ODrive 开始减小电流输出。

[RW] odrv0.axis0.motor_thermistor.config.temp_limit_upper

类型为 [float],单位为 [℃],当电机温度高于此值时 ODrive 将停止电流输出并报出电机温度过高错误。

[RW] odrv0.axis0.motor_thermistor.config.enabled

类型为 [bool],是否启用电机温度测量。

odrv0.axis0.motor

[RW] odrv0.axis0.motor.error

类型为 [enum],电机错误代码。

ERROR_NONE                       = 0x00000000,
ERROR_PHASE_RESISTANCE_OUT_OF_RANGE = 0x00000001,
ERROR_PHASE_INDUCTANCE_OUT_OF_RANGE = 0x00000002,
ERROR_ADC_FAILED                 = 0x00000004,
ERROR_DRV_FAULT                  = 0x00000008,
ERROR_CONTROL_DEADLINE_MISSED    = 0x00000010,
ERROR_NOT_IMPLEMENTED_MOTOR_TYPE = 0x00000020,
ERROR_BRAKE_CURRENT_OUT_OF_RANGE = 0x00000040,
ERROR_MODULATION_MAGNITUDE       = 0x00000080,
ERROR_BRAKE_DEADTIME_VIOLATION   = 0x00000100,
ERROR_UNEXPECTED_TIMER_CALLBACK  = 0x00000200,
ERROR_CURRENT_SENSE_SATURATION   = 0x00000400,
ERROR_CURRENT_LIMIT_VIOLATION    = 0x00001000,
ERROR_BRAKE_DUTY_CYCLE_NAN       = 0x00002000,
ERROR_DC_BUS_OVER_REGEN_CURRENT  = 0x00004000,
ERROR_DC_BUS_OVER_CURRENT        = 0x00008000,
[RO] odrv0.axis0.motor.armed_state

类型为 [enum],PWM输出状态。

ARMED_STATE_DISARMED             = 0,
ARMED_STATE_WAITING_FOR_TIMINGS  = 1,
ARMED_STATE_WAITING_FOR_UPDATE   = 2,
ARMED_STATE_ARMED                = 3,
[RO] odrv0.axis0.motor.is_calibrated

类型为 [bool],电机是否已校准。

[RO] odrv0.axis0.motor.current_meas_phB

类型为 [float],单位为 [A],电机 B 相测量的电流。

[RO] odrv0.axis0.motor.current_meas_phC

类型为 [float],单位为 [A],电机 C 相测量的电流。

[RW] odrv0.axis0.motor.DC_calib_phB

类型为 [float],单位为 [A],电机 B 相电流偏移量。

[RW] odrv0.axis0.motor.DC_calib_phC

类型为 [float],单位为 [A],电机 C 相电流偏移量。

[RW] odrv0.axis0.motor.phase_current_rev_gain

类型为 [float],DRV8301 电流采样运放放大倍数的倒数。

[RO] odrv0.axis0.motor.effective_current_lim

类型为 [flaot],单位为 [A],由于温度升高或设定的最大电流而计算得到的当前电流限制值。

odrv0.axis0.motor.current_control
[RW] odrv0.axis0.motor.current_control.p_gain

类型为 [float],电流PI环的 P 值,此值根据电机相电感,相电阻自动计算生成,也可手动在此处调整,但是无法保存到FLASH,重启后手动设置的值将会消失。

[RW] odrv0.axis0.motor.current_control.i_gain

类型为 [float],电流PI环的 I 值,此值根据电机相电感,相电阻自动计算生成,也可手动在此处调整,但是无法保存到FLASH,重启后手动设置的值将会消失。

[RW] odrv0.axis0.motor.current_control.v_current_control_integral_d

类型为 [float],直轴电流环PI控制中的积分项,一般用来查看调试使用。

[RW] odrv0.axis0.motor.current_control.v_current_control_integral_q

类型为 [float],交轴电流环PI控制中的积分项,一般用来查看调试使用。

[RW] odrv0.axis0.motor.current_control.Ibus

类型为 [float],单位为 [A],axis0 电机电流,此值为 Iq + Id。

[RW] odrv0.axis0.motor.current_control.final_v_alpha

类型为 [float],单位为 [V],最终输出到 SVM 的 Valpha。

[RW] odrv0.axis0.motor.current_control.final_v_beta

类型为 [float],单位为 [V],最终输出到 SVM 的 Vbeta。

[RW] odrv0.axis0.motor.current_control.Id_setpoint

类型为 [float],单位为 [A],电流环控制输入的目标直轴电流值。

[RW] odrv0.axis0.motor.current_control.Iq_setpoint

类型为 [float],单位为 [A],电流环控制输入的目标交轴电流值。

[RW] odrv0.axis0.motor.current_control.Iq_measured

类型为 [float],单位为 [A],通过电流采样获取的交轴电流值。

[RW] odrv0.axis0.motor.current_control.Id_measured

类型为 [float],单位为 [A],通过电流采样获取的直轴电流值。

[RW] odrv0.axis0.motor.current_control.I_measured_report_filter_k

类型为 [float],电流采样后对直轴交轴的电流低通滤波系数,默认为 1 不启用低通滤波,设置为 0 将完全被过滤,此值无法保存到 FLASH,重启后恢复为默认值 1。

[RO] odrv0.axis0.motor.current_control.max_allowed_current

类型为 [float],单位为 [A],根据设定的最大电流值和当前温度自动计算得出的当前最大允许电流。

[RO] odrv0.axis0.motor.current_control.overcurrent_trip_level

类型为 [float],单位为 [A],根据实时计算的最大允许电流和设定的允许波动范围计算出的过流阈值,超过此值将停止电机并报错 ERROR_CURRENT_SENSE_SATURATION。

[RW] odrv0.axis0.motor.current_control.acim_rotor_flux

类型为 [float],单位为 [A],交流感应电机转子磁通强度,用电流来表示。

[RO] odrv0.axis0.motor.current_control.async_phase_vel

类型为 [float],单位为 [rad/s],交流感应电机相速度。

[RW] odrv0.axis0.motor.current_control.async_phase_offset

类型为 [float],单位为 [rad],交流感应电机相移。

odrv0.axis0.motor.gate_driver
[RO] odrv0.axis0.motor.gate_driver.drv_fault

类型为 [enum],axis0 DRV8301 芯片内部错误代码。

DRV8301_FaultType_NoFault  = (0 << 0),  //!< No fault
DRV8301_FaultType_FETLC_OC = (1 << 0),  //!< FET Low side, Phase C Over Current fault
DRV8301_FaultType_FETHC_OC = (1 << 1),  //!< FET High side, Phase C Over Current fault
DRV8301_FaultType_FETLB_OC = (1 << 2),  //!< FET Low side, Phase B Over Current fault
DRV8301_FaultType_FETHB_OC = (1 << 3),  //!< FET High side, Phase B Over Current fault
DRV8301_FaultType_FETLA_OC = (1 << 4),  //!< FET Low side, Phase A Over Current fault
DRV8301_FaultType_FETHA_OC = (1 << 5),  //!< FET High side, Phase A Over Current fault
DRV8301_FaultType_OTW      = (1 << 6),  //!< Over Temperature Warning fault
DRV8301_FaultType_OTSD     = (1 << 7),  //!< Over Temperature Shut Down fault
DRV8301_FaultType_PVDD_UV  = (1 << 8),  //!< Power supply Vdd Under Voltage fault
DRV8301_FaultType_GVDD_UV  = (1 << 9),  //!< DRV8301 Vdd Under Voltage fault
DRV8301_FaultType_GVDD_OV  = (1 << 10)  //!< DRV8301 Vdd Over Voltage fault
odrv0.axis0.motor.config
[RW] odrv0.axis0.motor.config.pre_calibrated

类型为 [bool],电机是否已经校准,设置为 True 时认为以下电机参数有效可用,如果不想每次重启重新校准电机参数可以设置为 True

[RW] odrv0.axis0.motor.config.pole_pairs

类型为 [int32_t],电机极对数,可以查看电机数据手册或者数一下永磁体个数来获取极对数,极对数 = 电机永磁体个数 / 2

[RW] odrv0.axis0.motor.config.calibration_current

类型为 [float],电机校准时的电流大小,单位为 [A]

[RW] odrv0.axis0.motor.config.resistance_calib_max_voltage

类型为 [float],电机校准自动检测相电阻时最大电压,单位为 [v]

[RW] odrv0.axis0.motor.config.phase_inductance

类型为 [float],电机相电感,单位为 [H],此值会在执行电机校准后自动更新,如果您有详细的电机参数可以手动设置此值

[RW] odrv0.axis0.motor.config.phase_resistance

类型为 [float],电机相电阻,单位为 [Ohm],此值会在执行电机校准后自动更新,如果您有详细的电机参数可以手动设置此值

[RW] odrv0.axis0.motor.config.direction

类型为 [int32_t],电机运行方向,0 无效,1 和编码器方向一致 -1 和编码器方向相反,无感模式下需要手动设置方向,有感模式下会在编码器校准中自动设置

[RW] odrv0.axis0.motor.config.motor_type

类型为 [enum],电机类型

MOTOR_TYPE_HIGH_CURRENT          = 0,
MOTOR_TYPE_GIMBAL                = 2,
MOTOR_TYPE_ACIM                  = 3,
[RW] odrv0.axis0.motor.config.current_lim

类型为 [float],电机最大运行电流,单位为 [A]

[RW] odrv0.axis0.motor.config.current_lim_margin

类型为 [float],超过电机最大运行电流的容忍度,如:此值设置为 3 表示当电机电流超过限制电流 3A 时停止电机并报错

[RW] odrv0.axis0.motor.config.torque_lim

类型为 [float],单位为 [Nm],电机输出最大扭矩

[RW] odrv0.axis0.motor.config.requested_current_range

类型为 [float],单位为 [A],电机运行的电流范围,根据此值来自动调整电流采样运放的增益,设置后需要保存配置并重启才能生效

[RW] odrv0.axis0.motor.config.current_control_bandwidth

类型为 [float],电流控制环的控制带宽,用来自动计算电流环 PI 参数,加减速比较缓慢的电机此参数应该越低

[RW] odrv0.axis0.motor.config.acim_slip_velocity

类型为 [float],单位为 [rad/s],交流感应电机的 slip velocity。

[RW] odrv0.axis0.motor.config.acim_gain_min_flux

类型为 [float],单位为 [A],acim_gain_min_flux。

[RW] odrv0.axis0.motor.config.acim_autoflux_min_Id

类型为 [float],单位为 [A],acim_autoflux_min_Id。

[RW] odrv0.axis0.motor.config.acim_autoflux_enable

类型为 [bool],是否启用交流感应电机的自动弱磁功能。

[RW] odrv0.axis0.motor.config.acim_autoflux_attack_gain

类型为 [float],acim_autoflux_attack_gain。

[RW] odrv0.axis0.motor.config.acim_autoflux_decay_gain

类型为 [float],acim_autoflux_decay_gain。

odrv0.axis0.controller

[RW] odrv0.axis0.controller.error

类型为 [enum],axis0 控制器错误代码

ERROR_NONE                       = 0x00000000,
ERROR_OVERSPEED                  = 0x00000001,
ERROR_INVALID_INPUT_MODE         = 0x00000002,
ERROR_UNSTABLE_GAIN              = 0x00000004,
ERROR_INVALID_MIRROR_AXIS        = 0x00000008,
ERROR_INVALID_LOAD_ENCODER       = 0x00000010,
ERROR_INVALID_ESTIMATE           = 0x00000020,
[RW] odrv0.axis0.controller.input_pos

类型为 [float],单位为 [turn],输入的电机目标位置,如:设置为 0.1 即表示电机轴转动到 36°(360° * 0.1 = 36°)。

[RW] odrv0.axis0.controller.input_vel

类型为 [float],单位为 [turn/s],输入的电机目标转速,如:设置为 1 即表示电机将以 1转/秒的速度旋转。

[RW] odrv0.axis0.controller.input_torque

类型为 [float],单位为 [Nm],输入的电机输出的力矩大小。

[RO] odrv0.axis0.controller.pos_setpoint

类型为 [float],单位为 [turn],设定的电机目标位置。

[RO] odrv0.axis0.controller.vel_setpoint

类型为 [float],单位为 [turn/s],设定的电机目标转速。

[RO] odrv0.axis0.controller.torque_setpoint

类型为 [float],单位为 [Nm],设定的电机输出的力矩大小。

[RO] odrv0.axis0.controller.trajectory_done

类型为 [bool],轨迹模式下是否已运行到设定位置。

[RW] odrv0.axis0.controller.vel_integrator_torque

类型为 [float],单位为 [Nm],维持当前角度或位置需要输出的扭矩大小。

[RW] odrv0.axis0.controller.anticogging_valid

类型为 [bool],anticogging 数据是否有效。

[OP] odrv0.axis0.controller.move_incremental(displacement: float, from_input_pos: bool)

命令电机转动一定角度,displacement 想要转动多少转,from_input_pos 是否以 input_pos 作为参考,如果设置为 False 则相对于 pos_setpoint。

[OP] odrv0.axis0.controller.start_anticogging_calibration()

执行 anticogging 校准。

odrv0.axis0.controller.config
[RW] odrv0.axis0.controller.config.gain_scheduling_width

类型为 [float],速度环增益规划功能启用的位置误差范围。

[RW] odrv0.axis0.controller.config.enable_gain_scheduling

类型为 [bool],是否启用增益规划功能,增益规划功能有利于增加在目标位置的鲁棒性。原理为当位置误差小于 odrv0.axis0.controller.config.gain_scheduling_width 时按照比例调整速度环增益大小,来增强非线性区域控制的鲁棒性。

[RW] odrv0.axis0.controller.config.enable_vel_limit

类型为 [bool],是否启用转速限制功能。

[RW] odrv0.axis0.controller.config.enable_current_mode_vel_limit

类型为 [bool],是否启用在电流控制模式下转速限制功能。

[RW] odrv0.axis0.controller.config.enable_overspeed_error

类型为 [bool],当转速超过设置限制值时是否停止电机并报错。

[RW] odrv0.axis0.controller.config.control_mode

类型为 [enum],控制模式。

CONTROL_MODE_VOLTAGE_CONTROL     = 0,
CONTROL_MODE_TORQUE_CONTROL      = 1,
CONTROL_MODE_VELOCITY_CONTROL    = 2,
CONTROL_MODE_POSITION_CONTROL    = 3,
[RW] odrv0.axis0.controller.config.input_mode

类型为 [enum],控制信号输入模式。

INPUT_MODE_INACTIVE              = 0,
INPUT_MODE_PASSTHROUGH           = 1,
INPUT_MODE_VEL_RAMP              = 2,
INPUT_MODE_POS_FILTER            = 3,
INPUT_MODE_MIX_CHANNELS          = 4,
INPUT_MODE_TRAP_TRAJ             = 5,
INPUT_MODE_TORQUE_RAMP           = 6,
INPUT_MODE_MIRROR                = 7,
[RW] odrv0.axis0.controller.config.pos_gain

类型为 [float],单位为 [(turn/s) / turn],位置环增益。

[RW] odrv0.axis0.controller.config.vel_gain

类型为 [float],单位为 [Nm/(turn/s)],速度环增益。

[RW] odrv0.axis0.controller.config.vel_integrator_gain

类型为 [float],单位为 [Nm/(turn/s * s)],速度环积分增益。

[RW] odrv0.axis0.controller.config.vel_limit

类型为 [float],单位为 [turn/s] ,设定的最大转速限制。

[RW] odrv0.axis0.controller.config.vel_limit_tolerance

类型为 [float],最大转速波动容忍度,如:此值设定为 1.2 时表示当转速超过设定的最大转速值的 1.2 倍才会触发 ERROR_OVERSPEED。

[RW] odrv0.axis0.controller.config.vel_ramp_rate

类型为 [float],单位为 [(turn/s) / s] ,转速爬升速度。用于当控制信号输入模式设置为 INPUT_MODE_VEL_RAMP 时。

[RW] odrv0.axis0.controller.config.torque_ramp_rate

类型为 [float],单位为 [Nm/s] ,转矩爬升速度。用于当控制信号输入模式设置为 INPUT_MODE_TORQUE_RAMP 时。

[RW] odrv0.axis0.controller.config.circular_setpoints

类型为 [bool],是否启用环形控制模式,此模式对于连续的增量位置移动很有用。 例如,机器人会无限期滚动,或者挤出机马达或传送带会以受控的增量无限期地移动。在常规位置模式下,input_pos 将增长到非常大的值,并且由于浮点舍入而失去精度。

[RW] odrv0.axis0.controller.config.circular_setpoint_range

类型为 [bool],单位为 [turn],环形控制模式下可输入转动范围。

[RW] odrv0.axis0.controller.config.homing_speed

类型为 [float],单位为 [turn/s],寻找零点时的转动速度。

[RW] odrv0.axis0.controller.config.inertia

类型为 [float],单位为 [Nm/(turn/s^2)],电机转动惯量。

[RW] odrv0.axis0.controller.config.axis_to_mirror

类型为 [uint8_t],控制信号输入模式为 INPUT_MODE_MIRROR 时哪个电机作为输入。

[RW] odrv0.axis0.controller.config.mirror_ratio

类型为 [float],控制信号输入模式为 INPUT_MODE_MIRROR 时,输入电机和输出电机转动的比例。

[RW] odrv0.axis0.controller.config.input_filter_bandwidth

类型为 [float],单位为 [1/s],控制信号输入的滤波带宽。

odrv0.axis0.controller.config.anticogging
[RO] odrv0.axis0.controller.config.anticogging.index

类型为 [uint32_t],anticogging 当前索引。

[RW] odrv0.axis0.controller.config.anticogging.pre_calibrated

类型为 [bool],anticogging 是否已经校准完成。

[RO] odrv0.axis0.controller.config.anticogging.calib_anticogging

类型为 [bool],anticogging 是否正在校准中。

[RW] odrv0.axis0.controller.config.anticogging.calib_pos_threshold

类型为 [float],单位为 [count],anticogging 时位置误差的阈值。

[RW] odrv0.axis0.controller.config.anticogging.calib_vel_threshold

类型为 [float],单位为 [count],anticogging 时转速误差的阈值。

[RO] odrv0.axis0.controller.config.anticogging.cogging_ratio

类型为 [float],暂未使用。

[RW] odrv0.axis0.controller.config.anticogging.anticogging_enabled

类型为 [bool],是否启用 anticogging。

odrv0.axis0.encoder

[RW] odrv0.axis0.encoder.error

类型为 [enum],编码器错误代码。

ERROR_NONE                       = 0x00000000,
ERROR_UNSTABLE_GAIN              = 0x00000001,
ERROR_CPR_POLEPAIRS_MISMATCH     = 0x00000002,
ERROR_NO_RESPONSE                = 0x00000004,
ERROR_UNSUPPORTED_ENCODER_MODE   = 0x00000008,
ERROR_ILLEGAL_HALL_STATE         = 0x00000010,
ERROR_INDEX_NOT_FOUND_YET        = 0x00000020,
ERROR_ABS_SPI_TIMEOUT            = 0x00000040,
ERROR_ABS_SPI_COM_FAIL           = 0x00000080,
ERROR_ABS_SPI_NOT_READY          = 0x00000100,
[RO] odrv0.axis0.encoder.is_ready

类型为 [bool],编码器是否准备就绪。

[RO] odrv0.axis0.encoder.index_found

类型为 [bool],是否已完成编码器索引校准。

[RO] odrv0.axis0.encoder.shadow_count

类型为 [int32_t],编码器累计计数,当编码器计数增加或减少时此值将累加编码器计数值的变化量。

[RO] odrv0.axis0.encoder.count_in_cpr

类型为 [int32_t],编码器当前计数值。

[RO] odrv0.axis0.encoder.interpolation

类型为 [float],编码器当前插补值。

[RO] odrv0.axis0.encoder.phase

类型为 [float],通过编码器计算得到的当前电角度,范围为 -pi~+pi。

[RO] odrv0.axis0.encoder.pos_estimate

类型为 [float],单位为 [turn],当前预测到的位置值。

[RO] odrv0.axis0.encoder.pos_estimate_counts

类型为 [float],单位为 [count],当前预测到的位置值。

[RO] odrv0.axis0.encoder.pos_cpr

类型为 [float],单位为 [turn],当前约束在 cpr 范围内的位置值。

[RO] odrv0.axis0.encoder.pos_cpr_counts

类型为 [float],单位为 [count],当前约束在 cpr 范围内的位置值。

[RO] odrv0.axis0.encoder.pos_circular

类型为 [float],单位为 [turn],环形位置模式下当前位置值。

[RO] odrv0.axis0.encoder.hall_state

类型为 [uint8_t],当前霍尔信号状态,位码表示。

[RO] odrv0.axis0.encoder.vel_estimate

类型为 [float],单位为 [turn/s],当前估算转速。

[RO] odrv0.axis0.encoder.vel_estimate_counts

类型为 [float],单位为 [count/s],当前估算转速。

[RO] odrv0.axis0.encoder.calib_scan_response

类型为 [float],执行编码器偏移校准时的中间值,用来调试使用。

[RW] odrv0.axis0.encoder.pos_abs

类型为 [int32_t],绝对值编码器的绝对位置。

[RO] odrv0.axis0.encoder.spi_error_rate

类型为 [float],spi 绝对值编码器通讯误码率,当大于 0.005 时将报错 ERROR_ABS_SPI_COM_FAIL。

odrv0.axis0.encoder.config
[RW] odrv0.axis0.encoder.config.mode

类型为 [enum],所使用的编码器类型。

MODE_INCREMENTAL                 = 0,
MODE_HALL                        = 1,
MODE_SINCOS                      = 2,
MODE_SPI_ABS_CUI                 = 256,
MODE_SPI_ABS_AMS                 = 257,
MODE_SPI_ABS_AEAT                = 258,
MODE_SPI_ABS_RLS                 = 259,
[RW] odrv0.axis0.encoder.config.use_index

类型为 [bool],是否使用编码器索引信号。

[RW] odrv0.axis0.encoder.config.find_idx_on_lockin_only

类型为 [bool],是否只在 lockin 匀速运行时检测索引信号。

[RW] odrv0.axis0.encoder.config.abs_spi_cs_gpio_pin

类型为 [uint16_t],绝对值编码器spi通讯的片选信号使用的GPIO。

[RW] odrv0.axis0.encoder.config.zero_count_on_find_idx

类型为 [bool],是否将索引信号位置设置为编码器计数0的位置。

[RW] odrv0.axis0.encoder.config.cpr

类型为 [int32_t],电机轴转动每圈编码器产生的脉冲数,注意和编码器手册中的每转产生的脉冲数(PPR)区分,cpr = PPR * 4。

[RW] odrv0.axis0.encoder.config.offset

类型为 [int32_t],编码器和转子电角度之间的相位差,进行编码器偏移校准之后此项自动更新。

[RW] odrv0.axis0.encoder.config.pre_calibrated

类型为 [bool],编码器是否事先已被校准。

[RW] odrv0.axis0.encoder.config.offset_float

类型为 [float],编码器和转子电角度之间的相位差浮点部分,进行编码器偏移校准之后此项自动更新。

[RW] odrv0.axis0.encoder.config.enable_phase_interpolation

类型为 [bool],是否启用根据转速插补编码器相位。

[RW] odrv0.axis0.encoder.config.bandwidth

类型为 [float],编码器更新带宽,设置后立即生效,使用的编码器分辨率越高此项应该约高。

[RW] odrv0.axis0.encoder.config.calib_range

类型为 [float],通过编码器cpr检查所需的精度,用于在执行编码器偏移校准时编码器的实际输出计算的移动距离和电机开环步进移动距离之间允许的最大误差,超过此误差将报错 ERROR_CPR_OUT_OF_RANGE。

[RW] odrv0.axis0.encoder.config.calib_scan_distance

类型为 [float],单位为 [rad],编码器偏移校准时转动的距离,此值越大校准精度相对越高,但是同时校准所需的时间越长。

[RW] odrv0.axis0.encoder.config.calib_scan_omega

类型为 [float],单位为 [rad/s],编码器偏移校准时的转动速度。

[RW] odrv0.axis0.encoder.config.idx_search_unidirectional

类型为 [bool],是否只在方向被设置的情况下运行编码器索引搜索。

[RW] odrv0.axis0.encoder.config.ignore_illegal_hall_state

类型为 [bool],是否忽略错误的霍尔信号。

[RW] odrv0.axis0.encoder.config.sincos_gpio_pin_sin

类型为 [uint16_t],sin cos 编码器sin使用的GPIO。

[RW] odrv0.axis0.encoder.config.sincos_gpio_pin_cos

类型为 [uint16_t],sin cos 编码器cos使用的GPIO。

[OP] odrv0.axis0.encoder.set_linear_count(count: int32)

手动设置当前编码器计数值。

odrv0.axis0.sensorless_estimator

[RW] odrv0.axis0.sensorless_estimator.error

类型为 [enum],无感观测器错误代码。

ERROR_NONE                       = 0x00000000,
ERROR_UNSTABLE_GAIN              = 0x00000004,
[RW] odrv0.axis0.sensorless_estimator.phase

类型为 [float],单位为 [rad],无感观测器输出相位。

[RW] odrv0.axis0.sensorless_estimator.pll_pos

类型为 [float],单位为 [rad],无感观测器锁相环输出的位置。

[RW] odrv0.axis0.sensorless_estimator.vel_estimate

类型为 [float],单位为 [turn/s],无感观测器估算的转速。

odrv0.axis0.sensorless_estimator.config
[RW] odrv0.axis0.sensorless_estimator.config.observer_gain

类型为 [float],单位为 [rad/s],无感观测器的增益。

[RW] odrv0.axis0.sensorless_estimator.config.pll_bandwidth

类型为 [float],单位为 [rad/s],无感观测器的锁相环带宽。

[RW] odrv0.axis0.sensorless_estimator.config.pm_flux_linkage

类型为 [float],单位为 [V / (rad/s)],电机磁链,观测器需要使用此参数进行观测,可以通过公式 {5.51328895422 / ( * <rpm/v>) }计算得出。

odrv0.axis0.trap_traj

odrv0.axis0.trap_traj.config
[RW] odrv0.axis0.trap_traj.config.vel_limit

类型为 [float],单位为 [turn/s],梯形轨迹控制模式下的最高转速。

[RW] odrv0.axis0.trap_traj.config.accel_limit

类型为 [float],单位为 [turn/s^2],梯形轨迹控制模式下加速时的加速度。

[RW] odrv0.axis0.trap_traj.config.decel_limit

类型为 [float],单位为 [turn/s^2],梯形轨迹控制模式下减速时的加速度。

odrv0.axis0.min_endstop

[RO] odrv0.axis0.min_endstop.endstop_state

类型为 [bool],当前最小限位GPIO信号输入状态。

odrv0.axis0.min_endstop.config
[RW] odrv0.axis0.min_endstop.config.gpio_num

类型为 [uint16_t],最小限位信号输入使用的 GPIO。

[RW] odrv0.axis0.min_endstop.config.enabled

类型为 [bool],是否启用最小限位信号输入。

[RW] odrv0.axis0.min_endstop.config.offset

类型为 [float],单位为 [turn],最小限位信号触发和零点位置偏移量。

[RW] odrv0.axis0.min_endstop.config.is_active_high

类型为 [bool],最小限位信号有效电平是否为高电平。

[RW] odrv0.axis0.min_endstop.config.pullup

类型为 [bool],最小限位信号是否启用内部上拉,如果外部配置上拉电阻则设置为 False。

[RW] odrv0.axis0.min_endstop.config.debounce_ms

类型为 [uint32_t],单位为 [ms],最小限位信号消抖时间。

odrv0.axis0.max_endstop

[RO] odrv0.axis0.max_endstop.endstop_state

类型为 [bool],当前最大限位GPIO信号输入状态。

odrv0.axis0.max_endstop.config
[RW] odrv0.axis0.max_endstop.config.gpio_num

类型为 [uint16_t],最大限位信号输入使用的 GPIO。

[RW] odrv0.axis0.max_endstop.config.enabled

类型为 [bool],是否启用最大限位信号输入。

[RW] odrv0.axis0.max_endstop.config.offset

类型为 [float],单位为 [turn],此项设置无意义,只在 max_endstop 中有效。

[RW] odrv0.axis0.max_endstop.config.is_active_high

类型为 [bool],最小限位信号有效电平是否为高电平。

[RW] odrv0.axis0.max_endstop.config.pullup

类型为 [bool],最小限位信号是否启用内部上拉,如果外部配置上拉电阻则设置为 False。

[RW] odrv0.axis0.max_endstop.config.debounce_ms

类型为 [uint32_t],单位为 [ms],最小限位信号消抖时间。

odrv0.axis1 (参考 axis0)

  • 28
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值