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

文件(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

行为树的种类
树的种类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的树书写方式
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值