class Robot
model: str

The model name of the robot.

name: str

The unique name of the robot in the project.

set_base(base: Frame)

Sets the origin of the robot’s base.

set_speed(speed: float)

Sets the velocity, acceleration, and jerk limits to a factor [0, 1] of their respective default (maximum) values.

class RobotArm(Robot)
degrees_of_freedom: int

The number of joints of the robot.

min_position: Config

Minimum position for each joint. [rad]

max_position: Config

Maximum position for each joint. [rad]

max_velocity: Config

Maximum absolute velocity for each joint. [rad/s]

max_acceleration: Config

Maximum absolute acceleration for each joint. [rad/s^2]

max_jerk: Config

Maximum absolute jerk for each joint. [rad/s^3]

The obstacles for each robot link.

end_effector_obstacle: Obstacle | None

An (optional) obstacle attached to the robot’s flange.

item_obstacle: Obstacle | None

An (optional) obstacle attached to the robot’s TCP. The obstacle’s frame is defined relative to the TCP frame.

property base: Frame

The origin of the robot’s base.

property flange_to_tcp: Frame

The transformation from the robot’s flange to the robot’s TCP, e.g. for using inverse kinematics or an item obstacle.

set_speed(speed: float)

Sets the velocity, acceleration, and jerk limits to a factor [0, 1] of their respective default (maximum) values.

calculate_tcp(joint_position: Config) Frame

Calculates the forward_kinematics and returns the frame of the robot’s TCP.

calculate_tcp_speed(joint_position: Config, joint_velocity: Config) float

Calculates the forward_kinematics and returns the norm of the Cartesian velocity of the robot’s TCP.

inverse_kinematics(tcp: Frame, reference_config: Config = None) Config

Finds a joint position so that the robot’s TCP is at the given frame, which is defined in the world coordinate system. In general, the solution will try to stay close to the reference_config parameter.

We use a numerical optimization for robots with more than 6 degrees of freedom. Then, the reference configuration is used as a starting point for the optimization.

This method does not take the environment’s collision model into account.

class ABBIRB1200590(RobotArm)
class ABBIRB1300714(RobotArm)
class ABBIRB1600612(RobotArm)
class ABBIRB460060205(RobotArm)
class ABBIRB6700150320(RobotArm)
class ABBYuMiIRB14000(Robot)
left: ABBYuMiArm
right: ABBYuMiArm
class DualArm(Robot)
left: RobotArm
right: RobotArm
__init__(left: RobotArm, right: RobotArm)
class FanucLR10iA10(RobotArm)
class FanucLRMate200iD7L(RobotArm)
class FanucM20iB25(RobotArm)
class FanucM710iC45M(RobotArm)
class FrankaPanda(RobotArm)
class KinovaGen37DoF(RobotArm)
class KukaIiwa7(RobotArm)
class MecademicMeca500(RobotArm)
class UfactoryXArm7(RobotArm)
class UniversalUR5e(RobotArm)
class UniversalUR10(RobotArm)
class UniversalUR10e(RobotArm)
class UniversalUR20(RobotArm)
class YaskawaGP12(RobotArm)
class YaskawaHC10(RobotArm)
class YaskawaHC20(RobotArm)
class CustomRobot(Robot)


Custom robots are in a beta preview with rudimentary support right now. If possible, prefer to use robots from our supported robot library, as they will be significantly faster to compute and easier to use.

The translations between the links.

joint_axes: List[List[float]]

The axis of the joints.

joint_types: List[JointType]

The type of the joints: Currently revolute, continuous, prismatic, and fixed joints are supported.

static load_from_urdf_file(file: Path, base_link='base_link', end_link='flange') CustomRobot

Loads a custom robot from a *.urdf file, and sets the robot arm to the kinematic chain between the given base_link and the end_link.