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 SO100

From Leeroopedia
Revision as of 12:55, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/Haosulab_ManiSkill_SO100.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Sources
Domains Robotics, Simulation, Manipulation
Last Updated 2026-02-15 08:00 GMT

Overview

Concrete tool for simulating the SO-100 low-cost robot arm in ManiSkill environments.

Description

The SO100 is a 6-DOF low-cost robot arm with 5 arm joints (shoulder_pan, shoulder_lift, elbow_flex, wrist_flex, wrist_roll) and 1 gripper joint. The gripper consists of a Fixed_Jaw and Moving_Jaw with high-friction materials (static=2.0, dynamic=2.0). The robot uses conservative delta limits (0.05 for arm joints, 0.2 for gripper) since the real hardware can shake with fast movements. Stiffness is 1e3 and damping is 1e2 for all joints. TCP is computed as the midpoint between Fixed_Jaw_tip and Moving_Jaw_tip links. Provides grasping detection, static checking, and grasp pose construction methods.

uid: so100

URDF path: {PACKAGE_ASSET_DIR}/robots/so100/so100.urdf

Supported control modes: pd_joint_delta_pos, pd_joint_pos, pd_joint_target_delta_pos

Usage

Use SO100 for low-cost arm manipulation tasks targeting sim-to-real transfer to the SO-100 hardware. Well-suited for pick-and-place and basic manipulation with budget-friendly robot setups.

Code Reference

Source Location

Signature

@register_agent()
class SO100(BaseAgent):
    uid = "so100"
    urdf_path = f"{PACKAGE_ASSET_DIR}/robots/so100/so100.urdf"
    arm_joint_names = ["shoulder_pan", "shoulder_lift", "elbow_flex", "wrist_flex", "wrist_roll"]
    gripper_joint_names = ["gripper"]
    keyframes = dict(
        rest=Keyframe(qpos=np.array([0, -1.5708, 1.5708, 0.66, 0, -1.1]), ...),
        zero=Keyframe(qpos=np.zeros(6), ...),
    )

Import

from mani_skill.agents.robots.so100.so_100 import SO100

I/O Contract

Inputs

Name Type Required Description
(inherited from BaseAgent)

Outputs

Name Type Description
robot agent SO100 Configured 6-DOF low-cost arm with gripper and conservative delta limits

Usage Examples

Creating Environment with Robot

import gymnasium as gym
import mani_skill.envs

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

Related Pages

Page Connections

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