当前位置:   article > 正文

ros行为树-文件分布(基于behaviortree_v3)_behaviortree3

behaviortree3

文件(pkg)结构:

include----

demo:(自定义的)

  1. tree_node.h:
    所有树的节点的声明,继承官方库的各种节点类型(RosActionNode/RosServiceNode等类)
    输入输出port的变量名称
    tick函数声明
    req和res函数的声明
  2. tree_xml.h:
    整棵树的逻辑,节点的顺序
    输入输出port的变量所带的参数
    节点的名字,即注册的时候输入的
    建立的服务名和server名,即定义函数时建立的,此处与自定义的服务建立连接

behaviortree_ros:(官方库)

  1. bt_action_node.h:RosActionNode类的封装
  2. bt_service_node.h:RosServiceNode类的封装

src----

  1. tree_node.cpp:定义各个在node.h声明的与节点有关函数,如res/req/tick/result 等函数
  2. server.cpp:server执行的内容,以及建立一个server+名称,与树节点独立
  3. action.cpp:action执行的内容,以及建立一个action+名称,与树节点独立
  4. bh_tree.cpp:注册各个节点(类型在node.h里找),创建树(类型在xml.h里)

msg/action/srv----

action教程
service/client教程

msg:
与决策树相关的数据类型
action:
action 文件内容组成分为三部分:请求目标值、最终响应结果、连续反馈,三者之间使用分割示例内容如下:

#目标值
int32 num
---
#最终结果
int32 result
---
#连续反馈
float64 progress_bar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

行为树的种类
树的种类2
BehaviorTree.CPP
廖总的树教程
行为树种类详细教程
tree的模块化编程
ssh通信
开机自启
source和export的差别

  • BT::NodeStatus status = BT::NodeStatus::IDLE 初始化状态为空闲IDLE
  • 订阅收到的消息要处理的话需要等到spin或者spinonce的时候才调用消息回调处理函数,spin是不会执行下面的内容,会一直卡在那里,而spinonce是会一直执行下去,但是只执行一次,所以需要经常放在循环里面。spin/spinonce
  • 自定义节点的名字:class SayRuntimePort : public BT::SyncActionNode 要会继承,以及确定好input和output的内容,学会就定义该节点里的各个action函数,然后xml里面写的时候才可以生效
  • xml的树书写方式
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/400989
推荐阅读
相关标签
  

闽ICP备14008679号