Implementation:Haosulab ManiSkill XArm6NoGripper
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Manipulation |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool for simulating the UFactory xArm6 robot arm without a gripper in ManiSkill environments.
Description
The XArm6NoGripper is a 6-DOF xArm6 arm without any end-effector gripper. It has 6 arm joints (joint1 through joint6) with stiffness=1000, per-joint damping=[50]*6, per-joint friction=[0.1]*6, and force_limit=100. The end-effector link is link6. The robot provides a comprehensive set of controller modes including EE pose, EE delta pose, joint velocity, and joint position-velocity controllers. It defines multiple keyframes including rest, zeros, and individual joint stretches (stretch_j1 through stretch_j6) for testing joint ranges. Also defines XArm6NoGripperWristCamera variant with a wrist-mounted 128x128 camera.
uid: xarm6_nogripper
URDF path: {ASSET_DIR}/robots/xarm6/xarm6_nogripper.urdf
Supported control modes: pd_joint_pos, pd_joint_delta_pos, pd_joint_target_delta_pos, pd_ee_delta_pos, pd_ee_delta_pose, pd_ee_pose, pd_ee_target_delta_pos, pd_ee_target_delta_pose, pd_joint_vel, pd_joint_pos_vel, pd_joint_delta_pos_vel
Usage
Use XArm6NoGripper for tasks where the xArm6 arm needs a custom tool attachment or for contact-rich manipulation without grasping. The per-joint friction tuning provides realistic behavior. The wrist camera variant is useful for visual servoing research.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/agents/robots/xarm6/xarm6_nogripper.py
Signature
@register_agent(asset_download_ids=["xarm6"])
class XArm6NoGripper(BaseAgent):
uid = "xarm6_nogripper"
urdf_path = f"{ASSET_DIR}/robots/xarm6/xarm6_nogripper.urdf"
arm_joint_names = ["joint1", ..., "joint6"]
arm_stiffness = 1000
arm_damping = [50, 50, 50, 50, 50, 50]
arm_friction = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
arm_force_limit = 100
ee_link_name = "link6"
keyframes = dict(rest=Keyframe(...), zeros=Keyframe(...), stretch_j1=Keyframe(...), ...)
@register_agent()
class XArm6NoGripperWristCamera(XArm6NoGripper):
uid = "xarm6_nogripper_wristcam"
Import
from mani_skill.agents.robots.xarm6.xarm6_nogripper import XArm6NoGripper
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| (inherited from BaseAgent) |
Outputs
| Name | Type | Description |
|---|---|---|
| robot agent | XArm6NoGripper | Configured 6-DOF arm with per-joint friction tuning and comprehensive control modes (no gripper) |
Usage Examples
Creating Environment with Robot
import gymnasium as gym
import mani_skill.envs
env = gym.make("PushCube-v1", robot_uids="xarm6_nogripper")
obs, info = env.reset()