2.2. Config Files
The ${VORAUS_CONFIG_DIR} folder contains the following elements:
In addition to the directories defined in the table above, some robot drivers might define additional subdirectories, which are not explicitly listed here. These subdirectories will be explained in the corresponding robot integration sections in future versions of this documentation. If you have any questions in the meantime, please contact the voraus support.
2.2.1. Main Configuration File
The main configuration file, the config.json, contains basic system settings.
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
bool |
Checks the Collision Model of the Robot and Collision Model of the Tool against defined non-safe boundary planes, which can be set by the user |
required |
|
bool |
Check the Collision Model of the Robot and Collision Model of the Tool against a defined Cartesian workspace cuboid, which is defined in Cartesian Constraints |
required |
|
bool |
Check the Collision Model of the Robot and Collision Model of the Tool against defined non-safe forbidden volumes which can be set by the user |
required |
|
bool |
Check the Collision Model of the Robot and Collision Model of the Tool against self collisions |
required |
|
double |
The cycle time may exceed this value without an error being set. If the cycle time is exceeded but the tolerance is not, a warning is written to the log. The cycle time is robot specific and configured in Robot Configs. The value is defined in \([\mathrm{s}]\). |
optional, default value: |
|
struct |
Basic system settings, see Table System Parameter File |
required |
System Parameter
The system parameters are a struct in the main configuration file and define the basic system settings.
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
unsigned long |
Defines the maximum number of motion objects that can be prepared at the same time |
required |
|
unsigned long |
Number of cycles for the internal interpolator filter, used for smoothing the path except when transitioning into a brake ramp (see Axes Stop Rapid for more information) |
required |
|
unsigned long |
Number of cycles for the internal interpolator filter, used for smoothing the path except when transitioning into a brake ramp (see Axes Stop Rapid for more information) |
required |
|
unsigned long |
Number of cycles to maintain a manually controlled movement command before a keep alive signal is expected |
required |
|
unsigned long |
Number of path-preview points of each motion command |
required |
|
bool |
Print received OPC UA commands JSON string to console and log file |
required |
|
struct |
required |
|
|
double |
Transition time for axis-based stops, which defines the time required to enter the braking ramp by transitioning from the current acceleration to deceleration, and to exit the braking ramp by transitioning from deceleration to zero acceleration. It is specified in seconds \([\mathrm{s}]\). The value must be at least twice the cycle time. If it is not an integer multiple of twice the cycle time, it is rounded accordingly. The higher the value, the longer rapid stops will take, or the higher the deceleration will be during a time-based axis stop. For time-based axis stops, the value must not exceed half of the stop duration. |
optional, default value: |
Fieldbus Parameter
The fieldbus parameters MissingFrameTolerance and TimeOut are only used by the Yu Industrial robot.
Those are optional parameters for other robot types.
2.2.2. Robot Configs
Robot configuration files must use the same name as the corresponding ${VORAUS__robot__robotType} to ensure
correct linkage between configuration and runtime components.
For example, if you specified VORAUS__robot__robotType="VORAUS_INDUSTRIAL_ROBOT", the corresponding robot
configuration file must be located at ${VORAUS_DATA_DIR}/robots/VORAUS_INDUSTRIAL_ROBOT.json.
Fieldbus Configs
Some robot types additionally require dedicated fieldbus configurations from an additional subfolder
${VORAUS__robot__robotType}_FieldbusConfig. These consist of an ENI (EtherCAT Network Information) file, an
EtherCAT mapping, and a specific fieldbus configuration, which together define the communication structure and device
parameters for the robot’s fieldbus network.
Robot Config File
The robot configuration file contains robot settings, as defined in the following table.
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
Vector of structs |
Axes specific data |
required |
|
struct |
Representation of the robot structure using multiple collision volumes, defining possible collision modules that may collide with each other (see Collision Model of the Robot) |
required |
|
string |
Fieldbus type |
required |
|
string |
Description of the robot kinematics |
required |
|
double |
Velocity limit in \([\mathrm{m/s}]\) for TCP (Tool Center Point) and elbow (if configured in Elbow monitoring) |
required |
|
unsigned int |
Number of axes (must currently always be |
required |
|
unsigned long |
Version of this config file |
required |
|
string |
Robot name: will be published via OPC UA |
required |
|
struct |
Elbow monitoring definitions |
required |
|
double |
Cycle time of the main thread, which must correspond to the fieldbus cycle time \([\mathrm{s}]\) |
required |
|
string |
Manufacturer name: will be published via OPC UA |
optional, default value: |
|
struct |
Only used by Yu Industrial robot |
optional, default value: |
|
struct |
Only used by Yu Industrial robot |
optional, default value: |
|
struct |
Monitor Measured Values of TCP velocity and force |
optional |
|
Vector of structs |
Relative position limits between two axes |
optional, default value: no relative limits |
|
Vector of doubles |
Transformation between Robot CS (Coordinate System) and the first DH coordinate system Defined by a Cartesian vector {x, y, z, A, B, C}.
Not tested on all robots yet! |
optional, default value: { |
|
struct |
Definition of available IO Interfaces |
optional, default value: no IO interfaces |
|
string |
Part number of the robot: will be published via OPC UA |
optional, default value: |
Axes
Each axis is specified by several structs:
Axes.DriveParameter contain general settings such as axis type and mounting direction.
Axes.Limits contain manufacturer specifications such as position or speed limits.
Axes.DH specify the kinematic structure of the robot structure.
Axes.LinkDynamics are used as the basis for torque calculations in the dynamic model.
Axes.DriveParameters
Drive parameters specify the general specifications of the axis. These include the axis type, mounting parameters, gearbox and friction coefficients.
Note
GearRatio, FrictionViscous, FrictionCoulomb, and MotorInertia are supported by a few
robots. ratedMotorTorque depends on the configuration of the fieldbus and the robot. If you have any
questions, please contact the voraus support.
Axes.Limits
This struct is used to specify the manufacturer limits of the drives.
Most of this limits will be used within the MACHINE limit set which is explained at Limit Set.
Further information about limits in voraus Robot Control can be found at Overview of the Configurable Limitations.
All axes limits are defined on the load side, with:
Limits of rotational axes are defined in \([\mathrm{°}], [\mathrm{°/s}], [\mathrm{°/s^2}]\) or \([\mathrm{Nm}]\).
Limit of prismatic axes are defined in \([\mathrm{m}], [\mathrm{m/s}], [\mathrm{m/s^2}]\) or \([\mathrm{N}]\).
Axes.DH
The position and orientation of the robot axes is described using the Denavit-Hartenberg (DH) convention. In the following section, the coordinate system fixed to each robot link is called DH coordinate system (DH-CS). The DH parameters of the table below correspond to the classic DH convention.xis.
Axes.LinkDynamics
The inertia tensor is measured with respect to a coordinate system located on the center of mass and is parallel to the DH coordinate system.
Collision Model of the Robot
Representation of the robot structure using multiple collision volumes.
Collision modules that may collide with each other can be monitored as collision pairs to detect and prevent self collisions or violations of Cartesian workspaces, see also Collision Model.
CollisionModel.CollisionPairs
Collision pairs are used to monitor and prevent self-collisions. The distance between the defined collision volumes is monitored cyclically and within the path pre-interpolation. A collision pair can consist of different volume types.
CollisionModel.Capsules and CollisionModel.Cylinders
Representation of a robot structure part using a cylinder or capsule volume. A capsule is a 3D geometric shape consisting of a cylinder with hemispherical caps on each end.
Cylinders and capsules are defined by a radius, a cap, and a bottom point.
CollisionModel.Spheres
Representation of a robot structure part using a spherical volume.
A sphere is defined by a radius and a center point.
Elbow
Elbow monitoring can be switched on and off depending on the robot. The location of the elbow is defined within the kinematic type.
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
bool |
Monitor elbow position |
required |
|
bool |
Monitor elbow velocity |
required |
MSC and Media Flange
Only used by Yu Industrial robot! It will be used to compare with the actual robot setup.
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
string |
Configuration of the expected partnumber |
required |
Monitor Measured Values
Depending on the robot system and the quality of the measurement data, it may or may not be advisable to use
MonitorMeasuredValues to monitor the data.
Axes Position Limits Relative
Depending on the robot type, it can be useful to use AxesPositionLimitsRelative to define relative position
limits between two axes. These can be used, for example, to prevent self-collisions.
IO Interfaces
The ioInterfaces is the basic definition of how many IOs are supported by the robot interfaces. Depending on the
integration, the IOs must be aligned with the fieldbus configuration.
Note
The tool interface is not used yet.
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
struct |
Definition of IOs at the tool flange |
optional, default value: No IOs |
|
struct |
Definition of IOs at the control cabinet |
optional, default value: No IOs |
Defines the number of digital and analog IOs at this interface.
2.2.3. Tool Configs
Tool files are stored in both the config and data directories. The config directory contains officially supported tools
that are not editable by the user. These files serve as a backup source in case an original tool is accidentally
deleted. The data directory, (data_dir/tools/) on the other hand, contains all tools that have been created or
modified by the user. If a tool exists in both the config and data directories, the system automatically prioritizes and
loads the version from the data directory.
The tool configuration file contains the following settings:
The tool config has a number of parameters that can only be used by Yu. An overview can be found in the following table.
Note
Since commands and states refer to tool IOs that are only used by the Yu Industrial, they are provisionally classified as Yu-specific.
Tool Transformation
ToolTransformation defines the transformation from Flange CS into Tool CS:
For more information on the Tool CS and other coordinate systems, see the section Coordinate Systems Overview in the documentation.
Center Of Mass
CenterOfMass is the definition of the tool center of mass.
Inertia
Definition of the tool inertia.
Collision Model of the Tool
The Tool Collision Model section defines the collision model specific to the tool. While the configuration and parameters are defined independently, they are chosen to be comparable to those used in the robot collision model described in section Collision Model of the Robot.
The only extension is that collision pairs can contain volumes from both the robot and tool collision models.
States
States is a configuration that is currently specific to the Yu Industrial robot and will be revised in the future to support a more general setup.
Note
Digital/Analog outputs are the Tool IOs.
Analog Input Definition
Command
Command is a configuration that is currently specific to the Yu Industrial robot and will be revised in the future to support a more general setup.
Note
Digital/Analog outputs are the Tool IOs.
2.2.4. rt Settings Configs
The rtSettings.json config file contains the available realtime configurations. It provides options for memory
management, thread configuration and CPU related properties. An example for the config file is given in
Example for rtSettings.json.
Note
The realtime settings are only applied if the environment variable VRC_USE_REALTIME_ENVIRONMENT is set to
True. Otherwise, all realtime settings are deactivated, the rtSettings.json config file will not
be read, and the voraus Robot Control runs in a non-realtime environment. See the environment variable section
Realtime and Performance Settings for more details.
IRQ Settings
Adjusts the RT priorities for all irq (interrupt request) processes of the configured fieldbus network interface.
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
bool |
No priority modification if false |
required |
|
unsigned int |
New priority [0, 99] |
required |
Thread Settings
Specifies thread settings for all spawned threads. Each thread setting is specified by a threadSettings struct.
ThreadSettings Struct
Define basic thread settings like scheduling priority or CPU affinity of a specific thread.
Example for rt Setting Configuration File
The following code block exemplary shows a valid rtSettings.json file.
1{
2 "IRQSettings": {
3 "adjustIRQSettings": true,
4 "priority": 84
5 },
6 "checkForRealtimeKernel": true,
7 "lockMemory": true,
8 "preventSleepStates": true,
9 "threadSettings": {
10 "crashlogger": {
11 "cpuAffinity": -1,
12 "priority": 0
13 },
14 "filewriter": {
15 "cpuAffinity": -1,
16 "priority": 21
17 },
18 "logDataToFile": {
19 "cpuAffinity": -1,
20 "priority": 21
21 },
22 "main": {
23 "cpuAffinity": -1,
24 "priority": 49
25 },
26 "motionplanner": {
27 "cpuAffinity": -1,
28 "priority": 39
29 },
30 "opcua": {
31 "cpuAffinity": -1,
32 "priority": 21
33 },
34 "sdo": {
35 "cpuAffinity": -1,
36 "priority": 47
37 },
38 "ibvEcatMonitor": {
39 "cpuAffinity": -1,
40 "priority": 0
41 },
42 "ibvEcatDiagnostics": {
43 "cpuAffinity": -1,
44 "priority": 0
45 },
46 "fileLogger": {
47 "cpuAffinity": -1,
48 "priority": 20
49 },
50 "rcEcatAcyclic": {
51 "cpuAffinity": -1,
52 "priority": 0
53 }
54 }
55}
2.2.5. KUKA Configs
For the KUKA configuration a separate config file, kuka/config.json exists. In this the RSI connection and
limitations for the T1 mode are defined. An example for the config file is given in Example for kuka/config.json.
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
struct |
RSI connection (IP address + port) |
required |
|
struct |
T1 limits |
required |
Address
Configuration of the RSI connection
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
string |
Server IP as string |
required |
|
unsigned short int |
RSI port |
required |
Limits T1
The T1 limits will be used within a KukaT1Limits limit set which will be created at startup.
voraus Robot Control automatically enables or disables the limit set based on the received kuka T1 mode.
Further information about limits in voraus Robot Control can be found at Overview of the Configurable Limitations.
Example for KUKA Configuration File
2.2.6. Compliant Behaviour Configs
compliantBehaviour is a configuration that is currently specific to the Yu Industrial robot and will be revised
in the future to support a more general setup. Please be aware, that especial self collision and tool collision are
still Yu Industrial-related. For the Yu Industrial robot, this configuration is also used for additional torque
calculation for the gravitation compensation and the collision reaction.
Note
All compliantBehaviour configs are optional. Therefore, it is possible that the folder is empty or does not
exist.
Compliant Behaviour Near Axis Limits
The compliantBehaviourNearAxisLimits is defined in the following table. An exemplary application is shown in the
Example for compliantBehaviourNearAxisLimits.json.
Compliant Behaviour Near Self Collision
The compliantBehaviourNearSelfCollision is defined in the following table. An exemplary application is shown in
the Example for compliantBehaviourNearSelfCollision.json.
1 {
2 "IsEnabled": true,
3 "CompliantBehaviourNearSelfCollisionParameters": [
4 {
5 "PairName": "Base1Wrist8",
6 "AllowablePairDistance": 0.1,
7 "ResistanceGain": 2000.0
8 },
9 {
10 "PairName": "Base1Hand10",
11 "AllowablePairDistance": 0.1,
12 "ResistanceGain": 2000.0
13 },
14 {
15 "PairName": "Base1MediaFlange",
16 "AllowablePairDistance": 0.08,
17 "ResistanceGain": 2000.0
18 },
19 {
20 "PairName": "Base1MediaFlange11",
21 "AllowablePairDistance": 0.07,
22 "ResistanceGain": 2000.0
23 },
24 {
25 "PairName": "Base1MediaFlange12",
26 "AllowablePairDistance": 0.07,
27 "ResistanceGain": 2000.0
28 },
29 {
30 "PairName": "Base2Wrist8",
31 "AllowablePairDistance": 0.1,
32 "ResistanceGain": 2000.0
33 },
34 {
35 "PairName": "Base2Hand10",
36 "AllowablePairDistance": 0.1,
37 "ResistanceGain": 2000.0
38 },
39 {
40 "PairName": "Base2MediaFlange",
41 "AllowablePairDistance": 0.08,
42 "ResistanceGain": 2000.0
43 },
44 {
45 "PairName": "Base2MediaFlange11",
46 "AllowablePairDistance": 0.07,
47 "ResistanceGain": 2000.0
48 },
49 {
50 "PairName": "Base2MediaFlange12",
51 "AllowablePairDistance": 0.07,
52 "ResistanceGain": 2000.0
53 },
54 {
55 "PairName": "Wrist8MediaFlange11",
56 "AllowablePairDistance": 0.13,
57 "ResistanceGain": 2000.0
58 },
59 {
60 "PairName": "Wrist8MediaFlange12",
61 "AllowablePairDistance": 0.13,
62 "ResistanceGain": 2000.0
63 },
64 {
65 "PairName": "LowerArm7MediaFlange11",
66 "AllowablePairDistance": 0.125,
67 "ResistanceGain": 3000.0
68 },
69 {
70 "PairName": "LowerArm7MediaFlange12",
71 "AllowablePairDistance": 0.125,
72 "ResistanceGain": 3000.0
73 }
74 ]
75 }
Compliant Behaviour Near Tool Self Collision
The compliantBehaviourNearToolSelfCollision is defined in the following table. An exemplary application is shown
in the Example for compliantBehaviourNearToolSelfCollision.json.
1 {
2 "CompliantBehaviourNearSelfCollisionParameters": [
3 {
4 "PairName": "ToolBase1",
5 "AllowablePairDistance": 0.07,
6 "ResistanceGain": 2000.0
7 },
8 {
9 "PairName": "ToolBase2",
10 "AllowablePairDistance": 0.07,
11 "ResistanceGain": 2000.0
12 },
13 {
14 "PairName": "ToolShoulder3",
15 "AllowablePairDistance": 0.07,
16 "ResistanceGain": 2000.0
17 },
18 {
19 "PairName": "ToolLowerArm7",
20 "AllowablePairDistance": 0.07,
21 "ResistanceGain": 2000.0
22 }
23 ]
24 }
2.2.7. Yu Configs
This configuration are only for the YU Industrial robot and therefore optional.
The JSON file is named partnumbers.json, and this config file can be used to overwrite the defined part numbers
from the robot config file, see section Robot Configuration File for more information.
An example for the config file is given in Example for partnumbers.json.
Example for Part Numbers Configuration File
2.2.8. Port Connections Config
The port connections config file contains settings for the different port connections.
It is only required if an external robot driver is used as a robot communication interface instead of the integrated
fieldbus drivers. This is currently enabled by setting the environment variable VRC_USE_ROBOT_DRIVER to
true. See the section Overview of the Environment Variables for more details.
The port connections config file must be located at ${VORAUS_CONFIG_DIR}/port_connections.json and contains
settings defined in the following table.
Robot Driver Port Config
The RobotDriverPortConfig struct contains all configuration parameters related to the robot driver port
connection, as defined in the following table.
Parameter |
Type |
Description |
Required/Optional |
|---|---|---|---|
|
struct |
The names of the robot driver ports. See Table RobotDriverPortConfig.PortNames for details. |
optional, default value: Same as default port names defined in RobotDriverPortConfig.PortNames. |
|
bool |
If false, timeouts in the communication will not lead an error, instead indefinitely wait for the next notification of the robot driver. |
optional, default value: |
|
double |
Configured overbooking factor of the robot driver. |
optional, default value: |
timingTDriverPreNominalMicroseconds |
integer |
Nominal time in \(\mathrm{µs}\) between the start of the cycle and the robot driver notifying the motion. |
optional, default value: \(\mathrm{500 µs}\) |
|
integer |
Number of consecutive notification timeouts until the port is considered disconnected and the motion has to enter a non-operational state. |
optional, default value: |
portConnectionTimeoutSeconds |
integer |
Timeout in \(\mathrm{s}\) for connecting to the port during initialization. |
optional, default value: \(\mathrm{30 s}\) |
|
integer |
Timeout in \(\mathrm{s}\) for the handshake protocol. |
optional, default value: \(\mathrm{10 s}\) |
RobotDriverPortConfig.PortNames
The PortNames struct contains the names of the robot driver ports, as defined in the following table.