Open
Description
Consider the case of or_parabolicsmoother
. We have the HauserParabolicSmoother
class which lives in prpy
, but depends on or_parabolicsmoother
. Note that since we maintain both packages, we have the ability to put the prpy
python binding in either one.
It seems more useful to keep the prpy
binding with the external package (like or_trajopt
) rather than split (like or_parabolicsmoother
):
- The API for the
prpy
binding is highly dependent on the external package. For example, every XMLPlanningParameter
inor_parabolicsmoother
has to be carefully matched in theprpy
Planner
wrapper. Mismatches cause hard-to-diagnose reverts to default parameters. This means thatprpy
experiences version churn if any wrapped planner changes API. - Adding an
or_parabolicsmoother.prpy
module is basically free. If someone does not use aprpy
binding included withor_parabolicsmoother
, they incur no performance penalty or additional runtime dependencies. It also does not really inflate the size of the package itself. This is the same logic by which we includepackage.xml
andxxxxConfig.cmake
files in our third-party library repositories. - Unit tests can live with their planners. Since bugs in the planners can show up as unit test failures in
prpy
wrappers, it makes some sense that these unit tests should live with the planner implementation. The sametest_depend
mechanism that we use inprpy
to include planners can instead be used to includeprpy
in planner tests.
Notes:
- Pure python planners and wrappers for third-party libraries can sensibly live in
prpy
. - This has nothing to do with the ExternalProject build used in
or_trajopt
, that is an unrelated discussion.