NED2 — Push

The arm must push a 4 cm cube across the cafe-table to a goal point. Closed gripper acts as a flat paddle (no gripper command in action).

Env IDs: NED2PushSim-v0 / NED2PushGoalSim-v0 / NED2PushReal-v0 / NED2PushGoalReal-v0.

Description

NED2 6-DoF arm flush on the cafe-table. At reset the arm goes to init pose, the gripper closes (binary "close" command on real via niryo_robot_tools_commander; direct prismatic-mors trajectory on sim), and a red cube spawns on the table top.

Action Space

Joint mode (default). Box(6,) — same 6-joint command as NED2 — Reach (joint_1 .. joint_6). Gripper NOT in action vector.

EE mode (ee_action_type=True). Box(3,) — Δ EE position.

Observation Space

Standard env. Box. Extends reach obs with cube state:

  • EE position (3, m)

  • EE rpy (3, rad)

  • Unit vector cube → goal (3, normalised)

  • Distance cube → goal (1, m)

  • Current joint positions (8, alphabetical)

  • Previous action (6 or 3)

  • Current joint velocities (8)

  • Cube position in base frame (3, m)

  • Cube rpy (3, rad)

  • Cube linear velocity (3, m/s, finite-difference)

  • Cube angular velocity (3, rad/s, finite-difference)

  • Cube position relative to EE (3, m)

Goal env. Dict. desired_goal = Box(3,) on table top. achieved_goal = Box(3,) cube XYZ.

Rewards

Sparse: 0.0 if ‖cube goal‖ < reach_tolerance else -1.0.

Dense: dist-shaped on cube → goal, plus reached-goal bonus and standard step / joint / none / goal-space penalties. Defaults from config/ned2_push_task_config.yaml.

Starting State

Joint pose: URDF zero (see NED2 — Reach). Gripper: closed (binary close on real; init_close_gripper = [-0.01, -0.01] m on sim — mors prismatic limits are ±0.01 m).

Cube spawn. 4 cm red cube; default cube_init_pos = [0.25, 0.0, 0.015] in base frame. Sim env’s default hard-coded spawn is [0.180, 0.000, 0.015]inconsistent with YAML; tune random_cube_spawn=True or edit ned2_push_sim.py to align.

Goal sampling. Push goal ∈ Box(3,) on table top.

Episode End

Truncation. max_episode_steps (default 100); real env on stale /ned2/joint_states.

Termination. ‖cube goal‖ < reach_tolerance (sparse only).

Arguments

Inherits NED2 — Reach kwargs plus push-specific random_cube_spawn / random_goal / (real only) cube_pose_topic (default /cube_pose), cube_pose_timeout_s (1.0 s), auto_launch_cube_tracker / cube_tracker_camera / cube_tracker_target_frame.

Version History

  • v0 — first release (rl_environments v0.1.0). Gripper command is binary open/close on real (via niryo_robot_tools_commander) and prismatic-trajectory on sim (via /gazebo_tool_commander/follow_joint_trajectory).