/trajopt_ros

Trajectory Optimization Motion Planner for ROS

Primary LanguageC++

trajopt_ros

An optimizing path planner for ROS

PR2 Table

Solvers support

trajopt_ros implements sequential convex optimization to solve the motion planning problem. It implements a penalty method to optimize for joint velocities while satisfying a set of constraints. Internally, it makes use of convex solvers that are able to solve linearly constrained quadratic problems. At the moment, the following solvers are supported:

  • BPMPD (interior point method, free for non-commercial use only)
  • Gurobi (simplex and interior point/parallel barrier, license required)
  • OSQP (ADMM, BSD2 license)
  • qpOASES (active set, LGPL 2.1 license)

While the BPMPD library is bundled in the distribution, Gurobi, OSQP and qpOASES need to be installed in the system. To compile with Gurobi support, a GUROBI_HOME variable needs to be defined. Once trajopt_ros is compiled with support for a specific solver, you can select it by properly setting the TRAJOPT_CONVEX_SOLVER environment variable. Possible values are GUROBI, BPMPD, OSQP, QPOASES, AUTO_SOLVER. The selection to AUTO_SOLVER is the default and automatically picks the best between the available solvers.

TrajOpt Examples

If you're new to TrajOpt, a great place to start is trajopt_examples. This contains a number of examples to get you started. Additionally, there is an industrial training module that covers TrajOpt for a pick and place application. That module can be found HERE.

Pick and Place

The pick and place example is great place to start because it shows a complete end to end process using TrajOpt. While the code itself is quite long, this is because it is showing setting up and solving 2 problems (the pick and the place) as well as attaching and detaching objects in Tesseract. It makes use of the Tesseract TrajOpt Planner which simplifies some of the problem setup.

roslaunch trajopt_examples pick_and_place_plan.launch

Pick and Place

Raster Path Plan

Raster path plan also has a launch file. It demonstrates the Tesseract TrajOpt Freespace and Array planners. These planners wrap TrajOpt for two common problems - freespace motion planning and following a process path.

roslaunch trajopt_examples raster_path_plan.launch

Raster Path Plan

Basic Cartesian

Basic Cartesian shows how to use TrajOpt directly. It also shows doing collision checking against an octomap generated from a point cloud

roslaunch trajopt_examples basic_cartesian_plan.launch

Glass Upright

This example shows a robot avoiding a collision while keeping its end effector orientation upright. It demonstrates how competing costs and constraints can be combined to achieve the desired results

roslaunch trajopt_examples glass_up_right_plan.launch

Glass Upright

Car Seat Demo

The car seat demo requires and external package. Clone the Motoman driver into your workspace to use it. While it is quite complex, it shows the power of TrajOpt to plan using external axes and redundancy to solve complex manipulation tasks.

roslaunch trajopt_examples car_seat_demo.launch

Car Seat Demo

Puzzle Piece Demos

The puzzle piece examples show a small collaborative robot manipulaing a puzzle piece to debur the edges with either a fixed grinder or one with extra axes.

roslaunch trajopt_examples puzzle_piece_plan.launch

roslaunch trajopt_examples puzzle_piece_auxillary_axes_plan.launch

Puzzle Piece Puzzle Piece Aux Axes

Build Branch Sphinx Documentation

cd gh_pages
sphinx-build . output

Now open gh_pages/output/index.rst and remove output directory before commiting changes.