@@ -42,48 +42,46 @@ Additionally, we recommend checking out the [tests](/tests/) folder for more exa
4242
4343``` rust
4444use factrs :: {
45- assign_symbols,
46- fac,
47- containers :: {FactorBuilder , Graph , Values },
48- noise :: GaussianNoise ,
49- optimizers :: GaussNewton ,
50- residuals :: {BetweenResidual , PriorResidual },
51- robust :: Huber ,
52- traits :: * ,
53- variables :: SO2 ,
45+ core :: {
46+ assign_symbols, fac, BetweenResidual , GaussNewton , Graph , Huber , PriorResidual , Values , SO2 ,
47+ },
48+ traits :: * ,
5449};
5550
5651// Assign symbols to variable types
5752assign_symbols! (X : SO2 );
5853
59- // Make all the values
60- let mut values = Values :: new ();
61-
62- let x = SO2 :: from_theta (1.0 );
63- let y = SO2 :: from_theta (2.0 );
64- values . insert (X (0 ), SO2 :: identity ());
65- values . insert (X (1 ), SO2 :: identity ());
66-
67- // Make the factors & insert into graph
68- let mut graph = Graph :: new ();
69- let res = PriorResidual :: new (x . clone ());
70- let factor = fac! [res , X (0 )];
71- graph . add_factor (factor );
72-
73- let res = BetweenResidual :: new (y . minus (& x ));
74- let robust = Huber :: default ();
75- let factor = fac! [res , (X (0 ), X (1 )), 0.1 as std , robust ];
76- // fac! is syntactic sugar for the following
77- // let noise = GaussianNoise::from_scalar_sigma(0.1);
78- // let factor = FactorBuilder::new2(res, X(0), X(1))
79- // .noise(noise)
80- // .robust(robust)
81- // .build();
82- graph . add_factor (factor );
83-
84- // Optimize!
85- let mut opt : GaussNewton = GaussNewton :: new (graph );
86- let result = opt . optimize (values );
54+ fn main () {
55+ // Make all the values
56+ let mut values = Values :: new ();
57+
58+ let x = SO2 :: from_theta (1.0 );
59+ let y = SO2 :: from_theta (2.0 );
60+ values . insert (X (0 ), SO2 :: identity ());
61+ values . insert (X (1 ), SO2 :: identity ());
62+
63+ // Make the factors & insert into graph
64+ let mut graph = Graph :: new ();
65+ let res = PriorResidual :: new (x . clone ());
66+ let factor = fac! [res , X (0 )];
67+ graph . add_factor (factor );
68+
69+ let res = BetweenResidual :: new (y . minus (& x ));
70+ let robust = Huber :: default ();
71+ let factor = fac! [res , (X (0 ), X (1 )), 0.1 as std , robust ];
72+ // fac! is syntactic sugar for the following
73+ // let noise = GaussianNoise::from_scalar_sigma(0.1);
74+ // let factor = FactorBuilder::new2(res, X(0), X(1))
75+ // .noise(noise)
76+ // .robust(robust)
77+ // .build();
78+ graph . add_factor (factor );
79+
80+ // Optimize!
81+ let mut opt : GaussNewton = GaussNewton :: new (graph );
82+ let result = opt . optimize (values ). unwrap ();
83+ println! (" Results {:#}" , result );
84+ }
8785```
8886
8987# Installation
0 commit comments