本文整理汇总了C++中ArActionDesired::accountForRobotHeading方法的典型用法代码示例。如果您正苦于以下问题:C++ ArActionDesired::accountForRobotHeading方法的具体用法?C++ ArActionDesired::accountForRobotHeading怎么用?C++ ArActionDesired::accountForRobotHeading使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ArActionDesired
的用法示例。
在下文中一共展示了ArActionDesired::accountForRobotHeading方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: printf
AREXPORT ArActionDesired *ArPriorityResolver::resolve(
ArResolver::ActionMap *actions, ArRobot *robot, bool logActions)
{
ArResolver::ActionMap::reverse_iterator it;
ArAction *action;
ArActionDesired *act;
ArActionDesired averaging;
bool first = true;
int lastPriority=0;
bool printedFirst = true;
int printedLast=0;
if (actions == NULL)
return NULL;
myActionDesired.reset();
averaging.reset();
averaging.startAverage();
for (it = actions->rbegin(); it != actions->rend(); ++it)
{
action = (*it).second;
if (action != NULL && action->isActive())
{
act = action->fire(myActionDesired);
if (robot != NULL && act != NULL)
act->accountForRobotHeading(robot->getTh());
if (first || (*it).first != lastPriority)
{
averaging.endAverage();
myActionDesired.merge(&averaging);
averaging.reset();
averaging.startAverage();
first = false;
lastPriority = (*it).first;
}
averaging.addAverage(act);
if (logActions && act != NULL && act->isAnythingDesired())
{
if (printedFirst || printedLast != (*it).first)
{
ArLog::log(ArLog::Terse, "Priority %d:", (*it).first);
printedLast = (*it).first;
printedFirst = false;
}
ArLog::log(ArLog::Terse, "Action: %s", action->getName());
act->log();
}
}
}
averaging.endAverage();
myActionDesired.merge(&averaging);
/*
printf(
"desired delta %.0f strength %.3f, desired speed %.0f strength %.3f\n",
myActionDesired.getDeltaHeading(), myActionDesired.getHeadingStrength(),
myActionDesired.getVel(), myActionDesired.getVelStrength());
*/
return &myActionDesired;
}