1、构建行为树框架:按照原有程序的功能函数设计。
2、编写行为树节点文件,插入不同的功能函数代码。为了实现节点间不同数据结构的相互调用,除却使用黑板键值传递简单类型数据结构方式外,可以使用友元函数构建节点的功能函数类,并将需要被不同功能函数调用的数据结构以成员变量的方式,写在此类中。
class GripperInterface {
public:
// 成员函数
GripperInterface() : _status(false) {}
NodeStatus Initial();
NodeStatus Open();
// 成员变量
bool _status = false;
int num = 5;
unordered_map<std::string, std::string> ridMap;
};
3、在定义行为树节点的时候,需要定义绑定节点的函数,举例如下:
static GripperInterface grip_singleton;
factory.registerSimpleAction("OpenGripper", std::bind(&GripperInterface::open, &grip_singleton));
4、最后很重要的是CMakeLists.txt文件的编写,这里可以借鉴以下这篇博客及其专栏。
行为树 --- [1] BehaviorTree.CPP的编译及使用_爱就是恒久忍耐的博客-优快云博客https://wanghao1314.blog.youkuaiyun.com/article/details/112295130 5、还有就是添加新的外部链接库的问题,最简单的方式就是在CMakeLists.txt文件中加入下面一句话,将其中两项改为你的项目名称和外部链接库的名称就可以了。
target_link_libraries(<your_project_name> <external_library>)
6、最后就是改错,在build文件夹中进行cmake .. && make,出啥问题改啥问题就可以了。