Tesseract  0.28.4
Loading...
Searching...
No Matches
SRDF

The Semantic Robot Description Format (SRDF) complements the URDF and specifies joint groups, default robot configurations, additional collision checking information, and additional transforms that may be needed to completely specify the robot's pose. The recommended way to generate a SRDF is using the Tesseract Setup Assistant.

Tesseract SRDF Supported Features

Tesseract supports the following elements defined in SRDF

Groups

Groups (also referred to as kinematics groups) define collections of links and joints that are used for planning.

<group name="manipulator">
<chain base_link="base_link" tip_link="tool0" />
</group>
<group name="manipulator_joint_group">
<joint name="joint_a1"/>
<joint name="joint_a2"/>
<joint name="joint_a3"/>
<joint name="joint_a4"/>
<joint name="joint_a5"/>
<joint name="joint_a6"/>
<joint name="joint_a7"/>
</group>

Groups can be specified in several ways:

Collection of Joints

A group can be specified as a collection of joints. All the child links of each joint are automatically included in the group.

Serial Chain

A serial chain is specified using the base link and the tip link. The tip link in a chain is the child link of the last joint in the chain. The base link in a chain is the parent link for the first joint in the chain.

Group States

The SRDF can also store fixed configurations of the robot. A typical example of the SRDF in this case is in defining a home position for a manipulator. The configuration is stored with a string id, which can be used to recover the configuration later.

Group Tool Center Points

Store fixed tool center point (TCP) definitions by string id, which can be used to recover the TCP during operation like planning.

Allowed Collision Matrix

Define link pairs that are allowed to be in collision with each other. This is used during contact checking to avoid checking links that are allowed to be in collision and contact data should not be calculated.

Tesseract SRDF Extensions

Tesseract extends SRDF with the following additional elements.

Contact Manager Plugins File

The contact manager plugins file is a YAML-formatted file that defines the plugins to use for collision checking. Minimally, this must include the following keys:

contact_manager_plugins:
  search_paths: [<(optional) list of directories in which to look for contact manager plugins>]
  search_libraries: [<(optional) list of libraries in which to search for contact manager plugins>]
  discrete_plugins:
    default: <key of the discrete contact manager plugin to use as default>
    plugins:
      <discrete contact manager key>:
        class: <discrete contact manager plugin class name>
  continuous_plugins:
    default: <key of the continuous contact manager plugin to use as default>
    plugins:
      <continuous contact manager key>:
        class: <continuous contact manager plugin class name>

Here is an example contact manager plugins file:

contact_manager_plugins:
search_paths:
- /usr/local/lib
search_libraries:
- tesseract_collision_bullet_factories
- tesseract_collision_fcl_factories
discrete_plugins:
default: BulletDiscreteBVHManager
plugins:
BulletDiscreteBVHManager:
class: BulletDiscreteBVHManagerFactory
BulletDiscreteSimpleManager:
class: BulletDiscreteSimpleManagerFactory
FCLDiscreteBVHManager:
class: FCLDiscreteBVHManagerFactory
continuous_plugins:
default: BulletCastBVHManager
plugins:
BulletCastBVHManager:
class: BulletCastBVHManagerFactory
BulletCastSimpleManager:
class: BulletCastSimpleManagerFactory

Kinematics Plugins File (Optional)

The kinematics plugins file is a YAML-formatted file that defines the plugins to use for forward and inverse kinematics. Minimally, it must include the following keys:

kinematics_plugins:
  search_paths: [<(optional) list of directories in which to look for kinematics plugins>]
  search_libraries: [<(optional) list of libraries in which to search for kinematics plugins>]
  forward_kinematics:
    <name of srdf kinematic group>:
      default: <key of the forward kinematics solver that should be used as default>
      plugins:
        <FK solver key>
          class: <FK plugin class name>
          config: <FK plugin configuration parameters>
  inverse_kinematics:
    <name_of_srdf_kinematics_group>:
      default: <key of the inverse kinematics solver that should be used as default>
      plugins:
        <IK solver key>
        - class: <IK plugin class name>
          config: <IK plugin configuration parameters>

Here is an example kinematics plugins file:

kinematic_plugins:
search_libraries:
- tesseract_kinematics_kdl_factories
inv_kin_plugins:
manipulator:
default: KDLInvKinChainLMA
plugins:
KDLInvKinChainLMA:
class: KDLInvKinChainLMAFactory
config:
base_link: base_link
tip_link: iiwa_tool0
KDLInvKinChainNR:
class: KDLInvKinChainNRFactory
config:
base_link: base_link
tip_link: iiwa_tool0

Forward Kinematics Solvers

Tesseract supports the following FK solvers

KDL

KDLFwdKinChain:
class: KDLFwdKinChainFactory
config:
base_link: base_link
tip_link: tool0

Inverse Kinematics Solvers

Tesseract supports the following IK solvers.

OPW

OPWInvKin:
class: OPWInvKinFactory
config:
base_link: base_link
tip_link: tool0
params:
a1: 0.100
a2: -0.135
b: 0.00
c1: 0.615
c2: 0.705
c3: 0.755
c4: 0.085
offsets: [0, 0, -1.57079632679, 0, 0, 0]
sign_corrections: [1, 1, 1, 1, 1, 1]

KDL Levenberg-Marquardt (LMA)

KDLInvKinChainLMA:
class: KDLInvKinChainLMAFactory
config:
base_link: base_link
tip_link: tool0

KDL Newton-Raphson (NR)

KDLInvKinChainNR:
class: KDLInvKinChainNRFactory
config:
base_link: base_link
tip_link: tool0

Robot on Positioner (ROP)

Add and assign a Robot on Positioner (ROP) inverse kinematics solver to a predefined group. This assumes a custom invserse kinematics solver already exists for the robot, and the positioner is to be sampled at some resolution to find a larger set of inverse kinematic solutions.

ROPInvKin:
class: ROPInvKinFactory
config:
manipulator_reach: 2.0
positioner_sample_resolution:
- name: gantry_axis_1
value: 0.1
- name: gantry_axis_2
value: 0.1
positioner:
class: KDLFwdKinChainFactory
config:
base_link: world
tip_link: base_link
manipulator:
class: OPWInvKinFactory
config:
base_link: base_link
tip_link: tool0
params:
a1: 0.100
a2: -0.135
b: 0.00
c1: 0.615
c2: 0.705
c3: 0.755
c4: 0.086
offsets: [0, 0, -1.57079632679, 0, 0, 0]
sign_corrections: [1, 1, 1, 1, 1, 1]

Robot External Positioner (REP)

Add and assign a Robot with External Positioner (REP) inverse kinematics solver to predefined group. This assumes a custom invserse kinematics solver already exists for the robot and the positioner is to be sample at some resolution to find a larger set of inverse kinematic solutions.