Getting Started
Thank you for using the Adeeb Robotics Controller software library.
To launch the library, run from the command prompt or terminal the following:
adeeb_robotics_controller <path_to_config_file>
The folder config_files contains example config files, you may use any of them, for example:
adeeb_robotics_controller config_files/delta_config.yml
Note that on linux and macos, you need to run the above command with elevated privileges, i.e sudo.
Now you may perform (A) and/or (B) below:
(A)
You may use any browser and go to:
127.0.0.1:55000
There you may access the web based UI, modify the configuration, jog the robot, view 3D simulation, or run python motion and io scripts.
You may also use any phone or tablet on the same LAN as the PC running the adeeb_robotics_controller server and then browse to:
<server_lan_ip>:55000
You may obtain the LAN ip address of the server by running ifconfig or ipconfig on unix or windows systems respectively.
(B)
You may use a text editor to modify the config files and/or python scripts and then run the python script from a terminal:
python3 <path_to_python_script>
Prerequisites
Linux
If you are using ubuntu, you may simply run the following command to instll a realtime kernel:
sudo apt install ubuntu-realtime
Otherwise:
You may build and install your own realtime linux kernel with the preempt rt patch.
Note: even kernel releases that have the preempt rt patch merged in mainline (i.e >= 6.12), the preempt rt patch will still provide better perfomrance, because the merge doesn’t cover everything!
You may follow the guide in the link below:
https://www.acontis.com/en/building-a-real-time-linux-kernel-in-ubuntu-preemptrt.html
Note: that the guide is missing the following steps just before the “sudo make” command:
- 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 just generate as such:
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 with the new kernel because secure boot will not accept self signed certificates if they are not pre-registered.
Windows
Download and install npcap from:
https://npcap.com/
MacOS
- install required aravis library using meson build system:
https://aravisproject.github.io/aravis/aravis-stable/building.html
- Install opencv
brew install llvm opencv
Avoid running motion commands from multiple python scripts simultanously.
If you want to connect to the web based UI via a phone or tablet, you may need to turn off the firewall under network settings on Windows and MacOS.
The folder python_scripts contains example python script files, you may use any of them except for arc.py, that is the python helper library, for example:
python3 pack_expo_demo.py
Certain scripts are meant to run with certain configs, for example:
-
The pack_expo_demo.py and autorun.py scripts are meant to be run with delta_config.yml and demo_stand_config.yml config files.
-
The serial_dh_example.py script is meant to be run with the kuka_7_axis_config.yml config file.
The config file is meant to define system settings, such as type of robot configured, and conveyor/container/camera positions for pick and place.
The python script exposes motion and io commands.
For more information on the config file and python scripts, please review our “Motion Controller API” manual found on our downloads page:
https://www.adeebrobotics.com/downloads
| 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 |