Racecom API documentation

The Key-Int-Map and Key-Pose-Map functionality of the OPC UA service can be accessed via racecom operation calls. The following example creates a new Key-Integer-Pair on the OPC UA server and then requests its value.

racecom -m tcp://<robot-ip>:11511 call opcua replaceInt '{key: "my key"; value: 123;}'
racecom -m tcp://<robot-ip>:11511 call opcua readInt '{key: "my key"; timeout: 0.0;}'

List of all Operations

A list of all operations of the OPC UA service running on the robot with the IP address <robot-ip> can be generated via racecom using the following command:

$ racecom -m tcp://<robot-ip>:11511 list-operations opcua
  Operation opcua.clearIntMap
    request type: {}
    result type: {}
    error type: string
  Operation opcua.clearPoseMap
    request type: {}
    result type: {}
    error type: string
  Operation opcua.deleteInt
    request type: { string key; }
    result type: bool
    error type: string
  Operation opcua.deletePose
    request type: { string key; }
    result type: bool
    error type: string
  Operation opcua.readInt
    request type: { string key; float timeout; }
    result type: int
    error type: string
  Operation opcua.readIntMap
    request type: {}
    result type: []{ string key; int value; }
    error type: string
  Operation opcua.readIntMapKeys
    request type: {}
    result type: []string
    error type: string
  Operation opcua.readPose
    request type: { string key; float timeout; }
    result type: [16]float
    error type: string
  Operation opcua.readPoseMap
    request type: {}
    result type: []{ string key; [16]float value; }
    error type: string
  Operation opcua.readPoseMapKeys
    request type: {}
    result type: []string
    error type: string
  Operation opcua.replaceInt
    request type: { string key; int value; }
    result type: {}
    error type: string
  Operation opcua.replacePose
    request type: { string key; [16]float value; }
    result type: {}
    error type: string
  Operation opcua.takeInt
    request type: { string key; float timeout; }
    result type: int
    error type: string
  Operation opcua.takePose
    request type: { string key; float timeout; }
    result type: [16]float
    error type: string

Timeout

For certain operations, a timeout, i.e. a maximum waiting time for the key to exist can be specified. If timeout is negative, the execution will wait indefinitely.

Read vs. Take

Separate operations exist for reading and taking Key-Value-Pairs. With read operations, the Key-Value-Pair will remain on the server. With take operations, the Key-Value-Pair will get deleted immediately after the operation has been executed.

operation request type result type error type description
clearIntMap {} {} string Clears the entire key-integer map. Does not return with an error.
clearPoseMap {} {} string Clears the entire key-pose map. Does not return with an error.
deleteInt { string key; } bool string Deletes the key-integer pair with the specified key. Returns true if the key-integer pair has been deleted. Returns false if the key-integer pair does not exist. Does not return with an error.
deletePose { string key; } bool string Deletes the key-pose pair with the specified key. Returns true if the key-pose pair has been deleted. Returns false if the key-pose pair does not exist. Does not return with an error.
readInt { string key; float timeout; } int string Reads and returns the key-integer pair with the specified key. If the key does not exists, the operation will wait for the specified timeout time and return immediately, if a key-integer pair with the specified key is created. If no key is existing within the specified timeout time, the operation will return with an error.
readIntMap {} []{ string key; int value; } string Reads and returns the entire key-integer map. Does not return with an error.
readIntMapKeys {} []string string Reads and returns all keys of the entire key-integer map. Does not return with an error.
readPose { string key; float timeout; } [16]float string Reads and returns the key-pose pair with the specified key. If the key does not exists, the operation will wait for the specified timeout time and return immediately, if a key-pose pair with the specified key is created. If no key is existing within the specified timeout time, the operation will return with an error.
readPoseMap {} []{ string key; [16]float value; } string Reads and returns the entire key-pose map. Does not return with an error.
readPoseMapKeys {} []string string Reads and returns all keys of the entire key-pose map. Does not return with an error.
replaceInt { string key; int value; } {} string Replaces the key-integer pair with the specified key. If no key-integer pair with the given key exists, a new one will be created. The specified value will be assigned. Does not return with an error.
replacePose { string key; [16]float value; } {} string Replaces the key-integer pair with the specified key. If no key-pose pair with the given key exists, a new one will be created. The specified value will be assigned. Does not return with an error.
takeInt { string key; float timeout; } int string Similar to readInt, except that the specified key-integer pair will be taken, i.e. it will be deleted at the end of the operation call.
takePose { string key; float timeout; } [16]float string Similar to readPose, except that the specified key-pose pair will be taken, i.e. it will be deleted at the end of the operation call.