ipab-slmc / exotica

Extensible Optimization Framework
https://ipab-slmc.github.io/exotica
BSD 3-Clause "New" or "Revised" License
151 stars 70 forks source link

Fix header-only implementation of AbstractDDPSolver and OMPLControlSolver #644

Closed traikodinev closed 5 years ago

traikodinev commented 5 years ago

libraryunload poco exceptions when having the implementation for a base class in a separate .cpp file. AbstractDDPSolver and OMPLControlSolver suffer from it and therefore need to have the implementation in the header file.

@VladimirIvan The other OMPL solver seems to make this work.

TODO: I don't know how or why OMPL solver doesn't suffer from this.

traikodinev commented 5 years ago

See template class OMPLSolver<SamplingProblem>; and use planner_allocator_ = boost::bind(&AllocatePlanner<ompl::geometric::LBTRRT>, _1, _2);-like syntax.

wxmerkt commented 5 years ago

I think you need to have the template class fully instantiated. Look at the AbstractTimeIndexedProblem for an example.

traikodinev commented 5 years ago

Fixed in https://github.com/ipab-slmc/exotica/pull/652