This is the metapackage repository responsible for orchestrating and managing all constituent packages of the [LUS] autonomous drone system.
This repository does not contain functional source code itself, but rather the package structure and dependencies that define the entire system architecture. It serves as the primary entry point for cloning, installing, and executing the project's ecosystem.
The [LUS] is an open-source software platform designed to enable the autonomous operation of Unmanned Aerial Vehicles (UAVs). The system features a modular architecture built upon ROS 2 (Robot Operating System), divided into distinct packages, each responsible for a specific core functionality:
- Perception & State Estimation: Sensor data processing, filtering, and state estimation (e.g., VIO, LIO).
- Planning: Trajectory generation, motion planning, and mission planning capabilities.
- Control: High-level and low-level flight control algorithms.
- Hardware API: Interface for robust communication with the flight controller (autopilot).
- Simulation: Environments, models, and resources for comprehensive testing in Gazebo Classic simulation.
[Image of LUS system architecture diagram]
This metapackage ensures that all system components are installed and built with the correct version dependencies.
Follow these instructions to acquire and run a copy of the project on your local machine for both development and testing purposes.
Ensure the following software is installed on your system:
- Operating System: Ubuntu 22.04 (Jammy)
- Version Control: Git
We strongly recommend utilizing our custom Linux setup for optimized system usability. To install the setup along with the [LUS] system, copy and paste the command below into your terminal. We strongly suggest starting from a freshly formatted Ubuntu installation.
cd /tmp
echo "mkdir ~/git
cd ~/git
git clone [https://github.com/Augusto-Viniciuss/linux-setup.git](https://github.com/Augusto-Viniciuss/linux-setup.git)
cd ~/git/linux-setup
./install.sh
cd ~/git
git clone [email protected]:LASER-Robotics/laser_uav_system.git
cd ~/git/laser_uav_system
./install.sh" > run.sh && source run.shIf you only wish to install the system, copy and paste the snippet below into your terminal.
cd /tmp
echo "mkdir ~/git
cd ~/git
git clone [email protected]:LASER-Robotics/laser_uav_system.git
cd ~/git/laser_uav_system
./install.sh" > run.sh && source run.shUpon successful installation, detailed execution examples and configuration scripts for initiating the system can be found within the tmux directory of this repository.
The following command sequence demonstrates how to launch the simulation of the lr7pro drone integrated with the full LUS stack:
cd ~/laser_uav_system_ws/src/laser_uav_simulation/tmux/one_drone_test
./start.shSupported Platform
The lr7pro UAV, a supported platform for the LUS stack:
lr7pro.mp4
The [LUS] system has undergone rigorous validation across various modalities and environments. The control stack, featuring NMPC (Nonlinear Model Predictive Control) + INDI (Incremental Nonlinear Dynamic Inversion), has been comprehensively tested.
This validation includes successful integration and testing of all major state estimation types:
VIO (Visual-Inertial Odometry)
GNSS (Global Navigation Satellite System)
LIO (Laser Inertial Odometry)
Validation was successfully achieved in both simulated environments and on the physical drone hardware (real-world flights).
Real-world validation using the x500 platform with the LIO and NMPC+INDI algorithms:
x500_LIO.mp4
This metapackage manages the following critical packages within the [LUS] ecosystem:
| Package | Description | Repository |
|---|---|---|
laser_msgs |
Contains custom message definitions utilized across the entire software stack. | [Link to repo] |
laser_uav_controllers |
Implements high and low-level controllers for position and attitude tracking. | [Link to repo] |
laser_uav_planner |
Implements trajectory, motion, and path planners. | [Link to repo] |
laser_uav_estimators |
Implements filters and algorithms for UAV state estimation crucial for control feedback. | [Link to repo] |
laser_uav_lio-s |
Contains Laser Inertial Odometry and Mapping (LIO) algorithms integrated into the system. | [Link to repo] |
laser_uav_vio-s |
Contains Visual-Inertial Odometry (VIO) algorithms integrated into the system. | [Link to repo] |
laser_uav_managers |
ROS 2 nodes for stack management, utilizing controller and estimator classes to govern autonomous flight. | [Link to repo] |
laser_uav_lib |
Contains core C++ and Python libraries intended for general use in UAV systems development. | [Link to repo] |
laser_uav_px4_api |
API for communication and interfacing with the onboard autopilot hardware (flight controller). | [Link to repo] |
laser_gazebo_resources |
Contains models, plugins, world configurations, and other resources for Gazebo simulation. | [Link to repo] |
laser_uav_simulation |
Contains the simulation environment setup and the drone models utilized by the project. | [Link to repo] |
px4_firmware |
PX4 autopilot firmware modified for seamless operation with our custom API. | [Link to repo] |
px4_msgs |
Contains message definitions utilized by the PX4 firmware. | [Link to repo] |
micro_xrce_dds_agent |
Contains the protocol agent facilitating the communication bridge between the companion computer and the flight controller. | [Link to repo] |
laser_uav_drivers |
Contains the ROS 2 wrappers for the SDKs of compatible sensors. | [Link to repo] |
laser_uav_deployment |
Contains scripts and utilities to streamline the deployment process on the physical UAV hardware. | [Link to repo] |
