An optimizing path planner for ROS
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.
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.
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
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
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
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
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
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
cd gh_pages
sphinx-build . output
Now open gh_pages/output/index.rst and remove output directory before commiting changes.