1use factrs::{
2 core::{BetweenResidual, Graph, PriorResidual, SE2, assign_symbols, fac},
3 traits::Variable,
4};
5
6assign_symbols!(X: SE2);
7
8#[cfg(not(feature = "rerun"))]
9fn rerun_viz(_graph: &Graph) {}
10
11#[cfg(feature = "rerun")]
12fn rerun_viz(graph: &Graph) {
13 let rec = rerun::RecordingStreamBuilder::new("factrs-graph-viz")
15 .connect_grpc()
16 .unwrap();
17
18 let (nodes, edges) = graph.into();
20 rec.log_static("graph", &[&nodes as &dyn rerun::AsComponents, &edges])
21 .expect("log failed");
22}
23
24fn main() {
25 let mut graph = Graph::new();
26 let id = SE2::identity();
27
28 graph.add_factor(fac![PriorResidual::new(id.clone()), X(1)]);
29 graph.add_factor(fac![BetweenResidual::new(id.clone()), (X(1), X(2))]);
30 graph.add_factor(fac![BetweenResidual::new(id.clone()), (X(2), X(3))]);
31
32 graph.add_factor(fac![BetweenResidual::new(id.clone()), (X(1), X(4))]);
33 graph.add_factor(fac![BetweenResidual::new(id.clone()), (X(2), X(4))]);
34 graph.add_factor(fac![BetweenResidual::new(id.clone()), (X(3), X(5))]);
35
36 rerun_viz(&graph);
37}