vtpp2014 / mpl_ros

A ROS wrapper for trajectory planning based on motion primitives

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MRSL Motion Primitive Library ROS

wercker status


A ROS wrapper for Motion Primitive Library v1.1. 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: convex decomposition tool
  • mpl_external_planner: planner that uses the
  • mpl_test_node: examples code for simple testing

Installation

Dependancy:

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

To initialize the submodule motion_primitive_library and DecompROS, run following commands at first:

$ 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

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

Example2 (plan in polygonal map)

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

Through only one plan, the robot finds the optimal timing for waiting and moving ahead in the following obstacle course:

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

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

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

About

A ROS wrapper for trajectory planning based on motion primitives

License:Apache License 2.0


Languages

Language:C++ 97.1%Language:CMake 2.4%Language:Shell 0.4%