行为树BehaviorTree学习记录6_文档里没有的

(为免误导,特免责声明如下:本文所有内容,只是基于个人当前理解和实际做法,后面亦会有更正和修订,但任何版本都不免有个人能力有限、理解有误或者工作环境不同的状况,故文中内容仅供参考。任何人都可以借鉴或者直接使用代码片段,但对任何直接引用或者借鉴产生的技术问题等后果,作者不承担任何责任。)

从外部写读写黑板

  • 通过tree.rootBlackboard()获取黑板指针,通过该指针操作黑板,但根目录的黑板不会传导到子树,即子树有自己的黑板,没法自动的读写根树的黑板,需要做重映射(重映射也不难,只需要在xml中添加等号连接)。
    (已验证可用,只是语法有点不同,需要加类模板)
BT::BehaviorTreeFactory factory;
// node
factory.registerNodeType<PickUpObject>("PickUpObject");

auto tree = factory.createTreeFromFile(tree_path);

// initialize some values before ticking the tree's root
auto blackboard = tree.rootBlackboard();
blackboard->set("key", "value");

tree.tickRoot();
  • 用xml脚本
    SetBlackboard (version 3.X) 或者 Script (version 4.X)

在简单节点中使用端口

(已验证可用)

factory.registerSimpleAction("GetInitialLocation",
  [this](BT::TreeNode& self) -> BT::NodeStatus {
    self.setOutput<std::string>("location", this->getInitialLocation());
    return BT::NodeStatus::SUCCESS;
  }, {
    BT::OutputPort<std::string>("location")
});

tickWhileRunning() vs tickOnce() vs tickExactlyOnce ()

config的使用方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值