Giter VIP home page Giter VIP logo

mpl_ros's Introduction

MRSL Motion Primitive Library ROS

wercker status


A ROS wrapper for Motion Primitive Library v1.2. Video of the original paper of "Search-based Motion Planning for Quadrotors using Linear Quadratic Minimum Time Control" has been uploaded at the follwing link: youtube. The package is still under maintenance, the API may change occasionally, please use git log to track the latest update.

Packages:

  • motion_primitive_library: back-end for planning trajectory in various environments
  • planning_ros_msgs: ROS msgs used in storing, visualizing and communicating
  • planning_ros_utils: ROS utils for interfacing with MPL, it also includes mapping and rviz plugins
  • DecompROS: tool for convex decomposition and visualization
  • mpl_external_planner: several planners that build on the motion_primitive_library
  • mpl_test_node: example ROS nodes (see following Examples)

Installation

Dependancy:

  • ROS(Indigo+)
  • catkin_simple
  • [SDL](sudo apt install -y libsdl1.2-dev libsdl-image1.2-dev)
Compile

Before compiling, make sure submodules are on their corresponding commits. To initialize the submodule motion_primitive_library and DecompROS, run following commands:

$ cd /PATH/TO/mpl_ros
$ git submodule update --init --recursive
1) Using Catkin:
$ mv mpl_ros ~/catkin_ws/src
$ cd ~/catkin_ws & catkin_make_isolated -DCMAKE_BUILD_TYPE=Release
2) Using Catkin Tools (recommended):
$ mv mpl_ros ~/catkin_ws/src
$ cd ~/catkin_ws
$ catkin config -DCMAKE_BUILD_TYPE=Release
$ catkin b

Example Usage

The planner inside mpl_ros including:

  • OccMapPlanner: uses 2D occupancy grid map
  • VoxelMapPlanner: uses 3D voxel grid map
  • EllipsoidPlanner: uses 3D point cloud and models robot as ellipsoid in SE(3)
  • PolyMapPlanner2D: uses 2D polygonal map and moving obstacles

Following examples demonstrate some of these planners:

Example 1 (plan in occ/voxel map)

Simple test using the built-in data in a voxel map can be run using the following commands:

$ cd ./mpl_test_node/launch/map_planner_node
$ roslaunch rviz.launch
$ roslaunch test.launch

It also extracts the control commands for the generated trajectory and saves as trajectory_commands.bag.

The planning results are visualized in Rviz as following:

2D Occ Map 3D Voxel Map

Example 2 (plan with moving obstacles)

The planner can also take input polygonal map for collision checking. When the obstacles are not static, it's able to find the trajectory that avoids future collision:

$ cd ./mpl_test_node/launch/poly_map_planner_node
$ roslaunch rviz.launch
$ roslaunch test.launch
Static Obstacles Moving Obtacles

Even if the trajectories of obstacles are non-linear, our planner could find the optimal maneuver for the robot with certain dynamic constraints through one plan:

Example 3 (multi-robot planning)

The planner can be applied to a team of robots that move in a shared constrained environments. In the following demo, we show examples of two configurations, in which the planner is running in a centralized or decentralized mode. In the centralized mode, the planner runs once in the beginning. In the decentralized mode, each robot replans constantly at 2Hz with partial knowledge of its surrounding obstacles.

Config1: 10 Robots Centralized Config2: 16 Robots Centralized
Config1: 10 Robots Decentralized Config2: 16 robots Decentralized

Example 4 (plan in SE(3) with ellispoid model)

Another example using ellipsoid model can be found in mpl_test_node/launch/ellipsoid_planner_node, in which a point cloud is used as obstacles, and the robot is modeled as the ellipsoid. More information can be found in the paper "Search-based Motion Planning for Aggressive Flight in SE(3)".

$ cd ./mpl_test_node/launch/ellispoid_planner_node
$ roslaunch rviz.launch
$ roslaunch test.launch

Maps

The built-in maps are listed as below:

Simple Levine Skir Office

User can form their own maps using the mapping_utils, a launch file example is provided in ./mpl_test_node/launch/map_generator for converting a STL file into voxel map. For details about the full utilities, please refer to wiki.

mpl_ros's People

Contributors

sikang avatar kartikmohta avatar fla-falcon-deploy avatar

Watchers

James Cloos avatar  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.