A ROS 2 Jazzy-based navigation and mapping system for the Kobuki robot using an LD19 LiDAR, SLAM, A* path planning, and a web-based React user interface.
- Ubuntu on Raspberry Pi
- ROS 2 Jazzy
- Kobuki Base
- LD19 LiDAR
- Built workspace (
kobuki_ws) - Built React frontend (
builddirectory)
The system requires three separate terminals.
This command:
- Connects to the Kobuki base
- Starts the LD19 LiDAR
- Launches the SLAM mapping system
- Starts the A* Navigation Server
cd ~/Desktop/ROS2_Final_Project/kobuki_ws
source /opt/ros/jazzy/setup.bash
source install/setup.bash
ros2 launch qbot_nav qbot_hardware.launch.pyThis allows communication between the React web interface and ROS 2 using Rosbridge.
cd ~/Desktop/ROS2_Final_Project/kobuki_ws
source /opt/ros/jazzy/setup.bash
source install/setup.bash
ros2 run rosbridge_server rosbridge_websocket --ros-args -p port:=9090This hosts the compiled React application using Python's lightweight HTTP server.
cd ~/Desktop/ROS2_Final_Project/build
python3 -m http.server 8000After all services are running, open a web browser on a device connected to the same Wi-Fi network as the Raspberry Pi.
Navigate to:
http://<RASPBERRY_PI_IP>:8000
Example:
http://192.168.8.154:8000
Run:
hostname -IExample output:
192.168.8.154
Use the displayed IP address in your browser:
http://192.168.8.154:8000
React Web UI
│
▼
Rosbridge WebSocket (Port 9090)
│
▼
ROS 2 Jazzy
│
┌────┴────┐
│ │
▼ ▼
SLAM A* Navigation
│
▼
LD19 LiDAR
│
▼
Kobuki Base
Verify the Rosbridge server is running:
ros2 node listYou should see:
/rosbridge_websocket
Check that the Python server is running:
ps aux | grep http.serverVerify the Raspberry Pi IP address:
hostname -IEnsure the client device is connected to the same Wi-Fi network.
ros2 node list| Service | Port |
|---|---|
| React Web UI | 8000 |
| Rosbridge WebSocket | 9090 |
To stop the system safely, press:
Ctrl + Cin each terminal window.