equinor / equinor/isar-turtlebot
PR3: feat(sim) — port simulator to ROS 2 Jazzy + Gazebo Harmonic
- Dominant language
- Python
- Stars
- 3
- Forks
- 20
- PR merge metrics
- No merged PRs in 30d
Description
Part of #168.
## Goal
Replace the ROS 1 Noetic + Gazebo Classic 11 stack with ROS 2 Jazzy + Gazebo Harmonic. The Python side from the previous sub-issue keeps using `roslibpy` over `rosbridge`, but now connects to `rosbridge_suite` running under ROS 2 (same wire protocol). Topic and service names change; message shapes for navigation/camera change; the Python facade in `transport/` is updated accordingly.
## Pre-work spike
- Confirm `turtlebot3` ROS 2 packages have a Jazzy branch. **Fallback: target Humble instead of Jazzy** if the spike shows ROBOTIS upstream is behind. Re-confirm in this issue's thread before committing to a distro.
## Changes
- Replace `ros_packages/isar_turtlebot/` (catkin, `package.xml` format 2) with an `ament_cmake` / `ament_python` ROS 2 package of the same name.
- Drop `ros_packages/isar_turtlebot_moveit_config/` (manipulator out of scope).
- Replace XML roslaunch files with ROS 2 Python launch files:
- `simulation.launch.py`
- `navigation.launch.py`
- Stack:
- `ros_gz_sim` for gz-sim Harmonic (`-s -r --headless-rendering`).
- `ros_gz_bridge` for `/camera/image_raw`, `/cmd_vel`, `/odom`, `/scan`, `/clock`.
- `turtlebot3_gazebo` ROS 2 fork (jazzy or community).
- `nav2_bringup` for AMCL + planner + controller (replaces `move_base` + `dwa_local_planner`).
- `rosbridge_server` (ROS 2 port) on `:9090` — same port the Python side already uses.
- Convert `maps/house.yaml` (ROS 1 `map_server`) to Nav2 `map_server` format (YAML is nearly identical; verify).
- Update Python `transport/` facade and tests for the new ROS 2 topic names and message shapes.
- Drop teleop, manipulator, `web_video_server` launch files.
- Drop `az_scripts/` and the empty `models/` (custom-world download from Azure). Ship only `house` and `turtleworld` in-repo. Document the removal in `AGENTS.md`.
## Exit criterion
- [ ] Simulator builds and runs on `linux/amd64` with ROS 2 Jazzy (or Humble after spike).
- [ ] `isar-turtlebot` from the previous sub-issue drives the new simulator end-to-end.
- [ ] Unit tests updated for new topic names.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the turtlebot3 ROS 2 Jazzy package spike, including the Humble fallback, before changing ros_packages/isar_turtlebot/. Then inspect simulation.launch.py, navigation.launch.py, maps/house.yaml, and the transport/ tests to map the topic and message changes. Done means the simulator builds on linux/amd64, isar-turtlebot drives it end-to-end, and unit tests cover the new topic names.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, python
- Domain
- robotics, testing-qa
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100