行为树 — [1] BehaviorTree.CPP的编译及使用

BehaviorTree.CPP提供了一个创建行为树(Behavior Trees)的框架,基于C++14,其地址是https://github.com/BehaviorTree/BehaviorTree.CPP

本文主要讲述如何编译及使用BehaviorTree.CPP,基本信息如下,

  • OS:Debian10 (ubuntu也是一样的)
  • BehaviorTree.CPP版本:3.5.4
  • CMake版本:3.13.4
  • boost版本:1.67

一 安装依赖库

BehaviorTree.CPP依赖boost和zmq3,所以需要先进行安装,

sudo apt install libboost-dev
sudo apt install libboost-coroutine-dev # 需要用到协程
sudo apt install libzmq3-dev

boost推荐安装1.59以上的版本


二 编译

解压BehaviorTree.CPP,然后在源码目录下创建build目录,cd进入,然后执行如下命令进行编译,

# 不需要单元测试(单元测试需要安装googletest),生成静态库,也可以根据自己需要进行选择
cmake .. -DBUILD_UNIT_TESTS=OFF -DBUILD_SHARED_LIBS=OFF 

# 编译
make

编译完之后,在build/bin目录下会生成静态库libbehaviortree_cpp_v3.a,以及源码自带的一些examples
在这里插入图片描述


三 使用

编译OK后,来看看如何使用,这里以源码自带的例子t01_build_your_first_tree.cpp为例(位于examples目录下)。

首先创建工程目录如下,
在这里插入图片描述
接着执行下列操作,

  1. 把t01_build_your_first_tree.cpp拷贝到src目录下
  2. 把libbehaviortree_cpp_v3.a拷贝到lib目录下
  3. 把源码目录下include目录里的内容拷贝到include目录下
  4. 把源码目录下的sample_nodes目录拷贝到工程目录下
  5. 在工程目录下创建build目录,用于编译

操作完成后目录结构如下,
在这里插入图片描述
PS:sample_nodes目录下的CMakeLists.txt在这里没有用,可以删掉,留着也不影响

工程目录下的CMakeLists.txt内容如下,

cmake_minimum_required(VERSION 3.5.1)

#---- Enable C++14 ----
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Boost COMPONENTS coroutine QUIET)
find_package(Threads)
find_package(Curses QUIET)

list(APPEND BEHAVIOR_TREE_EXTERNAL_LIBRARIES
    ${CMAKE_THREAD_LIBS_INIT}
    ${CMAKE_DL_LIBS}
    ${Boost_LIBRARIES} 
    ${CURSES_LIBRARIES} )

include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/sample_nodes)

list(APPEND NEED_SOURCE
    ${CMAKE_SOURCE_DIR}/src/t01_build_your_first_tree.cpp
    ${CMAKE_SOURCE_DIR}/sample_nodes/dummy_nodes.cpp )

find_library(BT_LIB behaviortree_cpp_v3 HINTS ${CMAKE_SOURCE_DIR}/lib)

add_executable(t01_first_tree_static  ${NEED_SOURCE})
target_compile_definitions(t01_first_tree_static PRIVATE "MANUAL_STATIC_LINKING")
target_link_libraries(t01_first_tree_static ${BT_LIB} ${BEHAVIOR_TREE_EXTERNAL_LIBRARIES} )

PS:最难的就是CMakeLists.txt的编写了,这是本人仔细阅读源码里的CMakeLists.txt后单独写出来的。

然后cd到build目录下,执行下面的命令,

cmake .. && make

最终生成bin文件t01_first_tree_static,然后运行一下,如下
在这里插入图片描述
运行OK。


四 总结

本文主要讲述如何在Linux下编译及使用BehaviorTree.CPP,整个过程遇到不少坑,不过都解决了。万事开头难,编译及使用解决了,后面就是坦途了。

© 版权声明
THE END
喜欢就支持一下吧
点赞991 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容