BehaviorTree.CPP - C++ のビヘイビア ツリー ライブラリ。電池が含まれています。

(Behavior Trees Library in C++. Batteries included.)

Created at: 2018-10-17 00:19:58
Language: C++
License: MIT

ライセンス MIT バージョン cmake ros1 ros2 LGTMグレード 談話のトピック

BehaviorTree.CPP

この C++ 14ライブラリは、BehaviorTree を作成するためのフレームワークを提供します。柔軟で使いやすく、リアクティブで高速になるように設計されています。

私たちの主なユースケースがロボティクスであっても、このライブラリを使用してゲーム用の AIを構築 したり、アプリケーションの有限ステート マシンを置き換えたりできます。

他の実装と比較して、BehaviorTree.CPPをユニークにするいくつかの機能があります。

  • これにより、非同期の Actions、つまりノンブロッキングが第一級の市民になります。

  • 複数のアクションを同時に実行するリアクティブな動作を構築できます。

  • ツリーは、Domain Specific Sc​​riptingスクリプト言語(XML ベース) を使用して定義され、実行時にロードできます。つまり、C++ で記述されていても、ツリーはハードコーディングされていません。

  • カスタム TreeNode を静的にリンクするか、実行時にロードできるプラグインに変換できます。

  • ツリーのノード間でデータフローを実行するためのタイプ セーフで柔軟なメカニズムを提供します。

  • これには、ユーザーが状態遷移を視覚化、記録、再生、および分析できるようにするロギング/プロファイリングインフラストラクチャが含まれています。

  • 最後になりましたが、十分に文書化されています。

ドキュメンテーション

主な概念、API、およびチュートリアルについては、https ://www.behaviortree.dev/ で学習できます。

この実装を他の実装とは異なるものにする概念的なアイデアの詳細については、プロジェクト MOOD2Be の最終成果物を参照してください

フォーラムとコミュニティ

ドキュメントが質問に答えない場合、および/または他のBT.CPPユーザーとつながりたい場合は、 https: //discourse.behaviortree.dev/ にアクセスしてください。

商用サポート

商用製品で BT.CPP を使用しており、技術サポート/コンサルティングが必要ですか? dfaconti@aurynrobotics.comまでご連絡いただければ、お客様のユースケースとニーズについて喜んでご相談させていただきます。

設計原則

このプロジェクトの主な目標は、モデル駆動型開発の原則を使用してコンポーネント開発者の役割をビヘイビア デザイナーから分離するビヘイビア ツリーの実装を作成することです。

実際には、これは次のことを意味します。

  • カスタム TreeNode は、再利用可能なビルディング ブロックである必要があります。それらを一度実装すれば、それらを再利用して多くの動作を構築できるはずです。

  • TreeNode からビヘイビア ツリーを構築するために、Behavior Designer は特定の TreeNode の C++ ソース コードを読み取ったり変更したりする必要はありません。

  • 複雑な動作は、サブツリーを使用して構成可能でなければなりません

このライブラリの機能の多くと、場合によっては明らかな制限は、この設計原則の結果である可能性があります。

たとえば、スコープ付き BlackBoard をツリーの一部にのみ表示することは、「名前の汚染」を回避し、大規模なツリーを作成できるようにするために特に重要です。

GUI エディター

BehaviorTree の編集は、お気に入りのテキスト エディターで XML ファイルを編集するのと同じくらい簡単です。

より洗練されたグラフィカル ユーザー インターフェイスをお探しの場合は (もちろんそうです)、 Grootをチェックしてください。

グルートのスクリーンショット

Groot と BehaviorTree.CPP の動作を見る

次の画像をクリックすると、C++ ライブラリとグラフィック ユーザー インターフェイスを使用してビヘイビア ツリーを設計および監視する方法を示す短いビデオが表示されます。

MOOD2Be

コンパイル方法(プレーンオールドcmake)

Ubuntu では、次の依存関係をインストールすることをお勧めします。

 sudo apt-get install libzmq3-dev libboost-dev

他の依存関係は、サードパーティフォルダーに既に含まれています。

ライブラリをコンパイルしてインストールするには、BehaviorTree.CPP フォルダーから次のコマンドを実行します。

 mkdir build; cd build
 cmake ..
 make
 sudo make install

アプリケーションで BT.CPp を使用する場合、典型的なCMakeLists.txtファイルは次のようになります。

cmake_minimum_required(VERSION 3.5)

project(hello_BT)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(behaviortree_cpp_v3)

add_executable(${PROJECT_NAME} "hello_BT.cpp")
target_link_libraries(${PROJECT_NAME} BT::behaviortree_cpp_v3)

ROS1 または ROS2 ユーザー (Catkin/Ament)

コマンドでパッケージを簡単にインストールできます

  sudo apt-get install ros-$ROS_DISTRO-behaviortree-cpp-v3

catkin でコンパイルする場合は、このパッケージを catkin ワークスペースに含める必要があります。

了承

このライブラリは 、イタリア工科大学(Michele Colledanchise)との共同作業で、Eurecat - https://eurecat.org/en/ (主な著者、Davide Faconti) で最初に開発されました。

このソフトウェアは、 RobMoSys の最初の公募から選ばれ た 6 つの統合技術プロジェクト (ITP)の 1 つであるMOOD2Beの主要コンポーネントの 1 つです。そのため、MOOD2Be はヨーロッパの Horizo​​n2020 プロジェクト RobMoSys によってサポートされています。このソフトウェアは RobMoSys に準拠しています。

RobMoSys 適合者

さらなる読み物

  • 紹介記事: AI のビヘイビア ツリー: How they work

  • ビヘイビア ツリーがどのようにハイブリッド制御システムをモジュール化し、シーケンシャル ビヘイビア コンポジション、サブサンプション アーキテクチャ、およびデシジョン ツリーを一般化するか。 ミケーレ・コレダンチーズとペッター・オグレン。ロボット工学に関する IEEE トランザクション 2017。

  • CRC Press Taylor & Francis 発行の Behavior Trees in Robotics and AIは、CRC Press Store または Amazon で購入できます (電子ブックおよびハードカバー)。

プレプリント版 (無料) はこちらから入手できます: https://arxiv.org/abs/1709.00084

ライセンス

MIT ライセンス (MIT)

Copyright (c) 2014-2018 Michele Colledanchise Copyright (c) 2018-2021 Davide Faconti

このソフトウェアおよび関連するドキュメント ファイル (「ソフトウェア」) のコピーを取得するすべての人に、使用、コピー、変更、マージする権利を含むがこれらに限定されない、制限なしにソフトウェアを扱う許可が無償で付与されます。 、ソフトウェアのコピーを発行、配布、サブライセンス、および/または販売すること、およびソフトウェアが提供された人にそれを許可すること。ただし、以下の条件に従います。

上記の著作権通知およびこの許可通知は、ソフトウェアのすべてのコピーまたは実質的な部分に含まれるものとします。

ソフトウェアは「現状有姿」で提供され、商品性、特定の目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示または黙示を問わず、いかなる種類の保証もありません。作者または著作権所有者は、契約、不法行為、またはその他の行為によるものであるかにかかわらず、本ソフトウェアまたは本ソフトウェアの使用またはその他の取引に起因または関連して、いかなる請求、損害、またはその他の責任に対しても責任を負わないものとします。ソフトウェア。