{"id":51384665,"url":"https://github.com/ncbdrck/niryo_ned2_description_extras","last_synced_at":"2026-07-03T19:08:17.326Z","repository":{"id":359682912,"uuid":"1245659972","full_name":"ncbdrck/niryo_ned2_description_extras","owner":"ncbdrck","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-22T22:41:38.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T00:25:26.848Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ncbdrck.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-21T12:37:32.000Z","updated_at":"2026-05-22T22:41:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ncbdrck/niryo_ned2_description_extras","commit_stats":null,"previous_names":["ncbdrck/niryo_ned2_description_extras"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ncbdrck/niryo_ned2_description_extras","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncbdrck%2Fniryo_ned2_description_extras","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncbdrck%2Fniryo_ned2_description_extras/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncbdrck%2Fniryo_ned2_description_extras/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncbdrck%2Fniryo_ned2_description_extras/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ncbdrck","download_url":"https://codeload.github.com/ncbdrck/niryo_ned2_description_extras/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncbdrck%2Fniryo_ned2_description_extras/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35097907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-03T02:00:05.635Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-03T19:08:16.789Z","updated_at":"2026-07-03T19:08:17.321Z","avatar_url":"https://github.com/ncbdrck.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"# niryo_ned2_description_extras\n\nNiryo Ned2 sim extras for the `rl_environments` stack. Mirrors\n`reactorx200_description`'s role for the RX200:\n\n- Mounts the Ned2 on the **same table model** the RX200 sim uses\n  (reactorx200_description's table SDF).\n- Adds a **head-mount Kinect v2** at the same pose RX200 uses, so cube\n  tracking + extrinsic calibration carry across robots.\n- Brings up **ros_control** with the same controller name (`niryo_robot_follow_joint_trajectory_controller`)\n  the real Ned2 driver exposes, so RL code paths don't branch between\n  sim and real.\n\nKinect-only for now — ZED2 / D405 variants can be added later if\nneeded (the YAML extrinsics live in `rl_envs_cube_tracker/config/extrinsics/`).\n\n## Prerequisites\n\n- ROS Noetic\n- `niryo_robot_description` (upstream Niryo URDF + meshes)\n- `reactorx200_description` (table model)\n- `common_sensors` (Kinect v2 xacro)\n- `interbotix_xsarm_gazebo` (world file, reused for visual consistency)\n\n`rosdep install --from-paths src --ignore-src -r -y` should resolve\nthe standard Gazebo + ros_control deps.\n\n## Verify the sim works\n\n```bash\nroscore               # terminal 1\n\n# Reach (no gripper):\nroslaunch niryo_ned2_description_extras ned2_gazebo.launch                 # terminal 2\n\n# Push / PnP (adaptive gripper attached):\nroslaunch niryo_ned2_description_extras ned2_gazebo.launch gripper:=true   # terminal 2\n```\n\nExpected:\n- Gazebo opens, table at origin, Ned2 standing on top (`base_link` at z=0.78).\n- A Kinect v2 model floats in front of the robot looking at the workspace.\n- `/joint_states` publishes at 50 Hz (8 joints with `gripper:=true`, 6 without).\n- `rostopic list | grep niryo_robot_follow_joint_trajectory_controller`\n  shows the arm controller's command + state topics.\n- With `gripper:=true`: `rostopic list | grep gazebo_tool_commander` shows\n  the mors trajectory controller.\n- `/head_mount_kinect2/rgb/image_raw` + `/head_mount_kinect2/depth/image_raw`\n  publish camera streams.\n\n## How the gripper variant differs\n\n| | `gripper:=false` (default) | `gripper:=true` |\n|---|---|---|\n| URDF | `urdf/ned2_kinect.urdf.xacro` | `urdf/ned2_kinect_gripper.urdf.xacro` |\n| Wraps | `niryo_ned2_gazebo.urdf.xacro` | `niryo_ned2_gripper1_n_camera.urdf.xacro` |\n| Joints in /joint_states | 6 (arm only) | 8 (arm + 2 mors prismatic) |\n| Controllers config | `config/ned2_controllers.yaml` | `config/ned2_controllers_w_gripper.yaml` |\n| Extra controllers | — | `gazebo_tool_commander` (effort) |\n| Wrist camera | yes (Niryo built-in, on `camera_link`, `/gazebo_camera/*`) | yes (same) |\n| Suits | Reach | Push, PnP |\n\nThe gripper is the **adaptive gripper** (gripper1) — Niryo's standard\naccessory. No `custom_gripper` URDF ships with Ned2; designing your\nown is described at \u003chttps://docs.niryo.com/accessories/grippers/custom-gripper/\u003e\nbut not needed for the RL stack.\n\n### PID gains note\n\nNiryo's arm transmissions are `EffortJointInterface` — Gazebo needs PID\ngains to convert commanded position into torque. Without gains the arm\njust sags under gravity and ignores commands (joint state still\npublishes but the arm doesn't track trajectories). Both controllers\nYAMLs include a `gazebo_ros_control/pid_gains` block with values from\nNiryo's own MoveIt sim config (`p: 100, d: 1, i: 1, i_clamp: 1` per arm\njoint, same for mors).\n\n## Files\n\n```\nniryo_ned2_description_extras/\n├── package.xml\n├── CMakeLists.txt\n├── README.md\n├── urdf/\n│   ├── ned2.urdf.xacro                # arm only, no kinect\n│   ├── ned2_kinect.urdf.xacro         # arm + head-mount kinect2 (reach / push)\n│   └── ned2_kinect_gripper.urdf.xacro # arm + kinect + adaptive gripper + built-in wrist camera (pnp)\n├── launch/\n│   ├── ned2_gazebo.launch       # world + table + ned2 + kinect + control (gripper:=false|true)\n│   └── ned2_control.launch      # joint_state + follow_joint_trajectory controllers\n└── config/\n    ├── ned2_controllers.yaml             # arm-only (6 joints, 25 Hz loop_hz)\n    └── ned2_controllers_w_gripper.yaml   # arm + gazebo_tool_commander for mors prismatic joints\n```\n\n## Why this exists\n\nSeparate description package keeps URDF / meshes / launch files\nreusable independent of the RL stack. Standard ROS pattern.\n\nThe cube is not spawned by this package — the RL env's reset path\ncalls `spawn_cube_in_gazebo(\"red_cube\")`, so the world must be\ncube-free. `interbotix_xsarm_gazebo/worlds/xsarm_gazebo.world` is\ncube-free by default; double-check if you swap worlds.\n\n## Contact\n\n[j.kapukotuwa@research.ait.ie](mailto:j.kapukotuwa@research.ait.ie)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncbdrck%2Fniryo_ned2_description_extras","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fncbdrck%2Fniryo_ned2_description_extras","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncbdrck%2Fniryo_ned2_description_extras/lists"}