PDDLStream は、サンプリング手順が存在する場合の人工知能 (AI) 計画のためのアクション言語と一連のアルゴリズムで構成される計画フレームワークです。 PDDLStream は、サンプリング手順の宣言仕様であるストリームを導入することにより、計画ドメイン定義言語 (PDDL) を拡張します。 PDDLStream アルゴリズムはドメインに依存せず、各サンプラーのブラックボックス記述のみで PDDLStream の問題を解決します。 PDDLStream の応用の動機となったのは、汎用ロボットのタスクおよびモーション プランニング (TAMP) でした。
デフォルトのpddlstreamブランチ (メイン) は、 pddlstreamの最新の安定した「リリース」です。下向きのpddlstreamブランチは、 pddlstreamの最新かつ高度なバージョンですが、ある程度実験的なものでもあります。
ケーラン・R・ギャレット、トマス・ロサノ=ペレス、レスリー・P・ケルブリング。 PDDLStream: Optimistic Adaptive Planning によるシンボリック プランナーとブラックボックス サンプラーの統合、自動計画とスケジューリングに関する国際会議 (ICAPS)、2020 年。
Caelan Garrett: [ユーザー名]@csail.mit.edu
PDDLStream は、PDDLStream/STRIPStream 計画フレームワークの「第 3 バージョン」であり、以前のバージョンに取って代わることを目的としています。
PDDLStream では、これらのバージョンに比べて表現面およびアルゴリズム面でいくつかの改善が加えられています。最も注目すべき点は、可能な限り PDDL の規則と構文に準拠しており、いくつかの新しいアルゴリズムが含まれていることです。
$ git clone --recursive --branch main [email protected]:caelan/pddlstream.git
$ cd pddlstream
pddlstream$ git submodule update --init --recursive
pddlstream$ ./downward/build.py
必要に応じて、インストール手順の詳細については FastDownward のドキュメントを参照してください。
PDDLStream は、Python2.7 と最新バージョンの Python3 を積極的にサポートしています。
新しいコミットをプルするときは、必ずpddlstreamのサブモジュールを再帰的に更新してください。
pddlstream$ git pull --recurse-submodules
このリポジトリには、ロボットおよび非ロボットの PDDLStream サンプル ドメインがいくつか含まれています。
以下を使用して PyBullet を OS X または Linux にインストールします。
$ pip install pybullet numpy scipy
例:
pddlstream$ python -m examples.pybullet.tamp.run
pddlstream$ python -m examples.pybullet.pr2.run
pddlstream$ python -m examples.pybullet.turtlebot_rovers.run
pddlstream$ python -m examples.pybullet.pr2_rovers.run
pddlstream$ python -m examples.pybullet.pr2_belief.run
pddlstream$ python -m examples.pybullet.kuka.run
私の PyBullet プランニング プリミティブ ライブラリの詳細については、https://github.com/caelan/pybullet-planning を参照してください。
以下を使用して、Linux に numpy と Python TKinter をインストールします。
$ sudo apt-get install python-tk
$ pip install numpy
例:
pddlstream$ python -m examples.continuous_tamp.run
pddlstream$ python -m examples.motion.run
pddlstream$ python -m examples.discrete_tamp.run
pddlstream$ python -m examples.discrete_tamp.run
追加の依存関係なしで実行できる簡単な例:
pddlstream$ python -m examples.blocksworld.run
pddlstream$ python -m examples.blocksworld.run_derived
pddlstream$ python -m examples.kitchen.run
テスト ケースまたは高度な (文書化されていない) 機能:
pddlstream$ python -m examples.advanced.adl.run
pddlstream$ python -m examples.advanced.defer.run
pddlstream$ python -m examples.advanced.exogenous.run
pddlstream$ python -m examples.advanced.fluent.run
pddlstream$ python -m examples.advanced.satisfy.run
pddlstream$ python -m examples.advanced.wild.run
PDDLStream の修正されたトランスレーターを使用して解決された、修正されていない PDDL IPC の例:
pddlstream$ python -m examples.ipc.rovers.run
pddlstream$ python -m examples.ipc.satellites.run
PDDLStream を使用する外部プロジェクト:
PDDLStream は、単一の計画言語と複数の計画アルゴリズムで構成される計画フレームワークです。一部のアルゴリズムは他のアルゴリズムと根本的に異なるため (たとえば、増分アルゴリズムと集中アルゴリズム)、計画にかかる時間も大幅に異なる可能性があります。適応アルゴリズムは通常、ロボット操作ドメインなど、多くのサンプリング経路が考えられるドメインで最も優れたパフォーマンスを発揮します。
メタ プロシージャsolve(...) を使用すると、キーワード引数Algorithm={}を使用して、利用可能なアルゴリズムを切り替えることができます。
プロパティの説明:
多くの (すべてではありません) pddlstreamアルゴリズムには、幅優先検索 (BFS) や均一コスト検索 (UCS) などの有限状態空間検索アルゴリズムを使用して実装できる離散計画フェーズがあります。ただし、 pddlstream はPDDL を拡張するため、この計画段階は最先端の古典的な計画アルゴリズムによって実装することもできます。このアルゴリズムは、PDDL などのアクション言語の因数分解された構造を活用して、経験的な計画の効率を大幅に向上させます。ドメインに依存しない方法でヒューリスティックを自動的に導出するベストファーストヒューリスティック検索アルゴリズムは、これらのアルゴリズムのクラスの 1 つの例です。
pddlstream には、多くの Best-First ヒューリスティック検索 PDDL 計画アルゴリズムを含む豊富なライブラリである FastDownward があらかじめパッケージ化されています。 SEARCH_OPTIONS には少数の効果的で一般的な検索アルゴリズムが事前設定されており、キーワード引数 planner=? を使用して切り替えることができます。大まかに、最も遅延のないもの(コストが最も低い)から最も遅延の多いもの(実行時間が最も短い)の順にランク付けしました。
個別計画フェーズの実行時間は、選択した検索アルゴリズムによって異なります。多くの非敵対的問題の場合、これらのアルゴリズムは問題を瞬時に解決するか、十分な貪欲さがなければ 10 分以内に終了しません。より貪欲な構成から始めて、必要に応じてより貪欲でない構成に移行することをお勧めします。
FastDownward の代わりに、任意の PDDL 計画アルゴリズムを使用できます。ただし、注意点として、これらのプランナーの一部は、限られた表現機能セット (条件効果なし、派生述語なしなど) をサポートするためにのみ実装されているため、実際の多くの環境ではモデリングがより困難になり、最終的に計画の効率が低下する可能性があります。 - 世界 (非 IPC) 計画ドメイン。私は FastDownward を強くお勧めしますが、過去に連携してある程度の成功を収めた PDDL プランナーには次のようなものがあります。
クラシックプランナー
数値プランナー:
テンポラルプランナー:
多様なプランナー:
「廃止された」フォルダーは、継続的にサポートされなくなったため、古くなっている可能性があるコードを示します。
次の手順に従って Drake を OS X または Ubuntu にインストールします: http://drake.mit.edu/installation.html。
または、次の手順に従って Docker を介して Drake をインストールします: http://manipulation.csail.mit.edu/install_drake_docker.html。 docker タグ drake-20181128 を含む適切な docker_run_bash スクリプトを使用します。
例:
~/pddlstream$ python -m examples.drake.run
追加の PDDLStream + Drake の例は、https://github.com/RobotLocomotion/6-881-examples にあります。