Getting Started
Software Release Version: 0.0.15
Prerequisites
Install the platform dependencies before launching the controller.
Linux
-
Install the required system dependencies:
sudo apt install libtesseract-dev libopencv-dev
-
Install the Aravis library using the Meson build system — follow the Aravis build guide.
-
Build and install a Linux kernel with the PREEMPT_RT patch. Apply the patch even on kernel releases that already have PREEMPT_RT merged into mainline (≥ 6.12), because the patch still delivers better real-time performance. Follow the acontis PREEMPT_RT kernel guide, with two steps the guide omits — run both just before its sudo make step:
-
Generate a self-signed certificate:
openssl req -x509 -newkey rsa:4096 -keyout certs/adeebrobotics-cert.pem -out certs/adeebrobotics-cert.pem -nodes -days 3650
-
Edit the .config file to use the certificate you just generated:
CONFIG_SYSTEM_TRUSTED_KEYS="certs/adeebrobotics-cert.pem"
CONFIG_SYSTEM_REVOCATION_KEYS="certs/adeebrobotics-cert.pem"
Finally, turn off Secure Boot in your BIOS settings before rebooting into the new kernel — Secure Boot rejects self-signed certificates unless they are pre-registered.
Windows
Download and install Npcap.
macOS
-
Install the Aravis library using the Meson build system — follow the Aravis build guide.
-
Install LLVM and OpenCV:
brew install llvm opencv
Launch the controller
To launch the Adeeb Robotics Controller, open a terminal and execute:
adeeb_robotics_controller <path_to_config_file>
The config_files folder contains example configuration files — you may use any of them. For example:
adeeb_robotics_controller config_files/delta_config.yml
On Linux and macOS, launch the controller with elevated privileges (sudo).
With the controller running, you can drive it from the web UI (A), from Python scripts (B), or both.
(A) Use the web-based UI
Open any browser and go to:
127.0.0.1:55000
From there you can modify the configuration, jog the robot, view the 3D simulation, and run Python motion and I/O scripts.
You can also connect from a phone or tablet on the same LAN as the PC running the controller by browsing to <server_lan_ip>:55000. Obtain the LAN IP address of the server with ifconfig (Linux and macOS) or ipconfig (Windows).
To reach the web UI from a phone or tablet, you may need to turn off the firewall under network settings on Windows and macOS.
(B) Run the Python scripts
Use a text editor to modify the config files and/or Python scripts, then run a script from a terminal:
python3 <path_to_python_script>
Example motion scripts are available in the python_scripts folder. Any of them can be run except arc.py, which is the Python helper library rather than a runnable demo. For instance:
python3 pack_expo_demo.py
Avoid running motion commands from multiple Python scripts simultaneously.
Script and Configuration Pairing
Certain scripts are meant to run with certain configs:
pack_expo_demo.py and autorun.py are meant to be run with delta_config.yml or demo_stand_config.yml
serial_dh_example.py is meant to be run with kuka_7_axis_config.yml
The config file defines system settings, such as the type of robot configured and the conveyor, container, and camera positions used for pick-and-place. The Python scripts expose motion and I/O commands.
| API Route | Method | Description | Payload |
|---|
/get_sw_release_version | GET | Returns the current software release version | String |
Configuration
| API Route | Method | Description | Payload |
|---|
/set_config | POST | Sets the configuration object in JSON format | Config |
/get_config | GET | Returns the current configuration in JSON format | N/A |
Network and Initialization
Network Control
| API Route | Method | Description | Payload |
|---|
/init_network | POST | Initiates network initialization request | N/A |
/init_network | GET | Checks network initialization response | CmdRspRslt |
Axis Initialization
| API Route | Method | Description | Payload |
|---|
/init_axes | POST | Initiates axes initialization request | N/A |
/init_axes | GET | Checks axes initialization response | CmdRspRslt |
Operation Mode Control
| API Route | Method | Description | Payload |
|---|
/req_preop | POST | Initiates pre-operational mode request | N/A |
/req_preop | GET | Checks pre-operational mode response | CmdRspRslt |
/req_op | POST | Initiates operational mode request | N/A |
/req_op | GET | Checks operational mode response | CmdRspRslt |
Slave Management
| API Route | Method | Description | Payload |
|---|
/get_number_of_slaves | POST | Initiates slave count request | N/A |
/get_number_of_slaves | GET | Checks slave count response | NumSlvsEcatData |
Motion Control
All endpoints that have POST/GET pairs follow an asynchronous pattern where the operation is initiated with the POST endpoint and its completion can be checked with the GET endpoint.
Axis Control
| API Route | Method | Description | Payload |
|---|
/axis_servo_on | POST | Initiates servo on request | AxisData |
/axis_servo_on | GET | Checks servo on response | AxisData |
/axis_servo_off | POST | Initiates servo off request | AxisData |
/axis_servo_off | GET | Checks servo off response | AxisData |
/axis_move_pos | POST | Initiates absolute position movement request | AxisMovePosData |
/axis_move_pos | GET | Checks absolute position movement response | AxisMovePosData |
/axis_move_vel | POST | Initiates velocity movement request | AxisMoveVelData |
/axis_move_vel | GET | Checks velocity movement response | AxisMoveVelData |
/axis_move_rel | POST | Initiates relative position movement request | AxisMoveRelData |
/axis_move_rel | GET | Checks relative position movement response | AxisMoveRelData |
/axis_move_home | POST | Initiates axis home movement request | AxisData |
/axis_move_home | GET | Checks axis home movement response | AxisData |
/axis_get_curr_pos | POST | Initiates getting current position request | AxisCurrPosData |
/axis_get_curr_pos | GET | Checks getting current position response | AxisCurrPosData |
/axis_write_dig_out | POST | Append a digital write command to the axis motion queue | AxisDigData |
/axis_write_dig_out | GET | Checks if a digital write command was appended | AxisDigData |
/axis_read_dig_in | POST | Initiates an immediate (not queued) digital read request | AxisDigData |
/axis_read_dig_in | GET | Checks digital read response | AxisDigData |
/axis_motion_done | POST | Initiates axis motion done request | AxisBoolData |
/axis_motion_done | GET | Checks axis motion done response | AxisBoolData |
/axis_quick_stop | POST | Initiates axis quick stop request | AxisData |
/axis_quick_stop | GET | Checks axis quick stop response | AxisData |
/axis_clear_alarms | POST | Initiates axis clear alarms request | AxisData |
/axis_clear_alarms | GET | Checks axis clear alarms response | AxisData |
/axis_get_alarms | POST | Initiates getting axis alarms request | AxisAlarmsData |
/axis_get_alarms | GET | Checks getting axis alarms response | AxisAlarmsData |
/axis_zero | POST | Initiates axis zero request | AxisData |
/axis_zero | GET | Checks axis zero response | AxisData |
/axis_sleep | POST | Initiates axis sleep request | AxisSleepData |
/axis_sleep | GET | Checks axis sleep response | AxisSleepData |
/axis_set_spd_prcn | POST | Initiates setting axis speed request | AxisSpdPrcnData |
/axis_set_spd_prcn | GET | Get setting axis speed response | AxisSpdPrcnData |
/axis_get_spd_prcn | POST | Initiates getting axis speed request | AxisSpdPrcnData |
/axis_get_spd_prcn | GET | Checks getting axis speed response | AxisSpdPrcnData |
Group Control
| API Route | Method | Description | Payload |
|---|
/group_servo_on | POST | Initiates group servo on request | GroupData |
/group_servo_on | GET | Checks group servo on response | GroupData |
/group_servo_off | POST | Initiates group servo off request | GroupData |
/group_servo_off | GET | Checks group servo off response | GroupData |
/group_move_pos | POST | Initiates group absolute position movement request | GroupMovePosData |
/group_move_pos | GET | Checks group absolute position movement response | GroupMovePosData |
/group_move_rel | POST | Initiates group relative position movement request | GroupMoveRelData |
/group_move_rel | GET | Checks group relative position movement response | GroupMoveRelData |
/group_move_home | POST | Initiates group home movement request | GroupData |
/group_move_home | GET | Checks group home movement response | GroupData |
/group_end_eff_engage | POST | Initiates group end effector engagement request | GroupData |
/group_end_eff_engage | GET | Checks group end effector engagement response | GroupData |
/group_end_eff_eject | POST | Initiates group end effector eject request | GroupData |
/group_end_eff_eject | GET | Checks group end effector eject response | GroupData |
/group_end_eff_clear | POST | Initiates group end effector clear request | GroupData |
/group_end_eff_clear | GET | Checks group end effector clear response | GroupData |
/group_get_bgn_pos | POST | Initiates next motion queue begin position request | GroupBgnPosData |
/group_get_bgn_pos | GET | Checks next motion queue begin position response | GroupBgnPosData |
/group_get_curr_pos | POST | Initiates getting group current position request | GroupCurrPosData |
/group_get_curr_pos | GET | Checks getting group current position response | GroupCurrPosData |
/group_write_dig_out | POST | Append a digital write command to the group motion queue | GroupDigData |
/group_write_dig_out | GET | Checks if a digital write command was appended | GroupDigData |
/group_motion_done | POST | Initiates group motion completion request | GroupBoolData |
/group_motion_done | GET | Checks group motion completion response | GroupBoolData |
/group_quick_stop | POST | Initiates group quick stop request | GroupData |
/group_quick_stop | GET | Checks group quick stop response | GroupData |
/group_clear_alarms | POST | Initiates group clear alarms request | GroupData |
/group_clear_alarms | GET | Checks group clear alarms response | GroupData |
/group_get_alarms | POST | Initiates group get alarms request | GroupAlarmsData |
/group_get_alarms | GET | Checks group get alarms response | GroupAlarmsData |
/group_zero | POST | Initiates group zero request | GroupData |
/group_zero | GET | Checks group zero response | GroupData |
/group_sleep | POST | Initiates group sleep request | GroupSleepData |
/group_sleep | GET | Checks group sleep response | GroupSleepData |
/group_set_spd_prcn | POST | Initiates setting group move profile velocity, acceleration, and jerk as % of max | GroupSpdPrcnData |
/group_set_spd_prcn | GET | Checks setting group move profile response | GroupSpdPrcnData |
/group_get_spd_prcn | POST | Initiates getting group move profile velocity, acceleration, and jerk as % of max | GroupSpdPrcnData |
/group_get_spd_prcn | GET | Checks getting group move profile response | GroupSpdPrcnData |
/clear_alarms | POST | Initiates clear all alarms request | MotnCmdData |
/clear_alarms | GET | Checks clear all alarms response | MotnCmdData |
/emergency_stop | POST | Initiates emergency stop request | MotnCmdData |
/emergency_stop | GET | Checks emergency stop response | MotnCmdData |
Conveyor Operations
| API Route | Method | Description | Payload |
|---|
/conv_set_spd | POST | Initiates setting conveyor speed request | ConvSpdData |
/conv_set_spd | GET | Checks setting conveyor speed response | ConvSpdData |
/group_conv_intercept_pickup | POST | Initiates conveyor intercept for pick-up request | GroupConvPickupData |
/group_conv_intercept_pickup | GET | Checks conveyor intercept for pick-up response | GroupConvPickupData |
/group_conv_intercept_dropoff | POST | Initiates conveyor intercept for drop-off request | GroupConvDropoffData |
/group_conv_intercept_dropoff | GET | Checks conveyor intercept for drop-off response | GroupConvDropoffData |
/group_conv_descend | POST | Initiates conveyor descend request | GroupConvData |
/group_conv_descend | GET | Checks conveyor descend response | GroupConvData |
/group_conv_track_pickup | POST | Initiates tracking conveyor pick-up request | GroupConvData |
/group_conv_track_pickup | GET | Checks tracking conveyor pick-up response | GroupConvData |
/group_conv_track_dropoff | POST | Initiates tracking conveyor drop-off request | GroupConvData |
/group_conv_track_dropoff | GET | Checks tracking conveyor drop-off response | GroupConvData |
/group_conv_ascend | POST | Initiates conveyor ascend request | GroupConvData |
/group_conv_ascend | GET | Checks conveyor ascend response | GroupConvData |
/group_conv_pickup | POST | Initiates group conveyor pickup request | GroupConvPickupData |
/group_conv_pickup | GET | Checks group conveyor pickup response | GroupConvPickupData |
/group_conv_dropoff | POST | Initiates group conveyor drop-off request | GroupConvDropoffData |
/group_conv_dropoff | GET | Checks group conveyor drop-off response | GroupConvDropoffData |
Container Operations
| API Route | Method | Description | Payload |
|---|
/group_cont_intercept_dropoff | POST | Initiates container intercept at drop-off request | GroupContDropoffData |
/group_cont_intercept_dropoff | GET | Checks container intercept at drop-off response | GroupContDropoffData |
/group_cont_intercept_pickup | POST | Initiates container intercept at pick-up request | GroupContPickupData |
/group_cont_intercept_pickup | GET | Checks container intercept at pick-up response | GroupContPickupData |
/group_cont_intercept_pickup_idx | POST | Initiates queuing a group move to position above indexed part in container | GroupContPickupIdxData |
/group_cont_intercept_pickup_idx | GET | Checks response of queuing group move above indexed part | GroupContPickupIdxData |
/group_cont_descend | POST | Initiates container descend request | GroupContData |
/group_cont_descend | GET | Checks container descend response | GroupContData |
/group_cont_track_dropoff | POST | Initiates tracking container drop-off request | GroupContData |
/group_cont_track_dropoff | GET | Checks tracking container drop-off response | GroupContData |
/group_cont_track_pickup | POST | Initiates tracking container pick-up request | GroupContData |
/group_cont_track_pickup | GET | Checks tracking container pick-up response | GroupContData |
/group_cont_ascend | POST | Initiates container ascend request | GroupContData |
/group_cont_ascend | GET | Checks container ascend response | GroupContData |
/group_cont_dropoff | POST | Initiates container drop-off request | GroupContDropoffData |
/group_cont_dropoff | GET | Checks container drop-off response | GroupContDropoffData |
/group_cont_pickup | POST | Initiates container pick-up request | GroupContPickupData |
/group_cont_pickup | GET | Checks container pick-up response | GroupContPickupData |
/group_cont_pickup_idx | POST | Initiates container part pick-up using auto part indexing | GroupContPickupIdxData |
/group_cont_pickup_idx | GET | Checks container part pick-up using auto indexing response | GroupContPickupIdxData |
/cont_set_empty | POST | Initiates setting internal container part count to zero | ContData |
/cont_set_empty | GET | Checks setting container part count to zero response | ContData |
/cont_set_full | POST | Initiates setting internal container part count to full | ContPartData |
/cont_set_full | GET | Checks setting container part count to full response | ContPartData |
/cont_not_empty | POST | Initiates checking container is not empty | ContBoolData |
/cont_not_empty | GET | Checks container is not empty response | ContBoolData |
/cont_not_full | POST | Initiates checking container is not full | ContPartBoolData |
/cont_not_full | GET | Checks container is not full response | ContPartBoolData |
Low-Level Control
CoE (CANopen over EtherCAT) Operations
| API Route | Method | Description | Payload |
|---|
/coe_wr_u8 | POST/GET | U8 write operation | CoeU8Data |
/coe_wr_u16 | POST/GET | U16 write operation | CoeU16Data |
/coe_wr_u32 | POST/GET | U32 write operation | CoeU32Data |
/coe_rd_u8 | POST/GET | U8 read operation | CoeU8Data |
/coe_rd_u16 | POST/GET | U16 read operation | CoeU16Data |
/coe_rd_u32 | POST/GET | U32 read operation | CoeU32Data |
CiA 402 Operations
| API Route | Method | Description | Payload |
|---|
/set_cia402_op_mode | POST | Initiates CiA 402 operation mode setting request | Cia402OpModeData |
/set_cia402_op_mode | GET | Checks CiA 402 operation mode setting response | Cia402OpModeData |
Configuration File Reference
Ethernet
| Field | Type | Description |
|---|
interface_name | String | Ethernet interface name |
prioritize_usr_space_eth_drv | Boolean | If true, prioritize obtaining slave configuration from ESI file; otherwise use slave EEPROM SSI data |
EtherCAT
| Field | Type | Description | Unit |
|---|
esi_file_path | String | ESI file path | N/A |
prioritize_esi_config | Boolean | Prioritize ESI file over slave EEPROM SSI data | N/A |
cycle_time | u32 | EtherCAT cycle time, only multiples of 250μs supported | μs |
shift_time | u32 | DC master frame send to sync0 offset | % of cycle_time |
rx_frame_timeout | u32 | Receive frame timeout (Linux and macOS only) | μs |
Axes (Single Axis)
| Field | Type | Description | Unit |
|---|
enco_offst | i32 | Encoder offset | Encoder ticks |
gear_ratio | f64 | Gear ratio | N/A |
slv_idx | uint | Slave index (zero-indexed position in network) | N/A |
min_pos | f64 | Minimum angular position of rotational motor | Degrees |
max_pos | f64 | Maximum angular position of rotational motor | Degrees |
Groups
| Field | Type | Description | Unit |
|---|
axs_idx_vec | uint vector (4) | Axes indices | N/A |
pos | f64 vector (6) | Robot frame position relative to world frame | mm, mm, mm, deg, deg, deg |
world_limits_type | WorldLimitType | World limit enum | N/A |
group_type | GroupType | Group type enum | N/A |
end_eff | EndEffConfig | End effector digital output configuration | N/A |
World Limit: CylindricalZConfig
| Field | Type | Unit |
|---|
z_min | f64 | mm |
z_max | f64 | mm |
r_xy_max | f64 | mm |
Group Type: DeltaConfig
| Field | Type | Unit |
|---|
base_radius | f64 | mm |
base_offset | f64 | mm |
upper_arm_length | f64 | mm |
lower_arm_length | f64 | mm |
platform_offset | f64 | mm |
platform_radius | f64 | mm |
motor_angles | f64 vector (3) | degrees |
upper_arm_mass | f64 | kg |
lower_arm_mass | f64 | kg |
lower_plate_mass | f64 | kg |
upper_arm_cm_radius | f64 | mm |
upper_arm_cm_inertia | f64 | kg·mm² |
Group Type: SerialDHConfig
| Field | Type | Unit |
|---|
theta | vector (7) | degrees |
a | vector (7) | degrees |
d | vector (7) | degrees |
alpha | vector (7) | degrees |
joint_type | vector (7) | N/A |
Cameras
| Field | Type | Description | Unit |
|---|
id | String | Camera ID number | N/A |
exposure_time | f64 | Camera exposure time | μs |
pixel_size | f64 | Camera pixel size | μm |
focal_length | f64 | Lens focal length | mm |
pos | f64 vector (6) | Camera frame position relative to world frame | mm, mm, mm, deg, deg, deg |
Conveyors
| Field | Type | Description | Unit |
|---|
width | f64 | Conveyor width | mm |
length | f64 | Conveyor length | mm |
cam_idx_vec | uint vector | Cameras used for tracking objects on this conveyor | N/A |
pos | f64 vector (6) | Conveyor frame position relative to world frame | mm, mm, mm, deg, deg, deg |
descend_dist | f64 | Descend/ascend distance in Z direction during pickup | mm |
end_eff_delay | f64 | End effector delay to fully engage | s |
Parts
| Field | Type | Description | Unit |
|---|
width | f64 | Width of the part | mm |
length | f64 | Length of the part | mm |
height | f64 | Height of the part | mm |
mass | f64 | Mass of the part | kg |
inertia_zz | f64 | Inertia about center of mass in Z direction | kg·mm² |
label | String | "", "alphabetic", "alphanumeric", or "text" — used to detect if 180° rotation is needed | N/A |
max_linear_error | f64 | Percentage of acceptable error in width or length when identifying parts | N/A |
Cycles
| Field | Type | Description | Unit |
|---|
grp_idx | uint | Group index | N/A |
cnv_idx | uint | Conveyor index | N/A |
cnt_idx | uint | Container index | N/A |
prt_idx | uint | Part index | N/A |
prcn | u8 | Speed precision | N/A |
cnv_pickup_timeout | f64 | How long a conveyor intercept or pickup call keeps attempting to find a part | s |
cnv_spd | f64 | Conveyor speed | mm/s |
cycle_type | Enum | CnvToCnt or CntToCnv | N/A |
start_signal | DigSignal | Digital input signal for cycle to start | N/A |
done_signal | DigSignal | Digital output signal when cycle is done | N/A |
Diagram Quantities
| Symbol | Description |
|---|
| φᵢ | Leg angle |
| θᵢ | Joint angle |
| rᵦ | Base radius |
| Oᵦ | Base offset |
| lᵦ | Base leg length |
| lₚ | Platform leg length |
| Oₚ | Platform offset |
| rₚ | Platform radius |
Appendix A: Payload Details
Network Payloads
| Payload | Fields | Description | Type |
|---|
| CmdRspRslt | done | Request response | Boolean |
Slave Management Payloads
| Payload | Fields | Description | Type |
|---|
| NumSlvsEcatData | num_slaves | Number of slaves | uint |
| rslt | Error code (see Appendix B) | u16 |
| done | Request response | Boolean |
Axis Payloads
| Payload | Key Fields | Description |
|---|
| AxisData | axs_idx, rslt, done | Base axis payload |
| AxisCurrPosData | axs_idx, curr_pos, rslt, done | Current position (mm or deg) |
| AxisMovePosData | axs_idx, end_pos, rslt, done | Absolute position target (mm or deg) |
| AxisMoveVelData | axs_idx, end_vel, rslt, done | Velocity target (mm/s or deg/s) |
| AxisMoveRelData | axs_idx, rel_pos, rslt, done | Relative position (mm or deg) |
| AxisDigData | axs_idx, bit_off, val, rslt, done | Digital I/O |
| AxisBoolData | axs_idx, val, rslt, done | Boolean value |
| AxisAlarmsData | axs_idx, alarms, rslt, done | Alarm vector |
| AxisSleepData | axs_idx, t_tot, rslt, done | Sleep duration (s) |
| AxisSpdPrcnData | axs_idx, prcn, rslt, done | Speed precision |
Group Payloads
| Payload | Key Fields | Description |
|---|
| GroupData | grp_idx, rslt, done | Base group payload |
| GroupMovePosData | grp_idx, end_pos, coord_type, rslt, done | Absolute position (Joint or World) |
| GroupMoveRelData | grp_idx, rel_pos, coord_type, rslt, done | Relative position (Joint or World) |
| GroupDigData | grp_idx, axs_idx, bit_off, val, rslt, done | Digital I/O |
| GroupBoolData | grp_idx, val, rslt, done | Boolean value |
| GroupBgnPosData | grp_idx, coord_type, bgn_pos, rslt, done | Begin position |
| GroupCurrPosData | grp_idx, joint_pos, world_pos, rslt, done | Current position (joint and world) |
| GroupAlarmsData | grp_idx, alarms, rslt, done | Alarm vector |
| GroupSleepData | grp_idx, t_tot, rslt, done | Sleep duration |
| GroupSpdPrcnData | grp_idx, prcn, rslt, done | Speed precision |
| MotnCmdData | rslt, done | Motion command response |
Conveyor Payloads
| Payload | Key Fields | Description |
|---|
| ConvSpdData | cnv_idx, cnv_spd, rslt, done | Conveyor speed (m/s) |
| GroupConvInterceptData | grp_idx, cnv_idx, prt_idx, label, drop_rz, found, rslt, done | Conveyor intercept |
| GroupConvData | grp_idx, cnv_idx, coord_type, rslt, done | General conveyor operation |
| GroupConvPickupData | grp_idx, cnv_idx, prt_idx, label, drop_rz, rslt, done | Conveyor pickup |
| GroupConvDropoffData | grp_idx, cnv_idx, prt_idx, rslt, done | Conveyor drop-off |
Container Payloads
| Payload | Key Fields | Description |
|---|
| GroupContDropoffData | grp_idx, cnt_idx, prt_idx, rslt, done | Container drop-off |
| GroupContPickupData | grp_idx, cnt_idx, prt_idx, drop_rz, rslt, done | Container pickup |
| GroupContPickupIdxData | grp_idx, cnt_idx, prt_idx, drop_rz, i_idx, j_idx, k_idx, rslt, done | Indexed container pickup |
| GroupContData | grp_idx, cnt_idx, rslt, done | General container operation |
| ContData | cnt_idx, rslt, done | Container state |
| ContPartData | cnt_idx, prt_idx, rslt, done | Container part |
| ContBoolData | cnt_idx, val, rslt, done | Container boolean check |
| ContPartBoolData | cnt_idx, prt_idx, val, rslt, done | Container part boolean check |
Low-Level Payloads
| Payload | Key Fields | Description |
|---|
| CoeU8Data | slv_idx, index, sub_index, val, rslt, done | CoE 8-bit operation |
| CoeU16Data | slv_idx, index, sub_index, val, rslt, done | CoE 16-bit operation |
| CoeU32Data | slv_idx, index, sub_index, val, rslt, done | CoE 32-bit operation |
| Cia402OpModeData | slv_idx, op_mode, rslt, done | CiA 402 operation mode |
Appendix B: Motion Result Error Codes
| Value | Description |
|---|
0x0000 | Success |
0x1001 | Initialization axes network error |
0x1002 | Invalid axis index |
0x1003 | Invalid group index |
0x1004 | Invalid conveyor index |
0x1005 | Invalid container index |
0x1006 | Invalid part index |
0x1007 | Invalid digital I/O bit offset |
0x1008 | Axis index not in group |
0x1009 | Motion commanded while not servoed on |
0x100A | Joint position limits reached |
0x100B | Joint velocity limits reached |
0x100C | Joint torque limits reached |
0x100D | World position limits reached |
0x100E | World velocity limits reached |
0x100F | World torque limits reached |
0x1010 | Small or zero length trajectory append dropped |
0x1011 | Servo off commanded while motion running |
0x1012 | Axis and group command trajectory attempting to move the same axis |
0x1013 | Conveyor part not found |
0x1014 | Conveyor speed not initialized |
0x1015 | Conveyor speed exceeds group speed — robot cannot catch up with or track the conveyor |
0x1016 | Conveyor intercept solution did not converge (often due to conveyor running too fast relative to robot) |
0x1017 | Conveyor vertical trajectory failed — max X vel/acc required during move exceeded |
0x1018 | Move append while an alarm present |
0x1019 | Move append while a velocity move is running |
0x101A | Move append joint trajectory to a world trajectory on a group with non-unique inverse kinematics is not allowed |
0x101B | Quick stop append trajectory failed — quick stop already running |
0x101C | Motion command mismatch |
0x101D | Forward kinematics unreachable |
0x101E | Inverse kinematics non-convergent |
0x101F | Inverse kinematics unreachable |
0x1020 | Inverse kinematics singularity |
0x1021 | No end effector config available |
0x1022 | Container was being filled with one part type, then switched to another before full |
0x1023 | Drop-off with auto fill was made while container is already full |
0x1024 | Pickup with auto empty was made while container is already empty |
0x1025 | Container fill index invalid |
0x1026 | Speed percent cannot be zero |
0x1027 | Emergency stop pressed |
0x1FFF | Unspecified motion error |
Appendix C: ECAT Result Error Codes
| Value | Description |
|---|
0x0000 | Success |
0x0001 | Invalid slave index |
0x0002 | Uninitialized slave index |
0x0003 | Uninitialized station address |
0x0004 | Working counter not incremented |
0x0005 | Frame receive timeout |
0x0006 | Frame command mismatch |
0x0007 | ESI file not found |
0x0008 | SM data cat section not found in SSI |
0x0009 | Register response mismatch |
0x000A | SSI maximum byte length reached |
0x000B | Max retries reached while polling CoE SM1 response mbox ready status |
0x000C | CoE mbox emergency |
0x000D | CoE mbox abort code |
0x000E | CiA operational mode maximum retries reached |
0x000F | EtherCAT command mismatch |