LeRobot EnvHub-compatible simulation environment for two SO-101 follower arms.
1from so101_dual_arm_env.env import make_env, DualArmEnvConfig, CameraConfig
2
3# Default (push task, tuned cameras)
4env = make_env(n_envs=1)
5obs, _ = env.reset()
6
7# Custom camera positions
8cfg = DualArmEnvConfig(
9 task="push",
10 left_wrist_camera=CameraConfig("left_wrist", pos=(0.0, -0.043, -0.042), euler=(29.0, -6.0, 0.5), fov=75.0),
11 right_wrist_camera=CameraConfig("right_wrist", pos=(0.0, -0.043, -0.042), euler=(29.0, -6.0, 6.0), fov=75.0),
12 overhead_cameras=[
13 CameraConfig("overhead_left", pos=(0.637, 0.027, 1.248), euler=(-26.0, 0.5, -90.5), fov=80.0),
14 CameraConfig("overhead_right", pos=(0.530, -0.491, 1.061), euler=(-67.0, -5.0,-159.5), fov=80.0),
15 ],
16)
17env = make_env(cfg=cfg)
left_joint_pos (6,) left joint positions [rad]
left_joint_vel (6,) left joint velocities [rad/s]
left_ee_pos (3,) left end-effector position [m]
right_joint_pos (6,) right joint positions [rad]
right_joint_vel (6,) right joint velocities [rad/s]
right_ee_pos (3,) right end-effector position [m]
object_pos (3,) cube position [m]
object_quat (4,) cube orientation [wxyz]
object_vel (3,) cube linear velocity [m/s]
goal_pos (3,) goal position [m]
goal_quat (4,) goal orientation [wxyz]
images.left_wrist (480,640,3) uint8
images.right_wrist (480,640,3) uint8
images.overhead_left (480,640,3) uint8
images.overhead_right (480,640,3) uint8