Overview
Robot processors handle transformations specific to physical robots:- Kinematic transformations: Forward/inverse kinematics between joints and end-effector
- Safety bounds: Workspace limits and velocity constraints
- Delta actions: Relative vs absolute position commands
- Gripper control: Velocity to position conversion
Forward Kinematics
Convert joint positions to end-effector pose:lerobot/robots/so_follower/robot_kinematic_processor.py:426 for the implementation.
Inverse Kinematics
Convert end-effector pose to joint positions:lerobot/robots/so_follower/robot_kinematic_processor.py:252 for the implementation.
IK Configuration
RobotKinematics
required
Robot kinematics model loaded from URDF
list[str]
required
List of motor names in order (excluding gripper)
bool
default:"true"
Use current joint positions as IK initial guess. If False, uses previous IK solution.
Delta Actions
Convert relative (delta) commands to absolute end-effector poses:lerobot/robots/so_follower/robot_kinematic_processor.py:37 for the implementation.
Delta Action Configuration
dict
required
Scaling factors for delta commands (meters per unit). Keys: “x”, “y”, “z”
bool
default:"true"
If True, latch reference pose when action is first enabled. If False, always use current pose as reference.
bool
default:"false"
Use IK solution from complementary data instead of measured joints
Safety Bounds
Apply workspace limits and velocity constraints:lerobot/robots/so_follower/robot_kinematic_processor.py:185 for the implementation.
Safety Configuration
dict
required
Dictionary with “min” and “max” keys containing [x, y, z] bounds
float
default:"0.05"
Maximum allowed position change per step (meters). Larger movements are scaled down.
Gripper Control
Convert gripper velocity to position:lerobot/robots/so_follower/robot_kinematic_processor.py:341 for the implementation.
Discrete Gripper Mode
Handle discrete gripper actions (open/close/stay):Complete Pipeline Example
Combine robot processors for end-effector control:Custom Robot Processor
Create a processor for your robot:Best Practices
1. Reset State Between Episodes
Many robot processors maintain state that should be reset:2. Handle Singularities
Inverse kinematics can fail near singularities:3. Validate Kinematics Model
Verify forward/inverse kinematics consistency:API Reference
ForwardKinematicsJointsToEE
Seelerobot/robots/so_follower/robot_kinematic_processor.py:492
RobotKinematics
Robot kinematics model
list[str]
Joint names (excluding gripper)
InverseKinematicsEEToJoints
Seelerobot/robots/so_follower/robot_kinematic_processor.py:252
RobotKinematics
Robot kinematics model
list[str]
Joint names (excluding gripper)
bool
Use current joints as IK initial guess
EEReferenceAndDelta
Seelerobot/robots/so_follower/robot_kinematic_processor.py:37
dict
Scaling for delta commands
{"x": float, "y": float, "z": float}bool
Latch reference on enable vs always use current
EEBoundsAndSafety
Seelerobot/robots/so_follower/robot_kinematic_processor.py:185
dict
Workspace bounds
{"min": array, "max": array}float
Maximum position change per step (meters)