Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Haosulab ManiSkill XLeRobot

From Leeroopedia
Knowledge Sources
Domains Robotics, Simulation, Manipulation
Last Updated 2026-02-15 08:00 GMT

Overview

Concrete tool for simulating the XLeRobot dual-arm mobile manipulation robot in ManiSkill environments.

Description

The Xlerobot (uid: xlerobot) is a dual-arm mobile robot featuring two 5-DOF arms (Rotation, Pitch, Elbow, Wrist_Pitch, Wrist_Roll for each arm), a mobile base with 3 DOF (x, y, rotation), a 2-DOF head (pan, tilt), and 2 independent grippers (Jaw, Jaw_2). The robot has 17 active joints in total. It includes three cameras: a head camera (256x256), and two arm-mounted cameras (128x128 each) for close-up manipulation views. The robot supports both single-arm and dual-arm controller configurations. It includes helper methods for joint mapping between full and current orderings, dual-arm grasping detection, and TCP computation for both arms.

uid: xlerobot

URDF path: {ASSET_DIR}/robots/xlerobot/xlerobot.urdf

Supported control modes: pd_joint_delta_pos, pd_joint_pos, pd_joint_target_delta_pos, pd_joint_vel, pd_joint_pos_vel, pd_joint_delta_pos_vel, pd_joint_delta_pos_stiff_body, plus arm2 variants and dual_arm variants

Usage

Use XLeRobot for dual-arm mobile manipulation tasks that require coordinated bimanual actions, such as lifting large objects, folding, or handover tasks. The mobile base enables navigating to target locations. Single-arm modes are also available for simpler tasks using one arm at a time.

Code Reference

Source Location

Signature

@register_agent(asset_download_ids=["xlerobot"])
class Xlerobot(BaseAgent):
    uid = "xlerobot"
    urdf_path = f"{ASSET_DIR}/robots/xlerobot/xlerobot.urdf"
    keyframes = dict(rest=Keyframe(pose=sapien.Pose(), qpos=np.array([...])))
    # arm_joint_names: 5 joints for arm 1
    # arm2_joint_names: 5 joints for arm 2
    # base_joint_names: 3 joints for mobile base
    # body_joint_names: 2 joints for head
    # gripper_joint_names / gripper2_joint_names: 1 each

Import

from mani_skill.agents.robots.xlerobot.xlerobot import Xlerobot

I/O Contract

Inputs

Name Type Required Description
(inherited from BaseAgent)

Outputs

Name Type Description
robot agent Xlerobot Configured dual-arm mobile robot with arm, gripper, body, base controllers and three cameras

Usage Examples

Creating Environment with Robot

import gymnasium as gym
import mani_skill.envs

env = gym.make("PickCube-v1", robot_uids="xlerobot")
obs, info = env.reset()

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment