Implementation:Haosulab ManiSkill Fetch
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Manipulation |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool for simulating the Fetch mobile manipulation robot agent in ManiSkill environments.
Description
The Fetch robot is a mobile manipulator with a 7-DOF arm, a parallel-jaw gripper, a movable torso, a pan-tilt head, and a mobile base. It is loaded from a URDF file and features 15 active joints total: 3 base joints (x, y, rotation), 3 body joints (head pan, head tilt, torso lift), 7 arm joints (shoulder pan/lift, upperarm roll, elbow flex, forearm roll, wrist flex/roll), and 2 mimic gripper finger joints. The robot has two onboard cameras: a head camera and a hand camera mounted on the gripper link. Custom collision groups are defined for the wheels and the base. Gripper materials use high friction (static=2.0, dynamic=2.0) for stable grasping.
uid: fetch
URDF path: {PACKAGE_ASSET_DIR}/robots/fetch/fetch.urdf
Supported control modes: pd_joint_delta_pos, pd_joint_pos, pd_ee_delta_pos, pd_ee_delta_pose, pd_ee_delta_pose_align, pd_joint_target_delta_pos, pd_ee_target_delta_pos, pd_ee_target_delta_pose, pd_joint_vel, pd_joint_pos_vel, pd_joint_delta_pos_vel, pd_joint_delta_pos_stiff_body
Usage
Use the Fetch robot for mobile manipulation tasks that require navigating to objects and performing pick-and-place operations. The mobile base allows the robot to traverse environments, the torso lift enables reaching different heights, and the head cameras provide visual feedback. Suitable for tasks such as table-top manipulation, room navigation with object interaction, and teleoperation demonstrations via the ee_align control mode.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/agents/robots/fetch/fetch.py
Signature
@register_agent()
class Fetch(BaseAgent):
uid = "fetch"
urdf_path = f"{PACKAGE_ASSET_DIR}/robots/fetch/fetch.urdf"
urdf_arm_ik_path = f"{PACKAGE_ASSET_DIR}/robots/fetch/fetch_torso_up.urdf"
keyframes = dict(
rest=Keyframe(
pose=sapien.Pose(),
qpos=np.array([0, 0, 0, 0.386, 0, -0.370, 0.562, -1.032, 0.695, 0.955, -0.1, 2.077, 0, 0.015, 0.015]),
)
)
Import
from mani_skill.agents.robots.fetch.fetch import Fetch
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| (inherited from BaseAgent) |
Outputs
| Name | Type | Description |
|---|---|---|
| robot agent | Fetch | Configured mobile manipulator with arm, gripper, body, and base controllers plus head and hand cameras |
Usage Examples
Creating Environment with Robot
import gymnasium as gym
import mani_skill.envs
env = gym.make("PickCube-v1", robot_uids="fetch")
obs, info = env.reset()