Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
d450bb7
1. Add initial StateReport.uavcan file
ilang-flytrex Jan 28, 2026
57d6d7e
1. Rename file 3000.StateReport.uavcan to 21000.StateReport.uavcan
ilang-flytrex Feb 1, 2026
b94f3f8
1. Add 21002.ParamSet.uavcan & 21003.DesignConstantsSet.uavcan files
ilang-flytrex Mar 3, 2026
d3d2ebf
1. Update actions/checkout and actions/upload-artifact from v3 to v4
ilang-flytrex Mar 3, 2026
afed862
1. Fix a few typos
ilang-flytrex Mar 3, 2026
a51691e
1. Add 'OPERATION_RESPONSE' value to 'operation'
ilang-flytrex Mar 4, 2026
1347419
1. Change all the float16 field types in 21000.StateReport.uavcan to …
ilang-flytrex Mar 8, 2026
9b1fde5
1. Change the float16 fields to float32 in StateReport message
ilang-flytrex Mar 9, 2026
1c16f72
Merge branch 'feature/SupportDelCon' of github.com:Flytrex/public_reg…
ilang-flytrex Mar 9, 2026
9b5408e
1. Add 'error' field to ParamSet and DesignConstantsSet messages
ilang-flytrex Mar 10, 2026
03ea7c9
Merge branch 'feature/SupportDelCon' of github.com:Flytrex/public_reg…
ilang-flytrex Mar 10, 2026
3b57293
1. Add 'error' field to ParamSet and DesignConstantsSet messages
ilang-flytrex Mar 10, 2026
e5bcdcb
Merge branch 'feature/SupportDelCon' of github.com:Flytrex/public_reg…
ilang-flytrex Mar 10, 2026
37ba539
1. Add STATUS_TIMEOUT to Error.uavcan
ilang-flytrex Mar 19, 2026
5dacba4
1. Add STATUS_TIMEOUT to Error.uavcan
ilang-flytrex Mar 19, 2026
a99ea08
Merge branch 'feature/SupportDelCon' of github.com:Flytrex/public_reg…
ilang-flytrex Mar 19, 2026
7da2cc7
Merge branch 'Flyhawk-5.0' into feature/SupportDelCon
ilang-flytrex Jun 2, 2026
7776c24
1. Rename 21000.TCAData.uavcan file to 22000.TCAData.uavcan
ilang-flytrex Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/test_regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
# git checkout the PR
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Install gcc
run: sudo apt-get install -y gcc libc6-dev
Expand All @@ -18,7 +18,7 @@ jobs:
tests/test_regression.sh

- name: Archive generated headers
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: dsdl_generated
path: |
Expand Down
120 changes: 120 additions & 0 deletions flytrex/delcon/21000.StateReport.uavcan
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# DelCon (delivery controller) state report data
uint5 ACTIVE_MODE_INITIAL = 0 # INITIAL mode
uint5 ACTIVE_MODE_ENCODER_ALIGNMENT = 1 # ENCODER_ALIGNMENT mode
uint5 ACTIVE_MODE_WIRE_HOMING = 2 # WIRE_HOMING mode
uint5 ACTIVE_MODE_IDLE_EMPTY = 3 # IDLE_EMPTY mode
uint5 ACTIVE_MODE_DIRECT_OVERRIDE = 4 # DIRECT_OVERRIDE mode
uint5 ACTIVE_MODE_HALT = 5 # HALT mode
uint5 ACTIVE_MODE_GROUND_UNLOAD = 6 # GROUND_UNLOAD mode
uint5 ACTIVE_MODE_RESET = 7 # RESET mode
uint5 ACTIVE_MODE_PREPARE_FOR_PICKUP = 8 # PREPARE_FOR_PICKUP mode
uint5 ACTIVE_MODE_LIFT_PACKAGE = 9 # LIFT_PACKAGE mode
uint5 ACTIVE_MODE_IDLE_LOADED = 10 # IDLE_LOADED mode
uint5 ACTIVE_MODE_LANDING = 11 # LANDING mode
uint5 ACTIVE_MODE_PREPARE_FOR_DELIVERY = 12 # PREPARE_FOR_DELIVERY mode
uint5 ACTIVE_MODE_DELIVERY = 13 # DELIVERY mode
uint5 ACTIVE_MODE_RELEASE_WIRE = 14 # RELEASE_WIRE mode

bool MODE_ERROR_NO_ERROR = 0 # No error
bool MODE_ERROR_ASSERT = 1 # There is an error

bool MODE_STATUS_DONE = 0 # Operation finished
bool MODE_STATUS_IN_PROGRESS = 1 # Operation is in progress

bool HAS_PACKAGE_FALSE = 0 # There is no package on the hook
bool HAS_PACKAGE_TRUE = 1 # There is a package on the hook

bool NET_STAT_UP = 0 # The net is up
bool NET_STAT_DOWN = 1 # The net is down

bool LOCK_STATE_UNLOCKED = 0 # The state of the lock is unlocked
bool LOCK_STATE_LOCKED = 1 # The state of the lock is locked

bool ACK_OBSERVER_NO_FAULT = 0
bool ACK_OBSERVER_FAULT = 1

bool REQ_EXEC_HOLD_EXEC = 0 # Execute the current action
bool REQ_EXEC_HOLD_HOLD = 1 # Stop the current action

bool HOME_SWITCH_INACTIVE = 0 # Home switch inactive
bool HOME_SWITCH_ACTIVE = 1 # Home switch active

bool SPOOL_DEENERGIZE = 0 # Deenergize the motor
bool SPOOL_ENERGIZE = 1 # Energize the motor

bool ENCODER_UNRELIABLE = 0
bool ENCODER_RELIABLE = 1

bool SPOOL_ENERGIZE_NOT_ALLOWED = 0
bool SPOOL_ENERGIZE_ALLOWED = 1

bool SPOOL_TARGET_NOT_REACHED = 0 # Spool target wasn't reached
bool SPOOL_TARGET_REACHED = 1 # Spool target reached

bool SPOOL_GO = 0 # Spool the wire
bool SPOOL_EMERGENCY_HOLD = 1 # Spool hold

bool SPOOL_EXECUTING = 0
bool SPOOL_HOLDING = 1

bool SPOOL_SHAFT_CONTROL = 0
bool SPOOL_LOAD_CONTROL = 1

bool HOMING_INCOMPLETE = 0 # Wire homing is incomplete
bool HOMING_COMPLETE = 1 # Wire homing complete

bool ALIGNMENT_INCOMPLETE = 0 # Encoder alignment is incomplete
bool ALIGNMENT_COMPLETE = 1 # Encoder alignment is complete

uint5 active_mode # The current active mode
uint5 active_submode # The current active submode
bool mode_error # The error mode bit. If asserted then error_flags contains the current error map
bool mode_status # The current mode's status
uint32 error_flags # A bitmap of all the possible errors
uint16 motor_rpm # Motor revolutions per minute
bool has_package # A flag that indicates if a package is sensed on the wire
float32 instant_weight # The weight of the package in kg. Relevant when has_package = 1
bool net_state # A flag that indicates the net status
bool lock_state # The state of the lock servo
uint32 mode_duration # Time in milliseconds in the current mode
float32 motor_temperature # The current temperature of the motor
float32 spool_input_max_lag # The distance (in meters) that the actual wire position is permitted to fall behind the target position before the controller triggers an error
float32 spool_input_max_lag_window # The maximum time (e.g., 0.5 seconds) the controller will wait for the spool to reach a commanded position
float32 spool_input_max_overshoot # The difference between the peak physical position reached by the spool and the final steady-state setpoint
float32 spool_input_max_overshoot_window # The time window which allows spool/unspool overshoot
float32 spool_input_min_speed # The lowest linear velocity at which the wire is permitted to travel while the system is in an active "run" state
float32 spool_input_min_speed_window # The maximum duration the system allows for the motor to reach or maintain its "Min Speed" threshold
bool spool_input_ack_observer_fault
float32 spool_input_load_acc # The rate of change of the angular velocity of the rotating spool drum (measured in rad/s^2)
float32 spool_input_load_dec # The rate at which the angular velocity of the spool drum decreases (measured in rad/s^2)
bool spool_input_req_shaft_ctrl_load
bool spool_input_req_exec_hold # A flag for executing/stopping the current action
uint8 spool_input_target_ext # The desired total length of cable to be deployed or unwound
bool spool_input_home_switch_activated # The endswitch which is triggered when the bobbin is in the house
float32 spool_input_max_force # The maximum allowable cable tension or linear pulling force the system can exert
float32 spool_input_min_force # The minimum amount of tension or pulling effort that must be maintained on the wire to ensure safe and reliable operation
float32 spool_input_max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft
float32 spool_input_min_torque # The lower threshold of rotational force that the motor is commanded or allowed to maintain
bool spool_input_energize # Energizing the motor
bool spool_input_encoder_reliable
bool spool_internal_energize_allowed # AND (spool_input_energize, spool_input_encoder_reliable)
float32 spool_internal_ext_setpoint # The target value for the length of wire that comes out from the trajectory generator
float32 spool_internal_ext_err # The difference between where the wire should be and where it actually is (spool_internal_ext_setpoint - spool_output_ext)
float32 spool_internal_shaft_setpoint # The target angular position for the motor's output shaft
float32 spool_internal_shaft_err # The difference between where the shaft should be and where it actually is (spool_internal_shaft_setpoint - spool_output_shaft_pos)
float32 spool_internal_quad_current_req # The value for the specific component of motor current that is responsible for generating torque
float32 spool_internal_quad_current_active_setpoint # The final, safety-filtered command for torque-producing current (Iq) that is actually sent to the motor's power electronics
float32 spool_output_trajectory_margin # The maximum allowable physical distance the system can deviate from its pre-planned motion path
bool spool_output_target_reached # A flag which indicates if the wire reached target
bool spool_output_go_emergency_hold # A flag which controls if the spooling enters emergency hold or continue with operation
bool spool_output_executing_holding # OR (spool_output_go_emergency_hold, spool_input_req_exec_hold)
bool spool_output_shaft_load_ctrl # AND(spool_input_req_shaft_ctrl_load, spool_output_homing_complete)
float32 spool_output_ext # The output wire extension in meters
float32 spool_output_shaft_pos # The output shaft position in radian
bool spool_output_homing_complete # "WIRE_HOMING" mode is complete
float32 spool_output_force # The real-time linear pulling effort currently being exerted by the cable (in N)
float32 spool_output_torque # The rotational twisting force currently being generated at the motor's output shaft (in Nm)
float32 spool_output_bobbin_speed # Bobbin speed, rad/s
float32 spool_output_load_speed # Load speed, m/s
float32 spool_output_total_energy_cntr # Total energy counter, J
bool spool_output_alignment_complete # Alignment complete flag
45 changes: 45 additions & 0 deletions flytrex/delcon/21001.DirectOverride.uavcan
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# DelCon (delivery controller) direct override data

bool NET_STAT_UP = 0 # The net is up
bool NET_STAT_DOWN = 1 # The net is down

bool LOCK_STATE_UNLOCKED = 0 # The state of the lock is unlocked
bool LOCK_STATE_LOCKED = 1 # The state of the lock is locked

bool ACK_OBSERVER_NO_FAULT = 0
bool ACK_OBSERVER_FAULT = 1

bool REQ_EXEC_HOLD_EXEC = 0 # Execute the current action
bool REQ_EXEC_HOLD_HOLD = 1 # Stop the current action

bool HOME_SWITCH_INACTIVE = 0 # Home switch inactive
bool HOME_SWITCH_ACTIVE = 1 # Home switch active

bool SPOOL_DEENERGIZE = 0 # Deenergize the motor
bool SPOOL_ENERGIZE = 1 # Energize the motor

bool ENCODER_UNRELIABLE = 0
bool ENCODER_RELIABLE = 1

uint8 node_id # The destination node ID
bool net_state # A flag that indicates the net status
bool lock_state # The state of the lock servo
float16 spool_input_max_lag # The distance (in meters) that the actual wire position is permitted to fall behind the target position before the controller triggers an error
float16 spool_input_max_lag_window # The maximum time (e.g., 0.5 seconds) the controller will wait for the spool to reach a commanded position
float16 spool_input_max_overshoot # The difference between the peak physical position reached by the spool and the final steady-state setpoint
float16 spool_input_max_overshoot_window # The time window which allows spool/unspool overshoot
float16 spool_input_min_speed # The lowest linear velocity at which the wire is permitted to travel while the system is in an active "run" state
float16 spool_input_min_speed_window # The maximum duration the system allows for the motor to reach or maintain its "Min Speed" threshold
bool spool_input_ack_observer_fault
float16 spool_input_load_acc # The rate of change of the angular velocity of the rotating spool drum (measured in rad/s^2)
float16 spool_input_load_dec # The rate at which the angular velocity of the spool drum decreases (measured in rad/s^2)
float16 spool_input_req_shaft_ctrl_load
Comment thread
ilang-flytrex marked this conversation as resolved.
bool spool_input_req_exec_hold # A flag for executing/stopping the current action
uint8 spool_input_target_ext # The desired total length of cable to be deployed or unwound
bool spool_input_home_switch_activated # The endswitch which is triggered when the bobbin is in the house
float16 spool_input_max_force # The maximum allowable cable tension or linear pulling force the system can exert
float16 spool_input_min_force # The minimum amount of tension or pulling effort that must be maintained on the wire to ensure safe and reliable operation
float16 spool_input_max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft
float16 spool_input_min_torque # The lower threshold of rotational force that the motor is commanded or allowed to maintain
bool spool_input_energize # Energizing the motor
bool spool_input_encoder_reliable
23 changes: 23 additions & 0 deletions flytrex/delcon/21002.ParamSet.uavcan
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# DelCon (delivery controller) parameters set command

uint4 OPERATION_RECALL = 0 # Read a ParamSet configuration from the spool controller
uint4 OPERATION_STORE = 1 # Store a ParamSet configuration to the spool controller
uint4 OPERATION_EXECUTE = 2 # Bypass the external flash and execute ParamSet values in the spool controller (the parameters aren't saved)
uint4 OPERATION_RESPONSE = 3 # A response that is sent from the node

bool SPOOL_SHAFT_CONTROL = 0
bool SPOOL_LOAD_CONTROL = 1

uint4 operation # The operation to perform
Error error # A returned error by the responder
uint16 param_id # The ParamSet ID number
bool load_not_shaft_control # false: shaft control (SPOOL_SHAFT_CONTROL); true: load control (SPOOL_LOAD_CONTROL)
float32 shaft_pos_rad # The shaft position in radian
float32 completion_time_s # The time to complete the setup
float32 min_torque_Nm # The lower threshold of rotational force that the motor is commanded or allowed to maintain
float32 max_torque_Nm # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft
float32 obs_tension_detector_min_torque_Nm # The lower threshold of rotational force that the motor is commanded or allowed to maintain
float32 obs_tension_detector_window_s # The time in seconds which obs_tension_detector_min_torque_Nm was observed
float32 obs_traj_deviation_pos_m # Maximum allowed positive deviation from the planned trajectory [m]
float32 obs_traj_deviation_neg_m # Maximum allowed negative deviation from the planned trajectory [m]
float32 obs_allowed_deviation_pos_window_s # Time window over which positive trajectory deviation is evaluated [s]
15 changes: 15 additions & 0 deletions flytrex/delcon/21003.DesignConstantsSet.uavcan
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# DelCon (delivery controller) constants set

uint4 OPERATION_RECALL = 0 # Read the constants configuration from the spool controller
uint4 OPERATION_STORE = 1 # Store the constants configuration to the spool controller
uint4 OPERATION_UNUSED = 2 # Currently unused value
uint4 OPERATION_RESPONSE = 3 # A response that is sent from the node

uint4 operation # The operation to perform
Error error # A returned error by the responder
float32 wire_diameter # Diameter of the wire in meters
float32 barrel_diameter # The diameter of the barrel in meters
float32 spool_width # The width of the spool
float32 gearbox_ratio # Gearbox ratio
float32 wire_packing_efficiencies # Packing efficiency factor of the wound wire
float32 total_length_of_spooled_wire # The wire's total length in meters
5 changes: 5 additions & 0 deletions flytrex/delcon/21010.WriteConfigFile.uavcan
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# DelCon (delivery controller) write configuration file (a broadcast message that is used for send/response)

uint8 destination_node_id # The destination's node ID
Error error # A returned error by the responder
Path image_file_remote_path # The file to upload to the DelCon
4 changes: 4 additions & 0 deletions flytrex/delcon/21011.ReadConfigFile.uavcan
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# DelCon (delivery controller) read configuration file (a broadcast message that is used for send/response)

uint8 destination_node_id # The destination's node ID
Error error # A returned error by the responder
23 changes: 23 additions & 0 deletions flytrex/delcon/Error.uavcan
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#
# Nested type.
# File operation & DelCon result code.
#
int16 STATUS_OK = 0
int16 STATUS_UNKNOWN_ERROR = 32767

int16 STATUS_NOT_FOUND = 2
int16 STATUS_IO_ERROR = 5
int16 STATUS_ACCESS_DENIED = 13
int16 STATUS_IS_DIRECTORY = 21 # I.e. attempt to read/write on a path that points to a directory
int16 STATUS_INVALID_VALUE = 22 # E.g. file name is not valid for the target file system
int16 STATUS_FILE_TOO_LARGE = 27
int16 STATUS_OUT_OF_SPACE = 28
int16 STATUS_NOT_IMPLEMENTED = 38

int16 STATUS_IDX_OUT_OF_BOUND = 40 # Param ID is out of bound

int16 STATUS_BUSY = 50 # The DelCon is busy, so file write needs to be postpone
int16 STATUS_LOW_MEM = 51 # DelCon experiences low memory, so file write needs to be postpone
int16 STATUS_TIMEOUT = 52 # Timeout from previous file read request detected

int16 value
11 changes: 11 additions & 0 deletions flytrex/delcon/Path.uavcan
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#
# Nested type.
#
# File system path in UTF8.
#
# The only valid separator is forward slash.
#

uint8 SEPARATOR = '/'

uint8[<=200] path
Loading