Implementation:Haosulab ManiSkill WidowXAIWristCam
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Manipulation |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool for simulating the WidowX AI robot arm with a wrist-mounted Intel RealSense D405 camera in ManiSkill environments.
Description
WidowXAIWristCam extends the WidowXAI robot with a wrist-mounted Intel RealSense D405 camera. It inherits all arm joints, gripper joints, and controller configurations from WidowXAI but uses a different URDF (wxai_follower.urdf) that includes the camera mount. The wrist camera is a 128x128 resolution sensor with pi/2 field of view, mounted on camera_link. All controller configurations, keyframes, and helper methods are inherited from the WidowXAI base class.
uid: widowxai_wristcam
URDF path: {ASSET_DIR}/robots/widowxai/wxai_follower.urdf
Supported control modes: (inherited from WidowXAI) pd_joint_delta_pos, pd_joint_pos, pd_joint_target_delta_pos
Usage
Use WidowXAIWristCam for visual manipulation tasks that require a hand-eye camera for close-up observation. Suitable for eye-in-hand visual servoing, real2sim transfer with the real WidowX AI follower arm, and manipulation policies that rely on wrist camera observations.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/agents/robots/widowxai/widowxai_wristcam.py
Signature
@register_agent(asset_download_ids=["widowxai"])
class WidowXAIWristCam(WidowXAI):
"""WidowX AI robot with a Intel Realsense D405 mounted on the gripper"""
uid = "widowxai_wristcam"
urdf_path = f"{ASSET_DIR}/robots/widowxai/wxai_follower.urdf"
Import
from mani_skill.agents.robots.widowxai.widowxai_wristcam import WidowXAIWristCam
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| (inherited from BaseAgent) |
Outputs
| Name | Type | Description |
|---|---|---|
| robot agent | WidowXAIWristCam | Configured WidowXAI arm with wrist-mounted RealSense D405 camera |
Usage Examples
Creating Environment with Robot
import gymnasium as gym
import mani_skill.envs
env = gym.make("PickCube-v1", robot_uids="widowxai_wristcam")
obs, info = env.reset()