Path planning with external axis

The standard approach our team usually does is use to use descartes_light through the Tesseract interface. Tesseract now has IK solvers that support either a robot on a positioner or a robot with external positioner. Basically the gist of how these work is you specify a sampling step for the external axes and an IK solver for the manipulator (KDL, IKFast, OPW, UR, or some custom one). Every time an IK solution is requested tesseract will return IK solutions at every external axes combination based off your specified sampling and other parameters. Here you can see example configurations for both “Robot on Positioner (ROP)” and “Robot with external Positioner (REP)”. These IK solutions will then be passed to Descartes which will find the optimal path through your series of waypoints.

As you can imagine this can get prohibitively computationally expensive if you have multiple external axes and you’re sampling very densely. A common solution to this problem is to sample sparsely to get a valid solution, albeit one that looks a little jumpy, and then pass this solution to a TrajOpt planner that tries to smooth the resulting trajectory. Tesseract leverages Taskflow to support Tesseract Task Composer which enables you to design a series of motion planners and checks that can act in both series and parallel to complete your motion planning task. So using Tesseract you can create a motion planning pipeline that automatically solves a sparse solution with Descartes and then passes that output to TrajOpt. You can even have this happening in parallel across multiple rasters at the same time.

You can find several examples of leveraging Tesseract Task Composer in the tesseract_examples package. The training documentation is lacking, but the examples are a good place to start. You can also check out the Scan N Plan Workshop as a great example on how to perform motion planning with Tesseract. We aren’t doing anything with external axes in the Scan N Plan workshop, but everything still applies. The only difference would be your URDF would need some external axes and you need to change your kinematic config file here to use your desired IK solver.

If none of the provided IK solvers work for you, you can always implement your own custom IK solver plugin for Tesseract without the need to contribute back to the main repo. You can also use your own custom tasks in Tesseract without too much difficulty. We have examples of doing this in snp_motion_planning/src/plugins in the Scan N Plan workshop.

3 Likes

Figured I would also include this update to trajopt that may be beneficial in this external axis discussion. Tyler just contributed this work on Toleranced cartesian waypoints for trajopt.

1 Like