mirror of
https://github.com/odriverobotics/ODrive.git
synced 2026-10-02 12:24:28 +08:00
Add value tables and units to every signal in .dbc
This commit is contained in:
+4
-2
@@ -8,17 +8,19 @@
|
||||
* When using a load encoder, homing will reset the correct linear position. Fixes [#651](https://github.com/odriverobotics/ODrive/issues/651)
|
||||
* Implemented CAN controller error message, which was previously defined but not actually implemented.
|
||||
* Get Vbus Voltage message updated to match ODrive Pro's CANSimple implementation.
|
||||
* vel_setpoint and torque_setpoint will be clamped to vel_limit and the active torque limit. Fixes [#647](https://github.com/odriverobotics/ODrive/issues/647)
|
||||
|
||||
* `vel_setpoint` and `torque_setpoint` will be clamped to `vel_limit` and the active torque limit. Fixes [#647](https://github.com/odriverobotics/ODrive/issues/647)
|
||||
### Added
|
||||
|
||||
* Added public `controller.get_anticogging_value(uint32)` fibre function to index into the the cogging map. Fixes [#690](https://github.com/odriverobotics/ODrive/issues/690)
|
||||
* Added Get ADC Voltage message to CAN (0x1C). Send the desired GPIO number in byte 1, and the ODrive will respond with the ADC voltage from that pin (if previously configured for analog)
|
||||
* Added CAN heartbeat message flags for motor, controller, and encoder error. If flag is true, fetch the corresponding error with the respective message.
|
||||
* Added scoped enums, e.g. `CONTROL_MODE_POSITION_CONTROL` can be used as `ControlMode.POSITION_CONTROL`
|
||||
|
||||
### Changed
|
||||
|
||||
* Improved can_generate_dbc.py file and resultant .dbc. Now supports 8 ODrive axes (0..7) natively
|
||||
* Add units and value tables to every signal in odrive-cansimple.dbc
|
||||
* Autogenerate odrive-cansimple.dbc on compile
|
||||
|
||||
## [0.5.5] - 2022-08-11
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ all:
|
||||
@tup --quiet -no-environ-check
|
||||
@$(PY_CMD) interface_generator_stub.py --definitions odrive-interface.yaml --template ../tools/enums_template.j2 --output ../tools/odrive/enums.py
|
||||
@$(PY_CMD) interface_generator_stub.py --definitions odrive-interface.yaml --template ../tools/arduino_enums_template.j2 --output ../Arduino/ODriveArduino/ODriveEnums.h
|
||||
@cd ../tools/ && $(PY_CMD) create_can_dbc.py
|
||||
|
||||
# Copy libfibre files to odrivetool if they were built
|
||||
@ ! test -f "fibre-cpp/build/libfibre-linux-amd64.so" || cp fibre-cpp/build/libfibre-linux-amd64.so ../tools/odrive/pyfibre/fibre/
|
||||
|
||||
+41
-48
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,8 @@
|
||||
# To regenerate this file, nagivate to the top level of the ODrive repository and run:
|
||||
# python Firmware/interface_generator_stub.py --definitions Firmware/odrive-interface.yaml --template tools/enums_template.j2 --output tools/odrive/enums.py
|
||||
|
||||
import enum
|
||||
|
||||
[%- for _, enum in value_types.items() %]
|
||||
[%- if enum.is_enum %]
|
||||
|
||||
@@ -13,3 +15,11 @@
|
||||
[%- endif %]
|
||||
[%- endfor %]
|
||||
|
||||
[%- for _, enum in value_types.items() %]
|
||||
[%- if enum.is_enum %]
|
||||
class [[(enum.parent.name if enum.name in ['Error', 'Mode', 'Protocol'] else '') + enum.name]][% if enum.is_flags %](enum.IntFlag)[% else %](enum.Enum)[% endif %]:
|
||||
[%- for k, value in enum['values'].items() %]
|
||||
[[((k | to_macro_case)).ljust(40)]] = [% if enum.is_flags %]0x[['%08x' | format(value.value)]][% else %][[value.value]][% endif %]
|
||||
[%- endfor %]
|
||||
[%- endif %]
|
||||
[%- endfor %]
|
||||
|
||||
+305
-234
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,8 @@
|
||||
# To regenerate this file, nagivate to the top level of the ODrive repository and run:
|
||||
# python Firmware/interface_generator_stub.py --definitions Firmware/odrive-interface.yaml --template tools/enums_template.j2 --output tools/odrive/enums.py
|
||||
|
||||
import enum
|
||||
|
||||
# ODrive.GpioMode
|
||||
GPIO_MODE_DIGITAL = 0
|
||||
GPIO_MODE_DIGITAL_PULL_UP = 1
|
||||
@@ -165,3 +167,151 @@ ENCODER_ERROR_HALL_NOT_CALIBRATED_YET = 0x00000200
|
||||
SENSORLESS_ESTIMATOR_ERROR_NONE = 0x00000000
|
||||
SENSORLESS_ESTIMATOR_ERROR_UNSTABLE_GAIN = 0x00000001
|
||||
SENSORLESS_ESTIMATOR_ERROR_UNKNOWN_CURRENT_MEASUREMENT = 0x00000002
|
||||
class GpioMode(enum.Enum):
|
||||
DIGITAL = 0
|
||||
DIGITAL_PULL_UP = 1
|
||||
DIGITAL_PULL_DOWN = 2
|
||||
ANALOG_IN = 3
|
||||
UART_A = 4
|
||||
UART_B = 5
|
||||
UART_C = 6
|
||||
CAN_A = 7
|
||||
I2C_A = 8
|
||||
SPI_A = 9
|
||||
PWM = 10
|
||||
ENC0 = 11
|
||||
ENC1 = 12
|
||||
ENC2 = 13
|
||||
MECH_BRAKE = 14
|
||||
STATUS = 15
|
||||
class StreamProtocolType(enum.Enum):
|
||||
FIBRE = 0
|
||||
ASCII = 1
|
||||
STDOUT = 2
|
||||
ASCII_AND_STDOUT = 3
|
||||
class CanProtocol(enum.IntFlag):
|
||||
SIMPLE = 0x00000001
|
||||
class AxisState(enum.Enum):
|
||||
UNDEFINED = 0
|
||||
IDLE = 1
|
||||
STARTUP_SEQUENCE = 2
|
||||
FULL_CALIBRATION_SEQUENCE = 3
|
||||
MOTOR_CALIBRATION = 4
|
||||
ENCODER_INDEX_SEARCH = 6
|
||||
ENCODER_OFFSET_CALIBRATION = 7
|
||||
CLOSED_LOOP_CONTROL = 8
|
||||
LOCKIN_SPIN = 9
|
||||
ENCODER_DIR_FIND = 10
|
||||
HOMING = 11
|
||||
ENCODER_HALL_POLARITY_CALIBRATION = 12
|
||||
ENCODER_HALL_PHASE_CALIBRATION = 13
|
||||
class EncoderMode(enum.Enum):
|
||||
INCREMENTAL = 0
|
||||
HALL = 1
|
||||
SINCOS = 2
|
||||
SPI_ABS_CUI = 256
|
||||
SPI_ABS_AMS = 257
|
||||
SPI_ABS_AEAT = 258
|
||||
SPI_ABS_RLS = 259
|
||||
SPI_ABS_MA732 = 260
|
||||
class ControlMode(enum.Enum):
|
||||
VOLTAGE_CONTROL = 0
|
||||
TORQUE_CONTROL = 1
|
||||
VELOCITY_CONTROL = 2
|
||||
POSITION_CONTROL = 3
|
||||
class InputMode(enum.Enum):
|
||||
INACTIVE = 0
|
||||
PASSTHROUGH = 1
|
||||
VEL_RAMP = 2
|
||||
POS_FILTER = 3
|
||||
MIX_CHANNELS = 4
|
||||
TRAP_TRAJ = 5
|
||||
TORQUE_RAMP = 6
|
||||
MIRROR = 7
|
||||
TUNING = 8
|
||||
class MotorType(enum.Enum):
|
||||
HIGH_CURRENT = 0
|
||||
GIMBAL = 2
|
||||
ACIM = 3
|
||||
class ODriveError(enum.IntFlag):
|
||||
NONE = 0x00000000
|
||||
CONTROL_ITERATION_MISSED = 0x00000001
|
||||
DC_BUS_UNDER_VOLTAGE = 0x00000002
|
||||
DC_BUS_OVER_VOLTAGE = 0x00000004
|
||||
DC_BUS_OVER_REGEN_CURRENT = 0x00000008
|
||||
DC_BUS_OVER_CURRENT = 0x00000010
|
||||
BRAKE_DEADTIME_VIOLATION = 0x00000020
|
||||
BRAKE_DUTY_CYCLE_NAN = 0x00000040
|
||||
INVALID_BRAKE_RESISTANCE = 0x00000080
|
||||
class CanError(enum.IntFlag):
|
||||
NONE = 0x00000000
|
||||
DUPLICATE_CAN_IDS = 0x00000001
|
||||
class AxisError(enum.IntFlag):
|
||||
NONE = 0x00000000
|
||||
INVALID_STATE = 0x00000001
|
||||
MOTOR_FAILED = 0x00000040
|
||||
SENSORLESS_ESTIMATOR_FAILED = 0x00000080
|
||||
ENCODER_FAILED = 0x00000100
|
||||
CONTROLLER_FAILED = 0x00000200
|
||||
WATCHDOG_TIMER_EXPIRED = 0x00000800
|
||||
MIN_ENDSTOP_PRESSED = 0x00001000
|
||||
MAX_ENDSTOP_PRESSED = 0x00002000
|
||||
ESTOP_REQUESTED = 0x00004000
|
||||
HOMING_WITHOUT_ENDSTOP = 0x00020000
|
||||
OVER_TEMP = 0x00040000
|
||||
UNKNOWN_POSITION = 0x00080000
|
||||
class MotorError(enum.IntFlag):
|
||||
NONE = 0x00000000
|
||||
PHASE_RESISTANCE_OUT_OF_RANGE = 0x00000001
|
||||
PHASE_INDUCTANCE_OUT_OF_RANGE = 0x00000002
|
||||
DRV_FAULT = 0x00000008
|
||||
CONTROL_DEADLINE_MISSED = 0x00000010
|
||||
MODULATION_MAGNITUDE = 0x00000080
|
||||
CURRENT_SENSE_SATURATION = 0x00000400
|
||||
CURRENT_LIMIT_VIOLATION = 0x00001000
|
||||
MODULATION_IS_NAN = 0x00010000
|
||||
MOTOR_THERMISTOR_OVER_TEMP = 0x00020000
|
||||
FET_THERMISTOR_OVER_TEMP = 0x00040000
|
||||
TIMER_UPDATE_MISSED = 0x00080000
|
||||
CURRENT_MEASUREMENT_UNAVAILABLE = 0x00100000
|
||||
CONTROLLER_FAILED = 0x00200000
|
||||
I_BUS_OUT_OF_RANGE = 0x00400000
|
||||
BRAKE_RESISTOR_DISARMED = 0x00800000
|
||||
SYSTEM_LEVEL = 0x01000000
|
||||
BAD_TIMING = 0x02000000
|
||||
UNKNOWN_PHASE_ESTIMATE = 0x04000000
|
||||
UNKNOWN_PHASE_VEL = 0x08000000
|
||||
UNKNOWN_TORQUE = 0x10000000
|
||||
UNKNOWN_CURRENT_COMMAND = 0x20000000
|
||||
UNKNOWN_CURRENT_MEASUREMENT = 0x40000000
|
||||
UNKNOWN_VBUS_VOLTAGE = 0x80000000
|
||||
UNKNOWN_VOLTAGE_COMMAND = 0x100000000
|
||||
UNKNOWN_GAINS = 0x200000000
|
||||
CONTROLLER_INITIALIZING = 0x400000000
|
||||
UNBALANCED_PHASES = 0x800000000
|
||||
class ControllerError(enum.IntFlag):
|
||||
NONE = 0x00000000
|
||||
OVERSPEED = 0x00000001
|
||||
INVALID_INPUT_MODE = 0x00000002
|
||||
UNSTABLE_GAIN = 0x00000004
|
||||
INVALID_MIRROR_AXIS = 0x00000008
|
||||
INVALID_LOAD_ENCODER = 0x00000010
|
||||
INVALID_ESTIMATE = 0x00000020
|
||||
INVALID_CIRCULAR_RANGE = 0x00000040
|
||||
SPINOUT_DETECTED = 0x00000080
|
||||
class EncoderError(enum.IntFlag):
|
||||
NONE = 0x00000000
|
||||
UNSTABLE_GAIN = 0x00000001
|
||||
CPR_POLEPAIRS_MISMATCH = 0x00000002
|
||||
NO_RESPONSE = 0x00000004
|
||||
UNSUPPORTED_ENCODER_MODE = 0x00000008
|
||||
ILLEGAL_HALL_STATE = 0x00000010
|
||||
INDEX_NOT_FOUND_YET = 0x00000020
|
||||
ABS_SPI_TIMEOUT = 0x00000040
|
||||
ABS_SPI_COM_FAIL = 0x00000080
|
||||
ABS_SPI_NOT_READY = 0x00000100
|
||||
HALL_NOT_CALIBRATED_YET = 0x00000200
|
||||
class SensorlessEstimatorError(enum.IntFlag):
|
||||
NONE = 0x00000000
|
||||
UNSTABLE_GAIN = 0x00000001
|
||||
UNKNOWN_CURRENT_MEASUREMENT = 0x00000002
|
||||
Reference in New Issue
Block a user