Dies ist eine minimale Implementierung des Papiers 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
Bitte installieren Sie auch Pytorch. Wir testen es mit Pytorch 1.12.1 mit CUDA 11.6.
Bitte besuchen Sie diese Seite, um die im Papier verwendeten Daten herunterzuladen und weitere Informationen zu erhalten.
Wir haben zwei Form-Autoencoder namens AtlasNet
und AtlastNet2
eingerichtet. AtlasNet
wird mit vollständigen Formen unter kanonischen Koordinaten trainiert, während AtlasNet2
unter dem Kamerarahmen trainiert wird, der vor dem Zielszenendiagramm Formvoraussetzungen bereitstellt, um die Vorstellungskraft anzuleiten. Wir bieten auch hier heruntergeladene trainierte Modelle an: trainiertes AtlasNet und trainiertes AtlasNet2.
Zum Erzeugen von Formen
AtlasNet
. Sie müssen --batchSize
, --nepoch
anpassen, um das Training optimal zu gestalten. cd AtlasNet
python training/train_AE_AtlasNet.py
Inferenzpunktwolken [optional]: Führen Sie AtlasNet/inference/run_AE_AtlasNet.py
aus. Die Ergebnisse würden generierte Punkte unter AtlasNet/log/atlasnet_separate_cultery/network
speichern.
Erhalten Sie Punktfeatures für das Training von Graph-to-3D: Führen Sie AtlasNet/inference/create_features_gt.py
aus, und die Features werden in objs_features_gt_atlasnet_separate_cultery.json
gespeichert. Die Schlüssel in der JSON-Datei sind die Namen der Objekte, z. B. „cup_1“, und die Werte sind die latenten Merkmale (128 Dimensionen).
Zur Herstellung von Formprioren
AtlasNet2
zu trainieren. Die Dateien können hier heruntergeladen werden: partial_pcs. Sie können auch den Dateipfad ändern und AtlasNet2/auxiliary/generate_partial_pc_for_object.py
ausführen. Die endgültige Ausgabe wird als Pickle-Dateien unter AtlasNet2/partial_pc_data
gespeichert.generate_train_sample
in AtlasNet2/auxiliary/generate_partial_pc_for_object.py
teilt AtlasNet2/partial_pc_data
in Train (90 %) und Test (10 %). Die Dateinamen werden als AtlasNet2/partial_pc_data_splits.json
gespeichertAtlasNet2
: Das Verfahren ist das gleiche wie bei AtlasNet
.Wir haben den Szenengenerator basierend auf Graph-to-3D, einer GCN-VAE-Architektur, erstellt. Im Gegensatz zum ursprünglichen Graph-to-3D nutzen wir einen formbewussten Szenengraphen, um die generierten Formen an den beobachteten Formen in der ursprünglichen Szene auszurichten. Das trainierte Modell stellen wir hier zur Verfügung: trained graph_to_3d.
Wenn Sie das Netzwerk neu trainieren möchten, müssen --batchSize
, --nepoch
und --exp
mit den richtigen Zahlen festgelegt werden.
cd graphto3d
python scripts/train_vaegan.py
Weitere Details finden Sie im Original-Repository.
Es gibt zwei Modi: robot
und oracle
. Der robot
unterstützt einen Roboterarm, der die Objekte entsprechend der Fantasie manipuliert. Dieser Modus benötigt ein Netzwerk zur Vorhersage der Greifhaltung, das wir Contact-GraspNet verwenden. Dazu muss Tensorflow heruntergeladen werden.
pip install tensorflow - estimator == 2.7 .0 tensorflow - gpu == 2.7 .0
Die Checkpoints können aus dem Original-Repository oder hier heruntergeladen werden. Nachdem Sie die Prüfpunkte heruntergeladen haben, verschieben Sie sie nach ./contact_graspnet
.
Der oracle
Modus benötigt keinen Agenten, sondern bringt Objekte einfach direkt in relative Posen. Damit das Skript funktioniert, kann man den mode
darin ändern und dann Folgendes ausführen:
python sgbot_pybullet.py
Die Ergebnisse in der Arbeit unterliegen dem oracle
-Modus. Wir verwenden direkt das vordefinierte Szenendiagramm als Ziel.
Wir stellen einen aufgezeichneten Rosbag zur Verfügung, um die Aufführung zu demonstrieren. Um diesen Test durchzuführen, muss MaskRCNN Checkpoint hier heruntergeladen werden. Zusätzliche Anforderungen müssen installiert werden.