Skip to content

A LI-SLAM package for ROS2 Humble Hawksbill targetting forest navigation for UAVs.

Notifications You must be signed in to change notification settings

ShameerMasroor/LI-SLAM-and-FASTLIO2-for-Teleoperated-UAVs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LI-SLAM and FASTLIO2 for Teleoperated UAVs

Welcome to our Mobile Robotics Project! This repository contains all the necessary resources to simulate, operate, and extend our teleoperated UAV system for mapping and localization in forest environments. The project leverages ROS2, Gazebo Classic 11, RVIZ2, and cutting-edge SLAM algorithms to deliver state-of-the-art performance.


Table of Contents


Overview

This project focuses on creating a versatile UAV platform for mapping and localization in GPS-denied environments, particularly forests. The drone is designed to:

  • Map simulated forest environments in Gazebo.
  • Perform LiDAR-Inertial odometry for precise localization.

Features

  • Simulation: Full integration with Gazebo Classic 11 for realistic forest environments.
  • Visualization: 3D mapping and localization visualization using RVIZ2.
  • Teleoperation: ROS2 nodes for teleoperated flight, mapping, and localization.
  • Scalable Architecture: Modular design for adding new sensors, controllers, or behaviors.

Key Packages

  1. SJTU Drone: Contains UAV controller, simulation models, and forest world files.
  2. LI-SLAM: Implements LiDAR-Inertial odometry and mapping with a pose-graph backend.
  3. FASTLIO2: High-speed, real-time LiDAR-Inertial odometry for efficient localization and mapping.

Acknowledgements

We would like to acknowledge the following for their contributions:

  1. Shanghai Jiao Tong University for the SJTU Drone model, based on the Parrot AR2 drone: Repository
  2. Ryuhei Sasaki for the LI-SLAM package: Repository
  3. HKU-MARS for the FASTLIO2 package: Repository

Getting Started

Prerequisites


Cloning the Repository

# Clone the repository  
git clone https://github.com/ShameerMasroor/LI-SLAM-and-FASTLIO2-for-Teleoperated-UAVs.git  

Installation

1. Install Dependencies

Use rosdep to install dependencies:

# Install ROS2 dependencies  
rosdep install --from-paths src --ignore-src -r -y  

2. Download Gazebo Models

  1. Visit this Google Drive link.

  2. Download the model files and place them in the following Gazebo directories:

    /usr/share/gazebo-11/models  
    /usr/share/gazebo-11/materials  

Warning: The Gazebo simulation will fail to load if the models are not placed correctly!

3. Build the Workspace

# Source ROS2 setup  
source /opt/ros/humble/setup.bash  

# Build the workspace  
colcon build  

If errors occur during the build, you can build individual packages manually:

# Build specific packages
cd lidarslam_ros2-develop
colcon build --packages-select lidarslam_msgs  
colcon build --packages-select graph_based_slam  
colcon build --packages-select scanmatcher  

# Build SJTU Drone package  
cd sjtu_drone  
colcon build  

Note: We found that for machines having 8GB of RAM or below may freeze or become unresponsive during the building step. Build packages individually in that case.


Usage

1. Launch the Simulation

# Navigate to the SJTU Drone package  
cd sjtu_drone-ros2  

# Source the workspace  
source install/setup.bash  

# Launch the Gazebo simulation  
ros2 launch sjtu_drone_bringup sjtu_drone_bringup.launch.py  

2. Launch LI-SLAM

# Navigate to the LI-SLAM package  
cd lidarslam_ros2-develop  

# Source the workspace  
source install/setup.bash  

# Launch LI-SLAM  
ros2 launch lidarslam lidarslam.launch.py  

3. Launch FASTLIO2

# Navigate to the FASTLIO2 package  
cd FASTLIOROS2  

# Launch FASTLIO2  
ros2 launch fast_lio mapping.launch.py  

Note: It is recommended to run only one of the SLAM packages at a time.

4. Teleoperate the Drone

You can control the drone using either xterm or a Gamepad. Xterm is enabled by default, but you can switch to use a gamepad by commenting out the code for xterm in the sjtu_drone_bringup.launch.py file.

Install xterm

sudo apt update  
sudo apt install xterm  

Install RVIZ IMU Plugin

sudo apt install ros-humble-rviz-imu-plugin  

Changing Gazebo Worlds

A number of test worlds are provided in the sjtu_drone_description directory. You can set which world to use by changing worlds in the sjtu_drone_gazebo.launch.py file.


People

This project was lovingly made by Zaryan, Maleeha, and Shameer, all three of which go under the name of Zarmasha.

About

A LI-SLAM package for ROS2 Humble Hawksbill targetting forest navigation for UAVs.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published