本文整理汇总了C++中OMPL_INFORM函数的典型用法代码示例。如果您正苦于以下问题:C++ OMPL_INFORM函数的具体用法?C++ OMPL_INFORM怎么用?C++ OMPL_INFORM使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了OMPL_INFORM函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sc
void ompl::geometric::RRTstar::setup()
{
Planner::setup();
tools::SelfConfig sc(si_, getName());
sc.configurePlannerRange(maxDistance_);
if (!si_->getStateSpace()->hasSymmetricDistance() || !si_->getStateSpace()->hasSymmetricInterpolate())
{
OMPL_WARN("%s requires a state space with symmetric distance and symmetric interpolation.", getName().c_str());
}
if (!nn_)
nn_.reset(tools::SelfConfig::getDefaultNearestNeighbors<Motion*>(si_->getStateSpace()));
nn_->setDistanceFunction(boost::bind(&RRTstar::distanceFunction, this, _1, _2));
// Setup optimization objective
//
// If no optimization objective was specified, then default to
// optimizing path length as computed by the distance() function
// in the state space.
if (pdef_)
{
if (pdef_->hasOptimizationObjective())
opt_ = pdef_->getOptimizationObjective();
else
{
OMPL_INFORM("%s: No optimization objective specified. Defaulting to optimizing path length for the allowed planning time.", getName().c_str());
opt_.reset(new base::PathLengthOptimizationObjective(si_));
}
}
else
{
OMPL_INFORM("%s: problem definition is not set, deferring setup completion...", getName().c_str());
setup_ = false;
}
}
示例2: OMPL_INFORM
void ompl::geometric::CForest::setup()
{
Planner::setup();
if (pdef_->hasOptimizationObjective())
opt_ = pdef_->getOptimizationObjective();
else
{
OMPL_INFORM("%s: No optimization objective specified. Defaulting to optimizing path length for the allowed "
"planning time.",
getName().c_str());
opt_ = std::make_shared<base::PathLengthOptimizationObjective>(si_);
}
bestCost_ = opt_->infiniteCost();
if (planners_.empty())
{
OMPL_INFORM("%s: Number and type of instances not specified. Defaulting to %d instances of RRTstar.",
getName().c_str(), numThreads_);
addPlannerInstances<RRTstar>(numThreads_);
}
for (auto &planner : planners_)
if (!planner->isSetup())
planner->setup();
// This call is needed to make sure the ParamSet is up to date after changes induced by the planner setup calls
// above, via the state space wrappers for CForest.
si_->setup();
}
示例3: OMPL_ERROR
bool ompl::tools::LightningDB::load(const std::string &fileName)
{
// Error checking
if (fileName.empty())
{
OMPL_ERROR("Empty filename passed to save function");
return false;
}
if ( !boost::filesystem::exists( fileName ) )
{
OMPL_WARN("Database file does not exist: %s", fileName.c_str());
return false;
}
// Load database from file, track loading time
time::point start = time::now();
OMPL_INFORM("Loading database from file: %s", fileName.c_str());
// Open a binary input stream
std::ifstream iStream(fileName.c_str(), std::ios::binary);
// Get the total number of paths saved
double numPaths = 0;
iStream >> numPaths;
// Check that the number of paths makes sense
if (numPaths < 0 || numPaths > std::numeric_limits<double>::max())
{
OMPL_WARN("Number of paths to load %d is a bad value", numPaths);
return false;
}
// Start loading all the PlannerDatas
for (std::size_t i = 0; i < numPaths; ++i)
{
// Create a new planner data instance
ompl::base::PlannerDataPtr plannerData(new ompl::base::PlannerData(si_));
// Note: the StateStorage class checks if the states match for us
plannerDataStorage_.load(iStream, *plannerData.get());
// Add to nearest neighbor tree
nn_->add(plannerData);
}
// Close file
iStream.close();
double loadTime = time::seconds(time::now() - start);
OMPL_INFORM("Loaded database from file in %f sec with %d paths", loadTime, nn_->size());
return true;
}
示例4: setup
// we provide a duplicate implementation here to allow the planner to choose how the time is turned into a planner termination condition
ompl::base::PlannerStatus ompl::control::SimpleSetup::solve(double time)
{
setup();
last_status_ = base::PlannerStatus::UNKNOWN;
time::point start = time::now();
last_status_ = planner_->solve(time);
planTime_ = time::seconds(time::now() - start);
if (last_status_)
OMPL_INFORM("Solution found in %f seconds", planTime_);
else
OMPL_INFORM("No solution found after %f seconds", planTime_);
return last_status_;
}
示例5: setup
ompl::base::PlannerStatus ompl::geometric::SimpleSetup::solve(const base::PlannerTerminationCondition &ptc)
{
setup();
lastStatus_ = base::PlannerStatus::UNKNOWN;
time::point start = time::now();
lastStatus_ = planner_->solve(ptc);
planTime_ = time::seconds(time::now() - start);
if (lastStatus_)
OMPL_INFORM("Solution found in %f seconds", planTime_);
else
OMPL_INFORM("No solution found after %f seconds", planTime_);
return lastStatus_;
}
示例6: sc
void ompl::geometric::RRTXstatic::setup()
{
Planner::setup();
tools::SelfConfig sc(si_, getName());
sc.configurePlannerRange(maxDistance_);
if (!si_->getStateSpace()->hasSymmetricDistance() || !si_->getStateSpace()->hasSymmetricInterpolate())
{
OMPL_WARN("%s requires a state space with symmetric distance and symmetric interpolation.", getName().c_str());
}
if (!nn_)
nn_.reset(tools::SelfConfig::getDefaultNearestNeighbors<Motion *>(this));
nn_->setDistanceFunction([this](const Motion *a, const Motion *b) { return distanceFunction(a, b); });
// Setup optimization objective
//
// If no optimization objective was specified, then default to
// optimizing path length as computed by the distance() function
// in the state space.
if (pdef_)
{
if (pdef_->hasOptimizationObjective())
opt_ = pdef_->getOptimizationObjective();
else
{
OMPL_INFORM("%s: No optimization objective specified. Defaulting to optimizing path length for the allowed "
"planning time.",
getName().c_str());
opt_ = std::make_shared<base::PathLengthOptimizationObjective>(si_);
// Store the new objective in the problem def'n
pdef_->setOptimizationObjective(opt_);
}
mc_ = MotionCompare(opt_, pdef_);
q_ = BinaryHeap<Motion *, MotionCompare>(mc_);
}
else
{
OMPL_INFORM("%s: problem definition is not set, deferring setup completion...", getName().c_str());
setup_ = false;
}
// Calculate some constants:
calculateRewiringLowerBounds();
// Set the bestCost_ and prunedCost_ as infinite
bestCost_ = opt_->infiniteCost();
}
示例7: sc
void ompl::geometric::RRTstar::setup()
{
Planner::setup();
tools::SelfConfig sc(si_, getName());
sc.configurePlannerRange(maxDistance_);
if (!si_->getStateSpace()->hasSymmetricDistance() || !si_->getStateSpace()->hasSymmetricInterpolate())
{
OMPL_WARN("%s requires a state space with symmetric distance and symmetric interpolation.", getName().c_str());
}
if (!nn_)
nn_.reset(tools::SelfConfig::getDefaultNearestNeighbors<Motion*>(this));
nn_->setDistanceFunction(std::bind(&RRTstar::distanceFunction, this, std::placeholders::_1, std::placeholders::_2));
// Setup optimization objective
//
// If no optimization objective was specified, then default to
// optimizing path length as computed by the distance() function
// in the state space.
if (pdef_)
{
if (pdef_->hasOptimizationObjective())
opt_ = pdef_->getOptimizationObjective();
else
{
OMPL_INFORM("%s: No optimization objective specified. Defaulting to optimizing path length for the allowed planning time.", getName().c_str());
opt_.reset(new base::PathLengthOptimizationObjective(si_));
// Store the new objective in the problem def'n
pdef_->setOptimizationObjective(opt_);
}
}
else
{
OMPL_INFORM("%s: problem definition is not set, deferring setup completion...", getName().c_str());
setup_ = false;
}
// Get the measure of the entire space:
prunedMeasure_ = si_->getSpaceMeasure();
// Calculate some constants:
calculateRewiringLowerBounds();
// Set the bestCost_ and prunedCost_ as infinite
bestCost_ = opt_->infiniteCost();
prunedCost_ = opt_->infiniteCost();
}
示例8: OMPL_ERROR
bool ompl::tools::ThunderDB::addPath(ompl::geometric::PathGeometric &solutionPath, double &insertionTime)
{
// Error check
if (!spars_)
{
OMPL_ERROR("SPARSdb planner has not been passed into the ThunderDB yet");
insertionTime = 0;
return false;
}
// Prevent inserting into database
if (!saving_enabled_)
{
OMPL_WARN("ThunderDB: Saving is disabled so not adding path");
return false;
}
bool result;
double seconds = 120; // 10; // a large number, should never need to use this
ompl::base::PlannerTerminationCondition ptc = ompl::base::timedPlannerTerminationCondition(seconds, 0.1);
// Benchmark runtime
time::point startTime = time::now();
{
result = spars_->addPathToRoadmap(ptc, solutionPath);
}
insertionTime = time::seconds(time::now() - startTime);
OMPL_INFORM("SPARSdb now has %d states", spars_->getNumVertices());
// Record this new addition
numPathsInserted_++;
return result;
}
示例9: OMPL_WARN
void ompl::geometric::SPARStwo::setup()
{
Planner::setup();
if (!nn_)
nn_.reset(tools::SelfConfig::getDefaultNearestNeighbors<Vertex>(si_->getStateSpace()));
nn_->setDistanceFunction(boost::bind(&SPARStwo::distanceFunction, this, _1, _2));
double maxExt = si_->getMaximumExtent();
sparseDelta_ = sparseDeltaFraction_ * maxExt;
denseDelta_ = denseDeltaFraction_ * maxExt;
// Setup optimization objective
//
// If no optimization objective was specified, then default to
// optimizing path length as computed by the distance() function
// in the state space.
if (pdef_)
{
if (pdef_->hasOptimizationObjective())
{
opt_ = pdef_->getOptimizationObjective();
if (!dynamic_cast<base::PathLengthOptimizationObjective*>(opt_.get()))
OMPL_WARN("%s: Asymptotic optimality has only been proven with path length optimizaton; convergence for other optimizaton objectives is not guaranteed.", getName().c_str());
}
else
opt_.reset(new base::PathLengthOptimizationObjective(si_));
}
else
{
OMPL_INFORM("%s: problem definition is not set, deferring setup completion...", getName().c_str());
setup_ = false;
}
}
示例10: void
ompl::base::PlannerStatus ompl::geometric::CForest::solve(const base::PlannerTerminationCondition &ptc)
{
using solveFunctionType = void (ompl::geometric::CForest::*)(base::Planner *, const base::PlannerTerminationCondition &);
checkValidity();
time::point start = time::now();
std::vector<std::thread*> threads(planners_.size());
const base::ReportIntermediateSolutionFn prevSolutionCallback = getProblemDefinition()->getIntermediateSolutionCallback();
if (prevSolutionCallback)
OMPL_WARN("Cannot use previously set intermediate solution callback with %s", getName().c_str());
pdef_->setIntermediateSolutionCallback(std::bind(&CForest::newSolutionFound, this,
std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
bestCost_ = opt_->infiniteCost();
// run each planner in its own thread, with the same ptc.
for (std::size_t i = 0 ; i < threads.size() ; ++i)
threads[i] = new std::thread(std::bind((solveFunctionType)&CForest::solve, this, planners_[i].get(), ptc));
for (auto & thread : threads)
{
thread->join();
delete thread;
}
// restore callback
getProblemDefinition()->setIntermediateSolutionCallback(prevSolutionCallback);
OMPL_INFORM("Solution found in %f seconds", time::seconds(time::now() - start));
return base::PlannerStatus(pdef_->hasSolution(), pdef_->hasApproximateSolution());
}
示例11: pa_
void ompl::control::SimpleSetup::setup()
{
if (!configured_ || !si_->isSetup() || !planner_->isSetup())
{
if (!si_->isSetup())
si_->setup();
if (!planner_)
{
if (pa_)
planner_ = pa_(si_);
if (!planner_)
{
OMPL_INFORM("No planner specified. Using default.");
planner_ = getDefaultPlanner(getGoal());
}
}
planner_->setProblemDefinition(pdef_);
if (!planner_->isSetup())
planner_->setup();
params_.clear();
params_.include(si_->params());
params_.include(planner_->params());
configured_ = true;
}
}
示例12: OMPL_INFORM
void ompl::geometric::RRTstar::setSampleRejection(const bool reject)
{
if (static_cast<bool>(opt_) == true)
{
if (opt_->hasCostToGoHeuristic() == false)
{
OMPL_INFORM("%s: No cost-to-go heuristic set. Informed techniques will not work well.", getName().c_str());
}
}
// This option is mutually exclusive with setSampleRejection, assert that:
if (reject == true && useInformedSampling_ == true)
{
OMPL_ERROR("%s: InformedSampling and SampleRejection are mutually exclusive options.", getName().c_str());
}
// Check if we're changing the setting of rejection sampling. If we are, we will need to create a new sampler, which we only want to do if one is already allocated.
if (reject != useRejectionSampling_)
{
// Store the setting
useRejectionSampling_ = reject;
// If we currently have a sampler, we need to make a new one
if (sampler_ || infSampler_)
{
// Reset the samplers
sampler_.reset();
infSampler_.reset();
// Create the sampler
allocSampler();
}
}
}
示例13: plan
bool plan(unsigned int start_row, unsigned int start_col, unsigned int goal_row, unsigned int goal_col)
{
if (!ss_)
return false;
ob::ScopedState<> start(ss_->getStateSpace());
start[0] = start_row;
start[1] = start_col;
ob::ScopedState<> goal(ss_->getStateSpace());
goal[0] = goal_row;
goal[1] = goal_col;
ss_->setStartAndGoalStates(start, goal);
// generate a few solutions; all will be added to the goal;
for (int i = 0 ; i < 10 ; ++i)
{
if (ss_->getPlanner())
ss_->getPlanner()->clear();
ss_->solve();
}
const std::size_t ns = ss_->getProblemDefinition()->getSolutionCount();
OMPL_INFORM("Found %d solutions", (int)ns);
if (ss_->haveSolutionPath())
{
ss_->simplifySolution();
og::PathGeometric &p = ss_->getSolutionPath();
ss_->getPathSimplifier()->simplifyMax(p);
ss_->getPathSimplifier()->smoothBSpline(p);
return true;
}
return false;
}
示例14: save
bool ompl::tools::ThunderDB::saveIfChanged(const std::string &fileName)
{
if (numPathsInserted_)
return save(fileName);
else
OMPL_INFORM("Not saving because database has not changed");
return true;
}
示例15: OMPL_INFORM
bool ompl::tools::ThunderDB::findNearestStartGoal(int nearestK, const base::State *start, const base::State *goal,
ompl::geometric::SPARSdb::CandidateSolution &candidateSolution,
const base::PlannerTerminationCondition &ptc)
{
bool result = spars_->getSimilarPaths(nearestK, start, goal, candidateSolution, ptc);
if (!result)
{
OMPL_INFORM("RETRIEVE COULD NOT FIND SOLUTION ");
OMPL_INFORM("spars::getSimilarPaths() returned false - retrieve could not find solution");
return false;
}
OMPL_INFORM("spars::getSimilarPaths() returned true - found a solution of size %d",
candidateSolution.getStateCount());
return true;
}