c-深度剖析behaviortree.cpp构建重大机械人逻辑的“大脑

泉源:证券时报网作者:
字号

1函数工具(Functors)

函数工具是STL中的一个主要看法 ,也称?为“函数工具”或“函数器” 。它们是实现高阶函数的主要工具 。

建设和使用函数工具:#includevoidmyFunction(){std::cout<<"Thisisafunctionobject."<func=myFunction;func();//挪用函数工具return0;}

使命节点设计

我们需要界说一些基础的使命节点 ,如移动、避障和目的检测 。

automoveForward=bt::ActionNode::Create("MoveForward",(bt::Context&context){//移动前进逻辑returnbt::NodeStatus::SUCCESS;});autoavoidObstacle=bt::ActionNode::Create("AvoidObstacle",(bt::Context&context){//避障逻辑returnbt::NodeStatus::SUCCESS;});autofindTarget=bt::ActionNode::Create("FindTarget",(bt::Context&context){//目的检测逻辑returnbt::NodeStatus::SUCCESS;});

拓展应用:多机械人协同

BehaviorTree.cpp不但适用于单?机械人机械人的开发 ,同样也能够在多机械人系统中施展主要作用 ,尤其在协同使命和漫衍式决议方面 。通过将BehaviorTree.cpp应用于多机械人系统 ,我们可以实现多机械人之间的协同事情 ,从而提高整体使命的效率和可靠性 。

本文将进一步探讨怎样使用BehaviorTree.cpp来构建多机械人协同系统 。

构建重大逻辑

使用Selector和Sequence节点构建重大的?导航逻辑 。

autonavigator=bt::Selector::Create("Navigator");navigator->AddChild(moveForward);navigator->AddChild(avoidObstacle);autofindPath=bt::Sequence::Create("FindPath");findPath->AddChild(findTarget);findPath->AddChild(navigator);root->AddChild(findPath);

校对:李洛渊(1C0m4pJyqZtPma0S7t9ZFfz4hTykKag)

责任编辑: 陈淑贞
为你推荐
用户谈论
登录后可以讲话
网友谈论仅供其表达小我私家看法 ,并不批注证券时报态度
暂无谈论