An open API service indexing awesome lists of open source software.

https://github.com/mohababsa/jderobot-ros2

A ROS2 Humble project exploring publisher-subscriber communication, TurtleBot3 simulation, and Navigation2 waypoint navigation for GSoC 2025 with JdeRobot.
https://github.com/mohababsa/jderobot-ros2

gazebo gsoc-2025 navigation2 python robotics ros2-humble rviz2 turtlebot3

Last synced: 4 months ago
JSON representation

A ROS2 Humble project exploring publisher-subscriber communication, TurtleBot3 simulation, and Navigation2 waypoint navigation for GSoC 2025 with JdeRobot.

Awesome Lists containing this project

README

          

# GSoC 2025 ROS2 Challenge Progress

## Overview
This README documents my progress on the GSoC 2025 ROS challenge as of April 6, 2025. The challenge consists of three parts:
- Part 1a: ROS2 Publisher-Subscriber Demo.
- Part 1b: TurtleBot3 Simulation with Laser Scan Visualization.
- Part 2: ROS2 Navigation2 with Waypoint Navigation.
Below, I detail the setup, development, successes, and challenges for each part, showcasing my work with ROS2 Humble on an Ubuntu 22.04 VM in VMware Workstation.

## Environment Setup
- Platform: Ubuntu 22.04 (Jammy) in VMware Workstation.
- ROS2 Version: Humble Hawksbill.
- VM Configuration: 4 GB RAM, 2 CPUs, 512 MB graphics memory, 3D acceleration enabled.

## Part 1a: ROS2 Publisher-Subscriber Demo
1. **Objective**:
Create a ROS2 package with a publisher and subscriber to demonstrate basic ROS2 communication.

2. **Development**:
Package creation [hello_ros2](ros2_ws/src/hello_ros2)

3. **Build and Run**:
```bash
cd ~/ros2_ws
colcon build
source install/setup.bash
```
- Terminal 1:
```bash
ros2 run hello_ros2 publisher_node
```
Output: `Publishing: "Hello! ROS2 is fun."` every second.
- Terminal 2:
```bash
ros2 run hello_ros2 subscriber_node
```
Output: `I heard: "Hello! ROS2 is fun."` in sync.

4. **Watch the Demo**:
Video shows publisher sending messages and subscriber receiving them
[ROS2 Humble in Action: Publisher-Subscriber Magic Unveiled](https://www.youtube.com/watch?v=abc123)

## Part 1b: TurtleBot3 Simulation with Laser Scan Visualization
1. **Objective**:
Simulate TurtleBot3 in Gazebo and visualize its laser scan in RViz2

2. **Install Dependencies**:
```bash
sudo apt install ros-humble-turtlebot3-simulations ros-humble-gazebo-ros-pkgs -y
```

3. **Launch Attempt**:
```bash
source /opt/ros/humble/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
```

4. **RViz2 Setup**:
```bash
ros2 run rviz2 rviz2
```

5. **Challenges**:
- Gazebo Issue: `gzserver` starts but `/spawn_entity` service fails:
- Error: `Service /spawn_entity unavailable. Was Gazebo started with GazeboRosFactory?`
- Standalone `ros2 run gazebo_ros gzserver` exits with code 255.

6. **Status**:
- In Progress: Gazebo integration unresolved; TurtleBot3 not spawning.

## Part 2: ROS2 Navigation2 with Waypoint Navigation
1. **Objective**:
Navigate TurtleBot3 in Gazebo using Navigation2, hitting at least three waypoints.

2. **Install Dependencies**:
```bash
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup -y
```

3. **Development**:
Package creation [waypoint_nav](ros2_ws/src/waypoint_nav)

4. **Build and Run**:
```bash
cd ~/ros2_ws
colcon build
source install/setup.bash
```
- Terminal 1: Gazebo
```bash
source /opt/ros/humble/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
```
Issue: `/spawn_entity` unavailable.
- Terminal 2: Navigation2
```bash
ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True
```
Issue: `KeyError: 'TURTLEBOT3_MODEL'`.
- Terminal 3: Waypoint Navigator
```bash
ros2 run waypoint_nav waypoint_navigator
```
Output: `Sending waypoint 1: (1.0, 0.0, 0.0)` (hangs without Navigation2).

5. **Challenges**:
- Gazebo: Same `/spawn_entity` issue as Part 1b.
- Navigation2: Missing environment variable fixed by adding `export TURTLEBOT3_MODEL=burger`.

6. **Status**:
- Success: `waypoint_nav` package built and runs.
- In Progress: Gazebo and Navigation2 integration pending.

## Author
**Mohamed ABABSA** - GSoC 2025 Applicant

## License
JdeRobot-ROS2 is licensed under the [MIT License](LICENSE)