これは、論文「SG-Bot: Object Rearrangement via Coarse-to-Fine Robotic Imagination on Scene Graphs (ICRA 2024)」(arxiv)の最小限の実装です。
conda env create - f environment . yml
cd extension
python setup . py install
Pytorchもインストールしてください。 CUDA 11.6 を備えた Pytorch 1.12.1 でテストします。
論文内で使用したデータのダウンロードや詳細については、こちらのページをご覧ください。
AtlasNet
とAtlastNet2
という 2 つの形状オートエンコーダーをセットアップしました。 AtlasNet
は正準座標の下で完全な形状を使用してトレーニングされますが、 AtlasNet2
はカメラ フレームの下でトレーニングされ、想像力を導くためにゴール シーン グラフの前に形状を提供します。ここからダウンロードしたトレーニング済みモデル (トレーニング済み AtlasNet およびトレーニング済み AtlasNet2) も提供しています。
形状生成用
AtlasNet
を訓練します。トレーニングを最適化するには、 --batchSize
、 --nepoch
を調整する必要があります。 cd AtlasNet
python training/train_AE_AtlasNet.py
点群の推論 [オプション]: AtlasNet/inference/run_AE_AtlasNet.py
を実行します。結果は、生成されたポイントをAtlasNet/log/atlasnet_separate_cultery/network
に保存します。
Graph-to-3D をトレーニングするためのポイント フィーチャーを取得します。 AtlasNet/inference/create_features_gt.py
を実行すると、フィーチャーはobjs_features_gt_atlasnet_separate_cultery.json
に保存されます。 json ファイル内のキーはオブジェクトの名前 (例: 「cup_1」) で、値は潜在的な特徴 (128 次元) です。
形状プリアの作成用
AtlasNet2
トレーニングすることを目的としています。ファイルはここからダウンロードできます:partial_pcs。ファイル パスを変更して、 AtlasNet2/auxiliary/generate_partial_pc_for_object.py
を実行することもできます。最終出力は、 AtlasNet2/partial_pc_data
に pickle ファイルとして保存されます。AtlasNet2/auxiliary/generate_partial_pc_for_object.py
の関数generate_train_sample
は、 AtlasNet2/partial_pc_data
を train (90%) と test (10%) に分割します。ファイル名はAtlasNet2/partial_pc_data_splits.json
として保存されます。AtlasNet2
のトレーニング:手順はAtlasNet
と同じです。Graph-to-3D、GCN-VAE アーキテクチャに基づいてシーン ジェネレーターを構築しました。元の Graph-to-3D とは異なり、形状認識シーン グラフを利用して、生成された形状を最初のシーンで観察された形状と一致させます。ここで利用可能なトレーニング済みモデルを提供します:トレーニング済みgraph_to_3d。
ネットワークを再トレーニングしたい場合は、 --batchSize
、 --nepoch
、 --exp
に適切な数値を設定する必要があります。
cd graphto3d
python scripts/train_vaegan.py
詳細については、元のリポジトリを参照してください。
robot
とoracle
2 つのモードがあります。 robot
モードは、想像力に従ってオブジェクトを操作するロボットアームをサポートします。このモードには、Contact-GraspNet を使用する把握ポーズ予測ネットワークが必要です。これには、tensorflow をダウンロードする必要があります。
pip install tensorflow - estimator == 2.7 .0 tensorflow - gpu == 2.7 .0
チェックポイントは、元のリポジトリまたはここからダウンロードできます。チェックポイントをダウンロードした後、チェックポイントを./contact_graspnet
に移動します。
oracle
モードではエージェントは必要ありませんが、オブジェクトを相対的なポーズに直接配置するだけです。スクリプトを機能させるには、内部の変数mode
変更してから実行します。
python sgbot_pybullet.py
論文の結果はoracle
モードでのものです。事前定義されたシーン グラフを目標として直接使用します。
パフォーマンスをデモンストレーションするために、録音された rosbag を提供します。このトライアルを実施するには、MaskRCNN チェックポイントをここからダウンロードする必要があります。追加の要件をインストールする必要があります。