文件(pkg)结构:
include----
demo:(自定义的)
- tree_node.h:
所有树的节点的类声明,继承官方库的各种节点类型(RosActionNode/RosServiceNode等类)
输入输出port的变量名称
tick函数声明
req和res函数的声明 - tree_xml.h:
整棵树的逻辑,节点的顺序
输入输出port的变量所带的参数
节点的名字,即注册的时候输入的
建立的服务名和server名,即定义函数时建立的,此处与自定义的服务建立连接
behaviortree_ros:(官方库)
- bt_action_node.h:RosActionNode类的封装
- bt_service_node.h:RosServiceNode类的封装
src----
- tree_node.cpp:定义各个在node.h声明的与节点有关函数,如res/req/tick/result 等函数
- server.cpp:server执行的内容,以及建立一个server+名称,与树节点独立
- action.cpp:action执行的内容,以及建立一个action+名称,与树节点独立
- bh_tree.cpp:注册各个节点(类型在node.h里找),创建树(类型在xml.h里)
msg/action/srv----
msg:
与决策树相关的数据类型
action:
action 文件内容组成分为三部分:请求目标值、最终响应结果、连续反馈,三者之间使用分割示例内容如下:
#目标值
int32 num
---
#最终结果
int32 result
---
#连续反馈
float64 progress_bar
C++tips:
- 关于std::bind
C++的冒号
仿函数
std::bind总结
operate()