Code Monkey home page Code Monkey logo

airompl_planner's Introduction

The repository sets an example to use OMPL for aerial vehicle route planning. The planner runs on top of Aerial Navigation Development Environment and extends the navigation to global scale. The planner replans at every planning cycle using environment observations accumulated along with the navigation, based on a point cloud representation. When navigating in unknown environments, the observed part of the environment becomes known and the unobserved part is considered free. The planner attempts multiple routes through replanning to guide the vehicle to the goal.

Method

Prerequisite

Install OMPL using command lines below.

sudo apt install libompl-dev ompl-demos
sudo apt install ros-`rosversion -d`-ompl

Usage

The repository has been tested in Ubuntu 18.04 with ROS Melodic and Ubuntu 20.04 with ROS Noetic. Follow instructions in Aerial Navigation Development Environment to setup the development environment and download the simulation environments.

To setup airOMPL Planner, clone the repository.

git clone https://github.com/MichaelFYang/airOMPL_planner

In a terminal, go to the folder and compile.

cd airOMPL_planner
catkin_make

To run the code, go to the development environment folder in a terminal, source the ROS workspace, and launch.

source devel/setup.sh
roslaunch vehicle_simulator system_gazebo.launch

In another terminal, go to the airOMPL Planner folder, source the ROS workspace, and launch.

source devel/setup.sh
roslaunch air_ompl_planner air_ompl_planner.launch

Now, users can send a goal by pressing the 'Goalpoint' button in RVIZ and then clicking a point to set the goal. The vehicle will navigate to the goal while observing the environment along the way, considering the environment as unknown at start. The planner replans in every planning cycle (green path) to account for newly observed environment and updates the path to execute (blue path) if a lower path cost is found. The red blocks represent observed areas and the green blocks are currently being observed areas.

Demo

To launch with a different environment, please refer to the Advanced section in the development environment. Users can download five additional environment models and set the argument 'world_name' in the 'system_gazebo.launch' file to one of the environment names in the development environment, i.e. 'campus', 'indoor', 'garage', 'tunnel', and 'forest'. Note that if running on a slow computer, users can change 'world_name' to 'office_simple' to use a simple environment with reduced graphics rendering load.

Configuration

airOMPL Planner settings are kept in default.yaml in the 'src/air_ompl_planner/config' folder.

  • robot_dim (default: 0.6 (m)) - robot size for collsion checking
  • voxel_dim (default: 0.15 (m)) - voxel size for point cloud downsizing
  • sensor_range (default: 10.0 (m)) - sensor obstacle detection range
  • ceil_height (default: 5.0 (m)) - maximum fly height
  • is_static_env (default: true) - set to false if the environment contains dynamic obstacles.

Advanced

Changing planner in OMPL: Users can comment and uncomment code in 'src/air_ompl_planner/src/ompl_planner.cpp' to switch to a differnt planner in OMPL (RRT* (default), RRT-Connect, and BIT*)).

Author

Fan Yang ([email protected])

airompl_planner's People

Contributors

michaelfyang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.