Skip to content

yugo1103/mpl_ros

 
 

Repository files navigation

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

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

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:

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

Example 3 (multi-robot decentralized planning)

We can build a team of robots that move simultaneously in a constrained environments without internal collision. In the following demo, each robot replans constantly at 2Hz and it runs its own planner that tries to reach the pre-allocate goal as fast as possible. We assume the robot knows other robots' trajectory at the time when it's planning.

Star Tunnel

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

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

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.4%
  • CMake 2.3%
  • Shell 0.3%