Implementation:Haosulab ManiSkill Panda
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Manipulation |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool for simulating the Franka Emika Panda 7-DOF robot arm with parallel-jaw gripper in ManiSkill environments.
Description
The Panda robot is a widely used 7-DOF manipulator arm with a 2-finger parallel gripper. It has 7 arm joints (panda_joint1 through panda_joint7) and 2 gripper finger joints (panda_finger_joint1, panda_finger_joint2) using a mimic controller. The end-effector link is panda_hand_tcp. Gripper materials use high friction (static=2.0, dynamic=2.0). The arm uses stiffness=1e3, damping=1e2, force_limit=100. The gripper mimic controller maps finger_joint2 to follow finger_joint1. The robot provides helper methods for grasp checking (is_grasping), static detection (is_static), and grasp pose construction (build_grasp_pose).
uid: panda
URDF path: {PACKAGE_ASSET_DIR}/robots/panda/panda_v2.urdf
Supported control modes: pd_joint_delta_pos, pd_joint_pos, pd_ee_delta_pos, pd_ee_delta_pose, pd_ee_pose, 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
Usage
The Panda is the default robot for most ManiSkill manipulation benchmarks including pick-and-place, stacking, pushing, and articulated object manipulation tasks. It is the most commonly used robot in ManiSkill and serves as the reference implementation for table-top manipulation.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/agents/robots/panda/panda.py
Signature
@register_agent()
class Panda(BaseAgent):
uid = "panda"
urdf_path = f"{PACKAGE_ASSET_DIR}/robots/panda/panda_v2.urdf"
arm_joint_names = ["panda_joint1", ..., "panda_joint7"]
gripper_joint_names = ["panda_finger_joint1", "panda_finger_joint2"]
ee_link_name = "panda_hand_tcp"
arm_stiffness = 1e3
arm_damping = 1e2
arm_force_limit = 100
keyframes = dict(
rest=Keyframe(qpos=np.array([0.0, pi/8, 0, -5pi/8, 0, 3pi/4, pi/4, 0.04, 0.04]), pose=sapien.Pose())
)
Import
from mani_skill.agents.robots.panda.panda import Panda
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| (inherited from BaseAgent) |
Outputs
| Name | Type | Description |
|---|---|---|
| robot agent | Panda | Configured 7-DOF arm with mimic gripper controllers |
Usage Examples
Creating Environment with Robot
import gymnasium as gym
import mani_skill.envs
env = gym.make("PickCube-v1", robot_uids="panda")
obs, info = env.reset()