botmayank / terrain-navigation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

overview

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 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

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 83.7%Language:Python 13.1%Language:CMake 2.2%Language:Shell 0.7%Language:Dockerfile 0.3%Language:Makefile 0.2%