Robots#

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)#
set_speed(speed: float)#
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.

property base: Frame#
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. 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 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)#

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.