本文整理汇总了C++中base::PlannerData类的典型用法代码示例。如果您正苦于以下问题:C++ PlannerData类的具体用法?C++ PlannerData怎么用?C++ PlannerData使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PlannerData类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1:
void ompl::control::KPIECE1::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
Grid::CellArray cells;
tree_.grid.getCells(cells);
if (PlannerData *cpd = dynamic_cast<control::PlannerData*>(&data))
{
double delta = siC_->getPropagationStepSize();
for (unsigned int i = 0 ; i < cells.size() ; ++i)
for (unsigned int j = 0 ; j < cells[i]->data->motions.size() ; ++j)
{
const Motion* m = cells[i]->data->motions[j];
if (m->parent)
cpd->recordEdge(m->parent->state, m->state, m->control, m->steps * delta);
else
cpd->recordEdge(NULL, m->state, NULL, 0.);
cpd->tagState(m->state, cells[i]->border ? 2 : 1);
}
}
else
{
for (unsigned int i = 0 ; i < cells.size() ; ++i)
for (unsigned int j = 0 ; j < cells[i]->data->motions.size() ; ++j)
{
const Motion* m = cells[i]->data->motions[j];
data.recordEdge(m->parent ? m->parent->state : NULL, m->state);
data.tagState(m->state, cells[i]->border ? 2 : 1);
}
}
}
开发者ID:megan-starr9,项目名称:UAV_Aiolos,代码行数:33,代码来源:KPIECE1.cpp
示例2: pd
void ompl::geometric::CForest::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
for (std::size_t i = 0; i < planners_.size(); ++i)
{
base::PlannerData pd(si_);
planners_[i]->getPlannerData(pd);
for (unsigned int j = 0; j < pd.numVertices(); ++j)
{
base::PlannerDataVertex &v = pd.getVertex(j);
v.setTag(i);
std::vector<unsigned int> edgeList;
unsigned int numEdges = pd.getIncomingEdges(j, edgeList);
for (unsigned int k = 0; k < numEdges; ++k)
{
base::Cost edgeWeight;
base::PlannerDataVertex &w = pd.getVertex(edgeList[k]);
w.setTag(i);
pd.getEdgeWeight(j, k, &edgeWeight);
data.addEdge(v, w, pd.getEdge(j, k), edgeWeight);
}
}
for (unsigned int j = 0; j < pd.numGoalVertices(); ++j)
data.markGoalState(pd.getGoalVertex(j).getState());
for (unsigned int j = 0; j < pd.numStartVertices(); ++j)
data.markStartState(pd.getStartVertex(j).getState());
}
}
开发者ID:jvgomez,项目名称:ompl,代码行数:34,代码来源:CForest.cpp
示例3: PlannerDataEdgeControl
void ompl::control::EST::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<MotionInfo> motionInfo;
tree_.grid.getContent(motionInfo);
double stepSize = siC_->getPropagationStepSize();
if (lastGoalMotion_)
data.addGoalVertex(base::PlannerDataVertex(lastGoalMotion_->state));
for (auto &mi : motionInfo)
for (auto &motion : mi.motions_)
{
if (motion->parent)
{
if (data.hasControls())
data.addEdge(base::PlannerDataVertex(motion->parent->state), base::PlannerDataVertex(motion->state),
PlannerDataEdgeControl(motion->control, motion->steps * stepSize));
else
data.addEdge(base::PlannerDataVertex(motion->parent->state),
base::PlannerDataVertex(motion->state));
}
else
data.addStartVertex(base::PlannerDataVertex(motion->state));
}
}
开发者ID:ompl,项目名称:ompl,代码行数:28,代码来源:EST.cpp
示例4:
void ompl::control::SyclopRRT::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<Motion *> motions;
if (nn_)
nn_->list(motions);
double delta = siC_->getPropagationStepSize();
if (lastGoalMotion_)
data.addGoalVertex(base::PlannerDataVertex(lastGoalMotion_->state));
for (auto &motion : motions)
{
if (motion->parent)
{
if (data.hasControls())
data.addEdge(base::PlannerDataVertex(motion->parent->state), base::PlannerDataVertex(motion->state),
control::PlannerDataEdgeControl(motion->control, motion->steps * delta));
else
data.addEdge(base::PlannerDataVertex(motion->parent->state), base::PlannerDataVertex(motion->state));
}
else
data.addStartVertex(base::PlannerDataVertex(motion->state));
}
}
开发者ID:davetcoleman,项目名称:ompl,代码行数:25,代码来源:SyclopRRT.cpp
示例5:
void ompl::control::RRT::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<Motion*> motions;
if (nn_)
nn_->list(motions);
double delta = siC_->getPropagationStepSize();
if (lastGoalMotion_)
data.addGoalVertex(base::PlannerDataVertex(lastGoalMotion_->state));
for (unsigned int i = 0 ; i < motions.size() ; ++i)
{
const Motion* m = motions[i];
if (m->parent)
{
if (data.hasControls())
data.addEdge(base::PlannerDataVertex(m->parent->state),
base::PlannerDataVertex(m->state),
control::PlannerDataEdgeControl(m->control, m->steps * delta));
else
data.addEdge(base::PlannerDataVertex(m->parent->state),
base::PlannerDataVertex(m->state));
}
else
data.addStartVertex(base::PlannerDataVertex(m->state));
}
}
开发者ID:giogadi,项目名称:ompl,代码行数:30,代码来源:RRT.cpp
示例6:
void ompl::geometric::RRTsharp::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<Motion*> motions;
if (nn_)
nn_->list(motions);
if (lastGoalMotion_)
data.addGoalVertex(base::PlannerDataVertex(lastGoalMotion_->state));
for (std::size_t i = 0 ; i < motions.size() ; ++i)
{
if (motions[i]->parent == NULL)
data.addStartVertex(base::PlannerDataVertex(motions[i]->state));
else
data.addEdge(base::PlannerDataVertex(motions[i]->parent->state),
base::PlannerDataVertex(motions[i]->state));
// if (visitedMotions.count(motions[i])!=0){
// data.tagState(motions[i]->state,1);
// }
// if (toVisitMotions.count(motions[i])!=0){
// data.tagState(motions[i]->state,2);
// }
}
}
开发者ID:EmmanuelBoidot,项目名称:RRTsharp,代码行数:26,代码来源:RRTsharp.cpp
示例7:
void ompl::control::SyclopEST::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
double delta = siC_->getPropagationStepSize();
if (lastGoalMotion_)
data.addGoalVertex(lastGoalMotion_->state);
for (size_t i = 0; i < motions_.size(); ++i)
{
if (motions_[i]->parent)
{
if (data.hasControls())
data.addEdge (base::PlannerDataVertex(motions_[i]->parent->state),
base::PlannerDataVertex(motions_[i]->state),
control::PlannerDataEdgeControl (motions_[i]->control, motions_[i]->steps * delta));
else
data.addEdge (base::PlannerDataVertex(motions_[i]->parent->state),
base::PlannerDataVertex(motions_[i]->state));
}
else
data.addStartVertex (base::PlannerDataVertex(motions_[i]->state));
}
}
开发者ID:HRZaheri,项目名称:batch-informed-trees,代码行数:25,代码来源:SyclopEST.cpp
示例8: foreach
void ompl::geometric::LazyPRM::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
// Explicitly add start and goal states. Tag all states known to be valid as 1.
// Unchecked states are tagged as 0.
for (size_t i = 0; i < startM_.size(); ++i)
data.addStartVertex(base::PlannerDataVertex(stateProperty_[startM_[i]], 1));
for (size_t i = 0; i < goalM_.size(); ++i)
data.addGoalVertex(base::PlannerDataVertex(stateProperty_[goalM_[i]], 1));
// Adding edges and all other vertices simultaneously
foreach(const Edge e, boost::edges(g_))
{
const Vertex v1 = boost::source(e, g_);
const Vertex v2 = boost::target(e, g_);
data.addEdge(base::PlannerDataVertex(stateProperty_[v1]),
base::PlannerDataVertex(stateProperty_[v2]));
// Add the reverse edge, since we're constructing an undirected roadmap
data.addEdge(base::PlannerDataVertex(stateProperty_[v2]),
base::PlannerDataVertex(stateProperty_[v1]));
// Add tags for the newly added vertices
data.tagState(stateProperty_[v1], (vertexValidityProperty_[v1] & VALIDITY_TRUE) == 0 ? 0 : 1);
data.tagState(stateProperty_[v2], (vertexValidityProperty_[v2] & VALIDITY_TRUE) == 0 ? 0 : 1);
}
}
开发者ID:HRZaheri,项目名称:batch-informed-trees,代码行数:29,代码来源:LazyPRM.cpp
示例9: PlannerDataEdgeControl
void ompl::control::EST::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<MotionInfo> motions;
tree_.grid.getContent(motions);
double stepSize = siC_->getPropagationStepSize();
if (lastGoalMotion_)
data.addGoalVertex(base::PlannerDataVertex(lastGoalMotion_->state));
for (unsigned int i = 0 ; i < motions.size() ; ++i)
for (unsigned int j = 0 ; j < motions[i].size() ; ++j)
{
if (motions[i][j]->parent)
{
if (data.hasControls())
data.addEdge (base::PlannerDataVertex (motions[i][j]->parent->state),
base::PlannerDataVertex (motions[i][j]->state),
PlannerDataEdgeControl(motions[i][j]->control, motions[i][j]->steps * stepSize));
else
data.addEdge (base::PlannerDataVertex (motions[i][j]->parent->state),
base::PlannerDataVertex (motions[i][j]->state));
}
else
data.addStartVertex (base::PlannerDataVertex (motions[i][j]->state));
}
}
开发者ID:jdmartin86,项目名称:ompl,代码行数:29,代码来源:EST.cpp
示例10:
void ompl::geometric::LBKPIECE1::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
dStart_.getPlannerData(data, 1, true, NULL);
dGoal_.getPlannerData(data, 2, false, NULL);
// Insert the edge connecting the two trees
data.addEdge (data.vertexIndex(connectionPoint_.first), data.vertexIndex(connectionPoint_.second));
}
开发者ID:giogadi,项目名称:ompl,代码行数:9,代码来源:LBKPIECE1.cpp
示例11:
void ompl::geometric::LazyRRT::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<Motion*> motions;
if (nn_)
nn_->list(motions);
for (unsigned int i = 0 ; i < motions.size() ; ++i)
{
data.recordEdge(motions[i]->parent ? motions[i]->parent->state : NULL, motions[i]->state);
if (motions[i]->valid)
data.tagState(motions[i]->state, 1);
}
}
开发者ID:megan-starr9,项目名称:UAV_Aiolos,代码行数:15,代码来源:LazyRRT.cpp
示例12:
void ompl::control::SyclopEST::getPlannerData(base::PlannerData& data) const
{
Planner::getPlannerData(data);
if (PlannerData *cpd = dynamic_cast<control::PlannerData*>(&data))
{
const double delta = siC_->getPropagationStepSize();
for (std::vector<Motion*>::const_iterator i = motions_.begin(); i != motions_.end(); ++i)
{
const Motion* m = *i;
if (m->parent)
cpd->recordEdge(m->parent->state, m->state, m->control, m->steps * delta);
else
cpd->recordEdge(NULL, m->state, NULL, 0.);
}
}
else
{
for (std::vector<Motion*>::const_iterator i = motions_.begin(); i != motions_.end(); ++i)
{
const Motion* m = *i;
data.recordEdge(m->parent ? m->parent->state : NULL, m->state);
}
}
}
开发者ID:megan-starr9,项目名称:UAV_Aiolos,代码行数:25,代码来源:SyclopEST.cpp
示例13:
void ompl::control::SST::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<Motion*> motions;
std::vector<Motion*> allMotions;
if (nn_)
nn_->list(motions);
for(unsigned i=0;i<motions.size();i++)
{
if(motions[i]->numChildren_==0)
{
allMotions.push_back(motions[i]);
}
}
for(unsigned i=0;i<allMotions.size();i++)
{
if(allMotions[i]->parent_!=NULL)
{
allMotions.push_back(allMotions[i]->parent_);
}
}
double delta = siC_->getPropagationStepSize();
if (prevSolution_.size()!=0)
data.addGoalVertex(base::PlannerDataVertex(prevSolution_[0]));
for (unsigned int i = 0 ; i < allMotions.size() ; ++i)
{
const Motion *m = allMotions[i];
if (m->parent_)
{
if (data.hasControls())
data.addEdge(base::PlannerDataVertex(m->parent_->state_),
base::PlannerDataVertex(m->state_),
control::PlannerDataEdgeControl(m->control_, m->steps_ * delta));
else
data.addEdge(base::PlannerDataVertex(m->parent_->state_),
base::PlannerDataVertex(m->state_));
}
else
data.addStartVertex(base::PlannerDataVertex(m->state_));
}
}
开发者ID:HRZaheri,项目名称:batch-informed-trees,代码行数:46,代码来源:SST.cpp
示例14:
void ompl::geometric::BasicPRMmodif::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
for (unsigned int i = 0 ; i < milestones_.size() ; ++i)
for (unsigned int j = 0 ; j < milestones_[i]->adjacent.size() ; ++j)
data.recordEdge(milestones_[i]->state, milestones_[i]->adjacent[j]->state);
}
开发者ID:nicocoaste,项目名称:newBoundingBoxPlanner,代码行数:8,代码来源:BasicPRMmodif.cpp
示例15:
void ompl::control::PID::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
double delta = siC_->getPropagationStepSize();
if (motions.back())
{
data.addGoalVertex(base::PlannerDataVertex(motions.back()->state));
}
for (int i = motions.size()-1 ; i >= 1 ; --i)
{
const Motion* m = motions[i];
data.addEdge(base::PlannerDataVertex(motions[i-1]->state), base::PlannerDataVertex(m->state), control::PlannerDataEdgeControl(m->control, delta));
}
data.addStartVertex(base::PlannerDataVertex(motions.front()->state));
}
开发者ID:Copilot-Language,项目名称:copilot-discussion,代码行数:17,代码来源:pid_ctrl.cpp
示例16:
void ompl::geometric::pSBL::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<MotionInfo> motions;
tStart_.grid.getContent(motions);
for (unsigned int i = 0 ; i < motions.size() ; ++i)
for (unsigned int j = 0 ; j < motions[i].size() ; ++j)
if (motions[i][j]->parent == nullptr)
data.addStartVertex(base::PlannerDataVertex(motions[i][j]->state, 1));
else
data.addEdge(base::PlannerDataVertex(motions[i][j]->parent->state, 1),
base::PlannerDataVertex(motions[i][j]->state, 1));
motions.clear();
tGoal_.grid.getContent(motions);
for (unsigned int i = 0 ; i < motions.size() ; ++i)
for (unsigned int j = 0 ; j < motions[i].size() ; ++j)
if (motions[i][j]->parent == nullptr)
data.addGoalVertex(base::PlannerDataVertex(motions[i][j]->state, 2));
else
// The edges in the goal tree are reversed so that they are in the same direction as start tree
data.addEdge(base::PlannerDataVertex(motions[i][j]->state, 2),
base::PlannerDataVertex(motions[i][j]->parent->state, 2));
data.addEdge(data.vertexIndex(connectionPoint_.first), data.vertexIndex(connectionPoint_.second));
}
开发者ID:RickOne16,项目名称:ompl,代码行数:28,代码来源:pSBL.cpp
示例17:
void ompl::geometric::TRRTConnect::getPlannerData(base::PlannerData &data) const {
Planner::getPlannerData(data);
std::vector<Motion*> motions;
if (tStart_) tStart_->list(motions);
for (std::size_t i(0); i < motions.size(); ++i) {
if (!motions[i]->parent) {
data.addStartVertex(base::PlannerDataVertex(motions[i]->state,1));
} else {
data.addEdge(base::PlannerDataVertex(motions[i]->parent->state,1),
base::PlannerDataVertex(motions[i]->state,1));
}
}
motions.clear();
if (tGoal_) tGoal_->list(motions);
for (std::size_t i(0); i < motions.size(); ++i) {
if (!motions[i]->parent) {
data.addGoalVertex(base::PlannerDataVertex(motions[i]->state,2));
} else {
//The edges in the goal tree are reversed to be consistent with start tree
data.addEdge(base::PlannerDataVertex(motions[i]->state,2),
base::PlannerDataVertex(motions[i]->parent->state,2));
}
}
//Add the edge connecting the two trees
data.addEdge(data.vertexIndex(connectionPoint_.first),
data.vertexIndex(connectionPoint_.second));
}
开发者ID:iocroblab,项目名称:kautham,代码行数:32,代码来源:TRRTConnect.cpp
示例18:
void ompl::geometric::SBL::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<MotionInfo> motionInfo;
tStart_.grid.getContent(motionInfo);
for (auto &m : motionInfo)
for (auto &motion : m.motions_)
if (motion->parent == nullptr)
data.addStartVertex(base::PlannerDataVertex(motion->state, 1));
else
data.addEdge(base::PlannerDataVertex(motion->parent->state, 1),
base::PlannerDataVertex(motion->state, 1));
motionInfo.clear();
tGoal_.grid.getContent(motionInfo);
for (auto &m : motionInfo)
for (auto &motion : m.motions_)
if (motion->parent == nullptr)
data.addGoalVertex(base::PlannerDataVertex(motion->state, 2));
else
// The edges in the goal tree are reversed so that they are in the same direction as start tree
data.addEdge(base::PlannerDataVertex(motion->state, 2),
base::PlannerDataVertex(motion->parent->state, 2));
data.addEdge(data.vertexIndex(connectionPoint_.first), data.vertexIndex(connectionPoint_.second));
}
开发者ID:ompl,项目名称:ompl,代码行数:28,代码来源:SBL.cpp
示例19:
void ompl::geometric::pRRT::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<Motion *> motions;
if (nn_)
nn_->list(motions);
if (lastGoalMotion_)
data.addGoalVertex(base::PlannerDataVertex(lastGoalMotion_->state));
for (auto &motion : motions)
{
if (motion->parent == nullptr)
data.addStartVertex(base::PlannerDataVertex(motion->state));
else
data.addEdge(base::PlannerDataVertex(motion->parent->state), base::PlannerDataVertex(motion->state));
}
}
开发者ID:ompl,项目名称:ompl,代码行数:19,代码来源:pRRT.cpp
示例20:
void ompl::geometric::FMT::getPlannerData(base::PlannerData &data) const
{
Planner::getPlannerData(data);
std::vector<Motion*> motions;
nn_->list(motions);
if (lastGoalMotion_)
data.addGoalVertex(base::PlannerDataVertex(lastGoalMotion_->getState()));
unsigned int size = motions.size();
for (unsigned int i = 0; i < size; ++i)
{
if (motions[i]->getParent() == nullptr)
data.addStartVertex(base::PlannerDataVertex(motions[i]->getState()));
else
data.addEdge(base::PlannerDataVertex(motions[i]->getParent()->getState()),
base::PlannerDataVertex(motions[i]->getState()));
}
}
开发者ID:RickOne16,项目名称:ompl,代码行数:19,代码来源:FMT.cpp
注:本文中的base::PlannerData类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论