3 #include <ompl/geometric/planners/rrt/RRT.h> 4 #include <ompl/geometric/planners/rrt/LazyRRT.h> 5 #include <ompl/geometric/planners/rrt/RRTConnect.h> 6 #include <ompl/geometric/planners/rrt/RRTstar.h> 7 #include <ompl/geometric/planners/est/EST.h> 8 #include <ompl/geometric/planners/est/BiEST.h> 9 #include <ompl/geometric/planners/est/ProjEST.h> 10 #include <ompl/geometric/planners/sbl/SBL.h> 11 #include <ompl/geometric/planners/bitstar/BITstar.h> 12 #include <ompl/geometric/planners/prm/PRM.h> 13 #include <ompl/geometric/planners/prm/PRMstar.h> 14 #include <ompl/geometric/planners/prm/LazyPRM.h> 15 #include <ompl/geometric/planners/prm/LazyPRMstar.h> 16 #include <ompl/geometric/planners/prm/SPARS.h> 17 #include <ompl/geometric/planners/prm/SPARStwo.h> 18 #include <ompl/geometric/planners/fmt/FMT.h> 19 #include <ompl/geometric/planners/fmt/BFMT.h> 20 #include <ompl/geometric/planners/pdst/PDST.h> 21 #include <ompl/geometric/planners/kpiece/KPIECE1.h> 22 #include <ompl/geometric/planners/kpiece/BKPIECE1.h> 23 #include <ompl/geometric/planners/kpiece/LBKPIECE1.h> 25 #include <ompl/base/spaces/constraint/ProjectedStateSpace.h> 26 #include <ompl/base/spaces/constraint/AtlasStateSpace.h> 27 #include <ompl/base/spaces/constraint/TangentBundleStateSpace.h> 38 using namespace se2ez;
55 setup = std::make_shared<ompl::geometric::SimpleSetup>(
space);
56 info = setup->getSpaceInformation();
62 setup->setStateValidityChecker(
63 std::make_shared<plan::ValidityChecker>(
info, std::make_shared<Box2DCollisionManager>(
robot_)));
69 planners_.
emplace(
"rrt:RRTConnect", makePlanner<ompl::geometric::RRTConnect>());
84 planners_.
emplace(
"prm:LazyPRM*", makePlanner<ompl::geometric::LazyPRMstar>());
94 planners_.
emplace(
"kpiece:BKPIECE", makePlanner<ompl::geometric::BKPIECE1>());
95 planners_.
emplace(
"kpiece:LBKPIECE", makePlanner<ompl::geometric::LBKPIECE1>());
105 robot_->getNamedState(name, state);
113 robot_->getNamedState(name, state);
146 ompl::base::ScopedState<> start(
space);
148 setup->setStartState(start);
155 ompl::base::ScopedState<> goal(
space);
157 setup->setGoalState(goal);
196 setup->simplifySolution();
200 auto &path =
setup->getSolutionPath();
207 auto &path =
setup->getSolutionPath();
210 for (
unsigned int i = 0; i < path.getStateCount(); ++i)
232 :
EZPlans(robot), constraint(constraint), method(method)
248 info = std::make_shared<ompl::base::ConstrainedSpaceInformation>(
space);
252 info = std::make_shared<ompl::base::ConstrainedSpaceInformation>(
space);
256 info = std::make_shared<ompl::base::TangentBundleSpaceInformation>(
space);
263 setup = std::make_shared<ompl::geometric::SimpleSetup>(
info);
270 setup->setStateValidityChecker(
271 std::make_shared<plan::WrappedValidityChecker>(
info,
272 std::make_shared<Box2DCollisionManager>(
robot_)));
286 return state->as<ompl::base::WrapperStateSpace::StateType>()
294 return state->as<ompl::base::WrapperStateSpace::StateType>()
303 space->as<ompl::base::AtlasStateSpace>()->anchorChart(state);
310 Eigen::VectorXd f(
constraint->getCoDimension());
313 SE2EZ_WARN(
"Constraint is not satisfied (%2%) at state %1%",
ompl::geometric::SimpleSetupPtr setup
ompl::base::SpaceInformationPtr info
A shared pointer wrapper for se2ez::State.
std::vector< StatePtr > extractPath() const
void postprocess(bool simplify, bool interpolate)
const ConstraintType method
bool checkConstraint(const ompl::base::State *state) const
bool postSetState(const ompl::base::State *state) override
virtual bool postSetState(const ompl::base::State *state)
virtual ~EZPlansConstraint()
StatePtr getState(ompl::base::State *state) const override
const StatePtr getStateConst(const ompl::base::State *state) const override
virtual void initialize()
bool setStart(const std::string &name)
std::shared_ptr< T > setPlanner(Args &&... args)
bool setGoal(const std::string &name)
virtual const StatePtr getStateConst(const ompl::base::State *state) const
#define SE2EZ_WARN(fmt,...)
ompl::base::ConstraintPtr constraint
std::vector< std::string > getPlanners()
A shared pointer wrapper for se2ez::Robot.
std::string printVector(const Eigen::VectorXd &v, unsigned int precision=4)
Returns a string of a vector's contents.
void updateValidityChecker() override
ompl::base::StateSpacePtr space
std::map< std::string, ompl::base::PlannerPtr > planners_
virtual void updateValidityChecker()
void initialize() override
#define SE2EZ_ERROR(fmt,...)
EZPlans(const RobotPtr &robot)
virtual StatePtr getState(ompl::base::State *state) const
EZPlansConstraint(const RobotPtr &robot, const ompl::base::ConstraintPtr &constraint, ConstraintType method)
void anchor(const ompl::base::State *state)
bool setStartGoal(const std::string &start, const std::string &goal)
T emplace_back(T... args)