Adding a new robot to CoraPlex

Adding a new robot to CoraPlex#

To add a new robot to CoraPlex, you need two things:

  • A robot description, expressed as an AbstractRobot subclass

  • Motions that can be executed for the robot, including any robot-specific motion overrides

Robot Description#

The robot description defines the semantic properties of the robot that cannot be extracted from the robot’s URDF automatically. This includes the kinematic chains the robot can move (like the arms), the descriptions of the end effectors, and the descriptions of the cameras mounted on the robot.

A robot description is an AbstractRobot subclass that composes the robot from the parts in semantic_digital_twin.robots.robot_parts and is reconstructed from a World via from_world. An overview of the available parts and how a robot is composed from them can be found in the Abstract Robot Overview page; the existing PR2 and HSRB subclasses serve as concrete templates.

Motion Execution#

Motions are the components that actually control the robot. The default motions in coraplex.robot_plans.motions already suffice to control a new robot in simulation. If a robot needs a different implementation of a particular motion, you can provide a robot-specific override via AlternativeMotion (see the existing mappings in coraplex.alternative_motion_mappings). The Motion Execution in CoraPlex page explains how motions are turned into giskard motion state charts and executed.