Search & Rescue (SAR) robotics project at the Center of Automation and Robotics (CAR), Universidad Politécnica de Madrid. A Husarion ROSbot XL — or our custom SAR platform sharing the same kinematics — explores an indoor environment autonomously: SLAM builds the map, frontier-based exploration drives the robot, Nav2 handles navigation, and an ArUco detector flags markers placed in the scene.
ROS 2 Humble. Tested on macOS (Apple Silicon) via Pixi and on Ubuntu
22.04. Simulation uses Gazebo (gz-sim) through ros_gz.
Packages live at the repo root (not under src/).
| Package | Purpose |
|---|---|
sar_bringup |
Top-level launches that compose sim/real stacks |
sar_control |
ros2_control hardware interface (Arduino over USB serial) |
sar_description |
URDF/xacro for real + sim, single launch |
sar_exploration |
Frontier exploration (SLAM + Nav2 + explore_lite) |
sar_gazebo |
Gazebo worlds, models, and the sim launch |
sar_mission |
Mission state machine (pause exploration on marker) |
sar_msgs |
Custom ROS messages |
sar_perception |
ArUco detector + optional RealSense driver |
sar_slam |
slam_toolbox async wrapper |
sar_utils |
Joystick / keyboard teleop |
External dependencies are pulled in as git submodules:
rosbot_ros, husarion_components_description, husarion_controllers,
husarion_gz_worlds, m-explore-ros2, rplidar_ros.
Always clone with submodules:
git clone --recurse-submodules https://github.com/alvgaona/sar.git
# or, if already cloned:
git submodule update --init --recursiveSelf-contained conda env using the robostack-humble channel; no system
ROS install needed.
pixi install # provision the env (one-time)
pixi shell # enter the env (sources install/setup.sh)
pixi run build # build everything
pixi run build-pkg sar_gazebo # build a single package and its deps
pixi run clean # wipe build/install/logInstall ROS 2 Humble first, then:
sudo ./scripts/install-deps.sh
colcon build --symlink-install
source install/setup.bashBrings up a desktop-VNC ROS Humble container (alvgaona/ros:humble-desktop-vnc)
mounting the workspace at /root/sar_ws. VNC is on localhost:5901.
docker compose up -d
docker compose exec sar bash
# inside the container, on first use:
./scripts/install-deps.sh
colcon build --symlink-install
source install/setup.shComposed stacks via sar_bringup:
ros2 launch sar_bringup sim.launch.py # Gazebo + SLAM + exploration + perception
ros2 launch sar_bringup real.launch.py # sar_control + SLAM + exploration + perceptionOr piece-by-piece (each package's README has more):
ros2 launch sar_gazebo gazebo.launch.py # sim only
ros2 launch sar_slam slam.launch.py use_sim_time:=true
ros2 launch sar_exploration explore.launch.py use_sim_time:=true
ros2 launch sar_perception perception.launch.py
ros2 launch sar_control control.launch.py [mock:=true] # real robot