10
10
import argparse
11
11
import pypose as pp
12
12
from torch import nn
13
- from pgo_dataset import G2OPGO
13
+ from pgo_dataset_tutorial import G2OPGO
14
14
import matplotlib .pyplot as plt
15
15
import pypose .optim .solver as ppos
16
16
import pypose .optim .kernel as ppok
20
20
21
21
22
22
######################################################################
23
- # Preparation
24
- # ------------
23
+ # Define Pose Graph
24
+ # ------------------
25
+
25
26
class PoseGraph (nn .Module ):
26
27
27
28
def __init__ (self , nodes ):
@@ -54,18 +55,22 @@ def plot_and_save(points, pngname, title='', axlim=None):
54
55
parser = argparse .ArgumentParser (description = 'Pose Graph Optimization' )
55
56
parser .add_argument ("--device" , type = str , default = 'cuda:0' , help = "cuda or cpu" )
56
57
parser .add_argument ("--radius" , type = float , default = 1e4 , help = "trust region radius" )
57
- parser .add_argument ("--save" , type = str , default = './examples/module /pgo/save/' , help = "files location to save" )
58
- parser .add_argument ("--dataroot" , type = str , default = './examples/module/ pgo/pgodata ' , help = "dataset location" )
58
+ parser .add_argument ("--save" , type = str , default = '../dataset /pgo/save/' , help = "files location to save" )
59
+ parser .add_argument ("--dataroot" , type = str , default = '../dataset/ pgo' , help = "dataset location" )
59
60
parser .add_argument ("--dataname" , type = str , default = 'parking-garage.g2o' , help = "dataset name" )
60
61
parser .add_argument ('--no-vectorize' , dest = 'vectorize' , action = 'store_false' , help = "to save memory" )
61
62
parser .add_argument ('--vectorize' , action = 'store_true' , help = 'to accelerate computation' )
62
- parser .set_defaults (vectorize = True )
63
+ parser .set_defaults (vectorize = False )
63
64
args = parser .parse_args (); print (args )
64
65
os .makedirs (os .path .join (args .save ), exist_ok = True )
65
66
66
67
data = G2OPGO (args .dataroot , args .dataname , device = args .device )
67
68
edges , poses , infos = data .edges , data .poses , data .infos
68
69
70
+ ######################################################################
71
+ # Define Optimizer
72
+ # -------------------------------------------------------------
73
+
69
74
graph = PoseGraph (data .nodes ).to (args .device )
70
75
solver = ppos .Cholesky ()
71
76
strategy = ppost .TrustRegion (radius = args .radius )
@@ -91,4 +96,5 @@ def plot_and_save(points, pngname, title='', axlim=None):
91
96
######################################################################
92
97
# The 2nd implementation: equivalent to the 1st one, but more compact
93
98
# --------------------------------------------------------------------
99
+
94
100
scheduler .optimize (input = (edges , poses ), weight = infos )
0 commit comments