Behavior-tree 在ROS中的应用综述(入门)
-
- 放在最开始的话
- 关于BT在ROS中应用的资料汇总
- 关于行为树的基本知识
- 行为树的编程
放在最开始的话
Behavior-tree(BT,行为树)自诞生以来也有很多年了,并且在AI游戏设计中有着非常广泛的应用,但是博主最近在学习BT在ROS中的编程应用时,浏览了国内各大论坛上的博文,发现内容甚少。于是,秉着“前人栽树,后人乘凉”的美德,博主也来种一回树。
本文主要涉及了一些资料的推荐以及基础编程指北,所用的环境是Ubuntu 18,ROS版本是melodic,所用语言主要是C++。对于行为树的基础知识介绍这里就不再赘述了。
关于BT在ROS中应用的资料汇总
博主主要收集的范围是国外的一些书以及国内古月居等ROS大牌的资料,也会保持持续更新:
- 《ROS by example2》
《ROS by example》相关丛书可以说是ROS最经典的教材之一。书中开头有关于Behavior-tree的介绍,特别是给出了BT中很经典的pi_tree的样例,但由于成书较早,书中使用版本是indigo,所以实际运行起来的借鉴意义不是很大。博主这里使用的是中山大学出版社的中文译本,主要是看起来方便。
- 《Behavior trees in ROS and AI》
《Behavior trees in ROS and AI》是一本很好的行为树入门介绍的书。书中主要把行为树和有限状态机等进行了比较,凸显出了行为树的优缺点。这本书更侧重于理论研究,在介绍行为树的基础上,进一步介绍了行为树的一些扩展以及行为树与Automated planning以及Machine learning等相关内容结合的介绍。并且书中还提供了一些行为树的模板,博主将在接下来的篇幅中进行详细的介绍和分析。
- 古月居小明工坊的 《ROS实验 | 行为树实现机器人智能》
网页链接:https://www.guyuehome.com/5311
这篇文章主要在《Behavior trees in ROS and AI》所提供程序的基础上,结合古月居ROS入门的系列教程,做了一个非常有意义的创新,非常适合新手学习。
- 关于创建一个Behavior tree的教程
网页链接https://behaviortree.github.io/BehaviorTree.CPP/tutorial_01_first_tree/
主要介绍了一些关于行为树特有结点的创建代码,csdn上也有中文版的翻译,但整体来说不是很适合新手研读,主要还是因为比较零碎。因此适合对BT有一个整体概念后再进行更深层次的学习。
以上所有的内容均可以在google上找到免费的资源,博主就不一一列出了。
关于行为树的基本知识
https://behaviortree.github.io/BehaviorTree.CPP/BT_basics/
中关于行为树的基本知识有一个非常精炼的介绍,此处就不再赘述了。
行为树的编程
本文主要是依据《Behavior trees in ROS and AI》中所提供的代码进行分析和介绍。所用的全部代码均可在此处下载得到。
https://github.com/miccol/ROS-Behavior-Tree
程序运行效果如图所示:![Behavior-tree 在ROS中的应用(入门)_第1张图片](http://img.e-com-net.com/image/info8/5049f80433964382b4a69e52fffc2814.jpg)
![Behavior-tree 在ROS中的应用(入门)_第2张图片](http://img.e-com-net.com/image/info8/1778eb1d7cd34adc88b38e0f0e0cfebf.jpg)