Final project for the 'Arquitectura Software para Robots' subject (2024–2025).
Built on ROS 2 Jazzy, this system allows a robot to detect a nearby person, initiate a dialogue, and autonomously guide them to the position where their chosen degree is taught using navigation and behavior trees.
- Detects people nearby using an ELP stereo camera and 3D point cloud processing.
- Uses YOLO (v8) to detect people in the image.
- Projects the 2D detection into a 3D point cloud to estimate real-world distance.
- When a person approaches the "base" (less than 1 meter to the camera), the robot starts a dialogue to ask which degree program they are interested in.
- A Kobuki robot with Nav2 autonomously navigates to the corresponding classroom or position, wait a few seconds, and returns to the base.
- A Behavior Tree orchestrates the flow of the main computer (the one with the camera): Detection, dialogue and communication.
- A FSM orchestrates the behaviour of the Kobuki Robot: Communication and autonomous navigation.
Tested on Ubuntu 24.04 and ROS 2 Jazzy.
# Clone the repo inside your ROS 2 workspace
git clone https://github.com/Amanza17/final_project_arquitectura.git
# Install dependencies
cd ~/final_project_arquitectura
rosdep install --from-paths src --ignore-src -r -y
cs import src < src/hri/thirdparty.repos
# Build
colcon build --symlink-install
# Source
source install/setup.bash├── bt
│ └── pc.xml
├── LICENSE
├── README.md
├── src
│ ├── ThirdParty # Dependencies for Kobuki
│ ├── depth_worker # Transforms detections 2D to 3D
│ ├── elp_stereo_camera # Drivers for 3D camera
│ ├── hri # Voice
│ ├── kobuki # Drivers for Kobuki
│ ├── navigation_robot # Client and server for the navigation
│ ├── pfinal_pc # Code for de main computer
│ ├── thirdparty # Other dependencies
│ └── yolov8_ros # Object detection
└── yolov8m.pt
ros2 launch pfinal_pc final.launch.py
ros2 run pfinal_pc bt_runnerros2 launch kobuki kobuki.launch.py lidar_XX:=true #change flag depending on lidar model
ros2 launch kobuki navigation.launch.py
ros2 run navigation_robot destination_parser
ros2 run navigation_robot server
ros2 run navigation_robot client- Adrián Manzanares Romera: Amanza17
- Carlos García Escolano: CarlosDrag0n
- Nerea Chamorro Sierra: nereacsierra
- Claudia Élez Mencía: celezm
Behaviour of the main pc: Click here! Video trying both parts: Click here!
This project is licensed under the MIT License.