Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Robotic Navigation of a Delivery Robot Based on Behavior Trees

This project implements an autonomous delivery robot architecture, originally designed and developed to run on a physical robot at the Intelligent Robotics and Intelligent Systems (IRIS) Lab of the University of Aveiro. It features an autonomy stack using ROS 2, Behavior Trees, and Nav2, alongside a YOLO-based vision tracker and a real-time Angular web dashboard.

To eliminate dependence on physical hardware during development, the entire stack was built and tested in a 3D Webots physics simulation.

Key Features

  • Behavior Tree Orchestration: Built with BehaviorTree.CPP, to manage multi-step navigation and interaction sequences.
  • Dynamic Task Preemption: Implements a priority-based queue (Normal, High, Critical). Critical tasks immediately preempt the robot's active mission.
  • Active Environmental Interaction: The robot actively evaluates door states using LIDAR data. When a door is detected as closed, it verifies that the doorway is free of obstructions before executing a physical maneuver to force the door open.
  • Vision-Based Target Tracking: Integrates YOLOv8 with an Astra RGB-D camera to identify human recipients or markers. Pixel detections are projected into 3D global map coordinates, and a safe approach pose is dynamically generated using the Nav2 global costmap.
  • Angular Dashboard: A web-based operator interface connected via rosbridge_suite. It allows operators to dispatch tasks, view the live priority queue, monitor the robot's position on a 2D SLAM map, and stream the annotated YOLOv8 camera feed.

Tech Stack

Backend

  • ROS 2 (Jazzy): Core middleware and message passing.
  • Nav2: Path planning, obstacle avoidance, and costmap generation.
  • Behavior Trees (BehaviorTree.CPP): Task orchestration (navigating, waiting for doors, human tracking...).
  • Webots: 3D physics simulation.
  • YOLOv8: Real-time person and object tracking (delivery_vision).
  • Hardware: Tiago Lite (PAL Robotics)

Frontend

  • Angular: Real-time web dashboard for monitoring and dispatching tasks.
  • roslibjs / rosbridge_websocket: Bridges the Angular web app to the ROS 2 DDS network.

Prerequisites

To run the simulation and web dashboard on any Linux machine, you need:

  1. Docker and Docker Compose.
  2. NVIDIA Container Toolkit for GPU-accelerated rendering and YOLO inference. Installation instructions here in the official NVIDIA docs. After installing, you must configure Docker to use the NVIDIA runtime:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

How to Run (Docker Simulation)

The project is split into two main services:

  • ROS 2 / Webots Backend
  • Angular Frontend

Docker Compose launches both simultaneously.

1. Setup Environment & Display Permissions

The setup.sh script automatically configures Docker GUI access by extracting your X11 authentication cookie into a Docker-specific Xauthority file, allowing RViz, Webots, and other graphical applications to run securely inside the container.

Run the following command:

chmod +x setup.sh

./setup.sh

2. Launch the Stack

Start all containers:

docker compose up --build

3. Access the Interface

Once the containers are running:

  • RViz and Webots will automatically open on your desktop.
  • Open the robot dispatch dashboard in your browser:

Dashboard: http://localhost:4200

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages