Skip to content

Implementation for safe low altitude navigation in steep terrain for fixed-wing Aerial Vehicles

License

Notifications You must be signed in to change notification settings

ethz-asl/terrain-navigation

Folders and files

NameName
Last commit message
Last commit date
Oct 31, 2023
Apr 3, 2023
Oct 30, 2023
Jun 14, 2024
Sep 8, 2023
Mar 5, 2024
Oct 27, 2023
Apr 21, 2023
Feb 11, 2025
Feb 11, 2025
Aug 14, 2024
Jun 14, 2024
Jan 6, 2022
Nov 13, 2023
Apr 21, 2023
Oct 11, 2024
Nov 26, 2023

Repository files navigation

terrain-navigation

Build Test

This package includes an implementation of the RA-L submission of "Safe Low-Altitude Navigation in Steep Terrain with Fixed-Wing Aerial Vehicles". The implementation includes a global planner based on a RRT* in the Dubins Airplane space enabling low altitude navigation for fixed wing vehicles in steep terrain.

ROS 2 support of the package can be found in the ros2 branch. The implementation supports ROS 2 Humble.

overview

Paper and Video

If you find this package useful in an academic context, please consider citing the paper

  • J. Lim, F. Achermann, R. Girod, N. Lawrance and R. Siegwart, "Safe Low-Altitude Navigation in Steep Terrain With Fixed-Wing Aerial Vehicles," in IEEE Robotics and Automation Letters, vol. 9, no. 5, pp. 4599-4606, May 2024, doi: 10.1109/LRA.2024.3368800 . [paper] [video]
@article{lim2024safe,
  title={Safe Low-Altitude Navigation in Steep Terrain With Fixed-Wing Aerial Vehicles},
  author={Lim, Jaeyoung and Achermann, Florian and Girod, Rik and Lawrance, Nicholas and Siegwart, Roland},
  journal={IEEE Robotics and Automation Letters},
  year={2024},
  volume={9},
  number={5},
  pages={4599-4606},
  doi={10.1109/LRA.2024.3368800}}

fieldtests

Setup

Setting up the Build Environment using Docker

If your operating system doesn't support ROS 1 noetic, docker is a great alternative.

First, create the image, with the build context at the root of this repo

docker build --file docker/Dockerfile --tag terrain-navigation-ros1 .

You can see the image exists:

docker images
>>> REPOSITORY                TAG       IMAGE ID       CREATED        SIZE
>>> terrain-navigation-ros1   latest    5565f845ab4f   2 weeks ago    774MB

Next, run the image, mounting in the source into a workspace. All the dependencies are now installed.

docker run --network=host -it -v $(pwd):/root/catkin_ws/src/terrain-navigation -w /root/catkin_ws terrain-navigation-ros1 bash

Running the Build

Configure the catkin workspace

catkin config --extend "/opt/ros/noetic"
catkin config --merge-devel

For dependencies that do not have binaries available, pull them in using rosinstall.

wstool init src src/terrain-navigation/dependencies.rosinstall
wstool update -t src -j4

For dependencies available through binaries, use rosdep. This package depends on GDAL to read georeferenced images and GeoTIFF files.

apt update
rosdep update
source /opt/ros/noetic/setup.bash
rosdep install --from-paths src --ignore-src -y

Build the package

catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release -DCATKIN_ENABLE_TESTING=False
catkin build -j$(nproc) -l$(nproc) terrain_navigation_ros

Running an example of the planner

In order to run the examples, build the terrain_planner_benchmark package.

catkin build terrain_planner_benchmark

Run a simple planning example:

roslaunch terrain_planner_benchmark test_ompl_rrt_circle.launch 

example

Running with PX4 SITL(Software-In-The-Loop)

To setup PX4, clone the ETHZ ASL PX4 autopilot project The setup instructions can be found in the documentation for the latest dependencies.

For Ubuntu 20.04+ROS noetic with Gazebo classic:

git clone https://github.com/ethz-asl/ethzasl_fw_px4.git --branch pr-hinwil-testing --recursive
cd ..
cd ethzasl_fw_px4
bash ./Tools/setup/ubuntu.sh

make px4_sitl gazebo

Do source the relevant environment variables before launching terrain navigation. For instance, for Ubuntu 20.04 + ROS Noetic + Gazebo classic:

px4_dir=~/ethzasl_fw_px4
source $px4_dir/Tools/simulation/gazebo/setup_gazebo.bash $px4_dir $px4_dir/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$px4_dir
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$px4_dir/Tools/simulation/gazebo/sitl_gazebo
export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH:/usr/lib/x86_64-linux-gnu/gazebo-11/plugins

Note: The path for gazebo may vary for a different version of Gazebo, update GAZEBO_PLUGIN_PATH as well as ROS_PACKAGE_PATH accordingly.

The default launch file can be run as the following command.

roslaunch terrain_navigation_ros test_terrain_planner.launch

You can use QGroundcontrol to configure and fly the vehicle. Get the vehicle flying, and plan a mission to fly!

Once the vehicle is flying in a loiter, plan a mission, engage the planner and fly through the rviz UI (Video: https://youtu.be/EJWyGSqaKb4)

About

Implementation for safe low altitude navigation in steep terrain for fixed-wing Aerial Vehicles

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published