diff --git a/Doxyfile b/Doxyfile index bda8a42..cf2e86b 100644 --- a/Doxyfile +++ b/Doxyfile @@ -1581,7 +1581,7 @@ EXTRA_SEARCH_MAPPINGS = # If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output. # The default value is: YES. -GENERATE_LATEX = NO +GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of diff --git a/doc/html/annotated.html b/doc/html/annotated.html index 989f199..3c2e792 100644 --- a/doc/html/annotated.html +++ b/doc/html/annotated.html @@ -112,7 +112,7 @@ diff --git a/doc/html/class_coord_1_1_cart_coord-members.html b/doc/html/class_coord_1_1_cart_coord-members.html index 2dea5e1..71d5164 100644 --- a/doc/html/class_coord_1_1_cart_coord-members.html +++ b/doc/html/class_coord_1_1_cart_coord-members.html @@ -109,7 +109,7 @@ diff --git a/doc/html/class_coord_1_1_cart_coord.html b/doc/html/class_coord_1_1_cart_coord.html index 1377758..6bc3c32 100644 --- a/doc/html/class_coord_1_1_cart_coord.html +++ b/doc/html/class_coord_1_1_cart_coord.html @@ -507,7 +507,7 @@

diff --git a/doc/html/class_coord_1_1_polar_coord-members.html b/doc/html/class_coord_1_1_polar_coord-members.html index d95f1fd..ecee731 100644 --- a/doc/html/class_coord_1_1_polar_coord-members.html +++ b/doc/html/class_coord_1_1_polar_coord-members.html @@ -103,7 +103,7 @@ diff --git a/doc/html/class_coord_1_1_polar_coord.html b/doc/html/class_coord_1_1_polar_coord.html index 5b3e77d..b9cb3d9 100644 --- a/doc/html/class_coord_1_1_polar_coord.html +++ b/doc/html/class_coord_1_1_polar_coord.html @@ -305,7 +305,7 @@

    - +
diff --git a/doc/html/class_mapping_1_1_keyframe-members.html b/doc/html/class_mapping_1_1_keyframe-members.html index f1830e8..5fd3461 100644 --- a/doc/html/class_mapping_1_1_keyframe-members.html +++ b/doc/html/class_mapping_1_1_keyframe-members.html @@ -108,7 +108,7 @@ diff --git a/doc/html/class_mapping_1_1_keyframe.html b/doc/html/class_mapping_1_1_keyframe.html index b101ae8..1bda175 100644 --- a/doc/html/class_mapping_1_1_keyframe.html +++ b/doc/html/class_mapping_1_1_keyframe.html @@ -463,7 +463,7 @@

    - +
diff --git a/doc/html/class_mapping_1_1_map-members.html b/doc/html/class_mapping_1_1_map-members.html index e6ff8fd..6b235b2 100644 --- a/doc/html/class_mapping_1_1_map-members.html +++ b/doc/html/class_mapping_1_1_map-members.html @@ -106,7 +106,7 @@ diff --git a/doc/html/class_mapping_1_1_map.html b/doc/html/class_mapping_1_1_map.html index 7f5bf82..c974f48 100644 --- a/doc/html/class_mapping_1_1_map.html +++ b/doc/html/class_mapping_1_1_map.html @@ -407,7 +407,7 @@

    - +
diff --git a/doc/html/class_pose_graph_lib_1_1_bundle_adjustment-members.html b/doc/html/class_pose_graph_lib_1_1_bundle_adjustment-members.html index 0502dee..81837d0 100644 --- a/doc/html/class_pose_graph_lib_1_1_bundle_adjustment-members.html +++ b/doc/html/class_pose_graph_lib_1_1_bundle_adjustment-members.html @@ -101,7 +101,7 @@ diff --git a/doc/html/class_pose_graph_lib_1_1_bundle_adjustment.html b/doc/html/class_pose_graph_lib_1_1_bundle_adjustment.html index d55596f..eeed282 100644 --- a/doc/html/class_pose_graph_lib_1_1_bundle_adjustment.html +++ b/doc/html/class_pose_graph_lib_1_1_bundle_adjustment.html @@ -362,7 +362,7 @@

    - +
diff --git a/doc/html/class_pose_graph_lib_1_1_pose_graph_optimization-members.html b/doc/html/class_pose_graph_lib_1_1_pose_graph_optimization-members.html index d445079..24d26b0 100644 --- a/doc/html/class_pose_graph_lib_1_1_pose_graph_optimization-members.html +++ b/doc/html/class_pose_graph_lib_1_1_pose_graph_optimization-members.html @@ -99,7 +99,7 @@ diff --git a/doc/html/class_pose_graph_lib_1_1_pose_graph_optimization.html b/doc/html/class_pose_graph_lib_1_1_pose_graph_optimization.html index dd9d8ae..b2d221a 100644 --- a/doc/html/class_pose_graph_lib_1_1_pose_graph_optimization.html +++ b/doc/html/class_pose_graph_lib_1_1_pose_graph_optimization.html @@ -271,7 +271,7 @@

diff --git a/doc/html/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system-members.html b/doc/html/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system-members.html index 8930f7d..63a4965 100644 --- a/doc/html/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system-members.html +++ b/doc/html/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system-members.html @@ -112,7 +112,7 @@ diff --git a/doc/html/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system.html b/doc/html/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system.html index ce3176d..96c960f 100644 --- a/doc/html/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system.html +++ b/doc/html/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system.html @@ -660,7 +660,7 @@

    - +
diff --git a/doc/html/class_tracker_1_1_tracker-members.html b/doc/html/class_tracker_1_1_tracker-members.html index e89aa15..bb6fe40 100644 --- a/doc/html/class_tracker_1_1_tracker-members.html +++ b/doc/html/class_tracker_1_1_tracker-members.html @@ -106,7 +106,7 @@ diff --git a/doc/html/class_tracker_1_1_tracker.html b/doc/html/class_tracker_1_1_tracker.html index 13554bf..8e9ee9e 100644 --- a/doc/html/class_tracker_1_1_tracker.html +++ b/doc/html/class_tracker_1_1_tracker.html @@ -491,7 +491,7 @@

    - +
diff --git a/doc/html/classes.html b/doc/html/classes.html index 9600dc3..bf929f8 100644 --- a/doc/html/classes.html +++ b/doc/html/classes.html @@ -115,7 +115,7 @@ diff --git a/doc/html/classmotion_distortion_1_1_motion_distortion_solver-members.html b/doc/html/classmotion_distortion_1_1_motion_distortion_solver-members.html index 09dee01..80bc28e 100644 --- a/doc/html/classmotion_distortion_1_1_motion_distortion_solver-members.html +++ b/doc/html/classmotion_distortion_1_1_motion_distortion_solver-members.html @@ -119,7 +119,7 @@ diff --git a/doc/html/classmotion_distortion_1_1_motion_distortion_solver.html b/doc/html/classmotion_distortion_1_1_motion_distortion_solver.html index 044b31c..257df59 100644 --- a/doc/html/classmotion_distortion_1_1_motion_distortion_solver.html +++ b/doc/html/classmotion_distortion_1_1_motion_distortion_solver.html @@ -817,7 +817,7 @@

diff --git a/doc/html/classtrajectory_plotting_1_1_trajectory-members.html b/doc/html/classtrajectory_plotting_1_1_trajectory-members.html index ba69f77..388f53d 100644 --- a/doc/html/classtrajectory_plotting_1_1_trajectory-members.html +++ b/doc/html/classtrajectory_plotting_1_1_trajectory-members.html @@ -104,7 +104,7 @@ diff --git a/doc/html/classtrajectory_plotting_1_1_trajectory.html b/doc/html/classtrajectory_plotting_1_1_trajectory.html index eca6e17..98a38a7 100644 --- a/doc/html/classtrajectory_plotting_1_1_trajectory.html +++ b/doc/html/classtrajectory_plotting_1_1_trajectory.html @@ -414,7 +414,7 @@

    - +
diff --git a/doc/html/functions.html b/doc/html/functions.html index c0d0152..ca9ec78 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -268,7 +268,7 @@

- y -

    diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html index e2593ec..5c9ed5b 100644 --- a/doc/html/functions_func.html +++ b/doc/html/functions_func.html @@ -196,7 +196,7 @@

    - u -

      diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index 06e3b8e..46e4e8d 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -188,7 +188,7 @@

      - y -

        diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html index 37d61cc..33e252b 100644 --- a/doc/html/hierarchy.html +++ b/doc/html/hierarchy.html @@ -107,7 +107,7 @@ diff --git a/doc/html/index.html b/doc/html/index.html index 582ee1f..eb514f2 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -91,7 +91,7 @@ diff --git a/doc/html/md__r_e_a_d_m_e.html b/doc/html/md__r_e_a_d_m_e.html index 59ddc3d..3df0bc2 100644 --- a/doc/html/md__r_e_a_d_m_e.html +++ b/doc/html/md__r_e_a_d_m_e.html @@ -118,7 +118,7 @@

        diff --git a/doc/html/namespace_a_n_m_s.html b/doc/html/namespace_a_n_m_s.html index eb9392d..ccd8bc3 100644 --- a/doc/html/namespace_a_n_m_s.html +++ b/doc/html/namespace_a_n_m_s.html @@ -147,7 +147,7 @@

          - +
        diff --git a/doc/html/namespace_coord.html b/doc/html/namespace_coord.html index ec20c3f..6ec79ad 100644 --- a/doc/html/namespace_coord.html +++ b/doc/html/namespace_coord.html @@ -102,7 +102,7 @@ diff --git a/doc/html/namespace_f_m_t.html b/doc/html/namespace_f_m_t.html index 60901ca..953c154 100644 --- a/doc/html/namespace_f_m_t.html +++ b/doc/html/namespace_f_m_t.html @@ -644,7 +644,7 @@

          - +
        diff --git a/doc/html/namespace_mapping.html b/doc/html/namespace_mapping.html index ab81098..b26b27c 100644 --- a/doc/html/namespace_mapping.html +++ b/doc/html/namespace_mapping.html @@ -171,7 +171,7 @@

          - +
        diff --git a/doc/html/namespace_pose_graph_lib.html b/doc/html/namespace_pose_graph_lib.html index a27dc9f..dcbbde0 100644 --- a/doc/html/namespace_pose_graph_lib.html +++ b/doc/html/namespace_pose_graph_lib.html @@ -102,7 +102,7 @@ diff --git a/doc/html/namespace_raw_r_o_a_m_system.html b/doc/html/namespace_raw_r_o_a_m_system.html index 9ebfd1b..3ace06a 100644 --- a/doc/html/namespace_raw_r_o_a_m_system.html +++ b/doc/html/namespace_raw_r_o_a_m_system.html @@ -276,7 +276,7 @@

          - +
        diff --git a/doc/html/namespace_tracker.html b/doc/html/namespace_tracker.html index f5a8b65..4fe3aad 100644 --- a/doc/html/namespace_tracker.html +++ b/doc/html/namespace_tracker.html @@ -100,7 +100,7 @@ diff --git a/doc/html/namespacegen_fake_data.html b/doc/html/namespacegen_fake_data.html index 5952598..52a67e4 100644 --- a/doc/html/namespacegen_fake_data.html +++ b/doc/html/namespacegen_fake_data.html @@ -529,7 +529,7 @@

          - +
        diff --git a/doc/html/namespaceget_features.html b/doc/html/namespaceget_features.html index 70761cc..cef1293 100644 --- a/doc/html/namespaceget_features.html +++ b/doc/html/namespaceget_features.html @@ -710,7 +710,7 @@

          - +
        diff --git a/doc/html/namespaceget_point_cloud.html b/doc/html/namespaceget_point_cloud.html index 5b18cf3..cc23e64 100644 --- a/doc/html/namespaceget_point_cloud.html +++ b/doc/html/namespaceget_point_cloud.html @@ -371,7 +371,7 @@

          - +
        diff --git a/doc/html/namespaceget_transform_k_l_t.html b/doc/html/namespaceget_transform_k_l_t.html index e0fe1e1..67d61d4 100644 --- a/doc/html/namespaceget_transform_k_l_t.html +++ b/doc/html/namespaceget_transform_k_l_t.html @@ -1184,7 +1184,7 @@

          - +
        diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html index 97de050..a4f966b 100644 --- a/doc/html/namespacemembers.html +++ b/doc/html/namespacemembers.html @@ -98,7 +98,7 @@

        - a -

          diff --git a/doc/html/namespacemembers_b.html b/doc/html/namespacemembers_b.html index 90155e3..4a5e350 100644 --- a/doc/html/namespacemembers_b.html +++ b/doc/html/namespacemembers_b.html @@ -100,7 +100,7 @@

          - b -

            diff --git a/doc/html/namespacemembers_c.html b/doc/html/namespacemembers_c.html index b81efcb..f41d069 100644 --- a/doc/html/namespacemembers_c.html +++ b/doc/html/namespacemembers_c.html @@ -118,7 +118,7 @@

            - c -

              diff --git a/doc/html/namespacemembers_d.html b/doc/html/namespacemembers_d.html index 95e7505..8b97dc1 100644 --- a/doc/html/namespacemembers_d.html +++ b/doc/html/namespacemembers_d.html @@ -104,7 +104,7 @@

              - d -

                diff --git a/doc/html/namespacemembers_e.html b/doc/html/namespacemembers_e.html index 68d003a..8fceb8e 100644 --- a/doc/html/namespacemembers_e.html +++ b/doc/html/namespacemembers_e.html @@ -102,7 +102,7 @@

                - e -

                  diff --git a/doc/html/namespacemembers_f.html b/doc/html/namespacemembers_f.html index 388aa3f..6a64b11 100644 --- a/doc/html/namespacemembers_f.html +++ b/doc/html/namespacemembers_f.html @@ -106,7 +106,7 @@

                  - f -

                    diff --git a/doc/html/namespacemembers_func.html b/doc/html/namespacemembers_func.html index dea563b..36ee5d5 100644 --- a/doc/html/namespacemembers_func.html +++ b/doc/html/namespacemembers_func.html @@ -208,7 +208,7 @@

                    - v -

                      diff --git a/doc/html/namespacemembers_g.html b/doc/html/namespacemembers_g.html index ef93f0e..7f852a0 100644 --- a/doc/html/namespacemembers_g.html +++ b/doc/html/namespacemembers_g.html @@ -118,7 +118,7 @@

                      - g -

                        diff --git a/doc/html/namespacemembers_h.html b/doc/html/namespacemembers_h.html index 9373a1e..d633b86 100644 --- a/doc/html/namespacemembers_h.html +++ b/doc/html/namespacemembers_h.html @@ -95,7 +95,7 @@

                        - h -

                          diff --git a/doc/html/namespacemembers_i.html b/doc/html/namespacemembers_i.html index 00d0e05..a383f38 100644 --- a/doc/html/namespacemembers_i.html +++ b/doc/html/namespacemembers_i.html @@ -102,7 +102,7 @@

                          - i -

                            diff --git a/doc/html/namespacemembers_k.html b/doc/html/namespacemembers_k.html index 938a360..7913db5 100644 --- a/doc/html/namespacemembers_k.html +++ b/doc/html/namespacemembers_k.html @@ -93,7 +93,7 @@

                            - k -

                              diff --git a/doc/html/namespacemembers_l.html b/doc/html/namespacemembers_l.html index ba033a1..fabcff0 100644 --- a/doc/html/namespacemembers_l.html +++ b/doc/html/namespacemembers_l.html @@ -93,7 +93,7 @@

                              - l -

                                diff --git a/doc/html/namespacemembers_m.html b/doc/html/namespacemembers_m.html index 6556122..bc0d3bf 100644 --- a/doc/html/namespacemembers_m.html +++ b/doc/html/namespacemembers_m.html @@ -95,7 +95,7 @@

                                - m -

                                  diff --git a/doc/html/namespacemembers_n.html b/doc/html/namespacemembers_n.html index c9163a6..c5598e7 100644 --- a/doc/html/namespacemembers_n.html +++ b/doc/html/namespacemembers_n.html @@ -108,7 +108,7 @@

                                  - n -

                                    diff --git a/doc/html/namespacemembers_o.html b/doc/html/namespacemembers_o.html index 8a91b8d..85d0abf 100644 --- a/doc/html/namespacemembers_o.html +++ b/doc/html/namespacemembers_o.html @@ -94,7 +94,7 @@

                                    - o -

                                      diff --git a/doc/html/namespacemembers_p.html b/doc/html/namespacemembers_p.html index 950380d..9d351b7 100644 --- a/doc/html/namespacemembers_p.html +++ b/doc/html/namespacemembers_p.html @@ -113,7 +113,7 @@

                                      - p -

                                        diff --git a/doc/html/namespacemembers_q.html b/doc/html/namespacemembers_q.html index d9e05b2..27524c8 100644 --- a/doc/html/namespacemembers_q.html +++ b/doc/html/namespacemembers_q.html @@ -93,7 +93,7 @@

                                        - q -

                                          diff --git a/doc/html/namespacemembers_r.html b/doc/html/namespacemembers_r.html index 1bbf66b..0404e4e 100644 --- a/doc/html/namespacemembers_r.html +++ b/doc/html/namespacemembers_r.html @@ -105,7 +105,7 @@

                                          - r -

                                            diff --git a/doc/html/namespacemembers_s.html b/doc/html/namespacemembers_s.html index 2e8c0f8..8152810 100644 --- a/doc/html/namespacemembers_s.html +++ b/doc/html/namespacemembers_s.html @@ -110,7 +110,7 @@

                                            - s -

                                              diff --git a/doc/html/namespacemembers_t.html b/doc/html/namespacemembers_t.html index 1db5527..c736130 100644 --- a/doc/html/namespacemembers_t.html +++ b/doc/html/namespacemembers_t.html @@ -113,7 +113,7 @@

                                              - t -

                                                diff --git a/doc/html/namespacemembers_u.html b/doc/html/namespacemembers_u.html index ec6fb35..1c77fdc 100644 --- a/doc/html/namespacemembers_u.html +++ b/doc/html/namespacemembers_u.html @@ -94,7 +94,7 @@

                                                - u -

                                                  diff --git a/doc/html/namespacemembers_v.html b/doc/html/namespacemembers_v.html index cfa64df..4405310 100644 --- a/doc/html/namespacemembers_v.html +++ b/doc/html/namespacemembers_v.html @@ -96,7 +96,7 @@

                                                  - v -

                                                    diff --git a/doc/html/namespacemembers_vars.html b/doc/html/namespacemembers_vars.html index 4c6db1b..14a4784 100644 --- a/doc/html/namespacemembers_vars.html +++ b/doc/html/namespacemembers_vars.html @@ -95,7 +95,7 @@

                                                    - a -

                                                      diff --git a/doc/html/namespacemembers_vars_b.html b/doc/html/namespacemembers_vars_b.html index 72ae3fe..72fbd95 100644 --- a/doc/html/namespacemembers_vars_b.html +++ b/doc/html/namespacemembers_vars_b.html @@ -100,7 +100,7 @@

                                                      - b -

                                                        diff --git a/doc/html/namespacemembers_vars_c.html b/doc/html/namespacemembers_vars_c.html index 0dd664a..d0d3a91 100644 --- a/doc/html/namespacemembers_vars_c.html +++ b/doc/html/namespacemembers_vars_c.html @@ -104,7 +104,7 @@

                                                        - c -

                                                          diff --git a/doc/html/namespacemembers_vars_d.html b/doc/html/namespacemembers_vars_d.html index e9eb1ff..67f6dc2 100644 --- a/doc/html/namespacemembers_vars_d.html +++ b/doc/html/namespacemembers_vars_d.html @@ -102,7 +102,7 @@

                                                          - d -

                                                            diff --git a/doc/html/namespacemembers_vars_e.html b/doc/html/namespacemembers_vars_e.html index 74a2477..c15badc 100644 --- a/doc/html/namespacemembers_vars_e.html +++ b/doc/html/namespacemembers_vars_e.html @@ -100,7 +100,7 @@

                                                            - e -

                                                              diff --git a/doc/html/namespacemembers_vars_f.html b/doc/html/namespacemembers_vars_f.html index 00ccadb..207a2cb 100644 --- a/doc/html/namespacemembers_vars_f.html +++ b/doc/html/namespacemembers_vars_f.html @@ -104,7 +104,7 @@

                                                              - f -

                                                                diff --git a/doc/html/namespacemembers_vars_g.html b/doc/html/namespacemembers_vars_g.html index 78dc72f..ebe6443 100644 --- a/doc/html/namespacemembers_vars_g.html +++ b/doc/html/namespacemembers_vars_g.html @@ -99,7 +99,7 @@

                                                                - g -

                                                                  diff --git a/doc/html/namespacemembers_vars_h.html b/doc/html/namespacemembers_vars_h.html index 17be5e8..4323527 100644 --- a/doc/html/namespacemembers_vars_h.html +++ b/doc/html/namespacemembers_vars_h.html @@ -94,7 +94,7 @@

                                                                  - h -

                                                                    diff --git a/doc/html/namespacemembers_vars_i.html b/doc/html/namespacemembers_vars_i.html index 6b71b2a..5f7bd21 100644 --- a/doc/html/namespacemembers_vars_i.html +++ b/doc/html/namespacemembers_vars_i.html @@ -101,7 +101,7 @@

                                                                    - i -

                                                                      diff --git a/doc/html/namespacemembers_vars_k.html b/doc/html/namespacemembers_vars_k.html index 4e7eef1..54cfb74 100644 --- a/doc/html/namespacemembers_vars_k.html +++ b/doc/html/namespacemembers_vars_k.html @@ -93,7 +93,7 @@

                                                                      - k -

                                                                        diff --git a/doc/html/namespacemembers_vars_l.html b/doc/html/namespacemembers_vars_l.html index 98c9e5f..9f61f35 100644 --- a/doc/html/namespacemembers_vars_l.html +++ b/doc/html/namespacemembers_vars_l.html @@ -93,7 +93,7 @@

                                                                        - l -

                                                                          diff --git a/doc/html/namespacemembers_vars_m.html b/doc/html/namespacemembers_vars_m.html index b6f9b4f..c3e5970 100644 --- a/doc/html/namespacemembers_vars_m.html +++ b/doc/html/namespacemembers_vars_m.html @@ -95,7 +95,7 @@

                                                                          - m -

                                                                            diff --git a/doc/html/namespacemembers_vars_n.html b/doc/html/namespacemembers_vars_n.html index 0f1d313..dca2854 100644 --- a/doc/html/namespacemembers_vars_n.html +++ b/doc/html/namespacemembers_vars_n.html @@ -107,7 +107,7 @@

                                                                            - n -

                                                                              diff --git a/doc/html/namespacemembers_vars_o.html b/doc/html/namespacemembers_vars_o.html index b70a2f8..237fd2b 100644 --- a/doc/html/namespacemembers_vars_o.html +++ b/doc/html/namespacemembers_vars_o.html @@ -94,7 +94,7 @@

                                                                              - o -

                                                                                diff --git a/doc/html/namespacemembers_vars_p.html b/doc/html/namespacemembers_vars_p.html index ac882b6..e3f216b 100644 --- a/doc/html/namespacemembers_vars_p.html +++ b/doc/html/namespacemembers_vars_p.html @@ -107,7 +107,7 @@

                                                                                - p -

                                                                                  diff --git a/doc/html/namespacemembers_vars_r.html b/doc/html/namespacemembers_vars_r.html index 39cc2cc..3940bc8 100644 --- a/doc/html/namespacemembers_vars_r.html +++ b/doc/html/namespacemembers_vars_r.html @@ -102,7 +102,7 @@

                                                                                  - r -

                                                                                    diff --git a/doc/html/namespacemembers_vars_s.html b/doc/html/namespacemembers_vars_s.html index af3bf96..ae9570e 100644 --- a/doc/html/namespacemembers_vars_s.html +++ b/doc/html/namespacemembers_vars_s.html @@ -109,7 +109,7 @@

                                                                                    - s -

                                                                                      diff --git a/doc/html/namespacemembers_vars_t.html b/doc/html/namespacemembers_vars_t.html index f6b36a8..d459c55 100644 --- a/doc/html/namespacemembers_vars_t.html +++ b/doc/html/namespacemembers_vars_t.html @@ -110,7 +110,7 @@

                                                                                      - t -

                                                                                        diff --git a/doc/html/namespacemembers_vars_u.html b/doc/html/namespacemembers_vars_u.html index 5e35ddb..374df2b 100644 --- a/doc/html/namespacemembers_vars_u.html +++ b/doc/html/namespacemembers_vars_u.html @@ -94,7 +94,7 @@

                                                                                        - u -

                                                                                          diff --git a/doc/html/namespacemembers_vars_v.html b/doc/html/namespacemembers_vars_v.html index 8128570..8382c2c 100644 --- a/doc/html/namespacemembers_vars_v.html +++ b/doc/html/namespacemembers_vars_v.html @@ -95,7 +95,7 @@

                                                                                          - v -

                                                                                            diff --git a/doc/html/namespacemembers_vars_w.html b/doc/html/namespacemembers_vars_w.html index ecfa7a4..b7b60c6 100644 --- a/doc/html/namespacemembers_vars_w.html +++ b/doc/html/namespacemembers_vars_w.html @@ -93,7 +93,7 @@

                                                                                            - w -

                                                                                              diff --git a/doc/html/namespacemembers_w.html b/doc/html/namespacemembers_w.html index 26b0998..75ceaee 100644 --- a/doc/html/namespacemembers_w.html +++ b/doc/html/namespacemembers_w.html @@ -93,7 +93,7 @@

                                                                                              - w -

                                                                                                diff --git a/doc/html/namespacemotion_distortion.html b/doc/html/namespacemotion_distortion.html index 3077755..163eb62 100644 --- a/doc/html/namespacemotion_distortion.html +++ b/doc/html/namespacemotion_distortion.html @@ -137,7 +137,7 @@

                                                                                                  - +
                                                                                                diff --git a/doc/html/namespaceoutlier_rejection.html b/doc/html/namespaceoutlier_rejection.html index 8d81518..eb6e99c 100644 --- a/doc/html/namespaceoutlier_rejection.html +++ b/doc/html/namespaceoutlier_rejection.html @@ -474,7 +474,7 @@

                                                                                                  - +
                                                                                                diff --git a/doc/html/namespaceparse_data.html b/doc/html/namespaceparse_data.html index 632f897..d17f034 100644 --- a/doc/html/namespaceparse_data.html +++ b/doc/html/namespaceparse_data.html @@ -671,7 +671,7 @@

                                                                                                  - +
                                                                                                diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html index 9b3daad..374e478 100644 --- a/doc/html/namespaces.html +++ b/doc/html/namespaces.html @@ -123,7 +123,7 @@ diff --git a/doc/html/namespacetest_motion_distortion.html b/doc/html/namespacetest_motion_distortion.html index 408b137..8d6fd5a 100644 --- a/doc/html/namespacetest_motion_distortion.html +++ b/doc/html/namespacetest_motion_distortion.html @@ -759,7 +759,7 @@

                                                                                                  - +
                                                                                                diff --git a/doc/html/namespacetest_transform.html b/doc/html/namespacetest_transform.html index 803850d..8785f1b 100644 --- a/doc/html/namespacetest_transform.html +++ b/doc/html/namespacetest_transform.html @@ -453,7 +453,7 @@

                                                                                                  - +
                                                                                                diff --git a/doc/html/namespacetrajectory_plotting.html b/doc/html/namespacetrajectory_plotting.html index b15d2ca..0846043 100644 --- a/doc/html/namespacetrajectory_plotting.html +++ b/doc/html/namespacetrajectory_plotting.html @@ -397,7 +397,7 @@

                                                                                                  - +
                                                                                                diff --git a/doc/html/namespaceutils.html b/doc/html/namespaceutils.html index c36ca90..1427945 100644 --- a/doc/html/namespaceutils.html +++ b/doc/html/namespaceutils.html @@ -487,7 +487,7 @@

                                                                                                  - +
                                                                                                diff --git a/doc/html/pages.html b/doc/html/pages.html index 0024c5e..b79628e 100644 --- a/doc/html/pages.html +++ b/doc/html/pages.html @@ -96,7 +96,7 @@ diff --git a/doc/latex/Makefile b/doc/latex/Makefile new file mode 100644 index 0000000..877c9cc --- /dev/null +++ b/doc/latex/Makefile @@ -0,0 +1,23 @@ +LATEX_CMD=pdflatex + +all: refman.pdf + +pdf: refman.pdf + +refman.pdf: clean refman.tex + $(LATEX_CMD) refman + makeindex refman.idx + $(LATEX_CMD) refman + latex_count=8 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + $(LATEX_CMD) refman ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + makeindex refman.idx + $(LATEX_CMD) refman + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf diff --git a/doc/latex/annotated.tex b/doc/latex/annotated.tex new file mode 100644 index 0000000..a082bde --- /dev/null +++ b/doc/latex/annotated.tex @@ -0,0 +1,13 @@ +\doxysection{Class List} +Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{\mbox{\hyperlink{class_pose_graph_lib_1_1_bundle_adjustment}{Bundle\+Adjustment}} }{\pageref{class_pose_graph_lib_1_1_bundle_adjustment}}{} +\item\contentsline{section}{\mbox{\hyperlink{class_coord_1_1_cart_coord}{Cart\+Coord}} }{\pageref{class_coord_1_1_cart_coord}}{} +\item\contentsline{section}{\mbox{\hyperlink{class_mapping_1_1_keyframe}{Keyframe}} }{\pageref{class_mapping_1_1_keyframe}}{} +\item\contentsline{section}{\mbox{\hyperlink{class_mapping_1_1_map}{Map}} }{\pageref{class_mapping_1_1_map}}{} +\item\contentsline{section}{\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver}{Motion\+Distortion\+Solver}} }{\pageref{classmotion_distortion_1_1_motion_distortion_solver}}{} +\item\contentsline{section}{\mbox{\hyperlink{class_coord_1_1_polar_coord}{Polar\+Coord}} }{\pageref{class_coord_1_1_polar_coord}}{} +\item\contentsline{section}{\mbox{\hyperlink{class_pose_graph_lib_1_1_pose_graph_optimization}{Pose\+Graph\+Optimization}} }{\pageref{class_pose_graph_lib_1_1_pose_graph_optimization}}{} +\item\contentsline{section}{\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system}{Raw\+ROAMSystem}} }{\pageref{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system}}{} +\item\contentsline{section}{\mbox{\hyperlink{class_tracker_1_1_tracker}{Tracker}} }{\pageref{class_tracker_1_1_tracker}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}} }{\pageref{classtrajectory_plotting_1_1_trajectory}}{} +\end{DoxyCompactList} diff --git a/doc/latex/class_coord_1_1_cart_coord.tex b/doc/latex/class_coord_1_1_cart_coord.tex new file mode 100644 index 0000000..df7b647 --- /dev/null +++ b/doc/latex/class_coord_1_1_cart_coord.tex @@ -0,0 +1,142 @@ +\hypertarget{class_coord_1_1_cart_coord}{}\doxysection{Cart\+Coord Class Reference} +\label{class_coord_1_1_cart_coord}\index{CartCoord@{CartCoord}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{class_coord_1_1_cart_coord_abccb4447212ff86e5d232682050b743c}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, float \mbox{\hyperlink{class_coord_1_1_cart_coord_a9336ebf25087d91c818ee6e9ec29f8c1}{x}}, float \mbox{\hyperlink{class_coord_1_1_cart_coord_a2fb1c5cf58867b5bbc9a1b145a86f3a0}{y}}) +\item +def \mbox{\hyperlink{class_coord_1_1_cart_coord_a23e8041ce1015febe4fdace3225714f9}{\+\_\+\+\_\+str\+\_\+\+\_\+}} (self) +\item +None \mbox{\hyperlink{class_coord_1_1_cart_coord_abf0cffdf5d7c9541d7835543474cfb33}{add\+Coord}} (self, other) +\item +None \mbox{\hyperlink{class_coord_1_1_cart_coord_ac158a01135b092bd40f1f52f7ba606a0}{add}} (self, float dx, float dy) +\item +None \mbox{\hyperlink{class_coord_1_1_cart_coord_acc3259cd47f8262a8a3e65f59ee36acf}{sub}} (self, float dx, float dy) +\item +None \mbox{\hyperlink{class_coord_1_1_cart_coord_ab59c8af84ef521a147c726904703c8b0}{scale}} (self, float scale\+Factor) +\item +None \mbox{\hyperlink{class_coord_1_1_cart_coord_af98adc2273ee467719863568b65d1294}{scaleX}} (self, float scale\+Factor) +\item +None \mbox{\hyperlink{class_coord_1_1_cart_coord_a3eb779a8ba87a0bfcff18d97a54abed4}{scaleY}} (self, float scale\+Factor) +\item +float \mbox{\hyperlink{class_coord_1_1_cart_coord_ad53ca4fe02199dd659e4263dabedcbc2}{getX}} (self) +\item +float \mbox{\hyperlink{class_coord_1_1_cart_coord_aab0c980e953aa02722d5d985aeba649f}{getY}} (self) +\item +float \mbox{\hyperlink{class_coord_1_1_cart_coord_a52b0dfb6137418e667a29a3d6f38381f}{get\+Distance}} (self, other) +\item +def \mbox{\hyperlink{class_coord_1_1_cart_coord_a5116776fb71b488b73a26117a590e4f1}{get\+Angle}} (self, other) +\item +tuple \mbox{\hyperlink{class_coord_1_1_cart_coord_a089eb0274b6e3569800bc4df2c1856a5}{as\+Tuple}} (self) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{class_coord_1_1_cart_coord_a9336ebf25087d91c818ee6e9ec29f8c1}{x}} +\item +\mbox{\hyperlink{class_coord_1_1_cart_coord_a2fb1c5cf58867b5bbc9a1b145a86f3a0}{y}} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +\begin{DoxyVerb}Creates a point on a Cartesian coordinate plane with values x and y.\end{DoxyVerb} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_coord_1_1_cart_coord_abccb4447212ff86e5d232682050b743c}\label{class_coord_1_1_cart_coord_abccb4447212ff86e5d232682050b743c}} +\index{CartCoord@{CartCoord}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}} +{\footnotesize\ttfamily def \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self, }\item[{float}]{x, }\item[{float}]{y }\end{DoxyParamCaption})} + +\begin{DoxyVerb}Defines x and y variables\end{DoxyVerb} + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{class_coord_1_1_cart_coord_a23e8041ce1015febe4fdace3225714f9}\label{class_coord_1_1_cart_coord_a23e8041ce1015febe4fdace3225714f9}} +\index{CartCoord@{CartCoord}!\_\_str\_\_@{\_\_str\_\_}} +\index{\_\_str\_\_@{\_\_str\_\_}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{\_\_str\_\_()}{\_\_str\_\_()}} +{\footnotesize\ttfamily def \+\_\+\+\_\+str\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_ac158a01135b092bd40f1f52f7ba606a0}\label{class_coord_1_1_cart_coord_ac158a01135b092bd40f1f52f7ba606a0}} +\index{CartCoord@{CartCoord}!add@{add}} +\index{add@{add}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{add()}{add()}} +{\footnotesize\ttfamily None add (\begin{DoxyParamCaption}\item[{}]{self, }\item[{float}]{dx, }\item[{float}]{dy }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_abf0cffdf5d7c9541d7835543474cfb33}\label{class_coord_1_1_cart_coord_abf0cffdf5d7c9541d7835543474cfb33}} +\index{CartCoord@{CartCoord}!addCoord@{addCoord}} +\index{addCoord@{addCoord}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{addCoord()}{addCoord()}} +{\footnotesize\ttfamily None add\+Coord (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{other }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_a089eb0274b6e3569800bc4df2c1856a5}\label{class_coord_1_1_cart_coord_a089eb0274b6e3569800bc4df2c1856a5}} +\index{CartCoord@{CartCoord}!asTuple@{asTuple}} +\index{asTuple@{asTuple}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{asTuple()}{asTuple()}} +{\footnotesize\ttfamily tuple as\+Tuple (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_a5116776fb71b488b73a26117a590e4f1}\label{class_coord_1_1_cart_coord_a5116776fb71b488b73a26117a590e4f1}} +\index{CartCoord@{CartCoord}!getAngle@{getAngle}} +\index{getAngle@{getAngle}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{getAngle()}{getAngle()}} +{\footnotesize\ttfamily def get\+Angle (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{other }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_a52b0dfb6137418e667a29a3d6f38381f}\label{class_coord_1_1_cart_coord_a52b0dfb6137418e667a29a3d6f38381f}} +\index{CartCoord@{CartCoord}!getDistance@{getDistance}} +\index{getDistance@{getDistance}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{getDistance()}{getDistance()}} +{\footnotesize\ttfamily float get\+Distance (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{other }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_ad53ca4fe02199dd659e4263dabedcbc2}\label{class_coord_1_1_cart_coord_ad53ca4fe02199dd659e4263dabedcbc2}} +\index{CartCoord@{CartCoord}!getX@{getX}} +\index{getX@{getX}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{getX()}{getX()}} +{\footnotesize\ttfamily float getX (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_aab0c980e953aa02722d5d985aeba649f}\label{class_coord_1_1_cart_coord_aab0c980e953aa02722d5d985aeba649f}} +\index{CartCoord@{CartCoord}!getY@{getY}} +\index{getY@{getY}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{getY()}{getY()}} +{\footnotesize\ttfamily float getY (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_ab59c8af84ef521a147c726904703c8b0}\label{class_coord_1_1_cart_coord_ab59c8af84ef521a147c726904703c8b0}} +\index{CartCoord@{CartCoord}!scale@{scale}} +\index{scale@{scale}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{scale()}{scale()}} +{\footnotesize\ttfamily None scale (\begin{DoxyParamCaption}\item[{}]{self, }\item[{float}]{scale\+Factor }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_af98adc2273ee467719863568b65d1294}\label{class_coord_1_1_cart_coord_af98adc2273ee467719863568b65d1294}} +\index{CartCoord@{CartCoord}!scaleX@{scaleX}} +\index{scaleX@{scaleX}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{scaleX()}{scaleX()}} +{\footnotesize\ttfamily None scaleX (\begin{DoxyParamCaption}\item[{}]{self, }\item[{float}]{scale\+Factor }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_a3eb779a8ba87a0bfcff18d97a54abed4}\label{class_coord_1_1_cart_coord_a3eb779a8ba87a0bfcff18d97a54abed4}} +\index{CartCoord@{CartCoord}!scaleY@{scaleY}} +\index{scaleY@{scaleY}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{scaleY()}{scaleY()}} +{\footnotesize\ttfamily None scaleY (\begin{DoxyParamCaption}\item[{}]{self, }\item[{float}]{scale\+Factor }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_acc3259cd47f8262a8a3e65f59ee36acf}\label{class_coord_1_1_cart_coord_acc3259cd47f8262a8a3e65f59ee36acf}} +\index{CartCoord@{CartCoord}!sub@{sub}} +\index{sub@{sub}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{sub()}{sub()}} +{\footnotesize\ttfamily None sub (\begin{DoxyParamCaption}\item[{}]{self, }\item[{float}]{dx, }\item[{float}]{dy }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{class_coord_1_1_cart_coord_a9336ebf25087d91c818ee6e9ec29f8c1}\label{class_coord_1_1_cart_coord_a9336ebf25087d91c818ee6e9ec29f8c1}} +\index{CartCoord@{CartCoord}!x@{x}} +\index{x@{x}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{x}{x}} +{\footnotesize\ttfamily x} + +\mbox{\Hypertarget{class_coord_1_1_cart_coord_a2fb1c5cf58867b5bbc9a1b145a86f3a0}\label{class_coord_1_1_cart_coord_a2fb1c5cf58867b5bbc9a1b145a86f3a0}} +\index{CartCoord@{CartCoord}!y@{y}} +\index{y@{y}!CartCoord@{CartCoord}} +\doxysubsubsection{\texorpdfstring{y}{y}} +{\footnotesize\ttfamily y} + diff --git a/doc/latex/class_coord_1_1_polar_coord.tex b/doc/latex/class_coord_1_1_polar_coord.tex new file mode 100644 index 0000000..732567f --- /dev/null +++ b/doc/latex/class_coord_1_1_polar_coord.tex @@ -0,0 +1,94 @@ +\hypertarget{class_coord_1_1_polar_coord}{}\doxysection{Polar\+Coord Class Reference} +\label{class_coord_1_1_polar_coord}\index{PolarCoord@{PolarCoord}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{class_coord_1_1_polar_coord_a0304e8d786206153c1e8280834562d07}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, float \mbox{\hyperlink{class_coord_1_1_polar_coord_a514f1b439f404f86f77090fa9edc96ce}{r}}, float \mbox{\hyperlink{class_coord_1_1_polar_coord_aebf487f5d315cb61f0bd86455edff1fd}{theta}}) +\item +def \mbox{\hyperlink{class_coord_1_1_polar_coord_a23e8041ce1015febe4fdace3225714f9}{\+\_\+\+\_\+str\+\_\+\+\_\+}} (self) +\item +float \mbox{\hyperlink{class_coord_1_1_polar_coord_a825c5e22cef04b24de421e2aa38e783f}{getR}} (self) +\item +float \mbox{\hyperlink{class_coord_1_1_polar_coord_ad54274926ee132aa66a6a883d9bc15cf}{get\+Theta}} (self) +\item +None \mbox{\hyperlink{class_coord_1_1_polar_coord_a6c67b38af655d81a01450f9aa2575153}{scaleR}} (self, scale\+Factor) +\item +\mbox{\hyperlink{class_coord_1_1_cart_coord}{Cart\+Coord}} \mbox{\hyperlink{class_coord_1_1_polar_coord_a174b43f651e4e95e432fddb5b4183829}{to\+Cart}} (self) +\item +tuple \mbox{\hyperlink{class_coord_1_1_polar_coord_a089eb0274b6e3569800bc4df2c1856a5}{as\+Tuple}} (self) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{class_coord_1_1_polar_coord_a514f1b439f404f86f77090fa9edc96ce}{r}} +\item +\mbox{\hyperlink{class_coord_1_1_polar_coord_aebf487f5d315cb61f0bd86455edff1fd}{theta}} +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +\begin{DoxyVerb}Creates a point on a Cartesian coordinate plane with values x and y.\end{DoxyVerb} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_coord_1_1_polar_coord_a0304e8d786206153c1e8280834562d07}\label{class_coord_1_1_polar_coord_a0304e8d786206153c1e8280834562d07}} +\index{PolarCoord@{PolarCoord}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!PolarCoord@{PolarCoord}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}} +{\footnotesize\ttfamily def \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self, }\item[{float}]{r, }\item[{float}]{theta }\end{DoxyParamCaption})} + +\begin{DoxyVerb}Defines x and y variables\end{DoxyVerb} + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{class_coord_1_1_polar_coord_a23e8041ce1015febe4fdace3225714f9}\label{class_coord_1_1_polar_coord_a23e8041ce1015febe4fdace3225714f9}} +\index{PolarCoord@{PolarCoord}!\_\_str\_\_@{\_\_str\_\_}} +\index{\_\_str\_\_@{\_\_str\_\_}!PolarCoord@{PolarCoord}} +\doxysubsubsection{\texorpdfstring{\_\_str\_\_()}{\_\_str\_\_()}} +{\footnotesize\ttfamily def \+\_\+\+\_\+str\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_polar_coord_a089eb0274b6e3569800bc4df2c1856a5}\label{class_coord_1_1_polar_coord_a089eb0274b6e3569800bc4df2c1856a5}} +\index{PolarCoord@{PolarCoord}!asTuple@{asTuple}} +\index{asTuple@{asTuple}!PolarCoord@{PolarCoord}} +\doxysubsubsection{\texorpdfstring{asTuple()}{asTuple()}} +{\footnotesize\ttfamily tuple as\+Tuple (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_polar_coord_a825c5e22cef04b24de421e2aa38e783f}\label{class_coord_1_1_polar_coord_a825c5e22cef04b24de421e2aa38e783f}} +\index{PolarCoord@{PolarCoord}!getR@{getR}} +\index{getR@{getR}!PolarCoord@{PolarCoord}} +\doxysubsubsection{\texorpdfstring{getR()}{getR()}} +{\footnotesize\ttfamily float getR (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_polar_coord_ad54274926ee132aa66a6a883d9bc15cf}\label{class_coord_1_1_polar_coord_ad54274926ee132aa66a6a883d9bc15cf}} +\index{PolarCoord@{PolarCoord}!getTheta@{getTheta}} +\index{getTheta@{getTheta}!PolarCoord@{PolarCoord}} +\doxysubsubsection{\texorpdfstring{getTheta()}{getTheta()}} +{\footnotesize\ttfamily float get\+Theta (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_polar_coord_a6c67b38af655d81a01450f9aa2575153}\label{class_coord_1_1_polar_coord_a6c67b38af655d81a01450f9aa2575153}} +\index{PolarCoord@{PolarCoord}!scaleR@{scaleR}} +\index{scaleR@{scaleR}!PolarCoord@{PolarCoord}} +\doxysubsubsection{\texorpdfstring{scaleR()}{scaleR()}} +{\footnotesize\ttfamily None scaleR (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{scale\+Factor }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_coord_1_1_polar_coord_a174b43f651e4e95e432fddb5b4183829}\label{class_coord_1_1_polar_coord_a174b43f651e4e95e432fddb5b4183829}} +\index{PolarCoord@{PolarCoord}!toCart@{toCart}} +\index{toCart@{toCart}!PolarCoord@{PolarCoord}} +\doxysubsubsection{\texorpdfstring{toCart()}{toCart()}} +{\footnotesize\ttfamily \mbox{\hyperlink{class_coord_1_1_cart_coord}{Cart\+Coord}} to\+Cart (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{class_coord_1_1_polar_coord_a514f1b439f404f86f77090fa9edc96ce}\label{class_coord_1_1_polar_coord_a514f1b439f404f86f77090fa9edc96ce}} +\index{PolarCoord@{PolarCoord}!r@{r}} +\index{r@{r}!PolarCoord@{PolarCoord}} +\doxysubsubsection{\texorpdfstring{r}{r}} +{\footnotesize\ttfamily r} + +\mbox{\Hypertarget{class_coord_1_1_polar_coord_aebf487f5d315cb61f0bd86455edff1fd}\label{class_coord_1_1_polar_coord_aebf487f5d315cb61f0bd86455edff1fd}} +\index{PolarCoord@{PolarCoord}!theta@{theta}} +\index{theta@{theta}!PolarCoord@{PolarCoord}} +\doxysubsubsection{\texorpdfstring{theta}{theta}} +{\footnotesize\ttfamily theta} + diff --git a/doc/latex/class_mapping_1_1_keyframe.tex b/doc/latex/class_mapping_1_1_keyframe.tex new file mode 100644 index 0000000..9afe53d --- /dev/null +++ b/doc/latex/class_mapping_1_1_keyframe.tex @@ -0,0 +1,157 @@ +\hypertarget{class_mapping_1_1_keyframe}{}\doxysection{Keyframe Class Reference} +\label{class_mapping_1_1_keyframe}\index{Keyframe@{Keyframe}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +None \mbox{\hyperlink{class_mapping_1_1_keyframe_ab50c2d12f6ba6f7013e2e09dc7104cea}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, np.\+ndarray global\+Pose, np.\+ndarray \mbox{\hyperlink{class_mapping_1_1_keyframe_ae336e904e1abb473dc7527fd2e48d8bb}{feature\+Points\+Local}}, np.\+ndarray \mbox{\hyperlink{class_mapping_1_1_keyframe_a4b406a56724e048b3fa039dd55390f9b}{radar\+Polar\+Img}}, np.\+ndarray \mbox{\hyperlink{class_mapping_1_1_keyframe_aecfeca1289d00fbe5fc76a8dd5295913}{velocity}}) +\item +None \mbox{\hyperlink{class_mapping_1_1_keyframe_ae98897aae59622e52c1e12f602c6893f}{update\+Info}} (self, np.\+ndarray global\+Pose, np.\+ndarray \mbox{\hyperlink{class_mapping_1_1_keyframe_ae336e904e1abb473dc7527fd2e48d8bb}{feature\+Points\+Local}}, np.\+ndarray \mbox{\hyperlink{class_mapping_1_1_keyframe_a4b406a56724e048b3fa039dd55390f9b}{radar\+Polar\+Img}}, np.\+ndarray \mbox{\hyperlink{class_mapping_1_1_keyframe_aecfeca1289d00fbe5fc76a8dd5295913}{velocity}}) +\item +None \mbox{\hyperlink{class_mapping_1_1_keyframe_a90e0f7f754575a4561f5485033860a1d}{copy\+From\+Other\+Keyframe}} (self, keyframe) +\item +np.\+ndarray \mbox{\hyperlink{class_mapping_1_1_keyframe_a415d52be7be81fd08afe59b1f5d5f9d0}{convert\+Features\+Local\+To\+Global}} (self, np.\+ndarray \mbox{\hyperlink{class_mapping_1_1_keyframe_ae336e904e1abb473dc7527fd2e48d8bb}{feature\+Points\+Local}}) +\item +np.\+ndarray \mbox{\hyperlink{class_mapping_1_1_keyframe_a303cd2587f0d363c0cb55441f9e300bd}{get\+Pruned\+Features\+Global\+Position}} (self) +\item +None \mbox{\hyperlink{class_mapping_1_1_keyframe_a796d47daedb509f711f32670dcc56204}{prune\+Feature\+Points}} (self, np.\+ndarray corr\+Status) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{class_mapping_1_1_keyframe_a78b2a3e80010e80c618c3033d6d11547}{pose}} +\item +\mbox{\hyperlink{class_mapping_1_1_keyframe_a4b406a56724e048b3fa039dd55390f9b}{radar\+Polar\+Img}} +\item +\mbox{\hyperlink{class_mapping_1_1_keyframe_ae336e904e1abb473dc7527fd2e48d8bb}{feature\+Points\+Local}} +\item +\mbox{\hyperlink{class_mapping_1_1_keyframe_a7555a7153bea157ba766d90f8a357ac7}{pruned\+Feature\+Points}} +\item +\mbox{\hyperlink{class_mapping_1_1_keyframe_aa8c7a28ed457095b58a6fc21c3beb218}{point\+Cloud}} +\item +\mbox{\hyperlink{class_mapping_1_1_keyframe_aecfeca1289d00fbe5fc76a8dd5295913}{velocity}} +\item +\mbox{\hyperlink{class_mapping_1_1_keyframe_a05e8255630d01c3245aee8388687031e}{feature\+Points\+Local\+Undistorted}} +\item +\mbox{\hyperlink{class_mapping_1_1_keyframe_a2b11eb8819c3458601190586c033134c}{pruned\+Undistorted\+Locals}} +\end{DoxyCompactItemize} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_mapping_1_1_keyframe_ab50c2d12f6ba6f7013e2e09dc7104cea}\label{class_mapping_1_1_keyframe_ab50c2d12f6ba6f7013e2e09dc7104cea}} +\index{Keyframe@{Keyframe}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}} +{\footnotesize\ttfamily None \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self, }\item[{np.\+ndarray}]{global\+Pose, }\item[{np.\+ndarray}]{feature\+Points\+Local, }\item[{np.\+ndarray}]{radar\+Polar\+Img, }\item[{np.\+ndarray}]{velocity }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Keyframe class. Contains pose, feature points and point cloud information +@param[in] globalPose (3 x 1) Pose information [x, y, th] in global coordinates, + units of [m, m, rad] # TODO: Confirm these units +@param[in] featurePointsLocal (K x 2) Tracked feature points from previous keyframe, + in local coordinates (pixels) +@param[in] radarPolarImg (M x N) Radar polar (range-azimuth) image + +@see updateInfo() +\end{DoxyVerb} + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{class_mapping_1_1_keyframe_a415d52be7be81fd08afe59b1f5d5f9d0}\label{class_mapping_1_1_keyframe_a415d52be7be81fd08afe59b1f5d5f9d0}} +\index{Keyframe@{Keyframe}!convertFeaturesLocalToGlobal@{convertFeaturesLocalToGlobal}} +\index{convertFeaturesLocalToGlobal@{convertFeaturesLocalToGlobal}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{convertFeaturesLocalToGlobal()}{convertFeaturesLocalToGlobal()}} +{\footnotesize\ttfamily np.\+ndarray convert\+Features\+Local\+To\+Global (\begin{DoxyParamCaption}\item[{}]{self, }\item[{np.\+ndarray}]{feature\+Points\+Local }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Local feature points to convert into global coordinates, given internal pose +@param[in] featurePointsLocal (K x 2) Tracked feature points from previous keyframe, + in local coordinates (pixels) +@return featurePointsGlobal (K x 2) Feature points in global coordinates, meters +\end{DoxyVerb} + \mbox{\Hypertarget{class_mapping_1_1_keyframe_a90e0f7f754575a4561f5485033860a1d}\label{class_mapping_1_1_keyframe_a90e0f7f754575a4561f5485033860a1d}} +\index{Keyframe@{Keyframe}!copyFromOtherKeyframe@{copyFromOtherKeyframe}} +\index{copyFromOtherKeyframe@{copyFromOtherKeyframe}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{copyFromOtherKeyframe()}{copyFromOtherKeyframe()}} +{\footnotesize\ttfamily None copy\+From\+Other\+Keyframe (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{keyframe }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_mapping_1_1_keyframe_a303cd2587f0d363c0cb55441f9e300bd}\label{class_mapping_1_1_keyframe_a303cd2587f0d363c0cb55441f9e300bd}} +\index{Keyframe@{Keyframe}!getPrunedFeaturesGlobalPosition@{getPrunedFeaturesGlobalPosition}} +\index{getPrunedFeaturesGlobalPosition@{getPrunedFeaturesGlobalPosition}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{getPrunedFeaturesGlobalPosition()}{getPrunedFeaturesGlobalPosition()}} +{\footnotesize\ttfamily np.\+ndarray get\+Pruned\+Features\+Global\+Position (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Get global position of pruned features (stored internally) +@return Global position of pruned features (K x 2) +\end{DoxyVerb} + \mbox{\Hypertarget{class_mapping_1_1_keyframe_a796d47daedb509f711f32670dcc56204}\label{class_mapping_1_1_keyframe_a796d47daedb509f711f32670dcc56204}} +\index{Keyframe@{Keyframe}!pruneFeaturePoints@{pruneFeaturePoints}} +\index{pruneFeaturePoints@{pruneFeaturePoints}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{pruneFeaturePoints()}{pruneFeaturePoints()}} +{\footnotesize\ttfamily None prune\+Feature\+Points (\begin{DoxyParamCaption}\item[{}]{self, }\item[{np.\+ndarray}]{corr\+Status }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Prune feature points based on correspondence status +@param[in] corrStatus +@note In place changing of `self.prunedFeaturePoints` function, which aims to track and prune away the feature points that are part of this keyframe +\end{DoxyVerb} + \mbox{\Hypertarget{class_mapping_1_1_keyframe_ae98897aae59622e52c1e12f602c6893f}\label{class_mapping_1_1_keyframe_ae98897aae59622e52c1e12f602c6893f}} +\index{Keyframe@{Keyframe}!updateInfo@{updateInfo}} +\index{updateInfo@{updateInfo}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{updateInfo()}{updateInfo()}} +{\footnotesize\ttfamily None update\+Info (\begin{DoxyParamCaption}\item[{}]{self, }\item[{np.\+ndarray}]{global\+Pose, }\item[{np.\+ndarray}]{feature\+Points\+Local, }\item[{np.\+ndarray}]{radar\+Polar\+Img, }\item[{np.\+ndarray}]{velocity }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Update internal information: pose, feature points and point cloud information +@param[in] globalPose (3 x 1) Pose information [x, y, th] in global coordinates, + units of [m, m, rad] # TODO: Confirm these units +@param[in] featurePointsLocal (K x 2) Tracked feature points from previous keyframe, + in local coordinates (pixels) +@param[in] radarPolarImg (M x N) Radar polar (range-azimuth) image +\end{DoxyVerb} + + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{class_mapping_1_1_keyframe_ae336e904e1abb473dc7527fd2e48d8bb}\label{class_mapping_1_1_keyframe_ae336e904e1abb473dc7527fd2e48d8bb}} +\index{Keyframe@{Keyframe}!featurePointsLocal@{featurePointsLocal}} +\index{featurePointsLocal@{featurePointsLocal}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{featurePointsLocal}{featurePointsLocal}} +{\footnotesize\ttfamily feature\+Points\+Local} + +\mbox{\Hypertarget{class_mapping_1_1_keyframe_a05e8255630d01c3245aee8388687031e}\label{class_mapping_1_1_keyframe_a05e8255630d01c3245aee8388687031e}} +\index{Keyframe@{Keyframe}!featurePointsLocalUndistorted@{featurePointsLocalUndistorted}} +\index{featurePointsLocalUndistorted@{featurePointsLocalUndistorted}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{featurePointsLocalUndistorted}{featurePointsLocalUndistorted}} +{\footnotesize\ttfamily feature\+Points\+Local\+Undistorted} + +\mbox{\Hypertarget{class_mapping_1_1_keyframe_aa8c7a28ed457095b58a6fc21c3beb218}\label{class_mapping_1_1_keyframe_aa8c7a28ed457095b58a6fc21c3beb218}} +\index{Keyframe@{Keyframe}!pointCloud@{pointCloud}} +\index{pointCloud@{pointCloud}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{pointCloud}{pointCloud}} +{\footnotesize\ttfamily point\+Cloud} + +\mbox{\Hypertarget{class_mapping_1_1_keyframe_a78b2a3e80010e80c618c3033d6d11547}\label{class_mapping_1_1_keyframe_a78b2a3e80010e80c618c3033d6d11547}} +\index{Keyframe@{Keyframe}!pose@{pose}} +\index{pose@{pose}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{pose}{pose}} +{\footnotesize\ttfamily pose} + +\mbox{\Hypertarget{class_mapping_1_1_keyframe_a7555a7153bea157ba766d90f8a357ac7}\label{class_mapping_1_1_keyframe_a7555a7153bea157ba766d90f8a357ac7}} +\index{Keyframe@{Keyframe}!prunedFeaturePoints@{prunedFeaturePoints}} +\index{prunedFeaturePoints@{prunedFeaturePoints}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{prunedFeaturePoints}{prunedFeaturePoints}} +{\footnotesize\ttfamily pruned\+Feature\+Points} + +\mbox{\Hypertarget{class_mapping_1_1_keyframe_a2b11eb8819c3458601190586c033134c}\label{class_mapping_1_1_keyframe_a2b11eb8819c3458601190586c033134c}} +\index{Keyframe@{Keyframe}!prunedUndistortedLocals@{prunedUndistortedLocals}} +\index{prunedUndistortedLocals@{prunedUndistortedLocals}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{prunedUndistortedLocals}{prunedUndistortedLocals}} +{\footnotesize\ttfamily pruned\+Undistorted\+Locals} + +\mbox{\Hypertarget{class_mapping_1_1_keyframe_a4b406a56724e048b3fa039dd55390f9b}\label{class_mapping_1_1_keyframe_a4b406a56724e048b3fa039dd55390f9b}} +\index{Keyframe@{Keyframe}!radarPolarImg@{radarPolarImg}} +\index{radarPolarImg@{radarPolarImg}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{radarPolarImg}{radarPolarImg}} +{\footnotesize\ttfamily radar\+Polar\+Img} + +\mbox{\Hypertarget{class_mapping_1_1_keyframe_aecfeca1289d00fbe5fc76a8dd5295913}\label{class_mapping_1_1_keyframe_aecfeca1289d00fbe5fc76a8dd5295913}} +\index{Keyframe@{Keyframe}!velocity@{velocity}} +\index{velocity@{velocity}!Keyframe@{Keyframe}} +\doxysubsubsection{\texorpdfstring{velocity}{velocity}} +{\footnotesize\ttfamily velocity} + diff --git a/doc/latex/class_mapping_1_1_map.tex b/doc/latex/class_mapping_1_1_map.tex new file mode 100644 index 0000000..fa61829 --- /dev/null +++ b/doc/latex/class_mapping_1_1_map.tex @@ -0,0 +1,125 @@ +\hypertarget{class_mapping_1_1_map}{}\doxysection{Map Class Reference} +\label{class_mapping_1_1_map}\index{Map@{Map}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +None \mbox{\hyperlink{class_mapping_1_1_map_a4badc56bb5b8b58a6014c37755298e21}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, str \mbox{\hyperlink{class_mapping_1_1_map_ada038ff63190b4fbc01af8dace29ec1f}{sequence\+Name}}, \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}} \mbox{\hyperlink{class_mapping_1_1_map_a8d5e95f4d6054db64fd36facd315f2e6}{est\+Traj}}, list\mbox{[}str\mbox{]} \mbox{\hyperlink{class_mapping_1_1_map_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, dict\mbox{[}str\mbox{]} \mbox{\hyperlink{class_mapping_1_1_map_ac133126788d5db734ec6f70884178ea8}{file\+Paths}}) +\item +def \mbox{\hyperlink{class_mapping_1_1_map_a71b2362e9de31ea699a730abaa8f3cd6}{update\+Internal\+Traj}} (self, \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}} traj) +\item +bool \mbox{\hyperlink{class_mapping_1_1_map_a10ef9dd0d4ce2784093b0738c27081e4}{is\+Good\+Keyframe}} (self, \mbox{\hyperlink{class_mapping_1_1_keyframe}{Keyframe}} keyframe) +\item +None \mbox{\hyperlink{class_mapping_1_1_map_aab2cc502236200b5db10f3f1279c5f1f}{add\+Keyframe}} (self, \mbox{\hyperlink{class_mapping_1_1_keyframe}{Keyframe}} keyframe) +\item +None \mbox{\hyperlink{class_mapping_1_1_map_a2f4804050397d59933e98f778bbbfef6}{plot}} (self, plt.\+figure fig, int subsample\+Factor=5, bool show=False) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{class_mapping_1_1_map_ada038ff63190b4fbc01af8dace29ec1f}{sequence\+Name}} +\item +\mbox{\hyperlink{class_mapping_1_1_map_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}} +\item +\mbox{\hyperlink{class_mapping_1_1_map_a8ef2335bbb2c7c07c8e2b35959b03c52}{sequence\+Size}} +\item +\mbox{\hyperlink{class_mapping_1_1_map_ac133126788d5db734ec6f70884178ea8}{file\+Paths}} +\item +\mbox{\hyperlink{class_mapping_1_1_map_a8d5e95f4d6054db64fd36facd315f2e6}{est\+Traj}} +\item +\mbox{\hyperlink{class_mapping_1_1_map_a2b1c4b0bf8907122b4696c04f05a72ce}{map\+Points}} +\item +\mbox{\hyperlink{class_mapping_1_1_map_a8ce2f0b893bb0be63c6e98aa3f2a0233}{keyframes}} +\end{DoxyCompactItemize} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_mapping_1_1_map_a4badc56bb5b8b58a6014c37755298e21}\label{class_mapping_1_1_map_a4badc56bb5b8b58a6014c37755298e21}} +\index{Map@{Map}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}} +{\footnotesize\ttfamily None \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self, }\item[{str}]{sequence\+Name, }\item[{\mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}}}]{est\+Traj, }\item[{list\mbox{[}str\mbox{]}}]{img\+Path\+Arr, }\item[{dict\mbox{[}str\mbox{]}}]{file\+Paths }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{class_mapping_1_1_map_aab2cc502236200b5db10f3f1279c5f1f}\label{class_mapping_1_1_map_aab2cc502236200b5db10f3f1279c5f1f}} +\index{Map@{Map}!addKeyframe@{addKeyframe}} +\index{addKeyframe@{addKeyframe}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{addKeyframe()}{addKeyframe()}} +{\footnotesize\ttfamily None add\+Keyframe (\begin{DoxyParamCaption}\item[{}]{self, }\item[{\mbox{\hyperlink{class_mapping_1_1_keyframe}{Keyframe}}}]{keyframe }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Add a keyframe to the running pose graph +@param[in] keyframe Keyframe to add +\end{DoxyVerb} + \mbox{\Hypertarget{class_mapping_1_1_map_a10ef9dd0d4ce2784093b0738c27081e4}\label{class_mapping_1_1_map_a10ef9dd0d4ce2784093b0738c27081e4}} +\index{Map@{Map}!isGoodKeyframe@{isGoodKeyframe}} +\index{isGoodKeyframe@{isGoodKeyframe}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{isGoodKeyframe()}{isGoodKeyframe()}} +{\footnotesize\ttfamily bool is\+Good\+Keyframe (\begin{DoxyParamCaption}\item[{}]{self, }\item[{\mbox{\hyperlink{class_mapping_1_1_keyframe}{Keyframe}}}]{keyframe }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Check if a keyframe is good for adding using information about relative rotation and translation +@return If keyframe passes checks +\end{DoxyVerb} + \mbox{\Hypertarget{class_mapping_1_1_map_a2f4804050397d59933e98f778bbbfef6}\label{class_mapping_1_1_map_a2f4804050397d59933e98f778bbbfef6}} +\index{Map@{Map}!plot@{plot}} +\index{plot@{plot}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{plot()}{plot()}} +{\footnotesize\ttfamily None plot (\begin{DoxyParamCaption}\item[{}]{self, }\item[{plt.\+figure}]{fig, }\item[{int }]{subsample\+Factor = {\ttfamily 5}, }\item[{bool }]{show = {\ttfamily False} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Plot map points on plt figure +@param[in] fig plt figure to plot on @todo Currently unused +@param[in] subsampleFactor Subsampling amount to do for feature points plotting + Controls density of plotted points. Higher = less dense +@param[in] show Whether to plt.show() +\end{DoxyVerb} + \mbox{\Hypertarget{class_mapping_1_1_map_a71b2362e9de31ea699a730abaa8f3cd6}\label{class_mapping_1_1_map_a71b2362e9de31ea699a730abaa8f3cd6}} +\index{Map@{Map}!updateInternalTraj@{updateInternalTraj}} +\index{updateInternalTraj@{updateInternalTraj}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{updateInternalTraj()}{updateInternalTraj()}} +{\footnotesize\ttfamily def update\+Internal\+Traj (\begin{DoxyParamCaption}\item[{}]{self, }\item[{\mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}}}]{traj }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{class_mapping_1_1_map_a8d5e95f4d6054db64fd36facd315f2e6}\label{class_mapping_1_1_map_a8d5e95f4d6054db64fd36facd315f2e6}} +\index{Map@{Map}!estTraj@{estTraj}} +\index{estTraj@{estTraj}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{estTraj}{estTraj}} +{\footnotesize\ttfamily est\+Traj} + +\mbox{\Hypertarget{class_mapping_1_1_map_ac133126788d5db734ec6f70884178ea8}\label{class_mapping_1_1_map_ac133126788d5db734ec6f70884178ea8}} +\index{Map@{Map}!filePaths@{filePaths}} +\index{filePaths@{filePaths}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{filePaths}{filePaths}} +{\footnotesize\ttfamily file\+Paths} + +\mbox{\Hypertarget{class_mapping_1_1_map_a8d579ebe0582eed800eb106350236c4a}\label{class_mapping_1_1_map_a8d579ebe0582eed800eb106350236c4a}} +\index{Map@{Map}!imgPathArr@{imgPathArr}} +\index{imgPathArr@{imgPathArr}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{imgPathArr}{imgPathArr}} +{\footnotesize\ttfamily img\+Path\+Arr} + +\mbox{\Hypertarget{class_mapping_1_1_map_a8ce2f0b893bb0be63c6e98aa3f2a0233}\label{class_mapping_1_1_map_a8ce2f0b893bb0be63c6e98aa3f2a0233}} +\index{Map@{Map}!keyframes@{keyframes}} +\index{keyframes@{keyframes}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{keyframes}{keyframes}} +{\footnotesize\ttfamily keyframes} + +\mbox{\Hypertarget{class_mapping_1_1_map_a2b1c4b0bf8907122b4696c04f05a72ce}\label{class_mapping_1_1_map_a2b1c4b0bf8907122b4696c04f05a72ce}} +\index{Map@{Map}!mapPoints@{mapPoints}} +\index{mapPoints@{mapPoints}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{mapPoints}{mapPoints}} +{\footnotesize\ttfamily map\+Points} + +\mbox{\Hypertarget{class_mapping_1_1_map_ada038ff63190b4fbc01af8dace29ec1f}\label{class_mapping_1_1_map_ada038ff63190b4fbc01af8dace29ec1f}} +\index{Map@{Map}!sequenceName@{sequenceName}} +\index{sequenceName@{sequenceName}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{sequenceName}{sequenceName}} +{\footnotesize\ttfamily sequence\+Name} + +\mbox{\Hypertarget{class_mapping_1_1_map_a8ef2335bbb2c7c07c8e2b35959b03c52}\label{class_mapping_1_1_map_a8ef2335bbb2c7c07c8e2b35959b03c52}} +\index{Map@{Map}!sequenceSize@{sequenceSize}} +\index{sequenceSize@{sequenceSize}!Map@{Map}} +\doxysubsubsection{\texorpdfstring{sequenceSize}{sequenceSize}} +{\footnotesize\ttfamily sequence\+Size} + diff --git a/doc/latex/class_pose_graph_lib_1_1_bundle_adjustment.tex b/doc/latex/class_pose_graph_lib_1_1_bundle_adjustment.tex new file mode 100644 index 0000000..275c773 --- /dev/null +++ b/doc/latex/class_pose_graph_lib_1_1_bundle_adjustment.tex @@ -0,0 +1,67 @@ +\hypertarget{class_pose_graph_lib_1_1_bundle_adjustment}{}\doxysection{Bundle\+Adjustment Class Reference} +\label{class_pose_graph_lib_1_1_bundle_adjustment}\index{BundleAdjustment@{BundleAdjustment}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_bundle_adjustment_ae64f0875afe3067b97ba370b354b9213}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_bundle_adjustment_acb41507945373592650a226a5c330e4e}{optimize}} (self, max\+\_\+iterations=10) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_bundle_adjustment_a9a15c780e8d512f3252c1a8f9764bfc2}{add\+\_\+pose}} (self, pose\+\_\+id, pose, cam, fixed=False) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_bundle_adjustment_a6fd42378608542f13e1c2492cfb7dd74}{add\+\_\+point}} (self, point\+\_\+id, point, fixed=False, marginalized=True) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_bundle_adjustment_afd2f2f2c53ede9e8de84f631d89d0a4d}{add\+\_\+edge}} (self, point\+\_\+id, pose\+\_\+id, measurement, information=np.\+eye(2), robust\+\_\+kernel=g2o.\+Robust\+Kernel\+Huber(np.\+sqrt(5.\+991))) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_bundle_adjustment_a9f3d0b5aea3681f1c07d7f88111f537e}{get\+\_\+pose}} (self, pose\+\_\+id) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_bundle_adjustment_adbdf5c885f53f5d357c6ef664aa0b1a7}{get\+\_\+point}} (self, point\+\_\+id) +\end{DoxyCompactItemize} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_pose_graph_lib_1_1_bundle_adjustment_ae64f0875afe3067b97ba370b354b9213}\label{class_pose_graph_lib_1_1_bundle_adjustment_ae64f0875afe3067b97ba370b354b9213}} +\index{BundleAdjustment@{BundleAdjustment}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!BundleAdjustment@{BundleAdjustment}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}} +{\footnotesize\ttfamily def \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{class_pose_graph_lib_1_1_bundle_adjustment_afd2f2f2c53ede9e8de84f631d89d0a4d}\label{class_pose_graph_lib_1_1_bundle_adjustment_afd2f2f2c53ede9e8de84f631d89d0a4d}} +\index{BundleAdjustment@{BundleAdjustment}!add\_edge@{add\_edge}} +\index{add\_edge@{add\_edge}!BundleAdjustment@{BundleAdjustment}} +\doxysubsubsection{\texorpdfstring{add\_edge()}{add\_edge()}} +{\footnotesize\ttfamily def add\+\_\+edge (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{point\+\_\+id, }\item[{}]{pose\+\_\+id, }\item[{}]{measurement, }\item[{}]{information = {\ttfamily np.eye(2)}, }\item[{}]{robust\+\_\+kernel = {\ttfamily g2o.RobustKernelHuber( ~~~~~~~~~~~~~~~~~~~~~np.sqrt(5.991))} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_pose_graph_lib_1_1_bundle_adjustment_a6fd42378608542f13e1c2492cfb7dd74}\label{class_pose_graph_lib_1_1_bundle_adjustment_a6fd42378608542f13e1c2492cfb7dd74}} +\index{BundleAdjustment@{BundleAdjustment}!add\_point@{add\_point}} +\index{add\_point@{add\_point}!BundleAdjustment@{BundleAdjustment}} +\doxysubsubsection{\texorpdfstring{add\_point()}{add\_point()}} +{\footnotesize\ttfamily def add\+\_\+point (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{point\+\_\+id, }\item[{}]{point, }\item[{}]{fixed = {\ttfamily False}, }\item[{}]{marginalized = {\ttfamily True} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_pose_graph_lib_1_1_bundle_adjustment_a9a15c780e8d512f3252c1a8f9764bfc2}\label{class_pose_graph_lib_1_1_bundle_adjustment_a9a15c780e8d512f3252c1a8f9764bfc2}} +\index{BundleAdjustment@{BundleAdjustment}!add\_pose@{add\_pose}} +\index{add\_pose@{add\_pose}!BundleAdjustment@{BundleAdjustment}} +\doxysubsubsection{\texorpdfstring{add\_pose()}{add\_pose()}} +{\footnotesize\ttfamily def add\+\_\+pose (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{pose\+\_\+id, }\item[{}]{pose, }\item[{}]{cam, }\item[{}]{fixed = {\ttfamily False} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_pose_graph_lib_1_1_bundle_adjustment_adbdf5c885f53f5d357c6ef664aa0b1a7}\label{class_pose_graph_lib_1_1_bundle_adjustment_adbdf5c885f53f5d357c6ef664aa0b1a7}} +\index{BundleAdjustment@{BundleAdjustment}!get\_point@{get\_point}} +\index{get\_point@{get\_point}!BundleAdjustment@{BundleAdjustment}} +\doxysubsubsection{\texorpdfstring{get\_point()}{get\_point()}} +{\footnotesize\ttfamily def get\+\_\+point (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{point\+\_\+id }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_pose_graph_lib_1_1_bundle_adjustment_a9f3d0b5aea3681f1c07d7f88111f537e}\label{class_pose_graph_lib_1_1_bundle_adjustment_a9f3d0b5aea3681f1c07d7f88111f537e}} +\index{BundleAdjustment@{BundleAdjustment}!get\_pose@{get\_pose}} +\index{get\_pose@{get\_pose}!BundleAdjustment@{BundleAdjustment}} +\doxysubsubsection{\texorpdfstring{get\_pose()}{get\_pose()}} +{\footnotesize\ttfamily def get\+\_\+pose (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{pose\+\_\+id }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_pose_graph_lib_1_1_bundle_adjustment_acb41507945373592650a226a5c330e4e}\label{class_pose_graph_lib_1_1_bundle_adjustment_acb41507945373592650a226a5c330e4e}} +\index{BundleAdjustment@{BundleAdjustment}!optimize@{optimize}} +\index{optimize@{optimize}!BundleAdjustment@{BundleAdjustment}} +\doxysubsubsection{\texorpdfstring{optimize()}{optimize()}} +{\footnotesize\ttfamily def optimize (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{max\+\_\+iterations = {\ttfamily 10} }\end{DoxyParamCaption})} + diff --git a/doc/latex/class_pose_graph_lib_1_1_pose_graph_optimization.tex b/doc/latex/class_pose_graph_lib_1_1_pose_graph_optimization.tex new file mode 100644 index 0000000..83a66b1 --- /dev/null +++ b/doc/latex/class_pose_graph_lib_1_1_pose_graph_optimization.tex @@ -0,0 +1,51 @@ +\hypertarget{class_pose_graph_lib_1_1_pose_graph_optimization}{}\doxysection{Pose\+Graph\+Optimization Class Reference} +\label{class_pose_graph_lib_1_1_pose_graph_optimization}\index{PoseGraphOptimization@{PoseGraphOptimization}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_pose_graph_optimization_ae64f0875afe3067b97ba370b354b9213}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_pose_graph_optimization_af7e7eb351601c9a4569e9bf1566035a5}{optimize}} (self, max\+\_\+iterations=20) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_pose_graph_optimization_a822c2871ea7b5f9131d36e4b7ebd239b}{add\+\_\+vertex}} (self, id, pose, fixed=False) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_pose_graph_optimization_a6a199750c0620c6a47c7b455c27f3625}{add\+\_\+edge}} (self, vertices, measurement, information=np.\+eye(6), robust\+\_\+kernel=None) +\item +def \mbox{\hyperlink{class_pose_graph_lib_1_1_pose_graph_optimization_a8b1e208660dd8873de527e140998d048}{get\+\_\+pose}} (self, id) +\end{DoxyCompactItemize} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_pose_graph_lib_1_1_pose_graph_optimization_ae64f0875afe3067b97ba370b354b9213}\label{class_pose_graph_lib_1_1_pose_graph_optimization_ae64f0875afe3067b97ba370b354b9213}} +\index{PoseGraphOptimization@{PoseGraphOptimization}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!PoseGraphOptimization@{PoseGraphOptimization}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}} +{\footnotesize\ttfamily def \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{class_pose_graph_lib_1_1_pose_graph_optimization_a6a199750c0620c6a47c7b455c27f3625}\label{class_pose_graph_lib_1_1_pose_graph_optimization_a6a199750c0620c6a47c7b455c27f3625}} +\index{PoseGraphOptimization@{PoseGraphOptimization}!add\_edge@{add\_edge}} +\index{add\_edge@{add\_edge}!PoseGraphOptimization@{PoseGraphOptimization}} +\doxysubsubsection{\texorpdfstring{add\_edge()}{add\_edge()}} +{\footnotesize\ttfamily def add\+\_\+edge (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{vertices, }\item[{}]{measurement, }\item[{}]{information = {\ttfamily np.eye(6)}, }\item[{}]{robust\+\_\+kernel = {\ttfamily None} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_pose_graph_lib_1_1_pose_graph_optimization_a822c2871ea7b5f9131d36e4b7ebd239b}\label{class_pose_graph_lib_1_1_pose_graph_optimization_a822c2871ea7b5f9131d36e4b7ebd239b}} +\index{PoseGraphOptimization@{PoseGraphOptimization}!add\_vertex@{add\_vertex}} +\index{add\_vertex@{add\_vertex}!PoseGraphOptimization@{PoseGraphOptimization}} +\doxysubsubsection{\texorpdfstring{add\_vertex()}{add\_vertex()}} +{\footnotesize\ttfamily def add\+\_\+vertex (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{id, }\item[{}]{pose, }\item[{}]{fixed = {\ttfamily False} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_pose_graph_lib_1_1_pose_graph_optimization_a8b1e208660dd8873de527e140998d048}\label{class_pose_graph_lib_1_1_pose_graph_optimization_a8b1e208660dd8873de527e140998d048}} +\index{PoseGraphOptimization@{PoseGraphOptimization}!get\_pose@{get\_pose}} +\index{get\_pose@{get\_pose}!PoseGraphOptimization@{PoseGraphOptimization}} +\doxysubsubsection{\texorpdfstring{get\_pose()}{get\_pose()}} +{\footnotesize\ttfamily def get\+\_\+pose (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{id }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_pose_graph_lib_1_1_pose_graph_optimization_af7e7eb351601c9a4569e9bf1566035a5}\label{class_pose_graph_lib_1_1_pose_graph_optimization_af7e7eb351601c9a4569e9bf1566035a5}} +\index{PoseGraphOptimization@{PoseGraphOptimization}!optimize@{optimize}} +\index{optimize@{optimize}!PoseGraphOptimization@{PoseGraphOptimization}} +\doxysubsubsection{\texorpdfstring{optimize()}{optimize()}} +{\footnotesize\ttfamily def optimize (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{max\+\_\+iterations = {\ttfamily 20} }\end{DoxyParamCaption})} + diff --git a/doc/latex/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system.tex b/doc/latex/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system.tex new file mode 100644 index 0000000..5b4c269 --- /dev/null +++ b/doc/latex/class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system.tex @@ -0,0 +1,219 @@ +\hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system}{}\doxysection{Raw\+ROAMSystem Class Reference} +\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system}\index{RawROAMSystem@{RawROAMSystem}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +None \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aaa625e533c1d594cffd5d8032dd3eb17}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, str \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ada038ff63190b4fbc01af8dace29ec1f}{sequence\+Name}}, bool \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a4eb076d8bfa712c536ede28c13d7ae7e}{param\+Flags}}=dict(), bool \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a9b935ac3b117f5b7bb52024481ca6bde}{has\+Ground\+Truth}}=True) +\item +def \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a01a780439bdd4eed44ec3dc476fcc7c8}{update\+Traj\+From\+Tracker}} (self) +\item +None \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aeb372a8b83527187620cda92e01fcdbd}{run}} (self, int \mbox{\hyperlink{namespace_raw_r_o_a_m_system_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}{start\+Seq\+Ind}}=0, int \mbox{\hyperlink{namespace_raw_r_o_a_m_system_a58496a66cbc7a6dfb37042c7e7731cdf}{end\+Seq\+Ind}}=-\/1) +\item +None \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a4bfd1fc8e3e6eb9a09ead0e93bc79cdb}{update\+Trajectory}} (self, np.\+ndarray R, np.\+ndarray h, np.\+ndarray seq\+Ind) +\item +None \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aa3a95039e4a0987c355da8d8ac48eb26}{update\+Trajectory\+Absolute}} (self, np.\+ndarray pose\+\_\+vector, int seq\+Ind) +\item +None \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a50adb4e1f5eaab2b5d1fa4f4b9b45652}{plot}} (self, np.\+ndarray prev\+Img, np.\+ndarray curr\+Img, np.\+ndarray good\+\_\+old, np.\+ndarray good\+\_\+new, np.\+ndarray R, np.\+ndarray h, np.\+ndarray seq\+Ind, bool plot\+Map\+Points=True, bool use\+Arrow=False, bool save=True, bool show=False) +\item +None \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ab609ee8f1ec2225e40bb4c519b7d8c76}{plot\+Traj}} (self, int seq\+Ind, np.\+ndarray R, np.\+ndarray h, bool use\+Arrow=False, bool save=False, bool show=False) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ada038ff63190b4fbc01af8dace29ec1f}{sequence\+Name}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a4eb076d8bfa712c536ede28c13d7ae7e}{param\+Flags}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a9b935ac3b117f5b7bb52024481ca6bde}{has\+Ground\+Truth}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8ef2335bbb2c7c07c8e2b35959b03c52}{sequence\+Size}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ac133126788d5db734ec6f70884178ea8}{file\+Paths}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a64aa603bc3c6c1587e7c6542452481ac}{fig}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a08c3a4c31d5817521dbdf24631e562c7}{gt\+Traj}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8d5e95f4d6054db64fd36facd315f2e6}{est\+Traj}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_abec0b9ee4648af3b77db73e8070f1736}{tracker}} +\item +\mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a9ec9dda576db2a36c42c1c3af155d07c}{map}} +\end{DoxyCompactItemize} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aaa625e533c1d594cffd5d8032dd3eb17}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aaa625e533c1d594cffd5d8032dd3eb17}} +\index{RawROAMSystem@{RawROAMSystem}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}} +{\footnotesize\ttfamily None \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self, }\item[{str}]{sequence\+Name, }\item[{bool }]{param\+Flags = {\ttfamily dict()}, }\item[{bool }]{has\+Ground\+Truth = {\ttfamily True} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Initializer for ROAM system +@param[in] sequenceName Name of sequence. Should be in ./data folder +@param[in] pararmFlags Set of flags indicating turning on and off of certain algorithm features + - rejectOutliers: Whether to use graph-based outlier rejection + - useANMS: Whether to use ANMS + - useFMT: Whether to use FMT to correct things + - correctMotionDistortion: Whether to correct for motion distortion +@param[in] hasGroundTruth Whether sequence has ground truth to be used for plotting @deprecated +\end{DoxyVerb} + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a50adb4e1f5eaab2b5d1fa4f4b9b45652}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a50adb4e1f5eaab2b5d1fa4f4b9b45652}} +\index{RawROAMSystem@{RawROAMSystem}!plot@{plot}} +\index{plot@{plot}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{plot()}{plot()}} +{\footnotesize\ttfamily None plot (\begin{DoxyParamCaption}\item[{}]{self, }\item[{np.\+ndarray}]{prev\+Img, }\item[{np.\+ndarray}]{curr\+Img, }\item[{np.\+ndarray}]{good\+\_\+old, }\item[{np.\+ndarray}]{good\+\_\+new, }\item[{np.\+ndarray}]{R, }\item[{np.\+ndarray}]{h, }\item[{np.\+ndarray}]{seq\+Ind, }\item[{bool }]{plot\+Map\+Points = {\ttfamily True}, }\item[{bool }]{use\+Arrow = {\ttfamily False}, }\item[{bool }]{save = {\ttfamily True}, }\item[{bool }]{show = {\ttfamily False} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Perform global plotting of everything, including trajectory and map points + +@param[in] prevImg (M x N) Previous Cartesian radar image to plot +@param[in] currImg (M x N) Current Cartesian radar image to plot + +@param[in] good_old (K x 2) Good correspondence points from previous image in scan frame +@param[in] good_new (K x 2) Good correspondence points from current image in scan frame + +@param[in] R (2 x 2) rotation matrix +@param[in] h (2 x 1) translation vector +@param[in] seqInd Sequence index + +@param[in] useArrow Whether to plot with arrows/triangles to indicate pose direction. + Otherwise uses plain lines. +@param[in] save Whether to save image as png/jpg +@param[in] show Whether to plt.show image +\end{DoxyVerb} + \mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ab609ee8f1ec2225e40bb4c519b7d8c76}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ab609ee8f1ec2225e40bb4c519b7d8c76}} +\index{RawROAMSystem@{RawROAMSystem}!plotTraj@{plotTraj}} +\index{plotTraj@{plotTraj}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{plotTraj()}{plotTraj()}} +{\footnotesize\ttfamily None plot\+Traj (\begin{DoxyParamCaption}\item[{}]{self, }\item[{int}]{seq\+Ind, }\item[{np.\+ndarray}]{R, }\item[{np.\+ndarray}]{h, }\item[{bool }]{use\+Arrow = {\ttfamily False}, }\item[{bool }]{save = {\ttfamily False}, }\item[{bool }]{show = {\ttfamily False} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Plot trajectory +@param[in] seqInd Sequence index +@param[in] R (2 x 2) rotation matrix +@param[in] h (2 x 1) translation vector +@param[in] useArrow Whether to plot with arrows/triangles to indicate pose direction. + Otherwise uses plain lines. +@param[in] save Whether to save image as png/jpg +@param[in] show Whether to plt.show image +\end{DoxyVerb} + \mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aeb372a8b83527187620cda92e01fcdbd}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aeb372a8b83527187620cda92e01fcdbd}} +\index{RawROAMSystem@{RawROAMSystem}!run@{run}} +\index{run@{run}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{run()}{run()}} +{\footnotesize\ttfamily None run (\begin{DoxyParamCaption}\item[{}]{self, }\item[{int }]{start\+Seq\+Ind = {\ttfamily 0}, }\item[{int }]{end\+Seq\+Ind = {\ttfamily -\/1} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Do a full run the ROAMing algorithm on sequence, + starting from and ending at specified indices, + incrementally calling the @see Tracker.track() function + +@param[in] startImgInd Starting index of sequence. Default 0. +@param[in] startImgInd Ending index of sequence. Default -1. + Negative numbers to indicate end. +\end{DoxyVerb} + \mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a4bfd1fc8e3e6eb9a09ead0e93bc79cdb}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a4bfd1fc8e3e6eb9a09ead0e93bc79cdb}} +\index{RawROAMSystem@{RawROAMSystem}!updateTrajectory@{updateTrajectory}} +\index{updateTrajectory@{updateTrajectory}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{updateTrajectory()}{updateTrajectory()}} +{\footnotesize\ttfamily None update\+Trajectory (\begin{DoxyParamCaption}\item[{}]{self, }\item[{np.\+ndarray}]{R, }\item[{np.\+ndarray}]{h, }\item[{np.\+ndarray}]{seq\+Ind }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Update trajectory using R,h matrices + +@param[in] R (2 x 2) rotation matrix +@param[in] h (2 x 1) translation vector +@param[in] seqInd Sequence index, used for visualization/plotting + +@note Updates internal trajectory +\end{DoxyVerb} + \mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aa3a95039e4a0987c355da8d8ac48eb26}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aa3a95039e4a0987c355da8d8ac48eb26}} +\index{RawROAMSystem@{RawROAMSystem}!updateTrajectoryAbsolute@{updateTrajectoryAbsolute}} +\index{updateTrajectoryAbsolute@{updateTrajectoryAbsolute}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{updateTrajectoryAbsolute()}{updateTrajectoryAbsolute()}} +{\footnotesize\ttfamily None update\+Trajectory\+Absolute (\begin{DoxyParamCaption}\item[{}]{self, }\item[{np.\+ndarray}]{pose\+\_\+vector, }\item[{int}]{seq\+Ind }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Update trajectory using pose vector + +@param[in] pose_vector (3, ) pose vector +@param[in] seqInd Sequence index, used for visualization/plotting + +@note Updates internal trajectory +\end{DoxyVerb} + \mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a01a780439bdd4eed44ec3dc476fcc7c8}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a01a780439bdd4eed44ec3dc476fcc7c8}} +\index{RawROAMSystem@{RawROAMSystem}!updateTrajFromTracker@{updateTrajFromTracker}} +\index{updateTrajFromTracker@{updateTrajFromTracker}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{updateTrajFromTracker()}{updateTrajFromTracker()}} +{\footnotesize\ttfamily def update\+Traj\+From\+Tracker (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8d5e95f4d6054db64fd36facd315f2e6}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8d5e95f4d6054db64fd36facd315f2e6}} +\index{RawROAMSystem@{RawROAMSystem}!estTraj@{estTraj}} +\index{estTraj@{estTraj}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{estTraj}{estTraj}} +{\footnotesize\ttfamily est\+Traj} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a64aa603bc3c6c1587e7c6542452481ac}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a64aa603bc3c6c1587e7c6542452481ac}} +\index{RawROAMSystem@{RawROAMSystem}!fig@{fig}} +\index{fig@{fig}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{fig}{fig}} +{\footnotesize\ttfamily fig} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ac133126788d5db734ec6f70884178ea8}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ac133126788d5db734ec6f70884178ea8}} +\index{RawROAMSystem@{RawROAMSystem}!filePaths@{filePaths}} +\index{filePaths@{filePaths}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{filePaths}{filePaths}} +{\footnotesize\ttfamily file\+Paths} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a08c3a4c31d5817521dbdf24631e562c7}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a08c3a4c31d5817521dbdf24631e562c7}} +\index{RawROAMSystem@{RawROAMSystem}!gtTraj@{gtTraj}} +\index{gtTraj@{gtTraj}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{gtTraj}{gtTraj}} +{\footnotesize\ttfamily gt\+Traj} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a9b935ac3b117f5b7bb52024481ca6bde}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a9b935ac3b117f5b7bb52024481ca6bde}} +\index{RawROAMSystem@{RawROAMSystem}!hasGroundTruth@{hasGroundTruth}} +\index{hasGroundTruth@{hasGroundTruth}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{hasGroundTruth}{hasGroundTruth}} +{\footnotesize\ttfamily has\+Ground\+Truth} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8d579ebe0582eed800eb106350236c4a}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8d579ebe0582eed800eb106350236c4a}} +\index{RawROAMSystem@{RawROAMSystem}!imgPathArr@{imgPathArr}} +\index{imgPathArr@{imgPathArr}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{imgPathArr}{imgPathArr}} +{\footnotesize\ttfamily img\+Path\+Arr} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a9ec9dda576db2a36c42c1c3af155d07c}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a9ec9dda576db2a36c42c1c3af155d07c}} +\index{RawROAMSystem@{RawROAMSystem}!map@{map}} +\index{map@{map}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{map}{map}} +{\footnotesize\ttfamily map} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a4eb076d8bfa712c536ede28c13d7ae7e}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a4eb076d8bfa712c536ede28c13d7ae7e}} +\index{RawROAMSystem@{RawROAMSystem}!paramFlags@{paramFlags}} +\index{paramFlags@{paramFlags}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{paramFlags}{paramFlags}} +{\footnotesize\ttfamily param\+Flags} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ada038ff63190b4fbc01af8dace29ec1f}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ada038ff63190b4fbc01af8dace29ec1f}} +\index{RawROAMSystem@{RawROAMSystem}!sequenceName@{sequenceName}} +\index{sequenceName@{sequenceName}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{sequenceName}{sequenceName}} +{\footnotesize\ttfamily sequence\+Name} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8ef2335bbb2c7c07c8e2b35959b03c52}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8ef2335bbb2c7c07c8e2b35959b03c52}} +\index{RawROAMSystem@{RawROAMSystem}!sequenceSize@{sequenceSize}} +\index{sequenceSize@{sequenceSize}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{sequenceSize}{sequenceSize}} +{\footnotesize\ttfamily sequence\+Size} + +\mbox{\Hypertarget{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_abec0b9ee4648af3b77db73e8070f1736}\label{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_abec0b9ee4648af3b77db73e8070f1736}} +\index{RawROAMSystem@{RawROAMSystem}!tracker@{tracker}} +\index{tracker@{tracker}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{tracker}{tracker}} +{\footnotesize\ttfamily tracker} + diff --git a/doc/latex/class_tracker_1_1_tracker.tex b/doc/latex/class_tracker_1_1_tracker.tex new file mode 100644 index 0000000..8c60e3d --- /dev/null +++ b/doc/latex/class_tracker_1_1_tracker.tex @@ -0,0 +1,136 @@ +\hypertarget{class_tracker_1_1_tracker}{}\doxysection{Tracker Class Reference} +\label{class_tracker_1_1_tracker}\index{Tracker@{Tracker}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +None \mbox{\hyperlink{class_tracker_1_1_tracker_a50cd44879d0981e765b880213eb46692}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, str \mbox{\hyperlink{class_tracker_1_1_tracker_ada038ff63190b4fbc01af8dace29ec1f}{sequence\+Name}}, list\mbox{[}str\mbox{]} \mbox{\hyperlink{class_tracker_1_1_tracker_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, dict\mbox{[}str\mbox{]} \mbox{\hyperlink{class_tracker_1_1_tracker_ac133126788d5db734ec6f70884178ea8}{file\+Paths}}, dict\mbox{[}bool\mbox{]} \mbox{\hyperlink{class_tracker_1_1_tracker_a4eb076d8bfa712c536ede28c13d7ae7e}{param\+Flags}}) +\item +def \mbox{\hyperlink{class_tracker_1_1_tracker_a8d30f4090822251a3fea3db1e53ce83c}{init\+Traj}} (self, \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}} \mbox{\hyperlink{class_tracker_1_1_tracker_a8d5e95f4d6054db64fd36facd315f2e6}{est\+Traj}}, \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}} \mbox{\hyperlink{class_tracker_1_1_tracker_a08c3a4c31d5817521dbdf24631e562c7}{gt\+Traj}}=None) +\item +Tuple\mbox{[}np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{class_tracker_1_1_tracker_a5502aeee99457c25dc9237a16f102fd9}{track}} (self, np.\+ndarray prev\+Img\+Cart, np.\+ndarray curr\+Img\+Cart, np.\+ndarray prev\+Img\+Polar, np.\+ndarray curr\+Img\+Polar, np.\+ndarray feature\+Coord, int seq\+Ind) +\item +Tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{class_tracker_1_1_tracker_a8072a77a7c03adb53639fb97c7a04b5b}{get\+Transform}} (self, np.\+ndarray src\+Coord, np.\+ndarray target\+Coord, bool pixel) +\item +def \mbox{\hyperlink{class_tracker_1_1_tracker_a8038366cd3daf819bf43b24c7c4b3371}{plot}} (self, prev\+Img, curr\+Img, good\+\_\+old, good\+\_\+new, seq\+Ind, save=True, show=False) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{class_tracker_1_1_tracker_ada038ff63190b4fbc01af8dace29ec1f}{sequence\+Name}} +\item +\mbox{\hyperlink{class_tracker_1_1_tracker_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}} +\item +\mbox{\hyperlink{class_tracker_1_1_tracker_a8ef2335bbb2c7c07c8e2b35959b03c52}{sequence\+Size}} +\item +\mbox{\hyperlink{class_tracker_1_1_tracker_ac133126788d5db734ec6f70884178ea8}{file\+Paths}} +\item +\mbox{\hyperlink{class_tracker_1_1_tracker_a4eb076d8bfa712c536ede28c13d7ae7e}{param\+Flags}} +\item +\mbox{\hyperlink{class_tracker_1_1_tracker_a8d5e95f4d6054db64fd36facd315f2e6}{est\+Traj}} +\item +\mbox{\hyperlink{class_tracker_1_1_tracker_a08c3a4c31d5817521dbdf24631e562c7}{gt\+Traj}} +\end{DoxyCompactItemize} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_tracker_1_1_tracker_a50cd44879d0981e765b880213eb46692}\label{class_tracker_1_1_tracker_a50cd44879d0981e765b880213eb46692}} +\index{Tracker@{Tracker}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}} +{\footnotesize\ttfamily None \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self, }\item[{str}]{sequence\+Name, }\item[{list\mbox{[}str\mbox{]}}]{img\+Path\+Arr, }\item[{dict\mbox{[}str\mbox{]}}]{file\+Paths, }\item[{dict\mbox{[}bool\mbox{]}}]{param\+Flags }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{class_tracker_1_1_tracker_a8072a77a7c03adb53639fb97c7a04b5b}\label{class_tracker_1_1_tracker_a8072a77a7c03adb53639fb97c7a04b5b}} +\index{Tracker@{Tracker}!getTransform@{getTransform}} +\index{getTransform@{getTransform}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{getTransform()}{getTransform()}} +{\footnotesize\ttfamily Tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} get\+Transform (\begin{DoxyParamCaption}\item[{}]{self, }\item[{np.\+ndarray}]{src\+Coord, }\item[{np.\+ndarray}]{target\+Coord, }\item[{bool}]{pixel }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Obtain transform from coordinate correspondnces + +@param[in] srcCoord Coordinates of src feature points (K' x 2) in [x, y] format +@param[in] targetCoord Coordinates of target feature points (K' x 2) in [x, y] format + +@note target = R @ src + h +@return R rotation matrix (2 x 2) +@return h translation matrix (2 x 1), units in meters [m] +\end{DoxyVerb} + \mbox{\Hypertarget{class_tracker_1_1_tracker_a8d30f4090822251a3fea3db1e53ce83c}\label{class_tracker_1_1_tracker_a8d30f4090822251a3fea3db1e53ce83c}} +\index{Tracker@{Tracker}!initTraj@{initTraj}} +\index{initTraj@{initTraj}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{initTraj()}{initTraj()}} +{\footnotesize\ttfamily def init\+Traj (\begin{DoxyParamCaption}\item[{}]{self, }\item[{\mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}}}]{est\+Traj, }\item[{\mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}} }]{gt\+Traj = {\ttfamily None} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_tracker_1_1_tracker_a8038366cd3daf819bf43b24c7c4b3371}\label{class_tracker_1_1_tracker_a8038366cd3daf819bf43b24c7c4b3371}} +\index{Tracker@{Tracker}!plot@{plot}} +\index{plot@{plot}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{plot()}{plot()}} +{\footnotesize\ttfamily def plot (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{prev\+Img, }\item[{}]{curr\+Img, }\item[{}]{good\+\_\+old, }\item[{}]{good\+\_\+new, }\item[{}]{seq\+Ind, }\item[{}]{save = {\ttfamily True}, }\item[{}]{show = {\ttfamily False} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{class_tracker_1_1_tracker_a5502aeee99457c25dc9237a16f102fd9}\label{class_tracker_1_1_tracker_a5502aeee99457c25dc9237a16f102fd9}} +\index{Tracker@{Tracker}!track@{track}} +\index{track@{track}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{track()}{track()}} +{\footnotesize\ttfamily Tuple\mbox{[}np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} track (\begin{DoxyParamCaption}\item[{}]{self, }\item[{np.\+ndarray}]{prev\+Img\+Cart, }\item[{np.\+ndarray}]{curr\+Img\+Cart, }\item[{np.\+ndarray}]{prev\+Img\+Polar, }\item[{np.\+ndarray}]{curr\+Img\+Polar, }\item[{np.\+ndarray}]{feature\+Coord, }\item[{int}]{seq\+Ind }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Track based on previous and current image + +@param[in] prevImg Previous Cartesian radar image (N x N) +@param[in] prevImg Current Cartesian radar image (N x N) +@param[in] prevImg Previous polar radar image (? x ?) +@param[in] prevImg Current polar radar image (? x ?) + +@param[in] blobCoord Coordinates of feature points (K x 2) in [x, y] format + +@return good_old Coordinates of old good feature points (K' x 2) in [x, y] format +@return good_new Coordinates of new good feature points (K' x 2) in [x, y] format +@return angleRotRad Angle used to rotate image +@return corrStatus (K x 2) correspondence status @note Needed for mapping to track keyframe points +\end{DoxyVerb} + + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{class_tracker_1_1_tracker_a8d5e95f4d6054db64fd36facd315f2e6}\label{class_tracker_1_1_tracker_a8d5e95f4d6054db64fd36facd315f2e6}} +\index{Tracker@{Tracker}!estTraj@{estTraj}} +\index{estTraj@{estTraj}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{estTraj}{estTraj}} +{\footnotesize\ttfamily est\+Traj} + +\mbox{\Hypertarget{class_tracker_1_1_tracker_ac133126788d5db734ec6f70884178ea8}\label{class_tracker_1_1_tracker_ac133126788d5db734ec6f70884178ea8}} +\index{Tracker@{Tracker}!filePaths@{filePaths}} +\index{filePaths@{filePaths}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{filePaths}{filePaths}} +{\footnotesize\ttfamily file\+Paths} + +\mbox{\Hypertarget{class_tracker_1_1_tracker_a08c3a4c31d5817521dbdf24631e562c7}\label{class_tracker_1_1_tracker_a08c3a4c31d5817521dbdf24631e562c7}} +\index{Tracker@{Tracker}!gtTraj@{gtTraj}} +\index{gtTraj@{gtTraj}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{gtTraj}{gtTraj}} +{\footnotesize\ttfamily gt\+Traj} + +\mbox{\Hypertarget{class_tracker_1_1_tracker_a8d579ebe0582eed800eb106350236c4a}\label{class_tracker_1_1_tracker_a8d579ebe0582eed800eb106350236c4a}} +\index{Tracker@{Tracker}!imgPathArr@{imgPathArr}} +\index{imgPathArr@{imgPathArr}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{imgPathArr}{imgPathArr}} +{\footnotesize\ttfamily img\+Path\+Arr} + +\mbox{\Hypertarget{class_tracker_1_1_tracker_a4eb076d8bfa712c536ede28c13d7ae7e}\label{class_tracker_1_1_tracker_a4eb076d8bfa712c536ede28c13d7ae7e}} +\index{Tracker@{Tracker}!paramFlags@{paramFlags}} +\index{paramFlags@{paramFlags}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{paramFlags}{paramFlags}} +{\footnotesize\ttfamily param\+Flags} + +\mbox{\Hypertarget{class_tracker_1_1_tracker_ada038ff63190b4fbc01af8dace29ec1f}\label{class_tracker_1_1_tracker_ada038ff63190b4fbc01af8dace29ec1f}} +\index{Tracker@{Tracker}!sequenceName@{sequenceName}} +\index{sequenceName@{sequenceName}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{sequenceName}{sequenceName}} +{\footnotesize\ttfamily sequence\+Name} + +\mbox{\Hypertarget{class_tracker_1_1_tracker_a8ef2335bbb2c7c07c8e2b35959b03c52}\label{class_tracker_1_1_tracker_a8ef2335bbb2c7c07c8e2b35959b03c52}} +\index{Tracker@{Tracker}!sequenceSize@{sequenceSize}} +\index{sequenceSize@{sequenceSize}!Tracker@{Tracker}} +\doxysubsubsection{\texorpdfstring{sequenceSize}{sequenceSize}} +{\footnotesize\ttfamily sequence\+Size} + diff --git a/doc/latex/classmotion_distortion_1_1_motion_distortion_solver.tex b/doc/latex/classmotion_distortion_1_1_motion_distortion_solver.tex new file mode 100644 index 0000000..8e00046 --- /dev/null +++ b/doc/latex/classmotion_distortion_1_1_motion_distortion_solver.tex @@ -0,0 +1,250 @@ +\hypertarget{classmotion_distortion_1_1_motion_distortion_solver}{}\doxysection{Motion\+Distortion\+Solver Class Reference} +\label{classmotion_distortion_1_1_motion_distortion_solver}\index{MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a3f22b34fa12c1f655ed25c4286a467ec}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0a395e89714f60150df6675faaa1f6cb}{T\+\_\+wj0}}, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0e515884ff3ebc059c605589aec689b7}{p\+\_\+w}}, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_aa9fffd513bf2e2cbfe44da13aa4a69bf}{p\+\_\+jt}}, T\+\_\+wj, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a7ae9c91f3c812a21666616d48fbe3ac8}{sigma\+\_\+p}}, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0e071ef606c97ccac78bde51b78f6edf}{sigma\+\_\+v}}, frequency=\mbox{\hyperlink{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}{RADAR\+\_\+\+SCAN\+\_\+\+FREQUENCY}}) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a7f16413ad010eda322f733ea904fdbd3}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a7ae9c91f3c812a21666616d48fbe3ac8}{sigma\+\_\+p}}, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0e071ef606c97ccac78bde51b78f6edf}{sigma\+\_\+v}}, frequency=\mbox{\hyperlink{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}{RADAR\+\_\+\+SCAN\+\_\+\+FREQUENCY}}) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a716b0a6bdc489d052e4243c840ed336f}{update\+\_\+problem}} (self, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0a395e89714f60150df6675faaa1f6cb}{T\+\_\+wj0}}, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0e515884ff3ebc059c605589aec689b7}{p\+\_\+w}}, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_aa9fffd513bf2e2cbfe44da13aa4a69bf}{p\+\_\+jt}}, T\+\_\+wj, \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0514aabed091ee5e2f35766eb01eced6}{debug}}=False) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a44ec490a2fa6ee1f2b5a971fa270541f}{infer\+\_\+velocity}} (self, transform) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a71b1396a9f04a79e3115d693419ccf45}{expected\+\_\+observed\+\_\+pts}} (self, T\+\_\+wj) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_ab508478fa9741dac7d287ff768cc0788}{error\+\_\+vector}} (self, params) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0354ae991f4cc0144ce33e1fdb469a20}{error}} (self, v\+\_\+j, T\+\_\+wj) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a2d68bc205a33412b11c6dcb28fc17d67}{jacobian\+\_\+vector}} (self, params) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a2fc868177b0b6b3e920e4619aad77171}{jacobian}} (self, v\+\_\+j, T\+\_\+wj) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a771350ea3f844ac8fca4338337419242}{optimize}} (self, max\+\_\+iters=20) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_abac4fa4418ddc34ea1b8a6f28ac42c3d}{optimize\+\_\+library}} (self) +\end{DoxyCompactItemize} +\doxysubsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a537d4d68fc42a4376fa5f6b6a961b57a}{compute\+\_\+time\+\_\+deltas}} (period, points) +\item +def \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a5f3489f6d7167cec6bc6fddf8a1d75bd}{undistort}} (v\+\_\+j, points, period=1/\mbox{\hyperlink{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}{RADAR\+\_\+\+SCAN\+\_\+\+FREQUENCY}}, times=None) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0a395e89714f60150df6675faaa1f6cb}{T\+\_\+wj0}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a071a910fd6194ba61a5d9cf24569b393}{T\+\_\+wj0\+\_\+inv}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0e515884ff3ebc059c605589aec689b7}{p\+\_\+w}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_aa9fffd513bf2e2cbfe44da13aa4a69bf}{p\+\_\+jt}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0937342a2f4d12c7784f942bfe386536}{T\+\_\+wj\+\_\+initial}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_ad7beefc4bde186fd252b285986218942}{total\+\_\+scan\+\_\+time}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a9f1d2973eab93bf4884920981c129781}{v\+\_\+j\+\_\+initial}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a7ae9c91f3c812a21666616d48fbe3ac8}{sigma\+\_\+p}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0e071ef606c97ccac78bde51b78f6edf}{sigma\+\_\+v}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a1d4048f86eeeda5fdd5ff70c2667fd8d}{info\+\_\+vector}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_af3c2f70b3a5027fce7c3161665b6b6af}{dT}} +\item +\mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver_a0514aabed091ee5e2f35766eb01eced6}{debug}} +\end{DoxyCompactItemize} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a3f22b34fa12c1f655ed25c4286a467ec}\label{classmotion_distortion_1_1_motion_distortion_solver_a3f22b34fa12c1f655ed25c4286a467ec}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily def \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{T\+\_\+wj0, }\item[{}]{p\+\_\+w, }\item[{}]{p\+\_\+jt, }\item[{}]{T\+\_\+wj, }\item[{}]{sigma\+\_\+p, }\item[{}]{sigma\+\_\+v, }\item[{}]{frequency = {\ttfamily \mbox{\hyperlink{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}{RADAR\+\_\+\+SCAN\+\_\+\+FREQUENCY}}} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a7f16413ad010eda322f733ea904fdbd3}\label{classmotion_distortion_1_1_motion_distortion_solver_a7f16413ad010eda322f733ea904fdbd3}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily def \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{sigma\+\_\+p, }\item[{}]{sigma\+\_\+v, }\item[{}]{frequency = {\ttfamily \mbox{\hyperlink{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}{RADAR\+\_\+\+SCAN\+\_\+\+FREQUENCY}}} }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a537d4d68fc42a4376fa5f6b6a961b57a}\label{classmotion_distortion_1_1_motion_distortion_solver_a537d4d68fc42a4376fa5f6b6a961b57a}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!compute\_time\_deltas@{compute\_time\_deltas}} +\index{compute\_time\_deltas@{compute\_time\_deltas}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{compute\_time\_deltas()}{compute\_time\_deltas()}} +{\footnotesize\ttfamily def compute\+\_\+time\+\_\+deltas (\begin{DoxyParamCaption}\item[{}]{period, }\item[{}]{points }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\begin{DoxyVerb}Get the time deltas for each point. This depends solely on where the +points are in scan angle. The further away from center, the greater the +time displacement, and therefore the higher time delta. We use this time +delta to help us transform the points into an undistorted frame. Note +that this is an estimate computed from distorted images. It is a good +idea to re-run this function once an undistorted frame is obtained for +better estimates. +\end{DoxyVerb} + \mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a0354ae991f4cc0144ce33e1fdb469a20}\label{classmotion_distortion_1_1_motion_distortion_solver_a0354ae991f4cc0144ce33e1fdb469a20}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!error@{error}} +\index{error@{error}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{error()}{error()}} +{\footnotesize\ttfamily def error (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{v\+\_\+j, }\item[{}]{T\+\_\+wj }\end{DoxyParamCaption})} + +\begin{DoxyVerb}Return the Cauchy robust error between the undistorted points and their +estimated observed positions and the velocity error. +\end{DoxyVerb} + \mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_ab508478fa9741dac7d287ff768cc0788}\label{classmotion_distortion_1_1_motion_distortion_solver_ab508478fa9741dac7d287ff768cc0788}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!error\_vector@{error\_vector}} +\index{error\_vector@{error\_vector}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{error\_vector()}{error\_vector()}} +{\footnotesize\ttfamily def error\+\_\+vector (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{params }\end{DoxyParamCaption})} + +\begin{DoxyVerb}Because we are optimizing over rotations, we choose to keep the rotation +in a theta form, we have to do matrix exponential in here to convert +into the SO(1) form, then augment to the rotation-translation transform +\end{DoxyVerb} + \mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a71b1396a9f04a79e3115d693419ccf45}\label{classmotion_distortion_1_1_motion_distortion_solver_a71b1396a9f04a79e3115d693419ccf45}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!expected\_observed\_pts@{expected\_observed\_pts}} +\index{expected\_observed\_pts@{expected\_observed\_pts}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{expected\_observed\_pts()}{expected\_observed\_pts()}} +{\footnotesize\ttfamily def expected\+\_\+observed\+\_\+pts (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{T\+\_\+wj }\end{DoxyParamCaption})} + +\begin{DoxyVerb}Returns the estimated positions of points based on their world location +estimates and the current best fit transform +\end{DoxyVerb} + \mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a44ec490a2fa6ee1f2b5a971fa270541f}\label{classmotion_distortion_1_1_motion_distortion_solver_a44ec490a2fa6ee1f2b5a971fa270541f}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!infer\_velocity@{infer\_velocity}} +\index{infer\_velocity@{infer\_velocity}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{infer\_velocity()}{infer\_velocity()}} +{\footnotesize\ttfamily def infer\+\_\+velocity (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{transform }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a2fc868177b0b6b3e920e4619aad77171}\label{classmotion_distortion_1_1_motion_distortion_solver_a2fc868177b0b6b3e920e4619aad77171}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!jacobian@{jacobian}} +\index{jacobian@{jacobian}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{jacobian()}{jacobian()}} +{\footnotesize\ttfamily def jacobian (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{v\+\_\+j, }\item[{}]{T\+\_\+wj }\end{DoxyParamCaption})} + +\begin{DoxyVerb}Compute the Jacobian. This has two parts, as defined by the RadarSLAM +paper: +J_p - gradient of point error and velocity error wrt pose terms Tx, + Ty, Ttheta +J_v - gradient of point error and velocity error wrt velocity terms + vx, vy, vtheta +\end{DoxyVerb} + \mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a2d68bc205a33412b11c6dcb28fc17d67}\label{classmotion_distortion_1_1_motion_distortion_solver_a2d68bc205a33412b11c6dcb28fc17d67}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!jacobian\_vector@{jacobian\_vector}} +\index{jacobian\_vector@{jacobian\_vector}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{jacobian\_vector()}{jacobian\_vector()}} +{\footnotesize\ttfamily def jacobian\+\_\+vector (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{params }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a771350ea3f844ac8fca4338337419242}\label{classmotion_distortion_1_1_motion_distortion_solver_a771350ea3f844ac8fca4338337419242}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!optimize@{optimize}} +\index{optimize@{optimize}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{optimize()}{optimize()}} +{\footnotesize\ttfamily def optimize (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{max\+\_\+iters = {\ttfamily 20} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_abac4fa4418ddc34ea1b8a6f28ac42c3d}\label{classmotion_distortion_1_1_motion_distortion_solver_abac4fa4418ddc34ea1b8a6f28ac42c3d}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!optimize\_library@{optimize\_library}} +\index{optimize\_library@{optimize\_library}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{optimize\_library()}{optimize\_library()}} +{\footnotesize\ttfamily def optimize\+\_\+library (\begin{DoxyParamCaption}\item[{}]{self }\end{DoxyParamCaption})} + +\begin{DoxyVerb}Optimize using the LM implementation in the scipy library. +\end{DoxyVerb} + \mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a5f3489f6d7167cec6bc6fddf8a1d75bd}\label{classmotion_distortion_1_1_motion_distortion_solver_a5f3489f6d7167cec6bc6fddf8a1d75bd}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!undistort@{undistort}} +\index{undistort@{undistort}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{undistort()}{undistort()}} +{\footnotesize\ttfamily def undistort (\begin{DoxyParamCaption}\item[{}]{v\+\_\+j, }\item[{}]{points, }\item[{}]{period = {\ttfamily 1~/~\mbox{\hyperlink{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}{RADAR\+\_\+\+SCAN\+\_\+\+FREQUENCY}}}, }\item[{}]{times = {\ttfamily None} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\begin{DoxyVerb}Computes a new set of undistorted observed points, based on the current +best estimate of v_T, T_wj, dT +\end{DoxyVerb} + \mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a716b0a6bdc489d052e4243c840ed336f}\label{classmotion_distortion_1_1_motion_distortion_solver_a716b0a6bdc489d052e4243c840ed336f}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!update\_problem@{update\_problem}} +\index{update\_problem@{update\_problem}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{update\_problem()}{update\_problem()}} +{\footnotesize\ttfamily def update\+\_\+problem (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{T\+\_\+wj0, }\item[{}]{p\+\_\+w, }\item[{}]{p\+\_\+jt, }\item[{}]{T\+\_\+wj, }\item[{}]{debug = {\ttfamily False} }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a0514aabed091ee5e2f35766eb01eced6}\label{classmotion_distortion_1_1_motion_distortion_solver_a0514aabed091ee5e2f35766eb01eced6}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!debug@{debug}} +\index{debug@{debug}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{debug}{debug}} +{\footnotesize\ttfamily debug} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_af3c2f70b3a5027fce7c3161665b6b6af}\label{classmotion_distortion_1_1_motion_distortion_solver_af3c2f70b3a5027fce7c3161665b6b6af}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!dT@{dT}} +\index{dT@{dT}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{dT}{dT}} +{\footnotesize\ttfamily dT} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a1d4048f86eeeda5fdd5ff70c2667fd8d}\label{classmotion_distortion_1_1_motion_distortion_solver_a1d4048f86eeeda5fdd5ff70c2667fd8d}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!info\_vector@{info\_vector}} +\index{info\_vector@{info\_vector}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{info\_vector}{info\_vector}} +{\footnotesize\ttfamily info\+\_\+vector} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_aa9fffd513bf2e2cbfe44da13aa4a69bf}\label{classmotion_distortion_1_1_motion_distortion_solver_aa9fffd513bf2e2cbfe44da13aa4a69bf}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!p\_jt@{p\_jt}} +\index{p\_jt@{p\_jt}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{p\_jt}{p\_jt}} +{\footnotesize\ttfamily p\+\_\+jt} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a0e515884ff3ebc059c605589aec689b7}\label{classmotion_distortion_1_1_motion_distortion_solver_a0e515884ff3ebc059c605589aec689b7}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!p\_w@{p\_w}} +\index{p\_w@{p\_w}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{p\_w}{p\_w}} +{\footnotesize\ttfamily p\+\_\+w} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a7ae9c91f3c812a21666616d48fbe3ac8}\label{classmotion_distortion_1_1_motion_distortion_solver_a7ae9c91f3c812a21666616d48fbe3ac8}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!sigma\_p@{sigma\_p}} +\index{sigma\_p@{sigma\_p}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{sigma\_p}{sigma\_p}} +{\footnotesize\ttfamily sigma\+\_\+p} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a0e071ef606c97ccac78bde51b78f6edf}\label{classmotion_distortion_1_1_motion_distortion_solver_a0e071ef606c97ccac78bde51b78f6edf}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!sigma\_v@{sigma\_v}} +\index{sigma\_v@{sigma\_v}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{sigma\_v}{sigma\_v}} +{\footnotesize\ttfamily sigma\+\_\+v} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a0a395e89714f60150df6675faaa1f6cb}\label{classmotion_distortion_1_1_motion_distortion_solver_a0a395e89714f60150df6675faaa1f6cb}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!T\_wj0@{T\_wj0}} +\index{T\_wj0@{T\_wj0}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{T\_wj0}{T\_wj0}} +{\footnotesize\ttfamily T\+\_\+wj0} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a071a910fd6194ba61a5d9cf24569b393}\label{classmotion_distortion_1_1_motion_distortion_solver_a071a910fd6194ba61a5d9cf24569b393}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!T\_wj0\_inv@{T\_wj0\_inv}} +\index{T\_wj0\_inv@{T\_wj0\_inv}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{T\_wj0\_inv}{T\_wj0\_inv}} +{\footnotesize\ttfamily T\+\_\+wj0\+\_\+inv} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a0937342a2f4d12c7784f942bfe386536}\label{classmotion_distortion_1_1_motion_distortion_solver_a0937342a2f4d12c7784f942bfe386536}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!T\_wj\_initial@{T\_wj\_initial}} +\index{T\_wj\_initial@{T\_wj\_initial}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{T\_wj\_initial}{T\_wj\_initial}} +{\footnotesize\ttfamily T\+\_\+wj\+\_\+initial} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_ad7beefc4bde186fd252b285986218942}\label{classmotion_distortion_1_1_motion_distortion_solver_ad7beefc4bde186fd252b285986218942}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!total\_scan\_time@{total\_scan\_time}} +\index{total\_scan\_time@{total\_scan\_time}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{total\_scan\_time}{total\_scan\_time}} +{\footnotesize\ttfamily total\+\_\+scan\+\_\+time} + +\mbox{\Hypertarget{classmotion_distortion_1_1_motion_distortion_solver_a9f1d2973eab93bf4884920981c129781}\label{classmotion_distortion_1_1_motion_distortion_solver_a9f1d2973eab93bf4884920981c129781}} +\index{MotionDistortionSolver@{MotionDistortionSolver}!v\_j\_initial@{v\_j\_initial}} +\index{v\_j\_initial@{v\_j\_initial}!MotionDistortionSolver@{MotionDistortionSolver}} +\doxysubsubsection{\texorpdfstring{v\_j\_initial}{v\_j\_initial}} +{\footnotesize\ttfamily v\+\_\+j\+\_\+initial} + diff --git a/doc/latex/classtrajectory_plotting_1_1_trajectory.tex b/doc/latex/classtrajectory_plotting_1_1_trajectory.tex new file mode 100644 index 0000000..949043c --- /dev/null +++ b/doc/latex/classtrajectory_plotting_1_1_trajectory.tex @@ -0,0 +1,116 @@ +\hypertarget{classtrajectory_plotting_1_1_trajectory}{}\doxysection{Trajectory Class Reference} +\label{classtrajectory_plotting_1_1_trajectory}\index{Trajectory@{Trajectory}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_a71a1a749bd09d5ebf80433b59ec5bf4c}{\+\_\+\+\_\+init\+\_\+\+\_\+}} (self, \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_ada03328a9187736162c7277d89ef159e}{timestamps}}, \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_ad852f76f56388944f342af3b11bd2c31}{poses}}) +\item +def \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_a7a7a8f886746f69fa22f688534e5eb41}{get\+Ground\+Truth\+Deltas\+At\+Time}} (self, time) +\item +def \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_a75e78dbec634ef9815d87f0a8fd101a4}{append\+Relative\+Deltas}} (self, time, d\+\_\+xyth) +\item +def \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_a18b62f49e9be3d5913bfddf1409241a5}{append\+Relative\+Transform}} (self, time, R, h) +\item +def \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_a08950a5574e6fa031de10f01899414a7}{append\+Absolute\+Transform}} (self, time, pose) +\item +def \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_af71c2208e017a99508ff89271af73f04}{get\+Pose\+At\+Times}} (self, times) +\item +def \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_ab6639608bd1c7a82abfd40ea1f53b904}{plot}} (self, title=\textquotesingle{}My \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}}\textquotesingle{}, save\+Path=False) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_ada03328a9187736162c7277d89ef159e}{timestamps}} +\item +\mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_ad852f76f56388944f342af3b11bd2c31}{poses}} +\item +\mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory_ae295f4fa8996d01631c561ab3cb77670}{pose\+\_\+transform}} +\end{DoxyCompactItemize} + + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_a71a1a749bd09d5ebf80433b59ec5bf4c}\label{classtrajectory_plotting_1_1_trajectory_a71a1a749bd09d5ebf80433b59ec5bf4c}} +\index{Trajectory@{Trajectory}!\_\_init\_\_@{\_\_init\_\_}} +\index{\_\_init\_\_@{\_\_init\_\_}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{\_\_init\_\_()}{\_\_init\_\_()}} +{\footnotesize\ttfamily def \+\_\+\+\_\+init\+\_\+\+\_\+ (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{timestamps, }\item[{}]{poses }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@param[in] timestamps np.ndarray of sorted timestamps (N) +@param[in] pose_matrices np.ndarray of poses (N x 3) +\end{DoxyVerb} + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_a08950a5574e6fa031de10f01899414a7}\label{classtrajectory_plotting_1_1_trajectory_a08950a5574e6fa031de10f01899414a7}} +\index{Trajectory@{Trajectory}!appendAbsoluteTransform@{appendAbsoluteTransform}} +\index{appendAbsoluteTransform@{appendAbsoluteTransform}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{appendAbsoluteTransform()}{appendAbsoluteTransform()}} +{\footnotesize\ttfamily def append\+Absolute\+Transform (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{time, }\item[{}]{pose }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Append a relative transform to the trajectory + h should already be scaled by radar resolution +@param[in] time timestamp of the transform +@param[in] pose pose vector (3, ) +\end{DoxyVerb} + \mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_a75e78dbec634ef9815d87f0a8fd101a4}\label{classtrajectory_plotting_1_1_trajectory_a75e78dbec634ef9815d87f0a8fd101a4}} +\index{Trajectory@{Trajectory}!appendRelativeDeltas@{appendRelativeDeltas}} +\index{appendRelativeDeltas@{appendRelativeDeltas}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{appendRelativeDeltas()}{appendRelativeDeltas()}} +{\footnotesize\ttfamily def append\+Relative\+Deltas (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{time, }\item[{}]{d\+\_\+xyth }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_a18b62f49e9be3d5913bfddf1409241a5}\label{classtrajectory_plotting_1_1_trajectory_a18b62f49e9be3d5913bfddf1409241a5}} +\index{Trajectory@{Trajectory}!appendRelativeTransform@{appendRelativeTransform}} +\index{appendRelativeTransform@{appendRelativeTransform}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{appendRelativeTransform()}{appendRelativeTransform()}} +{\footnotesize\ttfamily def append\+Relative\+Transform (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{time, }\item[{}]{R, }\item[{}]{h }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Append a relative transform to the trajectory + h should already be scaled by radar resolution +@param[in] time timestamp of the transform +@param[in] R rotation matrix (2 x 2) +@param[in] h translation vector (2 x 1) +\end{DoxyVerb} + \mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_a7a7a8f886746f69fa22f688534e5eb41}\label{classtrajectory_plotting_1_1_trajectory_a7a7a8f886746f69fa22f688534e5eb41}} +\index{Trajectory@{Trajectory}!getGroundTruthDeltasAtTime@{getGroundTruthDeltasAtTime}} +\index{getGroundTruthDeltasAtTime@{getGroundTruthDeltasAtTime}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{getGroundTruthDeltasAtTime()}{getGroundTruthDeltasAtTime()}} +{\footnotesize\ttfamily def get\+Ground\+Truth\+Deltas\+At\+Time (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{time }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Given a timestamp, return the ground truth deltas at that time in (dx, dy, dth) list for debugging +\end{DoxyVerb} + \mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_af71c2208e017a99508ff89271af73f04}\label{classtrajectory_plotting_1_1_trajectory_af71c2208e017a99508ff89271af73f04}} +\index{Trajectory@{Trajectory}!getPoseAtTimes@{getPoseAtTimes}} +\index{getPoseAtTimes@{getPoseAtTimes}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{getPoseAtTimes()}{getPoseAtTimes()}} +{\footnotesize\ttfamily def get\+Pose\+At\+Times (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{times }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Given timestamps, return the pose at that time using cubic interpolation +@param[in] times np.ndarray of sorted timestamps +\end{DoxyVerb} + \mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_ab6639608bd1c7a82abfd40ea1f53b904}\label{classtrajectory_plotting_1_1_trajectory_ab6639608bd1c7a82abfd40ea1f53b904}} +\index{Trajectory@{Trajectory}!plot@{plot}} +\index{plot@{plot}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{plot()}{plot()}} +{\footnotesize\ttfamily def plot (\begin{DoxyParamCaption}\item[{}]{self, }\item[{}]{title = {\ttfamily \textquotesingle{}My~\mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}}\textquotesingle{}}, }\item[{}]{save\+Path = {\ttfamily False} }\end{DoxyParamCaption})} + + + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_ae295f4fa8996d01631c561ab3cb77670}\label{classtrajectory_plotting_1_1_trajectory_ae295f4fa8996d01631c561ab3cb77670}} +\index{Trajectory@{Trajectory}!pose\_transform@{pose\_transform}} +\index{pose\_transform@{pose\_transform}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{pose\_transform}{pose\_transform}} +{\footnotesize\ttfamily pose\+\_\+transform} + +\mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_ad852f76f56388944f342af3b11bd2c31}\label{classtrajectory_plotting_1_1_trajectory_ad852f76f56388944f342af3b11bd2c31}} +\index{Trajectory@{Trajectory}!poses@{poses}} +\index{poses@{poses}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{poses}{poses}} +{\footnotesize\ttfamily poses} + +\mbox{\Hypertarget{classtrajectory_plotting_1_1_trajectory_ada03328a9187736162c7277d89ef159e}\label{classtrajectory_plotting_1_1_trajectory_ada03328a9187736162c7277d89ef159e}} +\index{Trajectory@{Trajectory}!timestamps@{timestamps}} +\index{timestamps@{timestamps}!Trajectory@{Trajectory}} +\doxysubsubsection{\texorpdfstring{timestamps}{timestamps}} +{\footnotesize\ttfamily timestamps} + diff --git a/doc/latex/doxygen.sty b/doc/latex/doxygen.sty new file mode 100644 index 0000000..7e01991 --- /dev/null +++ b/doc/latex/doxygen.sty @@ -0,0 +1,601 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{calc} +\RequirePackage{float} +%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{verbatim} +\RequirePackage[table]{xcolor} +\RequirePackage{longtable_doxygen} +\RequirePackage{tabu_doxygen} +\RequirePackage{fancyvrb} +\RequirePackage{tabularx} +\RequirePackage{multicol} +\RequirePackage{multirow} +\RequirePackage{hanging} +\RequirePackage{ifpdf} +\RequirePackage{adjustbox} +\RequirePackage{amssymb} +\RequirePackage{stackengine} +\RequirePackage{enumitem} +\RequirePackage{alphalph} +\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis +\RequirePackage{enumitem} + +%---------- Internal commands used in this style file ---------------- + +\newcommand{\ensurespace}[1]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip% hide the previous |\vskip| from |\addvspace| + \endgroup% +} + +\newcommand{\DoxyHorRuler}[1]{% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{#1=0}% + {% + \hrule% + }% + {% + \hrulefilll% + }% +} +\newcommand{\DoxyLabelFont}{} +\newcommand{\entrylabel}[1]{% + {% + \parbox[b]{\labelwidth-4pt}{% + \makebox[0pt][l]{\DoxyLabelFont#1}% + \vspace{1.5\baselineskip}% + }% + }% +} + +\newenvironment{DoxyDesc}[1]{% + \ensurespace{4\baselineskip}% + \begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + %\setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +\newsavebox{\xrefbox} +\newlength{\xreflength} +\newcommand{\xreflabel}[1]{% + \sbox{\xrefbox}{#1}% + \setlength{\xreflength}{\wd\xrefbox}% + \ifthenelse{\xreflength>\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by
                                                                                                 ... 
                                                                                                +\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} +% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output. +\newlength{\CodeWidthChar} +\newlength{\CodeHeightChar} +\settowidth{\CodeWidthChar}{?} +\settoheight{\CodeHeightChar}{?} +% Necessary for hanging indent +\newlength{\DoxyCodeWidth} + +\newcommand\DoxyCodeLine[1]{\hangpara{\DoxyCodeWidth}{1}{#1}\par} + +\newcommand\NiceSpace{% + \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}[1]{% + \par% + \scriptsize% + \normalfont\ttfamily% + \rightskip0pt plus 1fil% + \settowidth{\DoxyCodeWidth}{000000}% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{\equal{#1}{0}} + { + {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% + } + { + {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% + } + +}{% + \normalfont% + \normalsize% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% +} + +% Redefining not defined characters, i.e. "Replacement Character" in tex output. +\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{% + \textcolor{white}{\sffamily\bfseries\small ?}}{% + \rotatebox{45}{$\blacksquare$}}}} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}[1]{% + \DoxyCode{#1}% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
                                                                                                  ...
                                                                                                ) +\setlistdepth{12} +\newlist{DoxyEnumerate}{enumerate}{12} +\setlist[DoxyEnumerate,1]{label=\arabic*.} +\setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)} +\setlist[DoxyEnumerate,3]{label=\roman*.} +\setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.} +\setlist[DoxyEnumerate,5]{label=\arabic*.} +\setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)} +\setlist[DoxyEnumerate,7]{label=\roman*.} +\setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.} +\setlist[DoxyEnumerate,9]{label=\arabic*.} +\setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)} +\setlist[DoxyEnumerate,11]{label=\roman*.} +\setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.} + +% Used by bullet lists (using '-', @li, @arg, or
                                                                                                  ...
                                                                                                ) +\setlistdepth{12} +\newlist{DoxyItemize}{itemize}{12} +\setlist[DoxyItemize]{label=\textperiodcentered} + +\setlist[DoxyItemize,1]{label=\textbullet} +\setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash} +\setlist[DoxyItemize,3]{label=\textasteriskcentered} +\setlist[DoxyItemize,4]{label=\textperiodcentered} + +% Used by description lists (using
                                                                                                ...
                                                                                                ) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \centering% +}{% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% + \begin{center}% +}{% + \end{center}% +} + +% Used by @image +% (only if inline is specified) +\newenvironment{DoxyInlineImage}{% +}{% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @internal +\newenvironment{DoxyInternal}[1]{% + \paragraph*{#1}% +}{% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \tabulinesep=1mm% + \par% + \ifthenelse{\equal{#1}{}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description + {\ifthenelse{\equal{#1}{1}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc + } + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields simple class style enums +\newenvironment{DoxyEnumFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% +}{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% +}{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% +}{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% +}{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + } +}{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newenvironment{TabularC}[1]% +{\tabulinesep=1mm +\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}% +{\end{longtabu*}\par}% + +\newenvironment{TabularNC}[1]% +{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}% +{\end{tabu}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% +}{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used to link to a table when hyperlinks are turned on +\newcommand{\doxytablelink}[2]{% + \ref{#1}% +} + +% Used to link to a table when hyperlinks are turned off +\newcommand{\doxytableref}[3]{% + \ref{#3}% +} + +% Used by @addindex +\newcommand{\lcurly}{\{} +\newcommand{\rcurly}{\}} + +% Colors used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} + +% Color used for table heading +\newcommand{\tableheadbgcolor}{lightgray}% + +% Version of hypertarget with correct landing location +\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} + +% possibility to have sections etc. be within the margins +% unfortunately had to copy part of book.cls and add \raggedright +\makeatletter +\newcommand\doxysection{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\raggedright\normalfont\Large\bfseries}} +\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\large\bfseries}} +\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxyparagraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\raggedright\normalfont\normalsize\bfseries}} +\makeatother +% Define caption that is also suitable in a table +\makeatletter +\def\doxyfigcaption{% +\H@refstepcounter{figure}% +\@dblarg{\@caption{figure}}} +\makeatother + +% Define alpha enumarative names for counters > 26 +\makeatletter +\def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname} +\def\@enumalphalphcnt#1{\alphalph{#1}} +\def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname} +\def\@enumAlphAlphcnt#1{\AlphAlph{#1}} +\makeatother +\AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa} +\AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA} diff --git a/doc/latex/hierarchy.tex b/doc/latex/hierarchy.tex new file mode 100644 index 0000000..b368a47 --- /dev/null +++ b/doc/latex/hierarchy.tex @@ -0,0 +1,17 @@ +\doxysection{Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically\+:\begin{DoxyCompactList} +\item \contentsline{section}{Keyframe}{\pageref{class_mapping_1_1_keyframe}}{} +\item \contentsline{section}{Map}{\pageref{class_mapping_1_1_map}}{} +\item \contentsline{section}{Motion\+Distortion\+Solver}{\pageref{classmotion_distortion_1_1_motion_distortion_solver}}{} +\item object\begin{DoxyCompactList} +\item \contentsline{section}{Cart\+Coord}{\pageref{class_coord_1_1_cart_coord}}{} +\item \contentsline{section}{Polar\+Coord}{\pageref{class_coord_1_1_polar_coord}}{} +\end{DoxyCompactList} +\item \contentsline{section}{Raw\+ROAMSystem}{\pageref{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system}}{} +\item Sparse\+Optimizer\begin{DoxyCompactList} +\item \contentsline{section}{Bundle\+Adjustment}{\pageref{class_pose_graph_lib_1_1_bundle_adjustment}}{} +\item \contentsline{section}{Pose\+Graph\+Optimization}{\pageref{class_pose_graph_lib_1_1_pose_graph_optimization}}{} +\end{DoxyCompactList} +\item \contentsline{section}{Tracker}{\pageref{class_tracker_1_1_tracker}}{} +\item \contentsline{section}{Trajectory}{\pageref{classtrajectory_plotting_1_1_trajectory}}{} +\end{DoxyCompactList} diff --git a/doc/latex/longtable_doxygen.sty b/doc/latex/longtable_doxygen.sty new file mode 100644 index 0000000..a0eb314 --- /dev/null +++ b/doc/latex/longtable_doxygen.sty @@ -0,0 +1,448 @@ +%% +%% This is file `longtable.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% longtable.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% The source is maintained by the LaTeX Project team and bug +%% reports for it can be opened at http://latex-project.org/bugs.html +%% (but please observe conditions on bug reports sent to that address!) +%% +%% Copyright 1993-2016 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. +%% -------------------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' +%% without such generated files. +%% +%% The list of all files belonging to the LaTeX `Tools Bundle' is +%% given in the file `manifest.txt'. +%% +%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{longtable_doxygen} + [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen] +\def\LT@err{\PackageError{longtable}} +\def\LT@warn{\PackageWarning{longtable}} +\def\LT@final@warn{% + \AtEndDocument{% + \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}% + \global\let\LT@final@warn\relax} +\DeclareOption{errorshow}{% + \def\LT@warn{\PackageInfo{longtable}}} +\DeclareOption{pausing}{% + \def\LT@warn#1{% + \LT@err{#1}{This is not really an error}}} +\DeclareOption{set}{} +\DeclareOption{final}{} +\ProcessOptions +\newskip\LTleft \LTleft=\fill +\newskip\LTright \LTright=\fill +\newskip\LTpre \LTpre=\bigskipamount +\newskip\LTpost \LTpost=\bigskipamount +\newcount\LTchunksize \LTchunksize=20 +\let\c@LTchunksize\LTchunksize +\newdimen\LTcapwidth \LTcapwidth=4in +\newbox\LT@head +\newbox\LT@firsthead +\newbox\LT@foot +\newbox\LT@lastfoot +\newcount\LT@cols +\newcount\LT@rows +\newcounter{LT@tables} +\newcounter{LT@chunks}[LT@tables] +\ifx\c@table\undefined + \newcounter{table} + \def\fnum@table{\tablename~\thetable} +\fi +\ifx\tablename\undefined + \def\tablename{Table} +\fi +\newtoks\LT@p@ftn +\mathchardef\LT@end@pen=30000 +\def\longtable{% + \par + \ifx\multicols\@undefined + \else + \ifnum\col@number>\@ne + \@twocolumntrue + \fi + \fi + \if@twocolumn + \LT@err{longtable not in 1-column mode}\@ehc + \fi + \begingroup + \@ifnextchar[\LT@array{\LT@array[x]}} +\def\LT@array[#1]#2{% + \refstepcounter{table}\stepcounter{LT@tables}% + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@tabarray\@tabarray + \let\LT@@hl\hline + \def\@tabarray{% + \let\hline\LT@@hl + \LT@@tabarray}% + \let\\\LT@tabularcr\let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \xdef\LT@bchunk{% + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty + \everycr{}\lineskip\z@\baselineskip\z@ + \LT@bchunk} +\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}} +\def\LT@start{% + \let\LT@start\endgraf + \endgraf\penalty\z@\vskip\LTpre + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \ht\LT@foot + \dimen@ii\vfuzz + \vfuzz\maxdimen + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \vfuzz\dimen@ii + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@\vfil\break\fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak + \output{\LT@output}} +\def\endlongtable{% + \crcr + \noalign{% + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@save@row + \else + \LT@warn{Column \@width s have changed\MessageBreak + in table \thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \endgroup + \global\@mparbottom\z@ + \pagegoal\vsize + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi} +\def\LT@nofcols#1&{% + \futurelet\@let@token\LT@n@fcols} +\def\LT@n@fcols{% + \advance\LT@cols\@ne + \ifx\@let@token\LT@nofcols + \expandafter\@gobble + \else + \expandafter\LT@nofcols + \fi} +\def\LT@tabularcr{% + \relax\iffalse{\fi\ifnum0=`}\fi + \@ifstar + {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr + \LT@t@bularcr}% + {\LT@t@bularcr}} +\let\LT@crcr\crcr +\let\LT@setprevdepth\relax +\def\LT@t@bularcr{% + \global\advance\LT@rows\@ne + \ifnum\LT@rows=\LTchunksize + \gdef\LT@setprevdepth{% + \prevdepth\z@\global + \global\let\LT@setprevdepth\relax}% + \expandafter\LT@xtabularcr + \else + \ifnum0=`{}\fi + \expandafter\LT@LL@FM@cr + \fi} +\def\LT@xtabularcr{% + \@ifnextchar[\LT@argtabularcr\LT@ntabularcr} +\def\LT@ntabularcr{% + \ifnum0=`{}\fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@argtabularcr[#1]{% + \ifnum0=`{}\fi + \ifdim #1>\z@ + \unskip\@xargarraycr{#1}% + \else + \@yargarraycr{#1}% + \fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@echunk{% + \crcr\LT@save@row\cr\egroup + \global\setbox\@ne\lastbox + \unskip + \egroup} +\def\LT@entry#1#2{% + \ifhmode\@firstofone{&}\fi\omit + \ifnum#1=\c@LT@chunks + \else + \kern#2\relax + \fi} +\def\LT@entry@chop#1#2{% + \noexpand\LT@entry + {\ifnum#1>\c@LT@chunks + 1}{0pt% + \else + #1}{#2% + \fi}} +\def\LT@entry@write{% + \noexpand\LT@entry^^J% + \@spaces} +\def\LT@kill{% + \LT@echunk + \LT@get@widths + \expandafter\LT@rebox\LT@bchunk} +\def\LT@rebox#1\bgroup{% + #1\bgroup + \unvbox\z@ + \unskip + \setbox\z@\lastbox} +\def\LT@blank@row{% + \xdef\LT@save@row{\expandafter\LT@build@blank + \romannumeral\number\LT@cols 001 }} +\def\LT@build@blank#1{% + \if#1m% + \noexpand\LT@entry{1}{0pt}% + \expandafter\LT@build@blank + \fi} +\def\LT@make@row{% + \global\expandafter\let\expandafter\LT@save@row + \csname LT@\romannumeral\c@LT@tables\endcsname + \ifx\LT@save@row\relax + \LT@blank@row + \else + {\let\LT@entry\or + \if!% + \ifcase\expandafter\expandafter\expandafter\LT@cols + \expandafter\@gobble\LT@save@row + \or + \else + \relax + \fi + !% + \else + \aftergroup\LT@blank@row + \fi}% + \fi} +\let\setlongtables\relax +\def\LT@get@widths{% + \setbox\tw@\hbox{% + \unhbox\@ne + \let\LT@old@row\LT@save@row + \global\let\LT@save@row\@empty + \count@\LT@cols + \loop + \unskip + \setbox\tw@\lastbox + \ifhbox\tw@ + \LT@def@row + \advance\count@\m@ne + \repeat}% + \ifx\LT@@save@row\@undefined + \let\LT@@save@row\LT@save@row + \fi} +\def\LT@def@row{% + \let\LT@entry\or + \edef\@tempa{% + \ifcase\expandafter\count@\LT@old@row + \else + {1}{0pt}% + \fi}% + \let\LT@entry\relax + \xdef\LT@save@row{% + \LT@entry + \expandafter\LT@max@sel\@tempa + \LT@save@row}} +\def\LT@max@sel#1#2{% + {\ifdim#2=\wd\tw@ + #1% + \else + \number\c@LT@chunks + \fi}% + {\the\wd\tw@}} +\def\LT@hline{% + \noalign{\ifnum0=`}\fi + \penalty\@M + \futurelet\@let@token\LT@@hline} +\def\LT@@hline{% + \ifx\@let@token\hline + \global\let\@gtempa\@gobble + \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}% + \else + \global\let\@gtempa\@empty + \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\LT@sep}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\penalty\@M}% + \@gtempa} +\def\LT@caption{% + \noalign\bgroup + \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n} +\def\LT@c@ption#1[#2]#3{% + \LT@makecaption#1\fnum@table{#3}% + \def\@tempa{#2}% + \ifx\@tempa\@empty\else + {\let\\\space + \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}% + \fi} +\def\LT@capti@n{% + \@ifstar + {\egroup\LT@c@ption\@gobble[]}% + {\egroup\@xdblarg{\LT@c@ption\@firstofone}}} +\def\LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \sbox\@tempboxa{#1{#2: }#3}% + \ifdim\wd\@tempboxa>\hsize + #1{#2: }#3% + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}}} +\def\LT@output{% + \ifnum\outputpenalty <-\@Mi + \ifnum\outputpenalty > -\LT@end@pen + \LT@err{floats and marginpars not allowed in a longtable}\@ehc + \else + \setbox\z@\vbox{\unvbox\@cclv}% + \ifdim \ht\LT@lastfoot>\ht\LT@foot + \dimen@\pagegoal + \advance\dimen@-\ht\LT@lastfoot + \ifdim\dimen@<\ht\z@ + \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% + \@makecol + \@outputpage + \setbox\z@\vbox{\box\LT@head}% + \fi + \fi + \global\@colroom\@colht + \global\vsize\@colht + \vbox + {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% + \fi + \else + \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% + \@makecol + \@outputpage + \global\vsize\@colroom + \copy\LT@head\nobreak + \fi} +\def\LT@end@hd@ft#1{% + \LT@echunk + \ifx\LT@start\endgraf + \LT@err + {Longtable head or foot not at start of table}% + {Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths + \LT@bchunk} +\def\endfirsthead{\LT@end@hd@ft\LT@firsthead} +\def\endhead{\LT@end@hd@ft\LT@head} +\def\endfoot{\LT@end@hd@ft\LT@foot} +\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot} +\def\LT@startpbox#1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \vrule \@height \ht\@arstrutbox \@width \z@} +\def\LT@endpbox{% + \@finalstrut\@arstrutbox + \egroup + \the\LT@p@ftn + \global\LT@p@ftn{}% + \hfil} +\def\LT@p@ftntext#1{% + \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}% + \global\LT@p@ftn\expandafter{\@tempa{#1}}}% + +\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen} +\endinput +%% +%% End of file `longtable.sty'. diff --git a/doc/latex/md__r_e_a_d_m_e.tex b/doc/latex/md__r_e_a_d_m_e.tex new file mode 100644 index 0000000..d0a36bd --- /dev/null +++ b/doc/latex/md__r_e_a_d_m_e.tex @@ -0,0 +1,27 @@ +A Python reimplementation of odometry and mapping component of Radar\+SLAM by Hong et al. \mbox{[}1,2\mbox{]}. + +Final Paper\+: \href{https://github.com/Samleo8/RadarSLAMPy/blob/master/raw-roam.pdf}{\texttt{ {\bfseries{RAW-\/\+ROAM\+: An Open-\/\+Source Implementation of Adverse Weather Radar\+SLAM}}}}\hypertarget{md__r_e_a_d_m_e_autotoc_md1}{}\doxysection{Results (\+Odometry)}\label{md__r_e_a_d_m_e_autotoc_md1} +With Motion Compensation + + + +Without Motion Compensation\+: + +\hypertarget{md__r_e_a_d_m_e_autotoc_md2}{}\doxysection{Running Code}\label{md__r_e_a_d_m_e_autotoc_md2} +Requires Python. Tested on Python \texorpdfstring{$>$}{>}= 3.\+9. + + +\begin{DoxyCode}{0} +\DoxyCodeLine{pip install -\/r requirements.txt} +\DoxyCodeLine{python3 RawROAMSystem.py [START\_FRAME\_IND [END\_FRAME\_IND]]} + +\end{DoxyCode} +\hypertarget{md__r_e_a_d_m_e_autotoc_md3}{}\doxysubsection{Radar Sequences}\label{md__r_e_a_d_m_e_autotoc_md3} +Radar sequences can be obtained from \href{https://oxford-robotics-institute.github.io/radar-robotcar-dataset/datasets}{\texttt{ Oxford Radar Robot\+Car Dataset}} and should be placed in the {\ttfamily ./data} folder. The folder organization listed as {\ttfamily full\+\_\+seq\+\_\+1} is an example of how the directory looks like, and is taken from the \href{https://oxford-robotics-institute.github.io/radar-robotcar-dataset/datasets/2019-01-10-11-46-21-radar-oxford-10k}{\texttt{ {\ttfamily 10-\/11-\/46-\/21} sequence}}.\hypertarget{md__r_e_a_d_m_e_autotoc_md4}{}\doxysection{Documentation}\label{md__r_e_a_d_m_e_autotoc_md4} +See the \href{./doc/html/index.html}{\texttt{ docs}}\hypertarget{md__r_e_a_d_m_e_autotoc_md5}{}\doxysection{Relevant Papers}\label{md__r_e_a_d_m_e_autotoc_md5} + +\begin{DoxyEnumerate} +\item \href{https://arxiv.org/abs/2104.05347}{\texttt{ Radar\+SLAM (2021)}} +\item \href{https://arxiv.org/abs/2005.02198}{\texttt{ Radar\+SLAM (2020)}} +\item \href{https://ieeexplore.ieee.org/document/9197231}{\texttt{ Pha\+RaO}} +\end{DoxyEnumerate} \ No newline at end of file diff --git a/doc/latex/namespace_a_n_m_s.tex b/doc/latex/namespace_a_n_m_s.tex new file mode 100644 index 0000000..93407bd --- /dev/null +++ b/doc/latex/namespace_a_n_m_s.tex @@ -0,0 +1,16 @@ +\hypertarget{namespace_a_n_m_s}{}\doxysection{ANMS Namespace Reference} +\label{namespace_a_n_m_s}\index{ANMS@{ANMS}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{namespace_a_n_m_s_ae9e9d70287f00bb9b6fe316b03d12325}{ssc}} (keypoints, num\+\_\+ret\+\_\+points, tolerance, cols, rows) +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespace_a_n_m_s_ae9e9d70287f00bb9b6fe316b03d12325}\label{namespace_a_n_m_s_ae9e9d70287f00bb9b6fe316b03d12325}} +\index{ANMS@{ANMS}!ssc@{ssc}} +\index{ssc@{ssc}!ANMS@{ANMS}} +\doxysubsubsection{\texorpdfstring{ssc()}{ssc()}} +{\footnotesize\ttfamily def ANMS.\+ssc (\begin{DoxyParamCaption}\item[{}]{keypoints, }\item[{}]{num\+\_\+ret\+\_\+points, }\item[{}]{tolerance, }\item[{}]{cols, }\item[{}]{rows }\end{DoxyParamCaption})} + diff --git a/doc/latex/namespace_coord.tex b/doc/latex/namespace_coord.tex new file mode 100644 index 0000000..1e48662 --- /dev/null +++ b/doc/latex/namespace_coord.tex @@ -0,0 +1,9 @@ +\hypertarget{namespace_coord}{}\doxysection{Coord Namespace Reference} +\label{namespace_coord}\index{Coord@{Coord}} +\doxysubsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{class_coord_1_1_cart_coord}{Cart\+Coord}} +\item +class \mbox{\hyperlink{class_coord_1_1_polar_coord}{Polar\+Coord}} +\end{DoxyCompactItemize} diff --git a/doc/latex/namespace_f_m_t.tex b/doc/latex/namespace_f_m_t.tex new file mode 100644 index 0000000..e67c724 --- /dev/null +++ b/doc/latex/namespace_f_m_t.tex @@ -0,0 +1,260 @@ +\hypertarget{namespace_f_m_t}{}\doxysection{FMT Namespace Reference} +\label{namespace_f_m_t}\index{FMT@{FMT}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +tuple\mbox{[}tuple\mbox{[}float, float\mbox{]}, float\mbox{]} \mbox{\hyperlink{namespace_f_m_t_ae81fb59f14932ae340751f9684bd6d8b}{get\+Translation\+Using\+Phase\+Correlation}} (np.\+ndarray src\+Img, np.\+ndarray target\+Img) +\item +tuple\mbox{[}float, float, float\mbox{]} \mbox{\hyperlink{namespace_f_m_t_a1dc91b97654961781d4c92b4e027b85d}{get\+Rotation\+Using\+FMT}} (np.\+ndarray src\+Polar\+Img, np.\+ndarray target\+Polar\+Img, int downsample\+Factor=\mbox{\hyperlink{namespace_f_m_t_ac5da2cfe183e7b0e3a179c878393cbc8}{FMT\+\_\+\+DOWNSAMPLE\+\_\+\+FACTOR}}, max\+Range\+ClipM=\mbox{\hyperlink{namespace_f_m_t_a4122483525ff4c7724276defa28c835d}{FMT\+\_\+\+RANGE\+\_\+\+CLIP\+\_\+M}}) +\item +def \mbox{\hyperlink{namespace_f_m_t_ab27cd6416890c30979ca7e7a5c3ccdbc}{rotate\+Img}} (image, angle\+\_\+degrees) +\item +def \mbox{\hyperlink{namespace_f_m_t_a082f20cace72b4f16273efde8c24a34a}{plot\+Cart\+Polar}} (\mbox{\hyperlink{namespace_f_m_t_a822a7e1a3f096654545785622beed02c}{prev\+Img\+Polar}}, \mbox{\hyperlink{namespace_f_m_t_a626acce33f1a6fe3200798b2ad4d1187}{curr\+Img\+Polar}}, \mbox{\hyperlink{namespace_f_m_t_a18deea10409123f5ce6e4f03579a5cf8}{prev\+Img\+Cart}}, \mbox{\hyperlink{namespace_f_m_t_a74c00f943164f2ca306c340a6cb1f263}{curr\+Img\+Cart}}) +\item +def \mbox{\hyperlink{namespace_f_m_t_a9d81f4081733eda3b7e60455434818c0}{plot\+Cart\+Polar\+With\+Rotation}} (\mbox{\hyperlink{namespace_f_m_t_a18deea10409123f5ce6e4f03579a5cf8}{prev\+Img\+Cart}}, \mbox{\hyperlink{namespace_f_m_t_a74c00f943164f2ca306c340a6cb1f263}{curr\+Img\+Cart}}, \mbox{\hyperlink{namespace_f_m_t_a596c19fb1995cd525505549d59373972}{rot\+Rad}}) +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{namespace_f_m_t_ac5da2cfe183e7b0e3a179c878393cbc8}{FMT\+\_\+\+DOWNSAMPLE\+\_\+\+FACTOR}} = 10 +\item +float \mbox{\hyperlink{namespace_f_m_t_a4122483525ff4c7724276defa28c835d}{FMT\+\_\+\+RANGE\+\_\+\+CLIP\+\_\+M}} = 87.\+5 +\item +int \mbox{\hyperlink{namespace_f_m_t_ab4c8b6b49cd9b038d45a79c64377946a}{sequence\+Name}} = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{} +\item +\mbox{\hyperlink{namespace_f_m_t_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, sequence\+Name, \char`\"{}radar\char`\"{}) +\item +\mbox{\hyperlink{namespace_f_m_t_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, sequence\+Name, \char`\"{}radar.\+timestamps\char`\"{}) +\item +int \mbox{\hyperlink{namespace_f_m_t_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}{start\+Seq\+Ind}} = int(sys.\+argv\mbox{[}2\mbox{]}) if len(sys.\+argv) $>$ 2 else 0 +\item +int \mbox{\hyperlink{namespace_f_m_t_a58496a66cbc7a6dfb37042c7e7731cdf}{end\+Seq\+Ind}} = int(sys.\+argv\mbox{[}3\mbox{]}) if len(sys.\+argv) $>$ 3 else -\/1 +\item +\mbox{\hyperlink{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}} = get\+Radar\+Img\+Paths(\mbox{\hyperlink{namespace_f_m_t_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespace_f_m_t_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}}) +\item +\mbox{\hyperlink{namespace_f_m_t_a8ef2335bbb2c7c07c8e2b35959b03c52}{sequence\+Size}} = len(\mbox{\hyperlink{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}) +\item +\mbox{\hyperlink{namespace_f_m_t_a822a7e1a3f096654545785622beed02c}{prev\+Img\+Polar}} = get\+Polar\+Image\+From\+Img\+Paths(\mbox{\hyperlink{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, \mbox{\hyperlink{namespace_f_m_t_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}{start\+Seq\+Ind}}) +\item +\mbox{\hyperlink{namespace_f_m_t_a18deea10409123f5ce6e4f03579a5cf8}{prev\+Img\+Cart}} +\item +\mbox{\hyperlink{namespace_f_m_t_a3ab4a737af4a26ba845d42353015fa10}{img\+Save\+Path}} +\item +\mbox{\hyperlink{namespace_f_m_t_a0dd30d2c854453a5a754e2a81c971651}{exist\+\_\+ok}} +\item +int \mbox{\hyperlink{namespace_f_m_t_adfe857b14dacc3123d5c36a0fa44f0b0}{step\+Size}} = 1 +\item +\mbox{\hyperlink{namespace_f_m_t_a626acce33f1a6fe3200798b2ad4d1187}{curr\+Img\+Polar}} = get\+Polar\+Image\+From\+Img\+Paths(\mbox{\hyperlink{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, seq\+Ind) +\item +\mbox{\hyperlink{namespace_f_m_t_a74c00f943164f2ca306c340a6cb1f263}{curr\+Img\+Cart}} +\item +\mbox{\hyperlink{namespace_f_m_t_a596c19fb1995cd525505549d59373972}{rot\+Rad}} +\item +\mbox{\hyperlink{namespace_f_m_t_acec6d8ad52a28972fa74e071c1a63b6a}{scale}} +\item +\mbox{\hyperlink{namespace_f_m_t_a8ab7bcb35ce5bba05608c72da6b4a0d3}{response}} +\item +\mbox{\hyperlink{namespace_f_m_t_a36e10122b3a979f9d319b0f86727b1be}{img\+Save\+Path\+Ind}} = os.\+path.\+join(\mbox{\hyperlink{namespace_f_m_t_a3ab4a737af4a26ba845d42353015fa10}{img\+Save\+Path}}, f\char`\"{}\{seq\+Ind\+:04d\}\+\_\+5.\+jpg\char`\"{}) +\item +bool \mbox{\hyperlink{namespace_f_m_t_ac54d9701c1a01225f5636eeb571f4e1a}{REMOVE\+\_\+\+OLD\+\_\+\+RESULTS}} = False +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespace_f_m_t_a1dc91b97654961781d4c92b4e027b85d}\label{namespace_f_m_t_a1dc91b97654961781d4c92b4e027b85d}} +\index{FMT@{FMT}!getRotationUsingFMT@{getRotationUsingFMT}} +\index{getRotationUsingFMT@{getRotationUsingFMT}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{getRotationUsingFMT()}{getRotationUsingFMT()}} +{\footnotesize\ttfamily tuple\mbox{[}float, float, float\mbox{]} FMT.\+get\+Rotation\+Using\+FMT (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{src\+Polar\+Img, }\item[{np.\+ndarray}]{target\+Polar\+Img, }\item[{int }]{downsample\+Factor = {\ttfamily \mbox{\hyperlink{namespace_f_m_t_ac5da2cfe183e7b0e3a179c878393cbc8}{FMT\+\_\+\+DOWNSAMPLE\+\_\+\+FACTOR}}}, }\item[{}]{max\+Range\+ClipM = {\ttfamily \mbox{\hyperlink{namespace_f_m_t_a4122483525ff4c7724276defa28c835d}{FMT\+\_\+\+RANGE\+\_\+\+CLIP\+\_\+M}}} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Get rotation using the Fourier-Mellin Transform +@note We attempt to downsample in the range direction. + Since we are already in the polar domain, we just need to convert to a logpolar image +apply phase correlation to get the rotation (which is a "\Delta Y" translation) + +@param[in] srcPolarImg Source image in polar (not log-polar) form +@param[in] targetPolarImg Target image in polar (not log-polar) form +@param[in] How much to further downsample in + +@return angleRad Angle in radians, where `R(angleRad) @ src = target` +@return scaling Scaling factor +@return response Response value (indicates confidence) +\end{DoxyVerb} + \mbox{\Hypertarget{namespace_f_m_t_ae81fb59f14932ae340751f9684bd6d8b}\label{namespace_f_m_t_ae81fb59f14932ae340751f9684bd6d8b}} +\index{FMT@{FMT}!getTranslationUsingPhaseCorrelation@{getTranslationUsingPhaseCorrelation}} +\index{getTranslationUsingPhaseCorrelation@{getTranslationUsingPhaseCorrelation}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{getTranslationUsingPhaseCorrelation()}{getTranslationUsingPhaseCorrelation()}} +{\footnotesize\ttfamily tuple\mbox{[}tuple\mbox{[}float, float\mbox{]}, float\mbox{]} FMT.\+get\+Translation\+Using\+Phase\+Correlation (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{src\+Img, }\item[{np.\+ndarray}]{target\+Img }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Using phase correlation, find the translation delta between 2 images +@param[in] srcImg Source image +@param[in] targetImg Target image + +@return deltas Delta sub-pixel translation +@return response Response of phase correlation window (indicating confidence) +\end{DoxyVerb} + \mbox{\Hypertarget{namespace_f_m_t_a082f20cace72b4f16273efde8c24a34a}\label{namespace_f_m_t_a082f20cace72b4f16273efde8c24a34a}} +\index{FMT@{FMT}!plotCartPolar@{plotCartPolar}} +\index{plotCartPolar@{plotCartPolar}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{plotCartPolar()}{plotCartPolar()}} +{\footnotesize\ttfamily def FMT.\+plot\+Cart\+Polar (\begin{DoxyParamCaption}\item[{}]{prev\+Img\+Polar, }\item[{}]{curr\+Img\+Polar, }\item[{}]{prev\+Img\+Cart, }\item[{}]{curr\+Img\+Cart }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespace_f_m_t_a9d81f4081733eda3b7e60455434818c0}\label{namespace_f_m_t_a9d81f4081733eda3b7e60455434818c0}} +\index{FMT@{FMT}!plotCartPolarWithRotation@{plotCartPolarWithRotation}} +\index{plotCartPolarWithRotation@{plotCartPolarWithRotation}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{plotCartPolarWithRotation()}{plotCartPolarWithRotation()}} +{\footnotesize\ttfamily def FMT.\+plot\+Cart\+Polar\+With\+Rotation (\begin{DoxyParamCaption}\item[{}]{prev\+Img\+Cart, }\item[{}]{curr\+Img\+Cart, }\item[{}]{rot\+Rad }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespace_f_m_t_ab27cd6416890c30979ca7e7a5c3ccdbc}\label{namespace_f_m_t_ab27cd6416890c30979ca7e7a5c3ccdbc}} +\index{FMT@{FMT}!rotateImg@{rotateImg}} +\index{rotateImg@{rotateImg}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{rotateImg()}{rotateImg()}} +{\footnotesize\ttfamily def FMT.\+rotate\+Img (\begin{DoxyParamCaption}\item[{}]{image, }\item[{}]{angle\+\_\+degrees }\end{DoxyParamCaption})} + + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespace_f_m_t_a74c00f943164f2ca306c340a6cb1f263}\label{namespace_f_m_t_a74c00f943164f2ca306c340a6cb1f263}} +\index{FMT@{FMT}!currImgCart@{currImgCart}} +\index{currImgCart@{currImgCart}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{currImgCart}{currImgCart}} +{\footnotesize\ttfamily curr\+Img\+Cart} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = convertPolarImageToCartesian(currImgPolar,} +\DoxyCodeLine{2 downsampleFactor=20)} + +\end{DoxyCode} +\mbox{\Hypertarget{namespace_f_m_t_a626acce33f1a6fe3200798b2ad4d1187}\label{namespace_f_m_t_a626acce33f1a6fe3200798b2ad4d1187}} +\index{FMT@{FMT}!currImgPolar@{currImgPolar}} +\index{currImgPolar@{currImgPolar}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{currImgPolar}{currImgPolar}} +{\footnotesize\ttfamily curr\+Img\+Polar = get\+Polar\+Image\+From\+Img\+Paths(\mbox{\hyperlink{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, seq\+Ind)} + +\mbox{\Hypertarget{namespace_f_m_t_abef58ec544fb87b0bc3d6657c3824bfc}\label{namespace_f_m_t_abef58ec544fb87b0bc3d6657c3824bfc}} +\index{FMT@{FMT}!dataPath@{dataPath}} +\index{dataPath@{dataPath}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{dataPath}{dataPath}} +{\footnotesize\ttfamily data\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, sequence\+Name, \char`\"{}radar\char`\"{})} + +\mbox{\Hypertarget{namespace_f_m_t_a58496a66cbc7a6dfb37042c7e7731cdf}\label{namespace_f_m_t_a58496a66cbc7a6dfb37042c7e7731cdf}} +\index{FMT@{FMT}!endSeqInd@{endSeqInd}} +\index{endSeqInd@{endSeqInd}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{endSeqInd}{endSeqInd}} +{\footnotesize\ttfamily int end\+Seq\+Ind = int(sys.\+argv\mbox{[}3\mbox{]}) if len(sys.\+argv) $>$ 3 else -\/1} + +\mbox{\Hypertarget{namespace_f_m_t_a0dd30d2c854453a5a754e2a81c971651}\label{namespace_f_m_t_a0dd30d2c854453a5a754e2a81c971651}} +\index{FMT@{FMT}!exist\_ok@{exist\_ok}} +\index{exist\_ok@{exist\_ok}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{exist\_ok}{exist\_ok}} +{\footnotesize\ttfamily exist\+\_\+ok} + +\mbox{\Hypertarget{namespace_f_m_t_ac5da2cfe183e7b0e3a179c878393cbc8}\label{namespace_f_m_t_ac5da2cfe183e7b0e3a179c878393cbc8}} +\index{FMT@{FMT}!FMT\_DOWNSAMPLE\_FACTOR@{FMT\_DOWNSAMPLE\_FACTOR}} +\index{FMT\_DOWNSAMPLE\_FACTOR@{FMT\_DOWNSAMPLE\_FACTOR}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{FMT\_DOWNSAMPLE\_FACTOR}{FMT\_DOWNSAMPLE\_FACTOR}} +{\footnotesize\ttfamily int FMT\+\_\+\+DOWNSAMPLE\+\_\+\+FACTOR = 10} + +\mbox{\Hypertarget{namespace_f_m_t_a4122483525ff4c7724276defa28c835d}\label{namespace_f_m_t_a4122483525ff4c7724276defa28c835d}} +\index{FMT@{FMT}!FMT\_RANGE\_CLIP\_M@{FMT\_RANGE\_CLIP\_M}} +\index{FMT\_RANGE\_CLIP\_M@{FMT\_RANGE\_CLIP\_M}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{FMT\_RANGE\_CLIP\_M}{FMT\_RANGE\_CLIP\_M}} +{\footnotesize\ttfamily float FMT\+\_\+\+RANGE\+\_\+\+CLIP\+\_\+M = 87.\+5} + +\mbox{\Hypertarget{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}\label{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}} +\index{FMT@{FMT}!imgPathArr@{imgPathArr}} +\index{imgPathArr@{imgPathArr}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{imgPathArr}{imgPathArr}} +{\footnotesize\ttfamily img\+Path\+Arr = get\+Radar\+Img\+Paths(\mbox{\hyperlink{namespace_f_m_t_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespace_f_m_t_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}})} + +\mbox{\Hypertarget{namespace_f_m_t_a3ab4a737af4a26ba845d42353015fa10}\label{namespace_f_m_t_a3ab4a737af4a26ba845d42353015fa10}} +\index{FMT@{FMT}!imgSavePath@{imgSavePath}} +\index{imgSavePath@{imgSavePath}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{imgSavePath}{imgSavePath}} +{\footnotesize\ttfamily img\+Save\+Path} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = os.path.join(\textcolor{stringliteral}{"{}."{}}, \textcolor{stringliteral}{"{}img"{}}, \textcolor{stringliteral}{"{}fmt"{}},} +\DoxyCodeLine{2 sequenceName).strip(os.path.sep)} + +\end{DoxyCode} +\mbox{\Hypertarget{namespace_f_m_t_a36e10122b3a979f9d319b0f86727b1be}\label{namespace_f_m_t_a36e10122b3a979f9d319b0f86727b1be}} +\index{FMT@{FMT}!imgSavePathInd@{imgSavePathInd}} +\index{imgSavePathInd@{imgSavePathInd}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{imgSavePathInd}{imgSavePathInd}} +{\footnotesize\ttfamily img\+Save\+Path\+Ind = os.\+path.\+join(\mbox{\hyperlink{namespace_f_m_t_a3ab4a737af4a26ba845d42353015fa10}{img\+Save\+Path}}, f\char`\"{}\{seq\+Ind\+:04d\}\+\_\+5.\+jpg\char`\"{})} + +\mbox{\Hypertarget{namespace_f_m_t_a18deea10409123f5ce6e4f03579a5cf8}\label{namespace_f_m_t_a18deea10409123f5ce6e4f03579a5cf8}} +\index{FMT@{FMT}!prevImgCart@{prevImgCart}} +\index{prevImgCart@{prevImgCart}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{prevImgCart}{prevImgCart}} +{\footnotesize\ttfamily prev\+Img\+Cart} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = convertPolarImageToCartesian(prevImgPolar,} +\DoxyCodeLine{2 downsampleFactor=20)} + +\end{DoxyCode} +\mbox{\Hypertarget{namespace_f_m_t_a822a7e1a3f096654545785622beed02c}\label{namespace_f_m_t_a822a7e1a3f096654545785622beed02c}} +\index{FMT@{FMT}!prevImgPolar@{prevImgPolar}} +\index{prevImgPolar@{prevImgPolar}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{prevImgPolar}{prevImgPolar}} +{\footnotesize\ttfamily prev\+Img\+Polar = get\+Polar\+Image\+From\+Img\+Paths(\mbox{\hyperlink{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, \mbox{\hyperlink{namespace_f_m_t_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}{start\+Seq\+Ind}})} + +\mbox{\Hypertarget{namespace_f_m_t_ac54d9701c1a01225f5636eeb571f4e1a}\label{namespace_f_m_t_ac54d9701c1a01225f5636eeb571f4e1a}} +\index{FMT@{FMT}!REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}} +\index{REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{REMOVE\_OLD\_RESULTS}{REMOVE\_OLD\_RESULTS}} +{\footnotesize\ttfamily bool REMOVE\+\_\+\+OLD\+\_\+\+RESULTS = False} + +\mbox{\Hypertarget{namespace_f_m_t_a8ab7bcb35ce5bba05608c72da6b4a0d3}\label{namespace_f_m_t_a8ab7bcb35ce5bba05608c72da6b4a0d3}} +\index{FMT@{FMT}!response@{response}} +\index{response@{response}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{response}{response}} +{\footnotesize\ttfamily response} + +\mbox{\Hypertarget{namespace_f_m_t_a596c19fb1995cd525505549d59373972}\label{namespace_f_m_t_a596c19fb1995cd525505549d59373972}} +\index{FMT@{FMT}!rotRad@{rotRad}} +\index{rotRad@{rotRad}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{rotRad}{rotRad}} +{\footnotesize\ttfamily rot\+Rad} + +\mbox{\Hypertarget{namespace_f_m_t_acec6d8ad52a28972fa74e071c1a63b6a}\label{namespace_f_m_t_acec6d8ad52a28972fa74e071c1a63b6a}} +\index{FMT@{FMT}!scale@{scale}} +\index{scale@{scale}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{scale}{scale}} +{\footnotesize\ttfamily scale} + +\mbox{\Hypertarget{namespace_f_m_t_ab4c8b6b49cd9b038d45a79c64377946a}\label{namespace_f_m_t_ab4c8b6b49cd9b038d45a79c64377946a}} +\index{FMT@{FMT}!sequenceName@{sequenceName}} +\index{sequenceName@{sequenceName}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{sequenceName}{sequenceName}} +{\footnotesize\ttfamily int sequence\+Name = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{}} + +\mbox{\Hypertarget{namespace_f_m_t_a8ef2335bbb2c7c07c8e2b35959b03c52}\label{namespace_f_m_t_a8ef2335bbb2c7c07c8e2b35959b03c52}} +\index{FMT@{FMT}!sequenceSize@{sequenceSize}} +\index{sequenceSize@{sequenceSize}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{sequenceSize}{sequenceSize}} +{\footnotesize\ttfamily sequence\+Size = len(\mbox{\hyperlink{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}})} + +\mbox{\Hypertarget{namespace_f_m_t_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}\label{namespace_f_m_t_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}} +\index{FMT@{FMT}!startSeqInd@{startSeqInd}} +\index{startSeqInd@{startSeqInd}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{startSeqInd}{startSeqInd}} +{\footnotesize\ttfamily int start\+Seq\+Ind = int(sys.\+argv\mbox{[}2\mbox{]}) if len(sys.\+argv) $>$ 2 else 0} + +\mbox{\Hypertarget{namespace_f_m_t_adfe857b14dacc3123d5c36a0fa44f0b0}\label{namespace_f_m_t_adfe857b14dacc3123d5c36a0fa44f0b0}} +\index{FMT@{FMT}!stepSize@{stepSize}} +\index{stepSize@{stepSize}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{stepSize}{stepSize}} +{\footnotesize\ttfamily int step\+Size = 1} + +\mbox{\Hypertarget{namespace_f_m_t_ac559b123c3618ef31794f03fb8742e8e}\label{namespace_f_m_t_ac559b123c3618ef31794f03fb8742e8e}} +\index{FMT@{FMT}!timestampPath@{timestampPath}} +\index{timestampPath@{timestampPath}!FMT@{FMT}} +\doxysubsubsection{\texorpdfstring{timestampPath}{timestampPath}} +{\footnotesize\ttfamily timestamp\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, sequence\+Name, \char`\"{}radar.\+timestamps\char`\"{})} + diff --git a/doc/latex/namespace_mapping.tex b/doc/latex/namespace_mapping.tex new file mode 100644 index 0000000..840c827 --- /dev/null +++ b/doc/latex/namespace_mapping.tex @@ -0,0 +1,47 @@ +\hypertarget{namespace_mapping}{}\doxysection{Mapping Namespace Reference} +\label{namespace_mapping}\index{Mapping@{Mapping}} +\doxysubsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{class_mapping_1_1_keyframe}{Keyframe}} +\item +class \mbox{\hyperlink{class_mapping_1_1_map}{Map}} +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +float \mbox{\hyperlink{namespace_mapping_aa74fdf8323f8821aeea561922c6f32cf}{ROT\+\_\+\+THRESHOLD}} = 0.\+2 +\item +float \mbox{\hyperlink{namespace_mapping_ab8c306442c12aedb83f7c0d06210e9f2}{TRANS\+\_\+\+THRESHOLD}} = 2.\+0 +\item +float \mbox{\hyperlink{namespace_mapping_abe3c8fb0a99c9c14b8d8f9c95d1531b4}{TRANS\+\_\+\+THRESHOLD\+\_\+\+SQ}} = \mbox{\hyperlink{namespace_mapping_ab8c306442c12aedb83f7c0d06210e9f2}{TRANS\+\_\+\+THRESHOLD}} $\ast$ \mbox{\hyperlink{namespace_mapping_ab8c306442c12aedb83f7c0d06210e9f2}{TRANS\+\_\+\+THRESHOLD}} +\item +\mbox{\hyperlink{namespace_mapping_a9d912e1ca0fa7da394e152167652474f}{RADAR\+\_\+\+CART\+\_\+\+CENTER}} = None +\end{DoxyCompactItemize} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespace_mapping_a9d912e1ca0fa7da394e152167652474f}\label{namespace_mapping_a9d912e1ca0fa7da394e152167652474f}} +\index{Mapping@{Mapping}!RADAR\_CART\_CENTER@{RADAR\_CART\_CENTER}} +\index{RADAR\_CART\_CENTER@{RADAR\_CART\_CENTER}!Mapping@{Mapping}} +\doxysubsubsection{\texorpdfstring{RADAR\_CART\_CENTER}{RADAR\_CART\_CENTER}} +{\footnotesize\ttfamily RADAR\+\_\+\+CART\+\_\+\+CENTER = None} + +\mbox{\Hypertarget{namespace_mapping_aa74fdf8323f8821aeea561922c6f32cf}\label{namespace_mapping_aa74fdf8323f8821aeea561922c6f32cf}} +\index{Mapping@{Mapping}!ROT\_THRESHOLD@{ROT\_THRESHOLD}} +\index{ROT\_THRESHOLD@{ROT\_THRESHOLD}!Mapping@{Mapping}} +\doxysubsubsection{\texorpdfstring{ROT\_THRESHOLD}{ROT\_THRESHOLD}} +{\footnotesize\ttfamily float ROT\+\_\+\+THRESHOLD = 0.\+2} + +\mbox{\Hypertarget{namespace_mapping_ab8c306442c12aedb83f7c0d06210e9f2}\label{namespace_mapping_ab8c306442c12aedb83f7c0d06210e9f2}} +\index{Mapping@{Mapping}!TRANS\_THRESHOLD@{TRANS\_THRESHOLD}} +\index{TRANS\_THRESHOLD@{TRANS\_THRESHOLD}!Mapping@{Mapping}} +\doxysubsubsection{\texorpdfstring{TRANS\_THRESHOLD}{TRANS\_THRESHOLD}} +{\footnotesize\ttfamily float TRANS\+\_\+\+THRESHOLD = 2.\+0} + +\mbox{\Hypertarget{namespace_mapping_abe3c8fb0a99c9c14b8d8f9c95d1531b4}\label{namespace_mapping_abe3c8fb0a99c9c14b8d8f9c95d1531b4}} +\index{Mapping@{Mapping}!TRANS\_THRESHOLD\_SQ@{TRANS\_THRESHOLD\_SQ}} +\index{TRANS\_THRESHOLD\_SQ@{TRANS\_THRESHOLD\_SQ}!Mapping@{Mapping}} +\doxysubsubsection{\texorpdfstring{TRANS\_THRESHOLD\_SQ}{TRANS\_THRESHOLD\_SQ}} +{\footnotesize\ttfamily float TRANS\+\_\+\+THRESHOLD\+\_\+\+SQ = \mbox{\hyperlink{namespace_mapping_ab8c306442c12aedb83f7c0d06210e9f2}{TRANS\+\_\+\+THRESHOLD}} $\ast$ \mbox{\hyperlink{namespace_mapping_ab8c306442c12aedb83f7c0d06210e9f2}{TRANS\+\_\+\+THRESHOLD}}} + diff --git a/doc/latex/namespace_pose_graph_lib.tex b/doc/latex/namespace_pose_graph_lib.tex new file mode 100644 index 0000000..ceb8df7 --- /dev/null +++ b/doc/latex/namespace_pose_graph_lib.tex @@ -0,0 +1,9 @@ +\hypertarget{namespace_pose_graph_lib}{}\doxysection{Pose\+Graph\+Lib Namespace Reference} +\label{namespace_pose_graph_lib}\index{PoseGraphLib@{PoseGraphLib}} +\doxysubsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{class_pose_graph_lib_1_1_bundle_adjustment}{Bundle\+Adjustment}} +\item +class \mbox{\hyperlink{class_pose_graph_lib_1_1_pose_graph_optimization}{Pose\+Graph\+Optimization}} +\end{DoxyCompactItemize} diff --git a/doc/latex/namespace_raw_r_o_a_m_system.tex b/doc/latex/namespace_raw_r_o_a_m_system.tex new file mode 100644 index 0000000..af56995 --- /dev/null +++ b/doc/latex/namespace_raw_r_o_a_m_system.tex @@ -0,0 +1,111 @@ +\hypertarget{namespace_raw_r_o_a_m_system}{}\doxysection{Raw\+ROAMSystem Namespace Reference} +\label{namespace_raw_r_o_a_m_system}\index{RawROAMSystem@{RawROAMSystem}} +\doxysubsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system}{Raw\+ROAMSystem}} +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespace_raw_r_o_a_m_system_a9d912e1ca0fa7da394e152167652474f}{RADAR\+\_\+\+CART\+\_\+\+CENTER}} = np.\+array(\mbox{[}1012, 1012\mbox{]}) +\item +int \mbox{\hyperlink{namespace_raw_r_o_a_m_system_a3a8a505694cddaa9655fa95d969ad7d5}{want\+To\+Plot}} = -\/1 +\item +int \mbox{\hyperlink{namespace_raw_r_o_a_m_system_a0d700e6dfa2a9f624cd51f991a793585}{dataset\+Name}} = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{} +\item +int \mbox{\hyperlink{namespace_raw_r_o_a_m_system_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}{start\+Seq\+Ind}} = int(sys.\+argv\mbox{[}2\mbox{]}) if len(sys.\+argv) $>$ 2 else 0 +\item +int \mbox{\hyperlink{namespace_raw_r_o_a_m_system_a58496a66cbc7a6dfb37042c7e7731cdf}{end\+Seq\+Ind}} = int(sys.\+argv\mbox{[}3\mbox{]}) if len(sys.\+argv) $>$ 3 else -\/1 +\item +int \mbox{\hyperlink{namespace_raw_r_o_a_m_system_abc00d48bd1d419b17ec367d6d5becaef}{REMOVE\+\_\+\+OLD\+\_\+\+RESULTS}} = bool(int(sys.\+argv\mbox{[}4\mbox{]})) if len(sys.\+argv) $>$ 4 else False +\item +dictionary \mbox{\hyperlink{namespace_raw_r_o_a_m_system_ade0809af2b538933a9e6736a3675a088}{param\+Flags}} +\item +\mbox{\hyperlink{namespace_raw_r_o_a_m_system_ac4ca86dead4518ac4fd6e30172db3d9e}{system}} +\item +\mbox{\hyperlink{namespace_raw_r_o_a_m_system_a3ab4a737af4a26ba845d42353015fa10}{img\+Save\+Path}} = system.\+file\+Paths\mbox{[}\char`\"{}img\+Save\char`\"{}\mbox{]} +\item +\mbox{\hyperlink{namespace_raw_r_o_a_m_system_a4575c573acd9741770c3a97dac5062ba}{traj\+Save\+Path}} = system.\+file\+Paths\mbox{[}\char`\"{}traj\+Save\char`\"{}\mbox{]} +\end{DoxyCompactItemize} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_a0d700e6dfa2a9f624cd51f991a793585}\label{namespace_raw_r_o_a_m_system_a0d700e6dfa2a9f624cd51f991a793585}} +\index{RawROAMSystem@{RawROAMSystem}!datasetName@{datasetName}} +\index{datasetName@{datasetName}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{datasetName}{datasetName}} +{\footnotesize\ttfamily int dataset\+Name = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{}} + +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_a58496a66cbc7a6dfb37042c7e7731cdf}\label{namespace_raw_r_o_a_m_system_a58496a66cbc7a6dfb37042c7e7731cdf}} +\index{RawROAMSystem@{RawROAMSystem}!endSeqInd@{endSeqInd}} +\index{endSeqInd@{endSeqInd}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{endSeqInd}{endSeqInd}} +{\footnotesize\ttfamily int end\+Seq\+Ind = int(sys.\+argv\mbox{[}3\mbox{]}) if len(sys.\+argv) $>$ 3 else -\/1} + +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_a3ab4a737af4a26ba845d42353015fa10}\label{namespace_raw_r_o_a_m_system_a3ab4a737af4a26ba845d42353015fa10}} +\index{RawROAMSystem@{RawROAMSystem}!imgSavePath@{imgSavePath}} +\index{imgSavePath@{imgSavePath}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{imgSavePath}{imgSavePath}} +{\footnotesize\ttfamily img\+Save\+Path = system.\+file\+Paths\mbox{[}\char`\"{}img\+Save\char`\"{}\mbox{]}} + +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_ade0809af2b538933a9e6736a3675a088}\label{namespace_raw_r_o_a_m_system_ade0809af2b538933a9e6736a3675a088}} +\index{RawROAMSystem@{RawROAMSystem}!paramFlags@{paramFlags}} +\index{paramFlags@{paramFlags}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{paramFlags}{paramFlags}} +{\footnotesize\ttfamily dictionary param\+Flags} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = \{} +\DoxyCodeLine{2 \textcolor{stringliteral}{"{}rejectOutliers"{}}: \textcolor{keyword}{True},} +\DoxyCodeLine{3 \textcolor{stringliteral}{"{}useFMT"{}}: \textcolor{keyword}{False},} +\DoxyCodeLine{4 \textcolor{comment}{\# Below all currently unused actually}} +\DoxyCodeLine{5 \textcolor{stringliteral}{"{}useANMS"{}}: \textcolor{keyword}{False},} +\DoxyCodeLine{6 \textcolor{stringliteral}{"{}correctMotionDistortion"{}}: \textcolor{keyword}{False}} +\DoxyCodeLine{7 \}} + +\end{DoxyCode} +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_a9d912e1ca0fa7da394e152167652474f}\label{namespace_raw_r_o_a_m_system_a9d912e1ca0fa7da394e152167652474f}} +\index{RawROAMSystem@{RawROAMSystem}!RADAR\_CART\_CENTER@{RADAR\_CART\_CENTER}} +\index{RADAR\_CART\_CENTER@{RADAR\_CART\_CENTER}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{RADAR\_CART\_CENTER}{RADAR\_CART\_CENTER}} +{\footnotesize\ttfamily RADAR\+\_\+\+CART\+\_\+\+CENTER = np.\+array(\mbox{[}1012, 1012\mbox{]})} + +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_abc00d48bd1d419b17ec367d6d5becaef}\label{namespace_raw_r_o_a_m_system_abc00d48bd1d419b17ec367d6d5becaef}} +\index{RawROAMSystem@{RawROAMSystem}!REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}} +\index{REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{REMOVE\_OLD\_RESULTS}{REMOVE\_OLD\_RESULTS}} +{\footnotesize\ttfamily int REMOVE\+\_\+\+OLD\+\_\+\+RESULTS = bool(int(sys.\+argv\mbox{[}4\mbox{]})) if len(sys.\+argv) $>$ 4 else False} + +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}\label{namespace_raw_r_o_a_m_system_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}} +\index{RawROAMSystem@{RawROAMSystem}!startSeqInd@{startSeqInd}} +\index{startSeqInd@{startSeqInd}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{startSeqInd}{startSeqInd}} +{\footnotesize\ttfamily int start\+Seq\+Ind = int(sys.\+argv\mbox{[}2\mbox{]}) if len(sys.\+argv) $>$ 2 else 0} + +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_ac4ca86dead4518ac4fd6e30172db3d9e}\label{namespace_raw_r_o_a_m_system_ac4ca86dead4518ac4fd6e30172db3d9e}} +\index{RawROAMSystem@{RawROAMSystem}!system@{system}} +\index{system@{system}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{system}{system}} +{\footnotesize\ttfamily system} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = \mbox{\hyperlink{namespace_raw_r_o_a_m_system}{RawROAMSystem}}(datasetName,} +\DoxyCodeLine{2 paramFlags=paramFlags,} +\DoxyCodeLine{3 hasGroundTruth=\textcolor{keyword}{True})} + +\end{DoxyCode} +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_a4575c573acd9741770c3a97dac5062ba}\label{namespace_raw_r_o_a_m_system_a4575c573acd9741770c3a97dac5062ba}} +\index{RawROAMSystem@{RawROAMSystem}!trajSavePath@{trajSavePath}} +\index{trajSavePath@{trajSavePath}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{trajSavePath}{trajSavePath}} +{\footnotesize\ttfamily traj\+Save\+Path = system.\+file\+Paths\mbox{[}\char`\"{}traj\+Save\char`\"{}\mbox{]}} + +\mbox{\Hypertarget{namespace_raw_r_o_a_m_system_a3a8a505694cddaa9655fa95d969ad7d5}\label{namespace_raw_r_o_a_m_system_a3a8a505694cddaa9655fa95d969ad7d5}} +\index{RawROAMSystem@{RawROAMSystem}!wantToPlot@{wantToPlot}} +\index{wantToPlot@{wantToPlot}!RawROAMSystem@{RawROAMSystem}} +\doxysubsubsection{\texorpdfstring{wantToPlot}{wantToPlot}} +{\footnotesize\ttfamily int want\+To\+Plot = -\/1} + diff --git a/doc/latex/namespace_tracker.tex b/doc/latex/namespace_tracker.tex new file mode 100644 index 0000000..1975653 --- /dev/null +++ b/doc/latex/namespace_tracker.tex @@ -0,0 +1,7 @@ +\hypertarget{namespace_tracker}{}\doxysection{Tracker Namespace Reference} +\label{namespace_tracker}\index{Tracker@{Tracker}} +\doxysubsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{class_tracker_1_1_tracker}{Tracker}} +\end{DoxyCompactItemize} diff --git a/doc/latex/namespacegen_fake_data.tex b/doc/latex/namespacegen_fake_data.tex new file mode 100644 index 0000000..fa087ef --- /dev/null +++ b/doc/latex/namespacegen_fake_data.tex @@ -0,0 +1,138 @@ +\hypertarget{namespacegen_fake_data}{}\doxysection{gen\+Fake\+Data Namespace Reference} +\label{namespacegen_fake_data}\index{genFakeData@{genFakeData}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{namespacegen_fake_data_a1b3b698af37c150c207a5c1acbfb87b2}{transform\+Coords}} (src\+Coord, A, h) +\item +def \mbox{\hyperlink{namespacegen_fake_data_a8a24de590353fb58d5c7d4dce36cce67}{plot\+Fake\+Features}} (src\+Coord, target\+Coord, target\+Coord2=None, title\+\_\+append=\char`\"{}\char`\"{}, alpha=1, clear=False, show=False, plot\+Displace=False) +\item +def \mbox{\hyperlink{namespacegen_fake_data_a3c15e800e7f2ed5806ad919c0e657768}{generate\+Fake\+Correspondences}} (src\+Coord=None, n\+\_\+points=100, theta\+\_\+max\+\_\+deg=20, max\+\_\+translation\+\_\+m=3) +\item +def \mbox{\hyperlink{namespacegen_fake_data_aa2b3c0429ce6e0a8b72d380d8868890a}{convert\+Polar\+Points\+To\+Cartesian}} (points) +\item +def \mbox{\hyperlink{namespacegen_fake_data_a13ccee862d67bebec295bd789557df1b}{generate\+Fake\+Correspondences\+Polar}} (current\+Frame=None, n\+\_\+points=100, theta\+\_\+max\+\_\+deg=20, max\+\_\+translation\+\_\+m=3) +\item +def \mbox{\hyperlink{namespacegen_fake_data_a2b986854c74712290c89276485636000}{distort}} (coords, velocity, frequency, h) +\item +def \mbox{\hyperlink{namespacegen_fake_data_a4f2fe44331e2fe3b7478d11c1a156749}{add\+Noise}} (data, variance=2.\+5) +\item +def \mbox{\hyperlink{namespacegen_fake_data_aa06afad9db0dd98727ea4b16c0d90df6}{create\+Outliers}} (data, n\+\_\+outliers, noise\+To\+Add=10) +\item +def \mbox{\hyperlink{namespacegen_fake_data_a5630333dafdfe14cac998f3535043154}{generate\+Translation\+Vector}} (max\+\_\+range\+\_\+m=10) +\item +def \mbox{\hyperlink{namespacegen_fake_data_ac4ddf52aeaea780b6f90b7617238e0a7}{generate\+Fake\+Features}} (n\+\_\+points=100, max\+\_\+range\+\_\+m=10) +\item +def \mbox{\hyperlink{namespacegen_fake_data_a88a051f71e6c953f36fd2c8529dc5965}{generate\+Fake\+Features\+Polar}} (n\+\_\+points=100, max\+\_\+range\+\_\+m=10) +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespacegen_fake_data_a4f2fe44331e2fe3b7478d11c1a156749}\label{namespacegen_fake_data_a4f2fe44331e2fe3b7478d11c1a156749}} +\index{genFakeData@{genFakeData}!addNoise@{addNoise}} +\index{addNoise@{addNoise}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{addNoise()}{addNoise()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+add\+Noise (\begin{DoxyParamCaption}\item[{}]{data, }\item[{}]{variance = {\ttfamily 2.5} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Add 0-mean Gaussian random noise to correspondence data +@param[in] data Data to add noise to +@param[in] variance Variance for Gaussian noise +\end{DoxyVerb} + \mbox{\Hypertarget{namespacegen_fake_data_aa2b3c0429ce6e0a8b72d380d8868890a}\label{namespacegen_fake_data_aa2b3c0429ce6e0a8b72d380d8868890a}} +\index{genFakeData@{genFakeData}!convertPolarPointsToCartesian@{convertPolarPointsToCartesian}} +\index{convertPolarPointsToCartesian@{convertPolarPointsToCartesian}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{convertPolarPointsToCartesian()}{convertPolarPointsToCartesian()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+convert\+Polar\+Points\+To\+Cartesian (\begin{DoxyParamCaption}\item[{}]{points }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacegen_fake_data_aa06afad9db0dd98727ea4b16c0d90df6}\label{namespacegen_fake_data_aa06afad9db0dd98727ea4b16c0d90df6}} +\index{genFakeData@{genFakeData}!createOutliers@{createOutliers}} +\index{createOutliers@{createOutliers}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{createOutliers()}{createOutliers()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+create\+Outliers (\begin{DoxyParamCaption}\item[{}]{data, }\item[{}]{n\+\_\+outliers, }\item[{}]{noise\+To\+Add = {\ttfamily 10} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Create outliers by adding a lot of noise to randomly chosen n_outliers +@param[in] data Data to create outliers in +@param[in] n_outliers Number of outliers forced into data +@param[in] noiseToAdd Amount of guaranteed base noise to add + +@return noisy_data Noisy data with outliers +@return outlier_ind Indices of outliers +\end{DoxyVerb} + \mbox{\Hypertarget{namespacegen_fake_data_a2b986854c74712290c89276485636000}\label{namespacegen_fake_data_a2b986854c74712290c89276485636000}} +\index{genFakeData@{genFakeData}!distort@{distort}} +\index{distort@{distort}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{distort()}{distort()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+distort (\begin{DoxyParamCaption}\item[{}]{coords, }\item[{}]{velocity, }\item[{}]{frequency, }\item[{}]{h }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacegen_fake_data_a3c15e800e7f2ed5806ad919c0e657768}\label{namespacegen_fake_data_a3c15e800e7f2ed5806ad919c0e657768}} +\index{genFakeData@{genFakeData}!generateFakeCorrespondences@{generateFakeCorrespondences}} +\index{generateFakeCorrespondences@{generateFakeCorrespondences}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{generateFakeCorrespondences()}{generateFakeCorrespondences()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+generate\+Fake\+Correspondences (\begin{DoxyParamCaption}\item[{}]{src\+Coord = {\ttfamily None}, }\item[{}]{n\+\_\+points = {\ttfamily 100}, }\item[{}]{theta\+\_\+max\+\_\+deg = {\ttfamily 20}, }\item[{}]{max\+\_\+translation\+\_\+m = {\ttfamily 3} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Generate fake correspondences with transform, randomly generated from max range and degree +@param[in] srcCoord Source coordinate to transform from. If none, will randomly generate features +@param[in] n_points Number of points to generate, only applies if srcCoord = None +@param[in] theta_max_deg Maximum degree of rotation +@param[in] max_range_m Maximum range (for translation) in meters + +@return srcCoord Generated or passed in srcCoord +@return targetCoord Corresponding targetCoord generated using (theta_deg, h) +@return theta_deg Theta component of transform +@return h Translation component of transform +\end{DoxyVerb} + \mbox{\Hypertarget{namespacegen_fake_data_a13ccee862d67bebec295bd789557df1b}\label{namespacegen_fake_data_a13ccee862d67bebec295bd789557df1b}} +\index{genFakeData@{genFakeData}!generateFakeCorrespondencesPolar@{generateFakeCorrespondencesPolar}} +\index{generateFakeCorrespondencesPolar@{generateFakeCorrespondencesPolar}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{generateFakeCorrespondencesPolar()}{generateFakeCorrespondencesPolar()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+generate\+Fake\+Correspondences\+Polar (\begin{DoxyParamCaption}\item[{}]{current\+Frame = {\ttfamily None}, }\item[{}]{n\+\_\+points = {\ttfamily 100}, }\item[{}]{theta\+\_\+max\+\_\+deg = {\ttfamily 20}, }\item[{}]{max\+\_\+translation\+\_\+m = {\ttfamily 3} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Generate fake correspondences with transform, randomly generated from max range and degree +@param[in] currentFrame Source coordinate to transform from. If none, will randomly generate features +@param[in] n_points Number of points to generate, only applies if currentFrame = None +@param[in] theta_max_deg Maximum degree of rotation +@param[in] max_range_m Maximum range (for translation) in meters + +@return currentFrame Generated or passed in currentFrame +@return targetCoord Corresponding targetCoord generated using (theta_deg, h) +@return theta_deg Theta component of transform +@return h Translation component of transform +\end{DoxyVerb} + \mbox{\Hypertarget{namespacegen_fake_data_ac4ddf52aeaea780b6f90b7617238e0a7}\label{namespacegen_fake_data_ac4ddf52aeaea780b6f90b7617238e0a7}} +\index{genFakeData@{genFakeData}!generateFakeFeatures@{generateFakeFeatures}} +\index{generateFakeFeatures@{generateFakeFeatures}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{generateFakeFeatures()}{generateFakeFeatures()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+generate\+Fake\+Features (\begin{DoxyParamCaption}\item[{}]{n\+\_\+points = {\ttfamily 100}, }\item[{}]{max\+\_\+range\+\_\+m = {\ttfamily 10} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacegen_fake_data_a88a051f71e6c953f36fd2c8529dc5965}\label{namespacegen_fake_data_a88a051f71e6c953f36fd2c8529dc5965}} +\index{genFakeData@{genFakeData}!generateFakeFeaturesPolar@{generateFakeFeaturesPolar}} +\index{generateFakeFeaturesPolar@{generateFakeFeaturesPolar}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{generateFakeFeaturesPolar()}{generateFakeFeaturesPolar()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+generate\+Fake\+Features\+Polar (\begin{DoxyParamCaption}\item[{}]{n\+\_\+points = {\ttfamily 100}, }\item[{}]{max\+\_\+range\+\_\+m = {\ttfamily 10} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacegen_fake_data_a5630333dafdfe14cac998f3535043154}\label{namespacegen_fake_data_a5630333dafdfe14cac998f3535043154}} +\index{genFakeData@{genFakeData}!generateTranslationVector@{generateTranslationVector}} +\index{generateTranslationVector@{generateTranslationVector}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{generateTranslationVector()}{generateTranslationVector()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+generate\+Translation\+Vector (\begin{DoxyParamCaption}\item[{}]{max\+\_\+range\+\_\+m = {\ttfamily 10} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacegen_fake_data_a8a24de590353fb58d5c7d4dce36cce67}\label{namespacegen_fake_data_a8a24de590353fb58d5c7d4dce36cce67}} +\index{genFakeData@{genFakeData}!plotFakeFeatures@{plotFakeFeatures}} +\index{plotFakeFeatures@{plotFakeFeatures}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{plotFakeFeatures()}{plotFakeFeatures()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+plot\+Fake\+Features (\begin{DoxyParamCaption}\item[{}]{src\+Coord, }\item[{}]{target\+Coord, }\item[{}]{target\+Coord2 = {\ttfamily None}, }\item[{}]{title\+\_\+append = {\ttfamily \char`\"{}\char`\"{}}, }\item[{}]{alpha = {\ttfamily 1}, }\item[{}]{clear = {\ttfamily False}, }\item[{}]{show = {\ttfamily False}, }\item[{}]{plot\+Displace = {\ttfamily False} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacegen_fake_data_a1b3b698af37c150c207a5c1acbfb87b2}\label{namespacegen_fake_data_a1b3b698af37c150c207a5c1acbfb87b2}} +\index{genFakeData@{genFakeData}!transformCoords@{transformCoords}} +\index{transformCoords@{transformCoords}!genFakeData@{genFakeData}} +\doxysubsubsection{\texorpdfstring{transformCoords()}{transformCoords()}} +{\footnotesize\ttfamily def gen\+Fake\+Data.\+transform\+Coords (\begin{DoxyParamCaption}\item[{}]{src\+Coord, }\item[{}]{A, }\item[{}]{h }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Transform coordinates to get correspondence points given A, h transformation matrix +@param[in] srcCoord Source coordinates (K x 2) +@param[in] A Rotation matrix (2 x 2) +@param[in] h Translation matrix (2 x 1) + +@return targetCoord = A @ srcCoord + h (K x 2) +\end{DoxyVerb} + \ No newline at end of file diff --git a/doc/latex/namespaceget_features.tex b/doc/latex/namespaceget_features.tex new file mode 100644 index 0000000..7bd0ed9 --- /dev/null +++ b/doc/latex/namespaceget_features.tex @@ -0,0 +1,295 @@ +\hypertarget{namespaceget_features}{}\doxysection{get\+Features Namespace Reference} +\label{namespaceget_features}\index{getFeatures@{getFeatures}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +np.\+ndarray \mbox{\hyperlink{namespaceget_features_a0ec79941c6b79baef593909536cf5833}{get\+Blobs\+From\+Cart}} (np.\+ndarray cart\+Image, int min\+\_\+sigma=1, int max\+\_\+sigma=30, int num\+\_\+sigma=10, threshold=0.\+01, method=\char`\"{}doh\char`\"{}) +\item +def \mbox{\hyperlink{namespaceget_features_ae8382cc7430856b5063266ad1c87a5d4}{calculate\+Feature\+Loss\+Threshold}} (n\+Initial\+Features) +\item +def \mbox{\hyperlink{namespaceget_features_a5bfbafee19410b1af43185ec6b0022cf}{adaptive\+NMS}} (img, blobs, ret\+\_\+points=200, tolerance=0.\+1) +\item +def \mbox{\hyperlink{namespaceget_features_a9d9b7405369034b3d3c7f94c9db65d7e}{get\+Features}} (img, dict feature\+\_\+params=\mbox{\hyperlink{namespaceget_features_abe72605eaafb6f440b8368038490ef5e}{DEFAULT\+\_\+\+FEATURE\+\_\+\+PARAMS}}) +\item +def \mbox{\hyperlink{namespaceget_features_afca08058596f3843b6bee711cbabe674}{append\+New\+Features}} (src\+Img, old\+Features\+Coord) +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceget_features_abe72605eaafb6f440b8368038490ef5e}{DEFAULT\+\_\+\+FEATURE\+\_\+\+PARAMS}} +\item +float \mbox{\hyperlink{namespaceget_features_ace997372c39f64ff25edb675036cdf98}{PERCENT\+\_\+\+FEATURE\+\_\+\+LOSS\+\_\+\+THRESHOLD}} = 0.\+75 +\item +int \mbox{\hyperlink{namespaceget_features_a5a1ecb7fe1a4f12cba5dfa099fb10bba}{N\+\_\+\+FEATURES\+\_\+\+BEFORE\+\_\+\+RETRACK}} = 60 +\item +int \mbox{\hyperlink{namespaceget_features_a0d700e6dfa2a9f624cd51f991a793585}{dataset\+Name}} = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{} +\item +\mbox{\hyperlink{namespaceget_features_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar\char`\"{}) +\item +\mbox{\hyperlink{namespaceget_features_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{}) +\item +\mbox{\hyperlink{namespaceget_features_afb358f48b1646c750fb9da6c6585be2b}{end}} +\item +\mbox{\hyperlink{namespaceget_features_acb793f7781c82b09ae5aba2ddea15941}{flush}} +\item +\mbox{\hyperlink{namespaceget_features_a662fb0cf784aecaa685e2a1bd9b430ab}{stream\+Arr}} = get\+Radar\+Stream\+Polar(\mbox{\hyperlink{namespaceget_features_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespaceget_features_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}}) +\item +\mbox{\hyperlink{namespaceget_features_a012224f6fb0d9dcb13f93fb89f037799}{n\+Imgs}} = stream\+Arr.\+shape\mbox{[}2\mbox{]} +\item +\mbox{\hyperlink{namespaceget_features_a596ed4974cf087011c3566c6d7a0b46e}{to\+Save\+Path}} = os.\+path.\+join(\char`\"{}.\char`\"{}, \char`\"{}img\char`\"{}, \char`\"{}blob\char`\"{}, dataset\+Name) +\item +\mbox{\hyperlink{namespaceget_features_a0dd30d2c854453a5a754e2a81c971651}{exist\+\_\+ok}} +\item +\mbox{\hyperlink{namespaceget_features_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}} = \mbox{\hyperlink{namespaceget_features_a662fb0cf784aecaa685e2a1bd9b430ab}{stream\+Arr}}\mbox{[}\+:, \+:, img\+No\mbox{]} +\item +\mbox{\hyperlink{namespaceget_features_ab9927de0f2ac5e7a36f51077c9c4dafe}{img\+Cart}} = convert\+Polar\+Image\+To\+Cartesian(\mbox{\hyperlink{namespaceget_features_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}}) +\item +np.\+ndarray \mbox{\hyperlink{namespaceget_features_acf196203986789887c8a9bacc6da5fe7}{blob\+Indices}} +\item +def \mbox{\hyperlink{namespaceget_features_a1800715a9a0efa70440b9cbac95fb2fd}{s\+\_\+blob\+Indices}} = \mbox{\hyperlink{namespaceget_features_a5bfbafee19410b1af43185ec6b0022cf}{adaptive\+NMS}}(\mbox{\hyperlink{namespaceget_features_ab9927de0f2ac5e7a36f51077c9c4dafe}{img\+Cart}}, \mbox{\hyperlink{namespaceget_features_acf196203986789887c8a9bacc6da5fe7}{blob\+Indices}}) +\item +int \mbox{\hyperlink{namespaceget_features_a8e0762c5a3e319f481e485a7ef229d52}{img\+Cart\+BGR}} = cv2.\+cvt\+Color(\mbox{\hyperlink{namespaceget_features_ab9927de0f2ac5e7a36f51077c9c4dafe}{img\+Cart}}, cv2.\+COLOR\+\_\+\+GRAY2\+BGR) $\ast$ 255 +\item +np.\+ndarray \mbox{\hyperlink{namespaceget_features_afe0b2b0f8f2978793660014703b32251}{n\+Indices}} = blob\+Indices.\+shape\mbox{[}0\mbox{]} +\item +def \mbox{\hyperlink{namespaceget_features_a29780b3849a623c52a306ab69585385c}{n\+Indices\+ANMS}} = s\+\_\+blob\+Indices.\+shape\mbox{[}0\mbox{]} +\item +\mbox{\hyperlink{namespaceget_features_aa8ebde97c28b77d3f8550a0e885ffe7b}{blobY}} +\item +\mbox{\hyperlink{namespaceget_features_a6bdef3ee8d485940c1c686546b5efbbc}{blobX}} +\item +\mbox{\hyperlink{namespaceget_features_a6094d13377d1fec9c88b87f81b4bdb5f}{blob\+Sigma}} +\item +tuple \mbox{\hyperlink{namespaceget_features_a35c778d114d90fd36619e81a44f47a9d}{coord}} = (\mbox{\hyperlink{namespaceget_features_a6bdef3ee8d485940c1c686546b5efbbc}{blobX}}, \mbox{\hyperlink{namespaceget_features_aa8ebde97c28b77d3f8550a0e885ffe7b}{blobY}}) +\item +tuple \mbox{\hyperlink{namespaceget_features_aa2873ec3849a18fe7e6928280f89b403}{color}} = (0, 255, 0) +\item +\mbox{\hyperlink{namespaceget_features_a2797efdfd7b06e306947463a2a9b9017}{to\+Save\+Img\+Path}} = os.\+path.\+join(\mbox{\hyperlink{namespaceget_features_a596ed4974cf087011c3566c6d7a0b46e}{to\+Save\+Path}}, f\char`\"{}\{img\+No\+:04d\}.jpg\char`\"{}) +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespaceget_features_a5bfbafee19410b1af43185ec6b0022cf}\label{namespaceget_features_a5bfbafee19410b1af43185ec6b0022cf}} +\index{getFeatures@{getFeatures}!adaptiveNMS@{adaptiveNMS}} +\index{adaptiveNMS@{adaptiveNMS}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{adaptiveNMS()}{adaptiveNMS()}} +{\footnotesize\ttfamily def get\+Features.\+adaptive\+NMS (\begin{DoxyParamCaption}\item[{}]{img, }\item[{}]{blobs, }\item[{}]{ret\+\_\+points = {\ttfamily 200}, }\item[{}]{tolerance = {\ttfamily 0.1} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceget_features_afca08058596f3843b6bee711cbabe674}\label{namespaceget_features_afca08058596f3843b6bee711cbabe674}} +\index{getFeatures@{getFeatures}!appendNewFeatures@{appendNewFeatures}} +\index{appendNewFeatures@{appendNewFeatures}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{appendNewFeatures()}{appendNewFeatures()}} +{\footnotesize\ttfamily def get\+Features.\+append\+New\+Features (\begin{DoxyParamCaption}\item[{}]{src\+Img, }\item[{}]{old\+Features\+Coord }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Append new features obtained from srcImg onto oldFeaturesCoord array +@see getFeatures() + +@param[in] srcImg Source image to obtain features on +@param[in] oldFeaturesCoord (K x 2) array of [x, y] coordinate of features +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceget_features_ae8382cc7430856b5063266ad1c87a5d4}\label{namespaceget_features_ae8382cc7430856b5063266ad1c87a5d4}} +\index{getFeatures@{getFeatures}!calculateFeatureLossThreshold@{calculateFeatureLossThreshold}} +\index{calculateFeatureLossThreshold@{calculateFeatureLossThreshold}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{calculateFeatureLossThreshold()}{calculateFeatureLossThreshold()}} +{\footnotesize\ttfamily def get\+Features.\+calculate\+Feature\+Loss\+Threshold (\begin{DoxyParamCaption}\item[{}]{n\+Initial\+Features }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceget_features_a0ec79941c6b79baef593909536cf5833}\label{namespaceget_features_a0ec79941c6b79baef593909536cf5833}} +\index{getFeatures@{getFeatures}!getBlobsFromCart@{getBlobsFromCart}} +\index{getBlobsFromCart@{getBlobsFromCart}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{getBlobsFromCart()}{getBlobsFromCart()}} +{\footnotesize\ttfamily np.\+ndarray get\+Features.\+get\+Blobs\+From\+Cart (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{cart\+Image, }\item[{int }]{min\+\_\+sigma = {\ttfamily 1}, }\item[{int }]{max\+\_\+sigma = {\ttfamily 30}, }\item[{int }]{num\+\_\+sigma = {\ttfamily 10}, }\item[{}]{threshold = {\ttfamily 0.01}, }\item[{}]{method = {\ttfamily \char`\"{}doh\char`\"{}} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Given a radar image, generate a list of (K x 3) + blob indices based on Determinant of Hessian +@note Uses default params from skimage.features function + +@param[in] cartImage Cartesian radar image + +@return (K x 3) Np array of blob coordinates with each row [r, c, sigma] being coordinates and sigma of detected blobs +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceget_features_a9d9b7405369034b3d3c7f94c9db65d7e}\label{namespaceget_features_a9d9b7405369034b3d3c7f94c9db65d7e}} +\index{getFeatures@{getFeatures}!getFeatures@{getFeatures}} +\index{getFeatures@{getFeatures}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{getFeatures()}{getFeatures()}} +{\footnotesize\ttfamily def get\+Features.\+get\+Features (\begin{DoxyParamCaption}\item[{}]{img, }\item[{dict }]{feature\+\_\+params = {\ttfamily \mbox{\hyperlink{namespaceget_features_abe72605eaafb6f440b8368038490ef5e}{DEFAULT\+\_\+\+FEATURE\+\_\+\+PARAMS}}} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Get features from image using Hessian blob detector +@param[in] img Image to detect features from +@param[in] feature_params Parameters for feature detection, @see DEFAULT_FEATURE_PARAMS + +@return blobCoord (K x 2) array of [x, y] coordinates of center of blobs on the image +@return blobRadii (K x 1) array of radius of blobs +\end{DoxyVerb} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespaceget_features_acf196203986789887c8a9bacc6da5fe7}\label{namespaceget_features_acf196203986789887c8a9bacc6da5fe7}} +\index{getFeatures@{getFeatures}!blobIndices@{blobIndices}} +\index{blobIndices@{blobIndices}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{blobIndices}{blobIndices}} +{\footnotesize\ttfamily np.\+ndarray blob\+Indices} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = getBlobsFromCart(imgCart,} +\DoxyCodeLine{2 min\_sigma=0.01,} +\DoxyCodeLine{3 max\_sigma=10,} +\DoxyCodeLine{4 num\_sigma=3,} +\DoxyCodeLine{5 threshold=.0005,} +\DoxyCodeLine{6 method=\textcolor{stringliteral}{"{}doh"{}})} + +\end{DoxyCode} +\mbox{\Hypertarget{namespaceget_features_a6094d13377d1fec9c88b87f81b4bdb5f}\label{namespaceget_features_a6094d13377d1fec9c88b87f81b4bdb5f}} +\index{getFeatures@{getFeatures}!blobSigma@{blobSigma}} +\index{blobSigma@{blobSigma}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{blobSigma}{blobSigma}} +{\footnotesize\ttfamily blob\+Sigma} + +\mbox{\Hypertarget{namespaceget_features_a6bdef3ee8d485940c1c686546b5efbbc}\label{namespaceget_features_a6bdef3ee8d485940c1c686546b5efbbc}} +\index{getFeatures@{getFeatures}!blobX@{blobX}} +\index{blobX@{blobX}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{blobX}{blobX}} +{\footnotesize\ttfamily blobX} + +\mbox{\Hypertarget{namespaceget_features_aa8ebde97c28b77d3f8550a0e885ffe7b}\label{namespaceget_features_aa8ebde97c28b77d3f8550a0e885ffe7b}} +\index{getFeatures@{getFeatures}!blobY@{blobY}} +\index{blobY@{blobY}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{blobY}{blobY}} +{\footnotesize\ttfamily blobY} + +\mbox{\Hypertarget{namespaceget_features_aa2873ec3849a18fe7e6928280f89b403}\label{namespaceget_features_aa2873ec3849a18fe7e6928280f89b403}} +\index{getFeatures@{getFeatures}!color@{color}} +\index{color@{color}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{color}{color}} +{\footnotesize\ttfamily tuple color = (0, 255, 0)} + +\mbox{\Hypertarget{namespaceget_features_a35c778d114d90fd36619e81a44f47a9d}\label{namespaceget_features_a35c778d114d90fd36619e81a44f47a9d}} +\index{getFeatures@{getFeatures}!coord@{coord}} +\index{coord@{coord}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{coord}{coord}} +{\footnotesize\ttfamily tuple coord = (\mbox{\hyperlink{namespaceget_features_a6bdef3ee8d485940c1c686546b5efbbc}{blobX}}, \mbox{\hyperlink{namespaceget_features_aa8ebde97c28b77d3f8550a0e885ffe7b}{blobY}})} + +\mbox{\Hypertarget{namespaceget_features_abef58ec544fb87b0bc3d6657c3824bfc}\label{namespaceget_features_abef58ec544fb87b0bc3d6657c3824bfc}} +\index{getFeatures@{getFeatures}!dataPath@{dataPath}} +\index{dataPath@{dataPath}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{dataPath}{dataPath}} +{\footnotesize\ttfamily data\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar\char`\"{})} + +\mbox{\Hypertarget{namespaceget_features_a0d700e6dfa2a9f624cd51f991a793585}\label{namespaceget_features_a0d700e6dfa2a9f624cd51f991a793585}} +\index{getFeatures@{getFeatures}!datasetName@{datasetName}} +\index{datasetName@{datasetName}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{datasetName}{datasetName}} +{\footnotesize\ttfamily int dataset\+Name = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{}} + +\mbox{\Hypertarget{namespaceget_features_abe72605eaafb6f440b8368038490ef5e}\label{namespaceget_features_abe72605eaafb6f440b8368038490ef5e}} +\index{getFeatures@{getFeatures}!DEFAULT\_FEATURE\_PARAMS@{DEFAULT\_FEATURE\_PARAMS}} +\index{DEFAULT\_FEATURE\_PARAMS@{DEFAULT\_FEATURE\_PARAMS}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{DEFAULT\_FEATURE\_PARAMS}{DEFAULT\_FEATURE\_PARAMS}} +{\footnotesize\ttfamily DEFAULT\+\_\+\+FEATURE\+\_\+\+PARAMS} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = dict(} +\DoxyCodeLine{2 min\_sigma=0.01,} +\DoxyCodeLine{3 max\_sigma=10,} +\DoxyCodeLine{4 num\_sigma=3,} +\DoxyCodeLine{5 threshold=.0005, \textcolor{comment}{\# lower threshold for more features}} +\DoxyCodeLine{6 method=\textcolor{stringliteral}{"{}doh"{}})} + +\end{DoxyCode} +\mbox{\Hypertarget{namespaceget_features_afb358f48b1646c750fb9da6c6585be2b}\label{namespaceget_features_afb358f48b1646c750fb9da6c6585be2b}} +\index{getFeatures@{getFeatures}!end@{end}} +\index{end@{end}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{end}{end}} +{\footnotesize\ttfamily end} + +\mbox{\Hypertarget{namespaceget_features_a0dd30d2c854453a5a754e2a81c971651}\label{namespaceget_features_a0dd30d2c854453a5a754e2a81c971651}} +\index{getFeatures@{getFeatures}!exist\_ok@{exist\_ok}} +\index{exist\_ok@{exist\_ok}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{exist\_ok}{exist\_ok}} +{\footnotesize\ttfamily exist\+\_\+ok} + +\mbox{\Hypertarget{namespaceget_features_acb793f7781c82b09ae5aba2ddea15941}\label{namespaceget_features_acb793f7781c82b09ae5aba2ddea15941}} +\index{getFeatures@{getFeatures}!flush@{flush}} +\index{flush@{flush}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{flush}{flush}} +{\footnotesize\ttfamily flush} + +\mbox{\Hypertarget{namespaceget_features_ab9927de0f2ac5e7a36f51077c9c4dafe}\label{namespaceget_features_ab9927de0f2ac5e7a36f51077c9c4dafe}} +\index{getFeatures@{getFeatures}!imgCart@{imgCart}} +\index{imgCart@{imgCart}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{imgCart}{imgCart}} +{\footnotesize\ttfamily img\+Cart = convert\+Polar\+Image\+To\+Cartesian(\mbox{\hyperlink{namespaceget_features_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}})} + +\mbox{\Hypertarget{namespaceget_features_a8e0762c5a3e319f481e485a7ef229d52}\label{namespaceget_features_a8e0762c5a3e319f481e485a7ef229d52}} +\index{getFeatures@{getFeatures}!imgCartBGR@{imgCartBGR}} +\index{imgCartBGR@{imgCartBGR}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{imgCartBGR}{imgCartBGR}} +{\footnotesize\ttfamily int img\+Cart\+BGR = cv2.\+cvt\+Color(\mbox{\hyperlink{namespaceget_features_ab9927de0f2ac5e7a36f51077c9c4dafe}{img\+Cart}}, cv2.\+COLOR\+\_\+\+GRAY2\+BGR) $\ast$ 255} + +\mbox{\Hypertarget{namespaceget_features_ab7f52fe3c12ded088797a6fbcabd31fc}\label{namespaceget_features_ab7f52fe3c12ded088797a6fbcabd31fc}} +\index{getFeatures@{getFeatures}!imgPolar@{imgPolar}} +\index{imgPolar@{imgPolar}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{imgPolar}{imgPolar}} +{\footnotesize\ttfamily img\+Polar = \mbox{\hyperlink{namespaceget_features_a662fb0cf784aecaa685e2a1bd9b430ab}{stream\+Arr}}\mbox{[}\+:, \+:, img\+No\mbox{]}} + +\mbox{\Hypertarget{namespaceget_features_a5a1ecb7fe1a4f12cba5dfa099fb10bba}\label{namespaceget_features_a5a1ecb7fe1a4f12cba5dfa099fb10bba}} +\index{getFeatures@{getFeatures}!N\_FEATURES\_BEFORE\_RETRACK@{N\_FEATURES\_BEFORE\_RETRACK}} +\index{N\_FEATURES\_BEFORE\_RETRACK@{N\_FEATURES\_BEFORE\_RETRACK}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{N\_FEATURES\_BEFORE\_RETRACK}{N\_FEATURES\_BEFORE\_RETRACK}} +{\footnotesize\ttfamily int N\+\_\+\+FEATURES\+\_\+\+BEFORE\+\_\+\+RETRACK = 60} + +\mbox{\Hypertarget{namespaceget_features_a012224f6fb0d9dcb13f93fb89f037799}\label{namespaceget_features_a012224f6fb0d9dcb13f93fb89f037799}} +\index{getFeatures@{getFeatures}!nImgs@{nImgs}} +\index{nImgs@{nImgs}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{nImgs}{nImgs}} +{\footnotesize\ttfamily n\+Imgs = stream\+Arr.\+shape\mbox{[}2\mbox{]}} + +\mbox{\Hypertarget{namespaceget_features_afe0b2b0f8f2978793660014703b32251}\label{namespaceget_features_afe0b2b0f8f2978793660014703b32251}} +\index{getFeatures@{getFeatures}!nIndices@{nIndices}} +\index{nIndices@{nIndices}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{nIndices}{nIndices}} +{\footnotesize\ttfamily np.\+ndarray n\+Indices = blob\+Indices.\+shape\mbox{[}0\mbox{]}} + +\mbox{\Hypertarget{namespaceget_features_a29780b3849a623c52a306ab69585385c}\label{namespaceget_features_a29780b3849a623c52a306ab69585385c}} +\index{getFeatures@{getFeatures}!nIndicesANMS@{nIndicesANMS}} +\index{nIndicesANMS@{nIndicesANMS}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{nIndicesANMS}{nIndicesANMS}} +{\footnotesize\ttfamily def n\+Indices\+ANMS = s\+\_\+blob\+Indices.\+shape\mbox{[}0\mbox{]}} + +\mbox{\Hypertarget{namespaceget_features_ace997372c39f64ff25edb675036cdf98}\label{namespaceget_features_ace997372c39f64ff25edb675036cdf98}} +\index{getFeatures@{getFeatures}!PERCENT\_FEATURE\_LOSS\_THRESHOLD@{PERCENT\_FEATURE\_LOSS\_THRESHOLD}} +\index{PERCENT\_FEATURE\_LOSS\_THRESHOLD@{PERCENT\_FEATURE\_LOSS\_THRESHOLD}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{PERCENT\_FEATURE\_LOSS\_THRESHOLD}{PERCENT\_FEATURE\_LOSS\_THRESHOLD}} +{\footnotesize\ttfamily float PERCENT\+\_\+\+FEATURE\+\_\+\+LOSS\+\_\+\+THRESHOLD = 0.\+75} + +\mbox{\Hypertarget{namespaceget_features_a1800715a9a0efa70440b9cbac95fb2fd}\label{namespaceget_features_a1800715a9a0efa70440b9cbac95fb2fd}} +\index{getFeatures@{getFeatures}!s\_blobIndices@{s\_blobIndices}} +\index{s\_blobIndices@{s\_blobIndices}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{s\_blobIndices}{s\_blobIndices}} +{\footnotesize\ttfamily def s\+\_\+blob\+Indices = \mbox{\hyperlink{namespaceget_features_a5bfbafee19410b1af43185ec6b0022cf}{adaptive\+NMS}}(\mbox{\hyperlink{namespaceget_features_ab9927de0f2ac5e7a36f51077c9c4dafe}{img\+Cart}}, \mbox{\hyperlink{namespaceget_features_acf196203986789887c8a9bacc6da5fe7}{blob\+Indices}})} + +\mbox{\Hypertarget{namespaceget_features_a662fb0cf784aecaa685e2a1bd9b430ab}\label{namespaceget_features_a662fb0cf784aecaa685e2a1bd9b430ab}} +\index{getFeatures@{getFeatures}!streamArr@{streamArr}} +\index{streamArr@{streamArr}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{streamArr}{streamArr}} +{\footnotesize\ttfamily stream\+Arr = get\+Radar\+Stream\+Polar(\mbox{\hyperlink{namespaceget_features_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespaceget_features_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}})} + +\mbox{\Hypertarget{namespaceget_features_ac559b123c3618ef31794f03fb8742e8e}\label{namespaceget_features_ac559b123c3618ef31794f03fb8742e8e}} +\index{getFeatures@{getFeatures}!timestampPath@{timestampPath}} +\index{timestampPath@{timestampPath}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{timestampPath}{timestampPath}} +{\footnotesize\ttfamily timestamp\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{})} + +\mbox{\Hypertarget{namespaceget_features_a2797efdfd7b06e306947463a2a9b9017}\label{namespaceget_features_a2797efdfd7b06e306947463a2a9b9017}} +\index{getFeatures@{getFeatures}!toSaveImgPath@{toSaveImgPath}} +\index{toSaveImgPath@{toSaveImgPath}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{toSaveImgPath}{toSaveImgPath}} +{\footnotesize\ttfamily to\+Save\+Img\+Path = os.\+path.\+join(\mbox{\hyperlink{namespaceget_features_a596ed4974cf087011c3566c6d7a0b46e}{to\+Save\+Path}}, f\char`\"{}\{img\+No\+:04d\}.jpg\char`\"{})} + +\mbox{\Hypertarget{namespaceget_features_a596ed4974cf087011c3566c6d7a0b46e}\label{namespaceget_features_a596ed4974cf087011c3566c6d7a0b46e}} +\index{getFeatures@{getFeatures}!toSavePath@{toSavePath}} +\index{toSavePath@{toSavePath}!getFeatures@{getFeatures}} +\doxysubsubsection{\texorpdfstring{toSavePath}{toSavePath}} +{\footnotesize\ttfamily to\+Save\+Path = os.\+path.\+join(\char`\"{}.\char`\"{}, \char`\"{}img\char`\"{}, \char`\"{}blob\char`\"{}, dataset\+Name)} + diff --git a/doc/latex/namespaceget_point_cloud.tex b/doc/latex/namespaceget_point_cloud.tex new file mode 100644 index 0000000..c16698a --- /dev/null +++ b/doc/latex/namespaceget_point_cloud.tex @@ -0,0 +1,142 @@ +\hypertarget{namespaceget_point_cloud}{}\doxysection{get\+Point\+Cloud Namespace Reference} +\label{namespaceget_point_cloud}\index{getPointCloud@{getPointCloud}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +np.\+ndarray \mbox{\hyperlink{namespaceget_point_cloud_a0dccab4a9c9f55f5a8a98a2a41708927}{get\+Point\+Cloud\+Polar\+Ind}} (np.\+ndarray polar\+Image, float peak\+Distance=None, float peak\+Prominence=None) +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{namespaceget_point_cloud_a0d700e6dfa2a9f624cd51f991a793585}{dataset\+Name}} = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{} +\item +\mbox{\hyperlink{namespaceget_point_cloud_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar\char`\"{}) +\item +\mbox{\hyperlink{namespaceget_point_cloud_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{}) +\item +\mbox{\hyperlink{namespaceget_point_cloud_a662fb0cf784aecaa685e2a1bd9b430ab}{stream\+Arr}} = get\+Radar\+Stream\+Polar(\mbox{\hyperlink{namespaceget_point_cloud_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespaceget_point_cloud_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}}) +\item +\mbox{\hyperlink{namespaceget_point_cloud_a012224f6fb0d9dcb13f93fb89f037799}{n\+Imgs}} = stream\+Arr.\+shape\mbox{[}2\mbox{]} +\item +\mbox{\hyperlink{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}} = \mbox{\hyperlink{namespaceget_point_cloud_a662fb0cf784aecaa685e2a1bd9b430ab}{stream\+Arr}}\mbox{[}\+:, \+:, i\mbox{]} +\item +np.\+ndarray \mbox{\hyperlink{namespaceget_point_cloud_aaf79fe01476e41d1fa357a0d05894da5}{feature\+Polar\+Indices}} = \mbox{\hyperlink{namespaceget_point_cloud_a0dccab4a9c9f55f5a8a98a2a41708927}{get\+Point\+Cloud\+Polar\+Ind}}(\mbox{\hyperlink{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}}) +\item +\mbox{\hyperlink{namespaceget_point_cloud_ab23f5124628a67cb3da370ff515d7f8a}{feature\+Polar\+Image}} = np.\+zeros\+\_\+like(\mbox{\hyperlink{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}}) +\item +\mbox{\hyperlink{namespaceget_point_cloud_afc536b8d1febbe73625037539b22dae7}{feature\+Azim}} +\item +\mbox{\hyperlink{namespaceget_point_cloud_a0b5c7e3ed1c2acd58088bfc6bd2064cf}{feature\+Range}} +\item +\mbox{\hyperlink{namespaceget_point_cloud_ab9927de0f2ac5e7a36f51077c9c4dafe}{img\+Cart}} = convert\+Polar\+Image\+To\+Cartesian(\mbox{\hyperlink{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}}) +\item +\mbox{\hyperlink{namespaceget_point_cloud_af68a5edb2e0c03691df3560577eeeb8c}{img\+Cart\+RGB}} = cv2.\+cvt\+Color(\mbox{\hyperlink{namespaceget_point_cloud_ab9927de0f2ac5e7a36f51077c9c4dafe}{img\+Cart}}, cv2.\+COLOR\+\_\+\+GRAY2\+BGR) +\item +\mbox{\hyperlink{namespaceget_point_cloud_a39a522115419b34c999e9aafdacfdaf1}{feature\+Img\+Cart}} = convert\+Polar\+Image\+To\+Cartesian(\mbox{\hyperlink{namespaceget_point_cloud_ab23f5124628a67cb3da370ff515d7f8a}{feature\+Polar\+Image}}) +\item +\mbox{\hyperlink{namespaceget_point_cloud_ae0323a9039add2978bf5b49550572c7c}{c}} = cv2.\+wait\+Key(100) +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespaceget_point_cloud_a0dccab4a9c9f55f5a8a98a2a41708927}\label{namespaceget_point_cloud_a0dccab4a9c9f55f5a8a98a2a41708927}} +\index{getPointCloud@{getPointCloud}!getPointCloudPolarInd@{getPointCloudPolarInd}} +\index{getPointCloudPolarInd@{getPointCloudPolarInd}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{getPointCloudPolarInd()}{getPointCloudPolarInd()}} +{\footnotesize\ttfamily np.\+ndarray get\+Point\+Cloud.\+get\+Point\+Cloud\+Polar\+Ind (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{polar\+Image, }\item[{float }]{peak\+Distance = {\ttfamily None}, }\item[{float }]{peak\+Prominence = {\ttfamily None} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Given a radar image, generate a list of polar indices + based on peak detection with pruning + +@param[in] peakDistance Minimum distance to be counted as a peak +@param[in] peakProminence Minimum prominence to be counted as a peak + +@return (K x 2) Np array of polar coordinates with each row [thetaInd, rInd] being indices in the polar image +\end{DoxyVerb} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespaceget_point_cloud_ae0323a9039add2978bf5b49550572c7c}\label{namespaceget_point_cloud_ae0323a9039add2978bf5b49550572c7c}} +\index{getPointCloud@{getPointCloud}!c@{c}} +\index{c@{c}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{c}{c}} +{\footnotesize\ttfamily c = cv2.\+wait\+Key(100)} + +\mbox{\Hypertarget{namespaceget_point_cloud_abef58ec544fb87b0bc3d6657c3824bfc}\label{namespaceget_point_cloud_abef58ec544fb87b0bc3d6657c3824bfc}} +\index{getPointCloud@{getPointCloud}!dataPath@{dataPath}} +\index{dataPath@{dataPath}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{dataPath}{dataPath}} +{\footnotesize\ttfamily data\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar\char`\"{})} + +\mbox{\Hypertarget{namespaceget_point_cloud_a0d700e6dfa2a9f624cd51f991a793585}\label{namespaceget_point_cloud_a0d700e6dfa2a9f624cd51f991a793585}} +\index{getPointCloud@{getPointCloud}!datasetName@{datasetName}} +\index{datasetName@{datasetName}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{datasetName}{datasetName}} +{\footnotesize\ttfamily int dataset\+Name = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{}} + +\mbox{\Hypertarget{namespaceget_point_cloud_afc536b8d1febbe73625037539b22dae7}\label{namespaceget_point_cloud_afc536b8d1febbe73625037539b22dae7}} +\index{getPointCloud@{getPointCloud}!featureAzim@{featureAzim}} +\index{featureAzim@{featureAzim}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{featureAzim}{featureAzim}} +{\footnotesize\ttfamily feature\+Azim} + +\mbox{\Hypertarget{namespaceget_point_cloud_a39a522115419b34c999e9aafdacfdaf1}\label{namespaceget_point_cloud_a39a522115419b34c999e9aafdacfdaf1}} +\index{getPointCloud@{getPointCloud}!featureImgCart@{featureImgCart}} +\index{featureImgCart@{featureImgCart}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{featureImgCart}{featureImgCart}} +{\footnotesize\ttfamily feature\+Img\+Cart = convert\+Polar\+Image\+To\+Cartesian(\mbox{\hyperlink{namespaceget_point_cloud_ab23f5124628a67cb3da370ff515d7f8a}{feature\+Polar\+Image}})} + +\mbox{\Hypertarget{namespaceget_point_cloud_ab23f5124628a67cb3da370ff515d7f8a}\label{namespaceget_point_cloud_ab23f5124628a67cb3da370ff515d7f8a}} +\index{getPointCloud@{getPointCloud}!featurePolarImage@{featurePolarImage}} +\index{featurePolarImage@{featurePolarImage}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{featurePolarImage}{featurePolarImage}} +{\footnotesize\ttfamily feature\+Polar\+Image = np.\+zeros\+\_\+like(\mbox{\hyperlink{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}})} + +\mbox{\Hypertarget{namespaceget_point_cloud_aaf79fe01476e41d1fa357a0d05894da5}\label{namespaceget_point_cloud_aaf79fe01476e41d1fa357a0d05894da5}} +\index{getPointCloud@{getPointCloud}!featurePolarIndices@{featurePolarIndices}} +\index{featurePolarIndices@{featurePolarIndices}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{featurePolarIndices}{featurePolarIndices}} +{\footnotesize\ttfamily np.\+ndarray feature\+Polar\+Indices = \mbox{\hyperlink{namespaceget_point_cloud_a0dccab4a9c9f55f5a8a98a2a41708927}{get\+Point\+Cloud\+Polar\+Ind}}(\mbox{\hyperlink{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}})} + +\mbox{\Hypertarget{namespaceget_point_cloud_a0b5c7e3ed1c2acd58088bfc6bd2064cf}\label{namespaceget_point_cloud_a0b5c7e3ed1c2acd58088bfc6bd2064cf}} +\index{getPointCloud@{getPointCloud}!featureRange@{featureRange}} +\index{featureRange@{featureRange}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{featureRange}{featureRange}} +{\footnotesize\ttfamily feature\+Range} + +\mbox{\Hypertarget{namespaceget_point_cloud_ab9927de0f2ac5e7a36f51077c9c4dafe}\label{namespaceget_point_cloud_ab9927de0f2ac5e7a36f51077c9c4dafe}} +\index{getPointCloud@{getPointCloud}!imgCart@{imgCart}} +\index{imgCart@{imgCart}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{imgCart}{imgCart}} +{\footnotesize\ttfamily img\+Cart = convert\+Polar\+Image\+To\+Cartesian(\mbox{\hyperlink{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}{img\+Polar}})} + +\mbox{\Hypertarget{namespaceget_point_cloud_af68a5edb2e0c03691df3560577eeeb8c}\label{namespaceget_point_cloud_af68a5edb2e0c03691df3560577eeeb8c}} +\index{getPointCloud@{getPointCloud}!imgCartRGB@{imgCartRGB}} +\index{imgCartRGB@{imgCartRGB}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{imgCartRGB}{imgCartRGB}} +{\footnotesize\ttfamily img\+Cart\+RGB = cv2.\+cvt\+Color(\mbox{\hyperlink{namespaceget_point_cloud_ab9927de0f2ac5e7a36f51077c9c4dafe}{img\+Cart}}, cv2.\+COLOR\+\_\+\+GRAY2\+BGR)} + +\mbox{\Hypertarget{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}\label{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}} +\index{getPointCloud@{getPointCloud}!imgPolar@{imgPolar}} +\index{imgPolar@{imgPolar}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{imgPolar}{imgPolar}} +{\footnotesize\ttfamily img\+Polar = \mbox{\hyperlink{namespaceget_point_cloud_a662fb0cf784aecaa685e2a1bd9b430ab}{stream\+Arr}}\mbox{[}\+:, \+:, i\mbox{]}} + +\mbox{\Hypertarget{namespaceget_point_cloud_a012224f6fb0d9dcb13f93fb89f037799}\label{namespaceget_point_cloud_a012224f6fb0d9dcb13f93fb89f037799}} +\index{getPointCloud@{getPointCloud}!nImgs@{nImgs}} +\index{nImgs@{nImgs}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{nImgs}{nImgs}} +{\footnotesize\ttfamily n\+Imgs = stream\+Arr.\+shape\mbox{[}2\mbox{]}} + +\mbox{\Hypertarget{namespaceget_point_cloud_a662fb0cf784aecaa685e2a1bd9b430ab}\label{namespaceget_point_cloud_a662fb0cf784aecaa685e2a1bd9b430ab}} +\index{getPointCloud@{getPointCloud}!streamArr@{streamArr}} +\index{streamArr@{streamArr}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{streamArr}{streamArr}} +{\footnotesize\ttfamily stream\+Arr = get\+Radar\+Stream\+Polar(\mbox{\hyperlink{namespaceget_point_cloud_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespaceget_point_cloud_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}})} + +\mbox{\Hypertarget{namespaceget_point_cloud_ac559b123c3618ef31794f03fb8742e8e}\label{namespaceget_point_cloud_ac559b123c3618ef31794f03fb8742e8e}} +\index{getPointCloud@{getPointCloud}!timestampPath@{timestampPath}} +\index{timestampPath@{timestampPath}!getPointCloud@{getPointCloud}} +\doxysubsubsection{\texorpdfstring{timestampPath}{timestampPath}} +{\footnotesize\ttfamily timestamp\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{})} + diff --git a/doc/latex/namespaceget_transform_k_l_t.tex b/doc/latex/namespaceget_transform_k_l_t.tex new file mode 100644 index 0000000..2c6ce60 --- /dev/null +++ b/doc/latex/namespaceget_transform_k_l_t.tex @@ -0,0 +1,543 @@ +\hypertarget{namespaceget_transform_k_l_t}{}\doxysection{get\+Transform\+KLT Namespace Reference} +\label{namespaceget_transform_k_l_t}\index{getTransformKLT@{getTransformKLT}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +None \mbox{\hyperlink{namespaceget_transform_k_l_t_a14efd28bd750b3627d98d5be79bac379}{visualize\+\_\+transform}} (np.\+ndarray \mbox{\hyperlink{namespaceget_transform_k_l_t_a2859654ba27c6c8017869a188748e446}{prev\+Img}}, np.\+ndarray \mbox{\hyperlink{namespaceget_transform_k_l_t_a7030b1f08a51af7a83a292a5d887733c}{curr\+Img}}, np.\+ndarray prev\+Feature\+Coord, np.\+ndarray new\+Feature\+Coord, float \mbox{\hyperlink{namespaceget_transform_k_l_t_a62197192f0fbf4e0675eb37be1c4c175}{alpha}}=1, str \mbox{\hyperlink{namespaceget_transform_k_l_t_af458882b9b7797c19efdc0d53203b2e4}{extra\+Label}}=\char`\"{}\char`\"{}, bool \mbox{\hyperlink{namespaceget_transform_k_l_t_a584efbd5d11809943039e71845b0cd7f}{show}}=False) +\item +def \mbox{\hyperlink{namespaceget_transform_k_l_t_aec2c9cf17d6e459e271c80aa5376bfba}{estimate\+Transform\+Using\+Delats}} (np.\+ndarray src\+Coords, np.\+ndarray target\+Coords) +\item +tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{namespaceget_transform_k_l_t_a57049ac993252c8c3b8302ef994e7e5d}{calculate\+Transform\+SVD}} (np.\+ndarray src\+Coords, np.\+ndarray target\+Coords) +\item +tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{namespaceget_transform_k_l_t_a5247db70b7a571740c7f595efd3cb24e}{calculate\+Transform\+Dth}} (np.\+ndarray src\+Coords, np.\+ndarray target\+Coords) +\item +tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{namespaceget_transform_k_l_t_a2e0ccc9d641f582521e59400a74ed8bf}{calculate\+Transform\+Dx\+Dth}} (np.\+ndarray src\+Coords, np.\+ndarray target\+Coords) +\item +tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{namespaceget_transform_k_l_t_ae26aaa718930078284fc40d348d091be}{calculate\+Transform}} (np.\+ndarray src\+Coords, np.\+ndarray target\+Coords) +\item +tuple\mbox{[}np.\+ndarray, np.\+ndarray, np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{namespaceget_transform_k_l_t_a15357d00ea355252f4f042f054c0ecca}{get\+Tracked\+Points\+KLT}} (np.\+ndarray src\+Img, np.\+ndarray target\+Img, np.\+ndarray blob\+Coord\+Src) +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +bool \mbox{\hyperlink{namespaceget_transform_k_l_t_aee649bd757375f54cb00357ecdf164a0}{PLOT\+\_\+\+BAD\+\_\+\+FEATURES}} = False +\item +int \mbox{\hyperlink{namespaceget_transform_k_l_t_a5a1ecb7fe1a4f12cba5dfa099fb10bba}{N\+\_\+\+FEATURES\+\_\+\+BEFORE\+\_\+\+RETRACK}} = 60 +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_abafedb46c85f0c231fcfe7083f7ceae6}{LK\+\_\+\+PARAMS}} +\item +int \mbox{\hyperlink{namespaceget_transform_k_l_t_afe12a2a7d5c2b32fa7cb5b98139ea2e7}{ERR\+\_\+\+THRESHOLD}} = 10 +\item +int \mbox{\hyperlink{namespaceget_transform_k_l_t_a0d700e6dfa2a9f624cd51f991a793585}{dataset\+Name}} = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{} +\item +int \mbox{\hyperlink{namespaceget_transform_k_l_t_ae4502b0a2a023faba5a5ea0da218d623}{start\+Img\+Ind}} = int(sys.\+argv\mbox{[}2\mbox{]}) if len(sys.\+argv) $>$ 2 else 0 +\item +int \mbox{\hyperlink{namespaceget_transform_k_l_t_abc00d48bd1d419b17ec367d6d5becaef}{REMOVE\+\_\+\+OLD\+\_\+\+RESULTS}} = bool(int(sys.\+argv\mbox{[}3\mbox{]})) if len(sys.\+argv) $>$ 3 else False +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar\char`\"{}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}} = get\+Radar\+Img\+Paths(\mbox{\hyperlink{namespaceget_transform_k_l_t_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespaceget_transform_k_l_t_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a012224f6fb0d9dcb13f93fb89f037799}{n\+Imgs}} = len(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a3ab4a737af4a26ba845d42353015fa10}{img\+Save\+Path}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a4575c573acd9741770c3a97dac5062ba}{traj\+Save\+Path}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a776784c483557d4b64ced9d3423bdb4c}{save\+Feature\+Path}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a0dd30d2c854453a5a754e2a81c971651}{exist\+\_\+ok}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a2859654ba27c6c8017869a188748e446}{prev\+Img}} = get\+Cart\+Image\+From\+Img\+Paths(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, img\+No) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_ab9f5ca1d8e721da9310e0e6689a1ecff}{blob\+Coord}} = data\mbox{[}\char`\"{}blob\+Coord\char`\"{}\mbox{]} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_aa926dcdb7bac0d33b238c31e26b39275}{gt\+Traj\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}gt\char`\"{}, \char`\"{}radar\+\_\+odometry.\+csv\char`\"{}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a08c3a4c31d5817521dbdf24631e562c7}{gt\+Traj}} = get\+Ground\+Truth\+Trajectory(\mbox{\hyperlink{namespaceget_transform_k_l_t_aa926dcdb7bac0d33b238c31e26b39275}{gt\+Traj\+Path}}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a2435800391d95bbda30c8aee08e55c54}{init\+Timestamp}} = radar\+Img\+Path\+To\+Timestamp(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}\mbox{[}\mbox{\hyperlink{namespaceget_transform_k_l_t_ae4502b0a2a023faba5a5ea0da218d623}{start\+Img\+Ind}}\mbox{]}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_ab5fca5820e0a2b2742ba664eb8931e57}{init\+Pose}} = gt\+Traj.\+get\+Pose\+At\+Times(\mbox{\hyperlink{namespaceget_transform_k_l_t_a2435800391d95bbda30c8aee08e55c54}{init\+Timestamp}}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d5e95f4d6054db64fd36facd315f2e6}{est\+Traj}} = \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}}(\mbox{[}\mbox{\hyperlink{namespaceget_transform_k_l_t_a2435800391d95bbda30c8aee08e55c54}{init\+Timestamp}}\mbox{]}, \mbox{[}\mbox{\hyperlink{namespaceget_transform_k_l_t_ab5fca5820e0a2b2742ba664eb8931e57}{init\+Pose}}\mbox{]}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a45be5cadab0e8b0e395d21a6e7f85ca7}{good\+\_\+old}} = None +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a550769bbd4e7537ff90a656f5b0c23b2}{start}} = tic() +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a7030b1f08a51af7a83a292a5d887733c}{curr\+Img}} = get\+Cart\+Image\+From\+Img\+Paths(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, img\+No) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a2327e63b5316a77636521af36e611518}{prev\+\_\+good\+\_\+old}} = \mbox{\hyperlink{namespaceget_transform_k_l_t_a45be5cadab0e8b0e395d21a6e7f85ca7}{good\+\_\+old}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_ae52bd29a36c41945a19cd0c56c5efebc}{good\+\_\+new}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a64e5e9d133965546d92e7de800454c3d}{bad\+\_\+new}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a6e4f9c6a6f5046478d8c0c0dc1bfdd93}{bad\+\_\+old}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a0197cb5e5c380ebb913e29e92eb18c83}{corr\+Status}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_ac3251f460d048fe4ae016b44b7d7d370}{n\+Good\+Features}} = good\+\_\+new.\+shape\mbox{[}0\mbox{]} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a1a8e9592154f2e95676d6e7e13aa77b1}{n\+Bad\+Features}} = bad\+\_\+new.\+shape\mbox{[}0\mbox{]} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a191221b7abb5cc30e04160ad276a2404}{n\+Features}} = \mbox{\hyperlink{namespaceget_transform_k_l_t_ac3251f460d048fe4ae016b44b7d7d370}{n\+Good\+Features}} + \mbox{\hyperlink{namespaceget_transform_k_l_t_a1a8e9592154f2e95676d6e7e13aa77b1}{n\+Bad\+Features}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_acb95449a94688af33f6e9bb090cf2936}{R}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a5e36941b3d856737e81516acd45edc50}{h}} +\item +tuple \mbox{\hyperlink{namespaceget_transform_k_l_t_a5709b84de1dc903d78a2f503b956e541}{transformed\+\_\+pts}} = (\mbox{\hyperlink{namespaceget_transform_k_l_t_acb95449a94688af33f6e9bb090cf2936}{R}} @ good\+\_\+new.\+T + \mbox{\hyperlink{namespaceget_transform_k_l_t_a5e36941b3d856737e81516acd45edc50}{h}}).T +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a584efbd5d11809943039e71845b0cd7f}{show}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a6d09892567e78d7f00528e9cabeec3b3}{curr\+Timestamp}} = radar\+Img\+Path\+To\+Timestamp(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}\mbox{[}img\+No\mbox{]}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a24aecbea81eae21b50e7dedc92066c6e}{gt\+\_\+deltas}} = gt\+Traj.\+get\+Ground\+Truth\+Deltas\+At\+Time(\mbox{\hyperlink{namespaceget_transform_k_l_t_a6d09892567e78d7f00528e9cabeec3b3}{curr\+Timestamp}}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_aa12b25e34c9134c20bd08a8c04a4aae8}{est\+\_\+deltas}} = convert\+Rand\+Hto\+Deltas(\mbox{\hyperlink{namespaceget_transform_k_l_t_acb95449a94688af33f6e9bb090cf2936}{R}}, \mbox{\hyperlink{namespaceget_transform_k_l_t_a5e36941b3d856737e81516acd45edc50}{h}}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a62197192f0fbf4e0675eb37be1c4c175}{alpha}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_af458882b9b7797c19efdc0d53203b2e4}{extra\+Label}} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a2797efdfd7b06e306947463a2a9b9017}{to\+Save\+Img\+Path}} = os.\+path.\+join(\mbox{\hyperlink{namespaceget_transform_k_l_t_a3ab4a737af4a26ba845d42353015fa10}{img\+Save\+Path}}, f\char`\"{}\{img\+No\+:04d\}.jpg\char`\"{}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a71e24db6312e99e75bdc49e89d65948e}{timestamp}} = radar\+Img\+Path\+To\+Timestamp(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}\mbox{[}img\+No\mbox{]}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_aacddc911cdfe5cd5ec97b084754542d4}{dx}} = \mbox{\hyperlink{namespaceget_transform_k_l_t_aa12b25e34c9134c20bd08a8c04a4aae8}{est\+\_\+deltas}}\mbox{[}0\mbox{]} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a1771cf24eb9fba7812cc70ad9642945d}{dth}} = \mbox{\hyperlink{namespaceget_transform_k_l_t_aa12b25e34c9134c20bd08a8c04a4aae8}{est\+\_\+deltas}}\mbox{[}2\mbox{]} +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_aa51f3d18d70a9ff98f22758e37152ac6}{to\+Save\+Traj\+Path}} = os.\+path.\+join(\mbox{\hyperlink{namespaceget_transform_k_l_t_a4575c573acd9741770c3a97dac5062ba}{traj\+Save\+Path}}, f\char`\"{}\{img\+No\+:04d\}.jpg\char`\"{}) +\item +\mbox{\hyperlink{namespaceget_transform_k_l_t_a07670d1a0d3d0aa33543d1546c86bab0}{save\+Path}} +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespaceget_transform_k_l_t_ae26aaa718930078284fc40d348d091be}\label{namespaceget_transform_k_l_t_ae26aaa718930078284fc40d348d091be}} +\index{getTransformKLT@{getTransformKLT}!calculateTransform@{calculateTransform}} +\index{calculateTransform@{calculateTransform}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{calculateTransform()}{calculateTransform()}} +{\footnotesize\ttfamily tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} get\+Transform\+KLT.\+calculate\+Transform (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{src\+Coords, }\item[{np.\+ndarray}]{target\+Coords }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Calculate transform given 2 point correspondences. + +TODO: Make this work with SVD +@see getCorrespondences.py +Inputs: +srcCoords - (N, 2) array of source points +targetCoords - (N, 2) array of target points +Outputs: +(R, h) - (2 x 2), (2 x 1) arrays: rotation and translation. Apply + to old points srcCoords to get new points targetCoords, i.e. + R * srcCoords + h = targetCoords +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceget_transform_k_l_t_a5247db70b7a571740c7f595efd3cb24e}\label{namespaceget_transform_k_l_t_a5247db70b7a571740c7f595efd3cb24e}} +\index{getTransformKLT@{getTransformKLT}!calculateTransformDth@{calculateTransformDth}} +\index{calculateTransformDth@{calculateTransformDth}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{calculateTransformDth()}{calculateTransformDth()}} +{\footnotesize\ttfamily tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} get\+Transform\+KLT.\+calculate\+Transform\+Dth (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{src\+Coords, }\item[{np.\+ndarray}]{target\+Coords }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a2e0ccc9d641f582521e59400a74ed8bf}\label{namespaceget_transform_k_l_t_a2e0ccc9d641f582521e59400a74ed8bf}} +\index{getTransformKLT@{getTransformKLT}!calculateTransformDxDth@{calculateTransformDxDth}} +\index{calculateTransformDxDth@{calculateTransformDxDth}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{calculateTransformDxDth()}{calculateTransformDxDth()}} +{\footnotesize\ttfamily tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} get\+Transform\+KLT.\+calculate\+Transform\+Dx\+Dth (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{src\+Coords, }\item[{np.\+ndarray}]{target\+Coords }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a57049ac993252c8c3b8302ef994e7e5d}\label{namespaceget_transform_k_l_t_a57049ac993252c8c3b8302ef994e7e5d}} +\index{getTransformKLT@{getTransformKLT}!calculateTransformSVD@{calculateTransformSVD}} +\index{calculateTransformSVD@{calculateTransformSVD}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{calculateTransformSVD()}{calculateTransformSVD()}} +{\footnotesize\ttfamily tuple\mbox{[}np.\+ndarray, np.\+ndarray\mbox{]} get\+Transform\+KLT.\+calculate\+Transform\+SVD (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{src\+Coords, }\item[{np.\+ndarray}]{target\+Coords }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Calculate transform given 2 point correspondences using SVD. +Conventions: +Rx1 + h = x0 + +Reference: https://www.sciencedirect.com/science/article/pii/002192909400116L + http://nghiaho.com/?page_id=671 +@see getCorrespondences.py +Inputs: +srcCoords - (N, 2) array of source points, x0 +targetCoords - (N, 2) array of target points, x1 +Outputs: +(R, h) - (2 x 2), (2 x 1) arrays: rotation and translation. Apply + to old points srcCoords to get new points targetCoords, i.e. + R * srcCoords + h = targetCoords +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceget_transform_k_l_t_aec2c9cf17d6e459e271c80aa5376bfba}\label{namespaceget_transform_k_l_t_aec2c9cf17d6e459e271c80aa5376bfba}} +\index{getTransformKLT@{getTransformKLT}!estimateTransformUsingDelats@{estimateTransformUsingDelats}} +\index{estimateTransformUsingDelats@{estimateTransformUsingDelats}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{estimateTransformUsingDelats()}{estimateTransformUsingDelats()}} +{\footnotesize\ttfamily def get\+Transform\+KLT.\+estimate\+Transform\+Using\+Delats (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{src\+Coords, }\item[{np.\+ndarray}]{target\+Coords }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Estimate KLT [x, y] frame translation by taking average of deltaX and deltaYs from source +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceget_transform_k_l_t_a15357d00ea355252f4f042f054c0ecca}\label{namespaceget_transform_k_l_t_a15357d00ea355252f4f042f054c0ecca}} +\index{getTransformKLT@{getTransformKLT}!getTrackedPointsKLT@{getTrackedPointsKLT}} +\index{getTrackedPointsKLT@{getTrackedPointsKLT}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{getTrackedPointsKLT()}{getTrackedPointsKLT()}} +{\footnotesize\ttfamily tuple\mbox{[}np.\+ndarray, np.\+ndarray, np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} get\+Transform\+KLT.\+get\+Tracked\+Points\+KLT (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{src\+Img, }\item[{np.\+ndarray}]{target\+Img, }\item[{np.\+ndarray }]{blob\+Coord\+Src }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Get tracked points using the OpenCV KLT algorithm given the + src and target img, and points from the src img to track + +@param[in] srcIimg (M x N) Source image +@param[in] targetImg (M x N) Target image +@param[in] blobIndicesSrc Indices source features (K x 2) (potentially (K x 3)) @note [x, y] format + +@note Will append k more features if it finds that there are not enough features to track +@note Will also prune away features. Hence might have K' points instead + +@return good_new (K' x 2) New points considered as good correspondences +@return good_old (K' x 2) Old points considered as good correspondences + +@return bad_new (K'' x 2) New points considered as bad correspondences +@return bad_old (K'' x 2) Old points considered as bad correspondences + +@return correspondenceStatus ((K + k) x 2) Status of correspondences (1 for valid, 0 for invalid/error) +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceget_transform_k_l_t_a14efd28bd750b3627d98d5be79bac379}\label{namespaceget_transform_k_l_t_a14efd28bd750b3627d98d5be79bac379}} +\index{getTransformKLT@{getTransformKLT}!visualize\_transform@{visualize\_transform}} +\index{visualize\_transform@{visualize\_transform}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{visualize\_transform()}{visualize\_transform()}} +{\footnotesize\ttfamily None get\+Transform\+KLT.\+visualize\+\_\+transform (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{prev\+Img, }\item[{np.\+ndarray}]{curr\+Img, }\item[{np.\+ndarray}]{prev\+Feature\+Coord, }\item[{np.\+ndarray}]{new\+Feature\+Coord, }\item[{float }]{alpha = {\ttfamily 1}, }\item[{str }]{extra\+Label = {\ttfamily \char`\"{}\char`\"{}}, }\item[{bool }]{show = {\ttfamily False} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Visualize transform of good and bad points in 2 images +\end{DoxyVerb} + + +\begin{DoxyVerb}plt.subplot(1, 2, 1) +plt.imshow(prevImg) +plt.scatter(prevFeatureInd[:, 1], + prevFeatureInd[:, 0], + marker='.', + color='red') +plt.title("Old Image") +plt.axis("off") + +plt.subplot(1, 2, 2) +\end{DoxyVerb} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a62197192f0fbf4e0675eb37be1c4c175}\label{namespaceget_transform_k_l_t_a62197192f0fbf4e0675eb37be1c4c175}} +\index{getTransformKLT@{getTransformKLT}!alpha@{alpha}} +\index{alpha@{alpha}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{alpha}{alpha}} +{\footnotesize\ttfamily alpha} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a64e5e9d133965546d92e7de800454c3d}\label{namespaceget_transform_k_l_t_a64e5e9d133965546d92e7de800454c3d}} +\index{getTransformKLT@{getTransformKLT}!bad\_new@{bad\_new}} +\index{bad\_new@{bad\_new}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{bad\_new}{bad\_new}} +{\footnotesize\ttfamily bad\+\_\+new} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a6e4f9c6a6f5046478d8c0c0dc1bfdd93}\label{namespaceget_transform_k_l_t_a6e4f9c6a6f5046478d8c0c0dc1bfdd93}} +\index{getTransformKLT@{getTransformKLT}!bad\_old@{bad\_old}} +\index{bad\_old@{bad\_old}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{bad\_old}{bad\_old}} +{\footnotesize\ttfamily bad\+\_\+old} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_ab9f5ca1d8e721da9310e0e6689a1ecff}\label{namespaceget_transform_k_l_t_ab9f5ca1d8e721da9310e0e6689a1ecff}} +\index{getTransformKLT@{getTransformKLT}!blobCoord@{blobCoord}} +\index{blobCoord@{blobCoord}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{blobCoord}{blobCoord}} +{\footnotesize\ttfamily blob\+Coord = data\mbox{[}\char`\"{}blob\+Coord\char`\"{}\mbox{]}} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a0197cb5e5c380ebb913e29e92eb18c83}\label{namespaceget_transform_k_l_t_a0197cb5e5c380ebb913e29e92eb18c83}} +\index{getTransformKLT@{getTransformKLT}!corrStatus@{corrStatus}} +\index{corrStatus@{corrStatus}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{corrStatus}{corrStatus}} +{\footnotesize\ttfamily corr\+Status} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a7030b1f08a51af7a83a292a5d887733c}\label{namespaceget_transform_k_l_t_a7030b1f08a51af7a83a292a5d887733c}} +\index{getTransformKLT@{getTransformKLT}!currImg@{currImg}} +\index{currImg@{currImg}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{currImg}{currImg}} +{\footnotesize\ttfamily curr\+Img = get\+Cart\+Image\+From\+Img\+Paths(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, img\+No)} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a6d09892567e78d7f00528e9cabeec3b3}\label{namespaceget_transform_k_l_t_a6d09892567e78d7f00528e9cabeec3b3}} +\index{getTransformKLT@{getTransformKLT}!currTimestamp@{currTimestamp}} +\index{currTimestamp@{currTimestamp}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{currTimestamp}{currTimestamp}} +{\footnotesize\ttfamily curr\+Timestamp = radar\+Img\+Path\+To\+Timestamp(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}\mbox{[}img\+No\mbox{]})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_abef58ec544fb87b0bc3d6657c3824bfc}\label{namespaceget_transform_k_l_t_abef58ec544fb87b0bc3d6657c3824bfc}} +\index{getTransformKLT@{getTransformKLT}!dataPath@{dataPath}} +\index{dataPath@{dataPath}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{dataPath}{dataPath}} +{\footnotesize\ttfamily data\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar\char`\"{})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a0d700e6dfa2a9f624cd51f991a793585}\label{namespaceget_transform_k_l_t_a0d700e6dfa2a9f624cd51f991a793585}} +\index{getTransformKLT@{getTransformKLT}!datasetName@{datasetName}} +\index{datasetName@{datasetName}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{datasetName}{datasetName}} +{\footnotesize\ttfamily int dataset\+Name = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{}} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a1771cf24eb9fba7812cc70ad9642945d}\label{namespaceget_transform_k_l_t_a1771cf24eb9fba7812cc70ad9642945d}} +\index{getTransformKLT@{getTransformKLT}!dth@{dth}} +\index{dth@{dth}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{dth}{dth}} +{\footnotesize\ttfamily dth = \mbox{\hyperlink{namespaceget_transform_k_l_t_aa12b25e34c9134c20bd08a8c04a4aae8}{est\+\_\+deltas}}\mbox{[}2\mbox{]}} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_aacddc911cdfe5cd5ec97b084754542d4}\label{namespaceget_transform_k_l_t_aacddc911cdfe5cd5ec97b084754542d4}} +\index{getTransformKLT@{getTransformKLT}!dx@{dx}} +\index{dx@{dx}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{dx}{dx}} +{\footnotesize\ttfamily dx = \mbox{\hyperlink{namespaceget_transform_k_l_t_aa12b25e34c9134c20bd08a8c04a4aae8}{est\+\_\+deltas}}\mbox{[}0\mbox{]}} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_afe12a2a7d5c2b32fa7cb5b98139ea2e7}\label{namespaceget_transform_k_l_t_afe12a2a7d5c2b32fa7cb5b98139ea2e7}} +\index{getTransformKLT@{getTransformKLT}!ERR\_THRESHOLD@{ERR\_THRESHOLD}} +\index{ERR\_THRESHOLD@{ERR\_THRESHOLD}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{ERR\_THRESHOLD}{ERR\_THRESHOLD}} +{\footnotesize\ttfamily int ERR\+\_\+\+THRESHOLD = 10} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_aa12b25e34c9134c20bd08a8c04a4aae8}\label{namespaceget_transform_k_l_t_aa12b25e34c9134c20bd08a8c04a4aae8}} +\index{getTransformKLT@{getTransformKLT}!est\_deltas@{est\_deltas}} +\index{est\_deltas@{est\_deltas}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{est\_deltas}{est\_deltas}} +{\footnotesize\ttfamily est\+\_\+deltas = convert\+Rand\+Hto\+Deltas(\mbox{\hyperlink{namespaceget_transform_k_l_t_acb95449a94688af33f6e9bb090cf2936}{R}}, \mbox{\hyperlink{namespaceget_transform_k_l_t_a5e36941b3d856737e81516acd45edc50}{h}})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a8d5e95f4d6054db64fd36facd315f2e6}\label{namespaceget_transform_k_l_t_a8d5e95f4d6054db64fd36facd315f2e6}} +\index{getTransformKLT@{getTransformKLT}!estTraj@{estTraj}} +\index{estTraj@{estTraj}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{estTraj}{estTraj}} +{\footnotesize\ttfamily est\+Traj = \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}}(\mbox{[}\mbox{\hyperlink{namespaceget_transform_k_l_t_a2435800391d95bbda30c8aee08e55c54}{init\+Timestamp}}\mbox{]}, \mbox{[}\mbox{\hyperlink{namespaceget_transform_k_l_t_ab5fca5820e0a2b2742ba664eb8931e57}{init\+Pose}}\mbox{]})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a0dd30d2c854453a5a754e2a81c971651}\label{namespaceget_transform_k_l_t_a0dd30d2c854453a5a754e2a81c971651}} +\index{getTransformKLT@{getTransformKLT}!exist\_ok@{exist\_ok}} +\index{exist\_ok@{exist\_ok}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{exist\_ok}{exist\_ok}} +{\footnotesize\ttfamily exist\+\_\+ok} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_af458882b9b7797c19efdc0d53203b2e4}\label{namespaceget_transform_k_l_t_af458882b9b7797c19efdc0d53203b2e4}} +\index{getTransformKLT@{getTransformKLT}!extraLabel@{extraLabel}} +\index{extraLabel@{extraLabel}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{extraLabel}{extraLabel}} +{\footnotesize\ttfamily extra\+Label} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_ae52bd29a36c41945a19cd0c56c5efebc}\label{namespaceget_transform_k_l_t_ae52bd29a36c41945a19cd0c56c5efebc}} +\index{getTransformKLT@{getTransformKLT}!good\_new@{good\_new}} +\index{good\_new@{good\_new}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{good\_new}{good\_new}} +{\footnotesize\ttfamily good\+\_\+new} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a45be5cadab0e8b0e395d21a6e7f85ca7}\label{namespaceget_transform_k_l_t_a45be5cadab0e8b0e395d21a6e7f85ca7}} +\index{getTransformKLT@{getTransformKLT}!good\_old@{good\_old}} +\index{good\_old@{good\_old}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{good\_old}{good\_old}} +{\footnotesize\ttfamily good\+\_\+old = None} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a24aecbea81eae21b50e7dedc92066c6e}\label{namespaceget_transform_k_l_t_a24aecbea81eae21b50e7dedc92066c6e}} +\index{getTransformKLT@{getTransformKLT}!gt\_deltas@{gt\_deltas}} +\index{gt\_deltas@{gt\_deltas}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{gt\_deltas}{gt\_deltas}} +{\footnotesize\ttfamily gt\+\_\+deltas = gt\+Traj.\+get\+Ground\+Truth\+Deltas\+At\+Time(\mbox{\hyperlink{namespaceget_transform_k_l_t_a6d09892567e78d7f00528e9cabeec3b3}{curr\+Timestamp}})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a08c3a4c31d5817521dbdf24631e562c7}\label{namespaceget_transform_k_l_t_a08c3a4c31d5817521dbdf24631e562c7}} +\index{getTransformKLT@{getTransformKLT}!gtTraj@{gtTraj}} +\index{gtTraj@{gtTraj}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{gtTraj}{gtTraj}} +{\footnotesize\ttfamily gt\+Traj = get\+Ground\+Truth\+Trajectory(\mbox{\hyperlink{namespaceget_transform_k_l_t_aa926dcdb7bac0d33b238c31e26b39275}{gt\+Traj\+Path}})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_aa926dcdb7bac0d33b238c31e26b39275}\label{namespaceget_transform_k_l_t_aa926dcdb7bac0d33b238c31e26b39275}} +\index{getTransformKLT@{getTransformKLT}!gtTrajPath@{gtTrajPath}} +\index{gtTrajPath@{gtTrajPath}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{gtTrajPath}{gtTrajPath}} +{\footnotesize\ttfamily gt\+Traj\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}gt\char`\"{}, \char`\"{}radar\+\_\+odometry.\+csv\char`\"{})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a5e36941b3d856737e81516acd45edc50}\label{namespaceget_transform_k_l_t_a5e36941b3d856737e81516acd45edc50}} +\index{getTransformKLT@{getTransformKLT}!h@{h}} +\index{h@{h}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{h}{h}} +{\footnotesize\ttfamily h} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}\label{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}} +\index{getTransformKLT@{getTransformKLT}!imgPathArr@{imgPathArr}} +\index{imgPathArr@{imgPathArr}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{imgPathArr}{imgPathArr}} +{\footnotesize\ttfamily img\+Path\+Arr = get\+Radar\+Img\+Paths(\mbox{\hyperlink{namespaceget_transform_k_l_t_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespaceget_transform_k_l_t_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a3ab4a737af4a26ba845d42353015fa10}\label{namespaceget_transform_k_l_t_a3ab4a737af4a26ba845d42353015fa10}} +\index{getTransformKLT@{getTransformKLT}!imgSavePath@{imgSavePath}} +\index{imgSavePath@{imgSavePath}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{imgSavePath}{imgSavePath}} +{\footnotesize\ttfamily img\+Save\+Path} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = os.path.join(\textcolor{stringliteral}{"{}."{}}, \textcolor{stringliteral}{"{}img"{}}, \textcolor{stringliteral}{"{}track\_klt\_thresholding"{}},} +\DoxyCodeLine{2 datasetName)} + +\end{DoxyCode} +\mbox{\Hypertarget{namespaceget_transform_k_l_t_ab5fca5820e0a2b2742ba664eb8931e57}\label{namespaceget_transform_k_l_t_ab5fca5820e0a2b2742ba664eb8931e57}} +\index{getTransformKLT@{getTransformKLT}!initPose@{initPose}} +\index{initPose@{initPose}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{initPose}{initPose}} +{\footnotesize\ttfamily init\+Pose = gt\+Traj.\+get\+Pose\+At\+Times(\mbox{\hyperlink{namespaceget_transform_k_l_t_a2435800391d95bbda30c8aee08e55c54}{init\+Timestamp}})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a2435800391d95bbda30c8aee08e55c54}\label{namespaceget_transform_k_l_t_a2435800391d95bbda30c8aee08e55c54}} +\index{getTransformKLT@{getTransformKLT}!initTimestamp@{initTimestamp}} +\index{initTimestamp@{initTimestamp}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{initTimestamp}{initTimestamp}} +{\footnotesize\ttfamily init\+Timestamp = radar\+Img\+Path\+To\+Timestamp(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}\mbox{[}\mbox{\hyperlink{namespaceget_transform_k_l_t_ae4502b0a2a023faba5a5ea0da218d623}{start\+Img\+Ind}}\mbox{]})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_abafedb46c85f0c231fcfe7083f7ceae6}\label{namespaceget_transform_k_l_t_abafedb46c85f0c231fcfe7083f7ceae6}} +\index{getTransformKLT@{getTransformKLT}!LK\_PARAMS@{LK\_PARAMS}} +\index{LK\_PARAMS@{LK\_PARAMS}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{LK\_PARAMS}{LK\_PARAMS}} +{\footnotesize\ttfamily LK\+\_\+\+PARAMS} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = dict(} +\DoxyCodeLine{2 \textcolor{comment}{\# level of pyramid search}} +\DoxyCodeLine{3 maxLevel=3,} +\DoxyCodeLine{4 \textcolor{comment}{\# termination criteria}} +\DoxyCodeLine{5 criteria=(cv2.TERM\_CRITERIA\_EPS | cv2.TERM\_CRITERIA\_COUNT, 10, 0.03))} + +\end{DoxyCode} +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a5a1ecb7fe1a4f12cba5dfa099fb10bba}\label{namespaceget_transform_k_l_t_a5a1ecb7fe1a4f12cba5dfa099fb10bba}} +\index{getTransformKLT@{getTransformKLT}!N\_FEATURES\_BEFORE\_RETRACK@{N\_FEATURES\_BEFORE\_RETRACK}} +\index{N\_FEATURES\_BEFORE\_RETRACK@{N\_FEATURES\_BEFORE\_RETRACK}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{N\_FEATURES\_BEFORE\_RETRACK}{N\_FEATURES\_BEFORE\_RETRACK}} +{\footnotesize\ttfamily int N\+\_\+\+FEATURES\+\_\+\+BEFORE\+\_\+\+RETRACK = 60} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a1a8e9592154f2e95676d6e7e13aa77b1}\label{namespaceget_transform_k_l_t_a1a8e9592154f2e95676d6e7e13aa77b1}} +\index{getTransformKLT@{getTransformKLT}!nBadFeatures@{nBadFeatures}} +\index{nBadFeatures@{nBadFeatures}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{nBadFeatures}{nBadFeatures}} +{\footnotesize\ttfamily n\+Bad\+Features = bad\+\_\+new.\+shape\mbox{[}0\mbox{]}} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a191221b7abb5cc30e04160ad276a2404}\label{namespaceget_transform_k_l_t_a191221b7abb5cc30e04160ad276a2404}} +\index{getTransformKLT@{getTransformKLT}!nFeatures@{nFeatures}} +\index{nFeatures@{nFeatures}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{nFeatures}{nFeatures}} +{\footnotesize\ttfamily n\+Features = \mbox{\hyperlink{namespaceget_transform_k_l_t_ac3251f460d048fe4ae016b44b7d7d370}{n\+Good\+Features}} + \mbox{\hyperlink{namespaceget_transform_k_l_t_a1a8e9592154f2e95676d6e7e13aa77b1}{n\+Bad\+Features}}} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_ac3251f460d048fe4ae016b44b7d7d370}\label{namespaceget_transform_k_l_t_ac3251f460d048fe4ae016b44b7d7d370}} +\index{getTransformKLT@{getTransformKLT}!nGoodFeatures@{nGoodFeatures}} +\index{nGoodFeatures@{nGoodFeatures}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{nGoodFeatures}{nGoodFeatures}} +{\footnotesize\ttfamily n\+Good\+Features = good\+\_\+new.\+shape\mbox{[}0\mbox{]}} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a012224f6fb0d9dcb13f93fb89f037799}\label{namespaceget_transform_k_l_t_a012224f6fb0d9dcb13f93fb89f037799}} +\index{getTransformKLT@{getTransformKLT}!nImgs@{nImgs}} +\index{nImgs@{nImgs}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{nImgs}{nImgs}} +{\footnotesize\ttfamily n\+Imgs = len(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_aee649bd757375f54cb00357ecdf164a0}\label{namespaceget_transform_k_l_t_aee649bd757375f54cb00357ecdf164a0}} +\index{getTransformKLT@{getTransformKLT}!PLOT\_BAD\_FEATURES@{PLOT\_BAD\_FEATURES}} +\index{PLOT\_BAD\_FEATURES@{PLOT\_BAD\_FEATURES}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{PLOT\_BAD\_FEATURES}{PLOT\_BAD\_FEATURES}} +{\footnotesize\ttfamily bool PLOT\+\_\+\+BAD\+\_\+\+FEATURES = False} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a2327e63b5316a77636521af36e611518}\label{namespaceget_transform_k_l_t_a2327e63b5316a77636521af36e611518}} +\index{getTransformKLT@{getTransformKLT}!prev\_good\_old@{prev\_good\_old}} +\index{prev\_good\_old@{prev\_good\_old}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{prev\_good\_old}{prev\_good\_old}} +{\footnotesize\ttfamily prev\+\_\+good\+\_\+old = \mbox{\hyperlink{namespaceget_transform_k_l_t_a45be5cadab0e8b0e395d21a6e7f85ca7}{good\+\_\+old}}} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a2859654ba27c6c8017869a188748e446}\label{namespaceget_transform_k_l_t_a2859654ba27c6c8017869a188748e446}} +\index{getTransformKLT@{getTransformKLT}!prevImg@{prevImg}} +\index{prevImg@{prevImg}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{prevImg}{prevImg}} +{\footnotesize\ttfamily prev\+Img = get\+Cart\+Image\+From\+Img\+Paths(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}, img\+No)} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_acb95449a94688af33f6e9bb090cf2936}\label{namespaceget_transform_k_l_t_acb95449a94688af33f6e9bb090cf2936}} +\index{getTransformKLT@{getTransformKLT}!R@{R}} +\index{R@{R}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{R}{R}} +{\footnotesize\ttfamily R} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_abc00d48bd1d419b17ec367d6d5becaef}\label{namespaceget_transform_k_l_t_abc00d48bd1d419b17ec367d6d5becaef}} +\index{getTransformKLT@{getTransformKLT}!REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}} +\index{REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{REMOVE\_OLD\_RESULTS}{REMOVE\_OLD\_RESULTS}} +{\footnotesize\ttfamily int REMOVE\+\_\+\+OLD\+\_\+\+RESULTS = bool(int(sys.\+argv\mbox{[}3\mbox{]})) if len(sys.\+argv) $>$ 3 else False} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a776784c483557d4b64ced9d3423bdb4c}\label{namespaceget_transform_k_l_t_a776784c483557d4b64ced9d3423bdb4c}} +\index{getTransformKLT@{getTransformKLT}!saveFeaturePath@{saveFeaturePath}} +\index{saveFeaturePath@{saveFeaturePath}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{saveFeaturePath}{saveFeaturePath}} +{\footnotesize\ttfamily save\+Feature\+Path} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = os.path.join(} +\DoxyCodeLine{2 imgSavePath.strip(os.path.sep) + f\textcolor{stringliteral}{"{}\_\{imgNo\}.npz"{}})} + +\end{DoxyCode} +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a07670d1a0d3d0aa33543d1546c86bab0}\label{namespaceget_transform_k_l_t_a07670d1a0d3d0aa33543d1546c86bab0}} +\index{getTransformKLT@{getTransformKLT}!savePath@{savePath}} +\index{savePath@{savePath}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{savePath}{savePath}} +{\footnotesize\ttfamily save\+Path} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a584efbd5d11809943039e71845b0cd7f}\label{namespaceget_transform_k_l_t_a584efbd5d11809943039e71845b0cd7f}} +\index{getTransformKLT@{getTransformKLT}!show@{show}} +\index{show@{show}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{show}{show}} +{\footnotesize\ttfamily show} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a550769bbd4e7537ff90a656f5b0c23b2}\label{namespaceget_transform_k_l_t_a550769bbd4e7537ff90a656f5b0c23b2}} +\index{getTransformKLT@{getTransformKLT}!start@{start}} +\index{start@{start}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{start}{start}} +{\footnotesize\ttfamily start = tic()} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_ae4502b0a2a023faba5a5ea0da218d623}\label{namespaceget_transform_k_l_t_ae4502b0a2a023faba5a5ea0da218d623}} +\index{getTransformKLT@{getTransformKLT}!startImgInd@{startImgInd}} +\index{startImgInd@{startImgInd}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{startImgInd}{startImgInd}} +{\footnotesize\ttfamily int start\+Img\+Ind = int(sys.\+argv\mbox{[}2\mbox{]}) if len(sys.\+argv) $>$ 2 else 0} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a71e24db6312e99e75bdc49e89d65948e}\label{namespaceget_transform_k_l_t_a71e24db6312e99e75bdc49e89d65948e}} +\index{getTransformKLT@{getTransformKLT}!timestamp@{timestamp}} +\index{timestamp@{timestamp}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{timestamp}{timestamp}} +{\footnotesize\ttfamily timestamp = radar\+Img\+Path\+To\+Timestamp(\mbox{\hyperlink{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{img\+Path\+Arr}}\mbox{[}img\+No\mbox{]})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_ac559b123c3618ef31794f03fb8742e8e}\label{namespaceget_transform_k_l_t_ac559b123c3618ef31794f03fb8742e8e}} +\index{getTransformKLT@{getTransformKLT}!timestampPath@{timestampPath}} +\index{timestampPath@{timestampPath}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{timestampPath}{timestampPath}} +{\footnotesize\ttfamily timestamp\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a2797efdfd7b06e306947463a2a9b9017}\label{namespaceget_transform_k_l_t_a2797efdfd7b06e306947463a2a9b9017}} +\index{getTransformKLT@{getTransformKLT}!toSaveImgPath@{toSaveImgPath}} +\index{toSaveImgPath@{toSaveImgPath}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{toSaveImgPath}{toSaveImgPath}} +{\footnotesize\ttfamily to\+Save\+Img\+Path = os.\+path.\+join(\mbox{\hyperlink{namespaceget_transform_k_l_t_a3ab4a737af4a26ba845d42353015fa10}{img\+Save\+Path}}, f\char`\"{}\{img\+No\+:04d\}.jpg\char`\"{})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_aa51f3d18d70a9ff98f22758e37152ac6}\label{namespaceget_transform_k_l_t_aa51f3d18d70a9ff98f22758e37152ac6}} +\index{getTransformKLT@{getTransformKLT}!toSaveTrajPath@{toSaveTrajPath}} +\index{toSaveTrajPath@{toSaveTrajPath}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{toSaveTrajPath}{toSaveTrajPath}} +{\footnotesize\ttfamily to\+Save\+Traj\+Path = os.\+path.\+join(\mbox{\hyperlink{namespaceget_transform_k_l_t_a4575c573acd9741770c3a97dac5062ba}{traj\+Save\+Path}}, f\char`\"{}\{img\+No\+:04d\}.jpg\char`\"{})} + +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a4575c573acd9741770c3a97dac5062ba}\label{namespaceget_transform_k_l_t_a4575c573acd9741770c3a97dac5062ba}} +\index{getTransformKLT@{getTransformKLT}!trajSavePath@{trajSavePath}} +\index{trajSavePath@{trajSavePath}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{trajSavePath}{trajSavePath}} +{\footnotesize\ttfamily traj\+Save\+Path} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = os.path.join(\textcolor{stringliteral}{"{}."{}}, \textcolor{stringliteral}{"{}img"{}}, \textcolor{stringliteral}{"{}track\_klt\_thresholding"{}},} +\DoxyCodeLine{2 datasetName + \textcolor{stringliteral}{'\_traj'})} + +\end{DoxyCode} +\mbox{\Hypertarget{namespaceget_transform_k_l_t_a5709b84de1dc903d78a2f503b956e541}\label{namespaceget_transform_k_l_t_a5709b84de1dc903d78a2f503b956e541}} +\index{getTransformKLT@{getTransformKLT}!transformed\_pts@{transformed\_pts}} +\index{transformed\_pts@{transformed\_pts}!getTransformKLT@{getTransformKLT}} +\doxysubsubsection{\texorpdfstring{transformed\_pts}{transformed\_pts}} +{\footnotesize\ttfamily transformed\+\_\+pts = (\mbox{\hyperlink{namespaceget_transform_k_l_t_acb95449a94688af33f6e9bb090cf2936}{R}} @ good\+\_\+new.\+T + \mbox{\hyperlink{namespaceget_transform_k_l_t_a5e36941b3d856737e81516acd45edc50}{h}}).T} + diff --git a/doc/latex/namespacemotion_distortion.tex b/doc/latex/namespacemotion_distortion.tex new file mode 100644 index 0000000..d31efe1 --- /dev/null +++ b/doc/latex/namespacemotion_distortion.tex @@ -0,0 +1,29 @@ +\hypertarget{namespacemotion_distortion}{}\doxysection{motion\+Distortion Namespace Reference} +\label{namespacemotion_distortion}\index{motionDistortion@{motionDistortion}} +\doxysubsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver}{Motion\+Distortion\+Solver}} +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}{RADAR\+\_\+\+SCAN\+\_\+\+FREQUENCY}} = 4 +\item +bool \mbox{\hyperlink{namespacemotion_distortion_af99838407de1f00344ce35d8675e41a7}{VERBOSE}} = False +\end{DoxyCompactItemize} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}\label{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}} +\index{motionDistortion@{motionDistortion}!RADAR\_SCAN\_FREQUENCY@{RADAR\_SCAN\_FREQUENCY}} +\index{RADAR\_SCAN\_FREQUENCY@{RADAR\_SCAN\_FREQUENCY}!motionDistortion@{motionDistortion}} +\doxysubsubsection{\texorpdfstring{RADAR\_SCAN\_FREQUENCY}{RADAR\_SCAN\_FREQUENCY}} +{\footnotesize\ttfamily int RADAR\+\_\+\+SCAN\+\_\+\+FREQUENCY = 4} + +\mbox{\Hypertarget{namespacemotion_distortion_af99838407de1f00344ce35d8675e41a7}\label{namespacemotion_distortion_af99838407de1f00344ce35d8675e41a7}} +\index{motionDistortion@{motionDistortion}!VERBOSE@{VERBOSE}} +\index{VERBOSE@{VERBOSE}!motionDistortion@{motionDistortion}} +\doxysubsubsection{\texorpdfstring{VERBOSE}{VERBOSE}} +{\footnotesize\ttfamily bool VERBOSE = False} + diff --git a/doc/latex/namespaceoutlier_rejection.tex b/doc/latex/namespaceoutlier_rejection.tex new file mode 100644 index 0000000..d91f8d7 --- /dev/null +++ b/doc/latex/namespaceoutlier_rejection.tex @@ -0,0 +1,202 @@ +\hypertarget{namespaceoutlier_rejection}{}\doxysection{outlier\+Rejection Namespace Reference} +\label{namespaceoutlier_rejection}\index{outlierRejection@{outlierRejection}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +tuple\mbox{[}np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{namespaceoutlier_rejection_abe332cee7e7dd62325f3d3977b7695cc}{reject\+Outliers}} (np.\+ndarray \mbox{\hyperlink{namespaceoutlier_rejection_abb949c00e517693eadcd7dba40403020}{prev\+\_\+coord}}, np.\+ndarray \mbox{\hyperlink{namespaceoutlier_rejection_af059cdd6419168c9dbdeff4cf4b0b775}{new\+\_\+coord}}) +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +float \mbox{\hyperlink{namespaceoutlier_rejection_a1c211780ce1ff21c7bfb6a6774120f16}{DIST\+\_\+\+THRESHOLD\+\_\+M}} = 0.\+5 +\item +float \mbox{\hyperlink{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}{DIST\+\_\+\+THRESHOLD\+\_\+\+PX}} = \mbox{\hyperlink{namespaceoutlier_rejection_a1c211780ce1ff21c7bfb6a6774120f16}{DIST\+\_\+\+THRESHOLD\+\_\+M}} / RANGE\+\_\+\+RESOLUTION\+\_\+\+CART\+\_\+M +\item +float \mbox{\hyperlink{namespaceoutlier_rejection_a3ad17c677614a9c975c73a1ac35e0cb9}{DISTSQ\+\_\+\+THRESHOLD\+\_\+\+PX}} = \mbox{\hyperlink{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}{DIST\+\_\+\+THRESHOLD\+\_\+\+PX}} $\ast$ \mbox{\hyperlink{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}{DIST\+\_\+\+THRESHOLD\+\_\+\+PX}} +\item +bool \mbox{\hyperlink{namespaceoutlier_rejection_a6d399314f187a822309539b80a54a60d}{FORCE\+\_\+\+OUTLIERS}} = True +\item +int \mbox{\hyperlink{namespaceoutlier_rejection_a2202ecdde3f1299448698af0ba3eb256}{n\+\_\+points}} = 100 +\item +\mbox{\hyperlink{namespaceoutlier_rejection_a644efa9be834d5512b3c3f95fecb636c}{n\+\_\+outliers}} = int(\mbox{\hyperlink{namespaceoutlier_rejection_a2202ecdde3f1299448698af0ba3eb256}{n\+\_\+points}} $\ast$ 0.\+2) +\item +int \mbox{\hyperlink{namespaceoutlier_rejection_ad1aa2538c2e1a7556cc668bd67b4bff6}{theta\+\_\+max\+\_\+deg}} = 20 +\item +int \mbox{\hyperlink{namespaceoutlier_rejection_a19c16bb0a566f43231b7cec31757cd12}{max\+\_\+translation\+\_\+m}} = 5 +\item +\mbox{\hyperlink{namespaceoutlier_rejection_abb949c00e517693eadcd7dba40403020}{prev\+\_\+coord}} +\item +\mbox{\hyperlink{namespaceoutlier_rejection_af059cdd6419168c9dbdeff4cf4b0b775}{new\+\_\+coord}} = add\+Noise(new\+\_\+coord, variance=\mbox{\hyperlink{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}{DIST\+\_\+\+THRESHOLD\+\_\+\+PX}} / 10) +\item +\mbox{\hyperlink{namespaceoutlier_rejection_ad5ed049a2c1601e6f4f9e5d69619c804}{theta\+\_\+deg}} +\item +\mbox{\hyperlink{namespaceoutlier_rejection_a57b2042477f45ffac90299611ca75467}{trans\+\_\+vec}} +\item +\mbox{\hyperlink{namespaceoutlier_rejection_a04b9553e65e1a1461832f347cb5e942a}{new\+\_\+coord\+\_\+perfect}} = new\+\_\+coord.\+copy() +\item +\mbox{\hyperlink{namespaceoutlier_rejection_a16f3add66da7caa94dad99c6e62e5160}{outlier\+\_\+ind}} +\item +\mbox{\hyperlink{namespaceoutlier_rejection_a85217f3efc8710cdcda27b2298c29f80}{noise\+To\+Add}} +\item +\mbox{\hyperlink{namespaceoutlier_rejection_ac4f2fa8ef2ad08a8ce87667b9e847366}{pruned\+\_\+prev\+\_\+coord}} +\item +\mbox{\hyperlink{namespaceoutlier_rejection_af01450d8e397ca1aa936330694f1a3ff}{pruned\+\_\+new\+\_\+coord}} +\item +\mbox{\hyperlink{namespaceoutlier_rejection_a62197192f0fbf4e0675eb37be1c4c175}{alpha}} +\item +\mbox{\hyperlink{namespaceoutlier_rejection_a584efbd5d11809943039e71845b0cd7f}{show}} +\item +\mbox{\hyperlink{namespaceoutlier_rejection_adca18f0c2258ab57e96c3f009761ea85}{title\+\_\+append}} +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespaceoutlier_rejection_abe332cee7e7dd62325f3d3977b7695cc}\label{namespaceoutlier_rejection_abe332cee7e7dd62325f3d3977b7695cc}} +\index{outlierRejection@{outlierRejection}!rejectOutliers@{rejectOutliers}} +\index{rejectOutliers@{rejectOutliers}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{rejectOutliers()}{rejectOutliers()}} +{\footnotesize\ttfamily tuple\mbox{[}np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} outlier\+Rejection.\+reject\+Outliers (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{prev\+\_\+coord, }\item[{np.\+ndarray }]{new\+\_\+coord }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Reject outliers by using radar geometry to find dynamic/moving features + +@details For the first and second feature set, form a graph G1 and G2, +where each point is a feature, and each edge is the distance between the 2 points. +Because of radar geometry, the distance between any 2 points in G1 should be the +same (within threshold) as the same points in G2. + +This is thus equivalent to forming an unweighted graph G, expressed as an adjacency matrix +where if the difference in distance between i and j < thresh, then entry = 1, 0 otherwise. +We then form the inlier set by finding the maximal clique in G. + +@note It is assumeed that the points correspond with each other + +@param[in] prev_coord (K x 2) Coordinates of features which are being tracked from [x,y] +@param[in] new_coord (K x 2) New coordinates of features which are tracked to [x,y] + +@return pruned_prev_coord (k x 2) Pruned previous coordinates +@return pruned_new_coord (k x 2) Pruned current/new coordinates +@return pruning_mask (K x 2) Pruning mask +\end{DoxyVerb} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespaceoutlier_rejection_a62197192f0fbf4e0675eb37be1c4c175}\label{namespaceoutlier_rejection_a62197192f0fbf4e0675eb37be1c4c175}} +\index{outlierRejection@{outlierRejection}!alpha@{alpha}} +\index{alpha@{alpha}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{alpha}{alpha}} +{\footnotesize\ttfamily alpha} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a1c211780ce1ff21c7bfb6a6774120f16}\label{namespaceoutlier_rejection_a1c211780ce1ff21c7bfb6a6774120f16}} +\index{outlierRejection@{outlierRejection}!DIST\_THRESHOLD\_M@{DIST\_THRESHOLD\_M}} +\index{DIST\_THRESHOLD\_M@{DIST\_THRESHOLD\_M}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{DIST\_THRESHOLD\_M}{DIST\_THRESHOLD\_M}} +{\footnotesize\ttfamily float DIST\+\_\+\+THRESHOLD\+\_\+M = 0.\+5} + +\mbox{\Hypertarget{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}\label{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}} +\index{outlierRejection@{outlierRejection}!DIST\_THRESHOLD\_PX@{DIST\_THRESHOLD\_PX}} +\index{DIST\_THRESHOLD\_PX@{DIST\_THRESHOLD\_PX}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{DIST\_THRESHOLD\_PX}{DIST\_THRESHOLD\_PX}} +{\footnotesize\ttfamily float DIST\+\_\+\+THRESHOLD\+\_\+\+PX = \mbox{\hyperlink{namespaceoutlier_rejection_a1c211780ce1ff21c7bfb6a6774120f16}{DIST\+\_\+\+THRESHOLD\+\_\+M}} / RANGE\+\_\+\+RESOLUTION\+\_\+\+CART\+\_\+M} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a3ad17c677614a9c975c73a1ac35e0cb9}\label{namespaceoutlier_rejection_a3ad17c677614a9c975c73a1ac35e0cb9}} +\index{outlierRejection@{outlierRejection}!DISTSQ\_THRESHOLD\_PX@{DISTSQ\_THRESHOLD\_PX}} +\index{DISTSQ\_THRESHOLD\_PX@{DISTSQ\_THRESHOLD\_PX}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{DISTSQ\_THRESHOLD\_PX}{DISTSQ\_THRESHOLD\_PX}} +{\footnotesize\ttfamily float DISTSQ\+\_\+\+THRESHOLD\+\_\+\+PX = \mbox{\hyperlink{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}{DIST\+\_\+\+THRESHOLD\+\_\+\+PX}} $\ast$ \mbox{\hyperlink{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}{DIST\+\_\+\+THRESHOLD\+\_\+\+PX}}} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a6d399314f187a822309539b80a54a60d}\label{namespaceoutlier_rejection_a6d399314f187a822309539b80a54a60d}} +\index{outlierRejection@{outlierRejection}!FORCE\_OUTLIERS@{FORCE\_OUTLIERS}} +\index{FORCE\_OUTLIERS@{FORCE\_OUTLIERS}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{FORCE\_OUTLIERS}{FORCE\_OUTLIERS}} +{\footnotesize\ttfamily bool FORCE\+\_\+\+OUTLIERS = True} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a19c16bb0a566f43231b7cec31757cd12}\label{namespaceoutlier_rejection_a19c16bb0a566f43231b7cec31757cd12}} +\index{outlierRejection@{outlierRejection}!max\_translation\_m@{max\_translation\_m}} +\index{max\_translation\_m@{max\_translation\_m}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{max\_translation\_m}{max\_translation\_m}} +{\footnotesize\ttfamily max\+\_\+translation\+\_\+m = 5} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a644efa9be834d5512b3c3f95fecb636c}\label{namespaceoutlier_rejection_a644efa9be834d5512b3c3f95fecb636c}} +\index{outlierRejection@{outlierRejection}!n\_outliers@{n\_outliers}} +\index{n\_outliers@{n\_outliers}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{n\_outliers}{n\_outliers}} +{\footnotesize\ttfamily n\+\_\+outliers = int(\mbox{\hyperlink{namespaceoutlier_rejection_a2202ecdde3f1299448698af0ba3eb256}{n\+\_\+points}} $\ast$ 0.\+2)} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a2202ecdde3f1299448698af0ba3eb256}\label{namespaceoutlier_rejection_a2202ecdde3f1299448698af0ba3eb256}} +\index{outlierRejection@{outlierRejection}!n\_points@{n\_points}} +\index{n\_points@{n\_points}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{n\_points}{n\_points}} +{\footnotesize\ttfamily n\+\_\+points = 100} + +\mbox{\Hypertarget{namespaceoutlier_rejection_af059cdd6419168c9dbdeff4cf4b0b775}\label{namespaceoutlier_rejection_af059cdd6419168c9dbdeff4cf4b0b775}} +\index{outlierRejection@{outlierRejection}!new\_coord@{new\_coord}} +\index{new\_coord@{new\_coord}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{new\_coord}{new\_coord}} +{\footnotesize\ttfamily new\+\_\+coord = add\+Noise(new\+\_\+coord, variance=\mbox{\hyperlink{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}{DIST\+\_\+\+THRESHOLD\+\_\+\+PX}} / 10)} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a04b9553e65e1a1461832f347cb5e942a}\label{namespaceoutlier_rejection_a04b9553e65e1a1461832f347cb5e942a}} +\index{outlierRejection@{outlierRejection}!new\_coord\_perfect@{new\_coord\_perfect}} +\index{new\_coord\_perfect@{new\_coord\_perfect}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{new\_coord\_perfect}{new\_coord\_perfect}} +{\footnotesize\ttfamily new\+\_\+coord\+\_\+perfect = new\+\_\+coord.\+copy()} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a85217f3efc8710cdcda27b2298c29f80}\label{namespaceoutlier_rejection_a85217f3efc8710cdcda27b2298c29f80}} +\index{outlierRejection@{outlierRejection}!noiseToAdd@{noiseToAdd}} +\index{noiseToAdd@{noiseToAdd}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{noiseToAdd}{noiseToAdd}} +{\footnotesize\ttfamily noise\+To\+Add} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a16f3add66da7caa94dad99c6e62e5160}\label{namespaceoutlier_rejection_a16f3add66da7caa94dad99c6e62e5160}} +\index{outlierRejection@{outlierRejection}!outlier\_ind@{outlier\_ind}} +\index{outlier\_ind@{outlier\_ind}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{outlier\_ind}{outlier\_ind}} +{\footnotesize\ttfamily outlier\+\_\+ind} + +\mbox{\Hypertarget{namespaceoutlier_rejection_abb949c00e517693eadcd7dba40403020}\label{namespaceoutlier_rejection_abb949c00e517693eadcd7dba40403020}} +\index{outlierRejection@{outlierRejection}!prev\_coord@{prev\_coord}} +\index{prev\_coord@{prev\_coord}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{prev\_coord}{prev\_coord}} +{\footnotesize\ttfamily prev\+\_\+coord} + +\mbox{\Hypertarget{namespaceoutlier_rejection_af01450d8e397ca1aa936330694f1a3ff}\label{namespaceoutlier_rejection_af01450d8e397ca1aa936330694f1a3ff}} +\index{outlierRejection@{outlierRejection}!pruned\_new\_coord@{pruned\_new\_coord}} +\index{pruned\_new\_coord@{pruned\_new\_coord}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{pruned\_new\_coord}{pruned\_new\_coord}} +{\footnotesize\ttfamily pruned\+\_\+new\+\_\+coord} + +\mbox{\Hypertarget{namespaceoutlier_rejection_ac4f2fa8ef2ad08a8ce87667b9e847366}\label{namespaceoutlier_rejection_ac4f2fa8ef2ad08a8ce87667b9e847366}} +\index{outlierRejection@{outlierRejection}!pruned\_prev\_coord@{pruned\_prev\_coord}} +\index{pruned\_prev\_coord@{pruned\_prev\_coord}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{pruned\_prev\_coord}{pruned\_prev\_coord}} +{\footnotesize\ttfamily pruned\+\_\+prev\+\_\+coord} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a584efbd5d11809943039e71845b0cd7f}\label{namespaceoutlier_rejection_a584efbd5d11809943039e71845b0cd7f}} +\index{outlierRejection@{outlierRejection}!show@{show}} +\index{show@{show}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{show}{show}} +{\footnotesize\ttfamily show} + +\mbox{\Hypertarget{namespaceoutlier_rejection_ad5ed049a2c1601e6f4f9e5d69619c804}\label{namespaceoutlier_rejection_ad5ed049a2c1601e6f4f9e5d69619c804}} +\index{outlierRejection@{outlierRejection}!theta\_deg@{theta\_deg}} +\index{theta\_deg@{theta\_deg}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{theta\_deg}{theta\_deg}} +{\footnotesize\ttfamily theta\+\_\+deg} + +\mbox{\Hypertarget{namespaceoutlier_rejection_ad1aa2538c2e1a7556cc668bd67b4bff6}\label{namespaceoutlier_rejection_ad1aa2538c2e1a7556cc668bd67b4bff6}} +\index{outlierRejection@{outlierRejection}!theta\_max\_deg@{theta\_max\_deg}} +\index{theta\_max\_deg@{theta\_max\_deg}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{theta\_max\_deg}{theta\_max\_deg}} +{\footnotesize\ttfamily theta\+\_\+max\+\_\+deg = 20} + +\mbox{\Hypertarget{namespaceoutlier_rejection_adca18f0c2258ab57e96c3f009761ea85}\label{namespaceoutlier_rejection_adca18f0c2258ab57e96c3f009761ea85}} +\index{outlierRejection@{outlierRejection}!title\_append@{title\_append}} +\index{title\_append@{title\_append}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{title\_append}{title\_append}} +{\footnotesize\ttfamily title\+\_\+append} + +\mbox{\Hypertarget{namespaceoutlier_rejection_a57b2042477f45ffac90299611ca75467}\label{namespaceoutlier_rejection_a57b2042477f45ffac90299611ca75467}} +\index{outlierRejection@{outlierRejection}!trans\_vec@{trans\_vec}} +\index{trans\_vec@{trans\_vec}!outlierRejection@{outlierRejection}} +\doxysubsubsection{\texorpdfstring{trans\_vec}{trans\_vec}} +{\footnotesize\ttfamily trans\+\_\+vec} + diff --git a/doc/latex/namespaceparse_data.tex b/doc/latex/namespaceparse_data.tex new file mode 100644 index 0000000..7a80cce --- /dev/null +++ b/doc/latex/namespaceparse_data.tex @@ -0,0 +1,259 @@ +\hypertarget{namespaceparse_data}{}\doxysection{parse\+Data Namespace Reference} +\label{namespaceparse_data}\index{parseData@{parseData}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +Tuple\mbox{[}np.\+ndarray, float, float, np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{namespaceparse_data_a9e426a68efc45366f9a6f6783d7660a5}{extract\+Data\+From\+Radar\+Image}} (np.\+ndarray polar\+Img\+Data, float max\+Range\+ClipM=\mbox{\hyperlink{namespaceparse_data_a63cc91387ebc1ec23ea351b8cf4d8c24}{MAX\+\_\+\+RANGE\+\_\+\+CLIP\+\_\+\+DEFAULT}}) +\item +def \mbox{\hyperlink{namespaceparse_data_a41a7777dda4396b3ef8ee2fbb10cea2e}{draw\+CVPoint}} (np.\+ndarray img, \mbox{\hyperlink{class_coord_1_1_cart_coord}{Cart\+Coord}} point, Tuple\mbox{[}int, int, int\mbox{]} point\+\_\+color=(0, 0, 255)) +\item +np.\+ndarray \mbox{\hyperlink{namespaceparse_data_a553fc4256c8cecae88df08c33914983e}{convert\+Cartesian\+Image\+To\+Polar}} (np.\+ndarray \mbox{\hyperlink{namespaceparse_data_afd970fd9434c5d9f93551cb140a8bf63}{img\+Cart}}, bool log\+Polar\+Mode=False, Tuple\mbox{[}int, int\mbox{]} shape\+HW=None) +\item +np.\+ndarray \mbox{\hyperlink{namespaceparse_data_aa28b753fcba74d91ea125fbc1035c60d}{convert\+Polar\+Image\+To\+Cartesian}} (np.\+ndarray \mbox{\hyperlink{namespaceparse_data_ab5b20adc8fe382f5829e2c07334689c0}{img\+Polar}}, bool log\+Polar\+Mode=False, int downsample\+Factor=\mbox{\hyperlink{namespaceparse_data_a574381b982eec58cb6b83b809bf23c5f}{DOWNSAMPLE\+\_\+\+FACTOR}}, bool change\+Global\+Range\+Resolution=False) +\item +def \mbox{\hyperlink{namespaceparse_data_a608f255c49e53c775f4095f98b721e88}{convert\+Polar\+Img\+To\+Log\+Polar}} (np.\+ndarray \mbox{\hyperlink{namespaceparse_data_ab5b20adc8fe382f5829e2c07334689c0}{img\+Polar}}) +\item +Tuple\mbox{[}np.\+ndarray, float, float, np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} \mbox{\hyperlink{namespaceparse_data_ac055b87b5e7ae8930fbae66eea74ee5a}{get\+Data\+From\+Img\+Paths\+By\+Index}} (List\mbox{[}str\mbox{]} img\+Path\+Arr, int index) +\item +np.\+ndarray \mbox{\hyperlink{namespaceparse_data_a693d72eb158b3187d467637850c1be17}{get\+Polar\+Image\+From\+Img\+Paths}} (List\mbox{[}str\mbox{]} img\+Path\+Arr, int index) +\item +np.\+ndarray \mbox{\hyperlink{namespaceparse_data_a36e96b28ee694506251cc890843fc71c}{get\+Cart\+Image\+From\+Img\+Paths}} (List\mbox{[}str\mbox{]} img\+Path\+Arr, int index) +\item +List\mbox{[}str\mbox{]} \mbox{\hyperlink{namespaceparse_data_a15cc603507e025614d75be46af8c7236}{get\+Radar\+Img\+Paths}} (str \mbox{\hyperlink{namespaceparse_data_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, str \mbox{\hyperlink{namespaceparse_data_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}}) +\item +np.\+ndarray \mbox{\hyperlink{namespaceparse_data_ae891ad024b063e91ca7ec43883074676}{get\+Radar\+Stream\+Polar}} (str \mbox{\hyperlink{namespaceparse_data_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, str \mbox{\hyperlink{namespaceparse_data_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}}) +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +float \mbox{\hyperlink{namespaceparse_data_a4839997a207abe23d2e932bf8606065c}{RANGE\+\_\+\+RESOLUTION\+\_\+M}} = 0.\+0432 +\item +int \mbox{\hyperlink{namespaceparse_data_a574381b982eec58cb6b83b809bf23c5f}{DOWNSAMPLE\+\_\+\+FACTOR}} = 2 +\item +float \mbox{\hyperlink{namespaceparse_data_a59f0fd548af922cd02e62fb7a73819e8}{RANGE\+\_\+\+RESOLUTION\+\_\+\+CART\+\_\+M}} = \mbox{\hyperlink{namespaceparse_data_a4839997a207abe23d2e932bf8606065c}{RANGE\+\_\+\+RESOLUTION\+\_\+M}} $\ast$ \mbox{\hyperlink{namespaceparse_data_a574381b982eec58cb6b83b809bf23c5f}{DOWNSAMPLE\+\_\+\+FACTOR}} +\item +float \mbox{\hyperlink{namespaceparse_data_a63cc91387ebc1ec23ea351b8cf4d8c24}{MAX\+\_\+\+RANGE\+\_\+\+CLIP\+\_\+\+DEFAULT}} = 87.\+5 +\item +int \mbox{\hyperlink{namespaceparse_data_a0d700e6dfa2a9f624cd51f991a793585}{dataset\+Name}} = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{} +\item +\mbox{\hyperlink{namespaceparse_data_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar\char`\"{}) +\item +\mbox{\hyperlink{namespaceparse_data_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{}) +\item +np.\+ndarray \mbox{\hyperlink{namespaceparse_data_afd7616dc1e1f2275cbaab68388060ecc}{stream\+Arr}} = \mbox{\hyperlink{namespaceparse_data_ae891ad024b063e91ca7ec43883074676}{get\+Radar\+Stream\+Polar}}(\mbox{\hyperlink{namespaceparse_data_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespaceparse_data_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}}) +\item +np.\+ndarray \mbox{\hyperlink{namespaceparse_data_a5a1c66393231cdb3bd1d18745913faf7}{n\+Imgs}} = stream\+Arr.\+shape\mbox{[}2\mbox{]} +\item +np.\+ndarray \mbox{\hyperlink{namespaceparse_data_ab5b20adc8fe382f5829e2c07334689c0}{img\+Polar}} = \mbox{\hyperlink{namespaceparse_data_afd7616dc1e1f2275cbaab68388060ecc}{stream\+Arr}}\mbox{[}\+:, \+:, i\mbox{]} +\item +np.\+ndarray \mbox{\hyperlink{namespaceparse_data_afd970fd9434c5d9f93551cb140a8bf63}{img\+Cart}} = \mbox{\hyperlink{namespaceparse_data_aa28b753fcba74d91ea125fbc1035c60d}{convert\+Polar\+Image\+To\+Cartesian}}(\mbox{\hyperlink{namespaceparse_data_ab5b20adc8fe382f5829e2c07334689c0}{img\+Polar}}) +\item +\mbox{\hyperlink{namespaceparse_data_ae0323a9039add2978bf5b49550572c7c}{c}} = cv2.\+wait\+Key(100) +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespaceparse_data_a553fc4256c8cecae88df08c33914983e}\label{namespaceparse_data_a553fc4256c8cecae88df08c33914983e}} +\index{parseData@{parseData}!convertCartesianImageToPolar@{convertCartesianImageToPolar}} +\index{convertCartesianImageToPolar@{convertCartesianImageToPolar}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{convertCartesianImageToPolar()}{convertCartesianImageToPolar()}} +{\footnotesize\ttfamily np.\+ndarray parse\+Data.\+convert\+Cartesian\+Image\+To\+Polar (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{img\+Cart, }\item[{bool }]{log\+Polar\+Mode = {\ttfamily False}, }\item[{Tuple\mbox{[}int, int\mbox{]} }]{shape\+HW = {\ttfamily None} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Converts Cartesian image to (potentially log) polar +@param[in] imgPolar Polar image to convert +@param[in] logPolarMode Whether to convert in log-polar mode + +@return imgCart Converted Cartesian image +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceparse_data_aa28b753fcba74d91ea125fbc1035c60d}\label{namespaceparse_data_aa28b753fcba74d91ea125fbc1035c60d}} +\index{parseData@{parseData}!convertPolarImageToCartesian@{convertPolarImageToCartesian}} +\index{convertPolarImageToCartesian@{convertPolarImageToCartesian}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{convertPolarImageToCartesian()}{convertPolarImageToCartesian()}} +{\footnotesize\ttfamily np.\+ndarray parse\+Data.\+convert\+Polar\+Image\+To\+Cartesian (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{img\+Polar, }\item[{bool }]{log\+Polar\+Mode = {\ttfamily False}, }\item[{int }]{downsample\+Factor = {\ttfamily \mbox{\hyperlink{namespaceparse_data_a574381b982eec58cb6b83b809bf23c5f}{DOWNSAMPLE\+\_\+\+FACTOR}}}, }\item[{bool }]{change\+Global\+Range\+Resolution = {\ttfamily False} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Converts polar image to Cartesian formats +@param[in] imgPolar Polar image to convert +@param[in] logPolarMode Whether to convert in log-polar mode +@param[in] downsampleFactor How much to downsample Cartesian image for performance improvements +@param[in] changeGlobalRangeResolution Whether or not to change the + global range resolution needed + for accurate px to m conversions + +@return imgCart Converted Cartesian image +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceparse_data_a608f255c49e53c775f4095f98b721e88}\label{namespaceparse_data_a608f255c49e53c775f4095f98b721e88}} +\index{parseData@{parseData}!convertPolarImgToLogPolar@{convertPolarImgToLogPolar}} +\index{convertPolarImgToLogPolar@{convertPolarImgToLogPolar}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{convertPolarImgToLogPolar()}{convertPolarImgToLogPolar()}} +{\footnotesize\ttfamily def parse\+Data.\+convert\+Polar\+Img\+To\+Log\+Polar (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{img\+Polar }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Convert an image in polar form into log-polar form +@note Involves converting from polar to Cartesian to back again +@see convertPolarImageToCartesian(), convertCartesianImageToPolar()\end{DoxyVerb} + \mbox{\Hypertarget{namespaceparse_data_a41a7777dda4396b3ef8ee2fbb10cea2e}\label{namespaceparse_data_a41a7777dda4396b3ef8ee2fbb10cea2e}} +\index{parseData@{parseData}!drawCVPoint@{drawCVPoint}} +\index{drawCVPoint@{drawCVPoint}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{drawCVPoint()}{drawCVPoint()}} +{\footnotesize\ttfamily def parse\+Data.\+draw\+CVPoint (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{img, }\item[{\mbox{\hyperlink{class_coord_1_1_cart_coord}{Cart\+Coord}}}]{point, }\item[{Tuple\mbox{[}int, int, int\mbox{]} }]{point\+\_\+color = {\ttfamily (0,~0,~255)} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceparse_data_a9e426a68efc45366f9a6f6783d7660a5}\label{namespaceparse_data_a9e426a68efc45366f9a6f6783d7660a5}} +\index{parseData@{parseData}!extractDataFromRadarImage@{extractDataFromRadarImage}} +\index{extractDataFromRadarImage@{extractDataFromRadarImage}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{extractDataFromRadarImage()}{extractDataFromRadarImage()}} +{\footnotesize\ttfamily Tuple\mbox{[}np.\+ndarray, float, float, np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} parse\+Data.\+extract\+Data\+From\+Radar\+Image (\begin{DoxyParamCaption}\item[{np.\+ndarray}]{polar\+Img\+Data, }\item[{float }]{max\+Range\+ClipM = {\ttfamily \mbox{\hyperlink{namespaceparse_data_a63cc91387ebc1ec23ea351b8cf4d8c24}{MAX\+\_\+\+RANGE\+\_\+\+CLIP\+\_\+\+DEFAULT}}} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Decode a single Oxford Radar RobotCar Dataset radar example +@param[in] polarImgData cv image +@param[in] maxRangeClipM Max range to clip data, in meters. Negative number for no clip +@return + range_azimuth_data (np.ndarray): Radar power readings along each azimuth + range_resolution (float): Range resolution of the polar radar data (metres per pixel) + azimuth_resolution (float): Azimuth resolution of the polar radar data (radians per pixel) + azimuths (np.ndarray): Rotation for each polar radar azimuth (radians) + valid (np.ndarray) Mask of whether azimuth data is an original sensor reading or interpolated from adjacent + azimuths + timestamps (np.ndarray): Timestamp for each azimuth in int64 (UNIX time) +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceparse_data_a36e96b28ee694506251cc890843fc71c}\label{namespaceparse_data_a36e96b28ee694506251cc890843fc71c}} +\index{parseData@{parseData}!getCartImageFromImgPaths@{getCartImageFromImgPaths}} +\index{getCartImageFromImgPaths@{getCartImageFromImgPaths}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{getCartImageFromImgPaths()}{getCartImageFromImgPaths()}} +{\footnotesize\ttfamily np.\+ndarray parse\+Data.\+get\+Cart\+Image\+From\+Img\+Paths (\begin{DoxyParamCaption}\item[{List\mbox{[}str\mbox{]}}]{img\+Path\+Arr, }\item[{int}]{index }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Get polar image from image path array, indexing accordingly +@param[in] imgPathArr List of image path as strings +@param[in] index Index to index into + +@return imgCart Cartesian image +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceparse_data_ac055b87b5e7ae8930fbae66eea74ee5a}\label{namespaceparse_data_ac055b87b5e7ae8930fbae66eea74ee5a}} +\index{parseData@{parseData}!getDataFromImgPathsByIndex@{getDataFromImgPathsByIndex}} +\index{getDataFromImgPathsByIndex@{getDataFromImgPathsByIndex}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{getDataFromImgPathsByIndex()}{getDataFromImgPathsByIndex()}} +{\footnotesize\ttfamily Tuple\mbox{[}np.\+ndarray, float, float, np.\+ndarray, np.\+ndarray, np.\+ndarray\mbox{]} parse\+Data.\+get\+Data\+From\+Img\+Paths\+By\+Index (\begin{DoxyParamCaption}\item[{List\mbox{[}str\mbox{]}}]{img\+Path\+Arr, }\item[{int }]{index }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Get information from image path array, indexing accordingly +@param[in] imgPathArr List of image path as strings +@param[in] index Index to index into + +@return + imgPolar (np.ndarray): Radar power readings along each azimuth + azimuth_resolution (float): Azimuth resolution of the polar radar data (radians per pixel) + range_resolution (float): Range resolution of the polar radar data (metres per pixel) + azimuths (np.ndarray): Rotation for each polar radar azimuth (radians) + valid (np.ndarray) Mask of whether azimuth data is an original sensor reading or interpolated from adjacent + azimuths + timestamps (np.ndarray): Timestamp for each azimuth in int64 (UNIX time) +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceparse_data_a693d72eb158b3187d467637850c1be17}\label{namespaceparse_data_a693d72eb158b3187d467637850c1be17}} +\index{parseData@{parseData}!getPolarImageFromImgPaths@{getPolarImageFromImgPaths}} +\index{getPolarImageFromImgPaths@{getPolarImageFromImgPaths}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{getPolarImageFromImgPaths()}{getPolarImageFromImgPaths()}} +{\footnotesize\ttfamily np.\+ndarray parse\+Data.\+get\+Polar\+Image\+From\+Img\+Paths (\begin{DoxyParamCaption}\item[{List\mbox{[}str\mbox{]}}]{img\+Path\+Arr, }\item[{int}]{index }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Get polar image from image path array, indexing accordingly +@param[in] imgPathArr List of image path as strings +@param[in] index Index to index into + +@return imgPolar Polar image +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceparse_data_a15cc603507e025614d75be46af8c7236}\label{namespaceparse_data_a15cc603507e025614d75be46af8c7236}} +\index{parseData@{parseData}!getRadarImgPaths@{getRadarImgPaths}} +\index{getRadarImgPaths@{getRadarImgPaths}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{getRadarImgPaths()}{getRadarImgPaths()}} +{\footnotesize\ttfamily List\mbox{[}str\mbox{]} parse\+Data.\+get\+Radar\+Img\+Paths (\begin{DoxyParamCaption}\item[{str}]{data\+Path, }\item[{str}]{timestamp\+Path }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Obtain list of radar image paths + +@param[in] dataPath Path to radar image data +@param[in] timestampPath Path to radar timestamp data + +@return list of strings containing paths to radar image +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceparse_data_ae891ad024b063e91ca7ec43883074676}\label{namespaceparse_data_ae891ad024b063e91ca7ec43883074676}} +\index{parseData@{parseData}!getRadarStreamPolar@{getRadarStreamPolar}} +\index{getRadarStreamPolar@{getRadarStreamPolar}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{getRadarStreamPolar()}{getRadarStreamPolar()}} +{\footnotesize\ttfamily np.\+ndarray parse\+Data.\+get\+Radar\+Stream\+Polar (\begin{DoxyParamCaption}\item[{str}]{data\+Path, }\item[{str}]{timestamp\+Path }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Returns np array of radar images in POLAR format +@param[in] dataPath Path to radar image data +@param[in] timestampPath Path to radar timestamp data + +@return radar range-azimuth image (W x H x N) +\end{DoxyVerb} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespaceparse_data_ae0323a9039add2978bf5b49550572c7c}\label{namespaceparse_data_ae0323a9039add2978bf5b49550572c7c}} +\index{parseData@{parseData}!c@{c}} +\index{c@{c}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{c}{c}} +{\footnotesize\ttfamily c = cv2.\+wait\+Key(100)} + +\mbox{\Hypertarget{namespaceparse_data_abef58ec544fb87b0bc3d6657c3824bfc}\label{namespaceparse_data_abef58ec544fb87b0bc3d6657c3824bfc}} +\index{parseData@{parseData}!dataPath@{dataPath}} +\index{dataPath@{dataPath}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{dataPath}{dataPath}} +{\footnotesize\ttfamily data\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar\char`\"{})} + +\mbox{\Hypertarget{namespaceparse_data_a0d700e6dfa2a9f624cd51f991a793585}\label{namespaceparse_data_a0d700e6dfa2a9f624cd51f991a793585}} +\index{parseData@{parseData}!datasetName@{datasetName}} +\index{datasetName@{datasetName}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{datasetName}{datasetName}} +{\footnotesize\ttfamily int dataset\+Name = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{}} + +\mbox{\Hypertarget{namespaceparse_data_a574381b982eec58cb6b83b809bf23c5f}\label{namespaceparse_data_a574381b982eec58cb6b83b809bf23c5f}} +\index{parseData@{parseData}!DOWNSAMPLE\_FACTOR@{DOWNSAMPLE\_FACTOR}} +\index{DOWNSAMPLE\_FACTOR@{DOWNSAMPLE\_FACTOR}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{DOWNSAMPLE\_FACTOR}{DOWNSAMPLE\_FACTOR}} +{\footnotesize\ttfamily int DOWNSAMPLE\+\_\+\+FACTOR = 2} + +\mbox{\Hypertarget{namespaceparse_data_afd970fd9434c5d9f93551cb140a8bf63}\label{namespaceparse_data_afd970fd9434c5d9f93551cb140a8bf63}} +\index{parseData@{parseData}!imgCart@{imgCart}} +\index{imgCart@{imgCart}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{imgCart}{imgCart}} +{\footnotesize\ttfamily np.\+ndarray img\+Cart = \mbox{\hyperlink{namespaceparse_data_aa28b753fcba74d91ea125fbc1035c60d}{convert\+Polar\+Image\+To\+Cartesian}}(\mbox{\hyperlink{namespaceparse_data_ab5b20adc8fe382f5829e2c07334689c0}{img\+Polar}})} + +\mbox{\Hypertarget{namespaceparse_data_ab5b20adc8fe382f5829e2c07334689c0}\label{namespaceparse_data_ab5b20adc8fe382f5829e2c07334689c0}} +\index{parseData@{parseData}!imgPolar@{imgPolar}} +\index{imgPolar@{imgPolar}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{imgPolar}{imgPolar}} +{\footnotesize\ttfamily np.\+ndarray img\+Polar = \mbox{\hyperlink{namespaceparse_data_afd7616dc1e1f2275cbaab68388060ecc}{stream\+Arr}}\mbox{[}\+:, \+:, i\mbox{]}} + +\mbox{\Hypertarget{namespaceparse_data_a63cc91387ebc1ec23ea351b8cf4d8c24}\label{namespaceparse_data_a63cc91387ebc1ec23ea351b8cf4d8c24}} +\index{parseData@{parseData}!MAX\_RANGE\_CLIP\_DEFAULT@{MAX\_RANGE\_CLIP\_DEFAULT}} +\index{MAX\_RANGE\_CLIP\_DEFAULT@{MAX\_RANGE\_CLIP\_DEFAULT}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{MAX\_RANGE\_CLIP\_DEFAULT}{MAX\_RANGE\_CLIP\_DEFAULT}} +{\footnotesize\ttfamily float MAX\+\_\+\+RANGE\+\_\+\+CLIP\+\_\+\+DEFAULT = 87.\+5} + +\mbox{\Hypertarget{namespaceparse_data_a5a1c66393231cdb3bd1d18745913faf7}\label{namespaceparse_data_a5a1c66393231cdb3bd1d18745913faf7}} +\index{parseData@{parseData}!nImgs@{nImgs}} +\index{nImgs@{nImgs}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{nImgs}{nImgs}} +{\footnotesize\ttfamily np.\+ndarray n\+Imgs = stream\+Arr.\+shape\mbox{[}2\mbox{]}} + +\mbox{\Hypertarget{namespaceparse_data_a59f0fd548af922cd02e62fb7a73819e8}\label{namespaceparse_data_a59f0fd548af922cd02e62fb7a73819e8}} +\index{parseData@{parseData}!RANGE\_RESOLUTION\_CART\_M@{RANGE\_RESOLUTION\_CART\_M}} +\index{RANGE\_RESOLUTION\_CART\_M@{RANGE\_RESOLUTION\_CART\_M}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{RANGE\_RESOLUTION\_CART\_M}{RANGE\_RESOLUTION\_CART\_M}} +{\footnotesize\ttfamily float RANGE\+\_\+\+RESOLUTION\+\_\+\+CART\+\_\+M = \mbox{\hyperlink{namespaceparse_data_a4839997a207abe23d2e932bf8606065c}{RANGE\+\_\+\+RESOLUTION\+\_\+M}} $\ast$ \mbox{\hyperlink{namespaceparse_data_a574381b982eec58cb6b83b809bf23c5f}{DOWNSAMPLE\+\_\+\+FACTOR}}} + +\mbox{\Hypertarget{namespaceparse_data_a4839997a207abe23d2e932bf8606065c}\label{namespaceparse_data_a4839997a207abe23d2e932bf8606065c}} +\index{parseData@{parseData}!RANGE\_RESOLUTION\_M@{RANGE\_RESOLUTION\_M}} +\index{RANGE\_RESOLUTION\_M@{RANGE\_RESOLUTION\_M}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{RANGE\_RESOLUTION\_M}{RANGE\_RESOLUTION\_M}} +{\footnotesize\ttfamily float RANGE\+\_\+\+RESOLUTION\+\_\+M = 0.\+0432} + +\mbox{\Hypertarget{namespaceparse_data_afd7616dc1e1f2275cbaab68388060ecc}\label{namespaceparse_data_afd7616dc1e1f2275cbaab68388060ecc}} +\index{parseData@{parseData}!streamArr@{streamArr}} +\index{streamArr@{streamArr}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{streamArr}{streamArr}} +{\footnotesize\ttfamily np.\+ndarray stream\+Arr = \mbox{\hyperlink{namespaceparse_data_ae891ad024b063e91ca7ec43883074676}{get\+Radar\+Stream\+Polar}}(\mbox{\hyperlink{namespaceparse_data_abef58ec544fb87b0bc3d6657c3824bfc}{data\+Path}}, \mbox{\hyperlink{namespaceparse_data_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}})} + +\mbox{\Hypertarget{namespaceparse_data_ac559b123c3618ef31794f03fb8742e8e}\label{namespaceparse_data_ac559b123c3618ef31794f03fb8742e8e}} +\index{parseData@{parseData}!timestampPath@{timestampPath}} +\index{timestampPath@{timestampPath}!parseData@{parseData}} +\doxysubsubsection{\texorpdfstring{timestampPath}{timestampPath}} +{\footnotesize\ttfamily timestamp\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{})} + diff --git a/doc/latex/namespaces.tex b/doc/latex/namespaces.tex new file mode 100644 index 0000000..faa99f7 --- /dev/null +++ b/doc/latex/namespaces.tex @@ -0,0 +1,21 @@ +\doxysection{Packages} +Here are the packages with brief descriptions (if available)\+:\begin{DoxyCompactList} +\item\contentsline{section}{\mbox{\hyperlink{namespace_a_n_m_s}{ANMS}} }{\pageref{namespace_a_n_m_s}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespace_coord}{Coord}} }{\pageref{namespace_coord}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespace_f_m_t}{FMT}} }{\pageref{namespace_f_m_t}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacegen_fake_data}{gen\+Fake\+Data}} }{\pageref{namespacegen_fake_data}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceget_features}{get\+Features}} }{\pageref{namespaceget_features}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceget_point_cloud}{get\+Point\+Cloud}} }{\pageref{namespaceget_point_cloud}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceget_transform_k_l_t}{get\+Transform\+KLT}} }{\pageref{namespaceget_transform_k_l_t}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespace_mapping}{Mapping}} }{\pageref{namespace_mapping}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacemotion_distortion}{motion\+Distortion}} }{\pageref{namespacemotion_distortion}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceoutlier_rejection}{outlier\+Rejection}} }{\pageref{namespaceoutlier_rejection}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceparse_data}{parse\+Data}} }{\pageref{namespaceparse_data}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespace_pose_graph_lib}{Pose\+Graph\+Lib}} }{\pageref{namespace_pose_graph_lib}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespace_raw_r_o_a_m_system}{Raw\+ROAMSystem}} }{\pageref{namespace_raw_r_o_a_m_system}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetest_motion_distortion}{test\+Motion\+Distortion}} }{\pageref{namespacetest_motion_distortion}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetest_transform}{test\+Transform}} }{\pageref{namespacetest_transform}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespace_tracker}{Tracker}} }{\pageref{namespace_tracker}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetrajectory_plotting}{trajectory\+Plotting}} }{\pageref{namespacetrajectory_plotting}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutils}{utils}} }{\pageref{namespaceutils}}{} +\end{DoxyCompactList} diff --git a/doc/latex/namespacetest_motion_distortion.tex b/doc/latex/namespacetest_motion_distortion.tex new file mode 100644 index 0000000..f88fbba --- /dev/null +++ b/doc/latex/namespacetest_motion_distortion.tex @@ -0,0 +1,348 @@ +\hypertarget{namespacetest_motion_distortion}{}\doxysection{test\+Motion\+Distortion Namespace Reference} +\label{namespacetest_motion_distortion}\index{testMotionDistortion@{testMotionDistortion}} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{namespacetest_motion_distortion_a7722c8ecbb62d99aee7ce68b1752f337}{N}} = 100 +\item +float \mbox{\hyperlink{namespacetest_motion_distortion_aeb5e3b3a31f302552b5bd35f3accd3c2}{outlier\+\_\+rate}} = 0.\+4 +\item +bool \mbox{\hyperlink{namespacetest_motion_distortion_ac167268f99229eb4f16b0291abb2031b}{noisy}} = \mbox{\hyperlink{namespacetest_motion_distortion_a36cde68b055f3f2ee671020af4ccf4e2}{False}} +\item +bool \mbox{\hyperlink{namespacetest_motion_distortion_af5a541b70835126d40b66611fae2b02a}{use\+Old}} = \mbox{\hyperlink{namespacetest_motion_distortion_a36cde68b055f3f2ee671020af4ccf4e2}{False}} +\item +int \mbox{\hyperlink{namespacetest_motion_distortion_a0877761f00ee2460fe16820f9d52daf1}{frequency}} = 4 +\item +int \mbox{\hyperlink{namespacetest_motion_distortion_a486233493fc0e05fe1bdbe7b7e5d0f1e}{period}} = 1 / \mbox{\hyperlink{namespacetest_motion_distortion_a0877761f00ee2460fe16820f9d52daf1}{frequency}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a6ea61aa1009f507ec5cc56ec088c994e}{ground\+Truth}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_ab4d948a1902fb16de6b605fd976adf71}{current\+Frame}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_ad5ed049a2c1601e6f4f9e5d69619c804}{theta\+\_\+deg}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}{h}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a2202ecdde3f1299448698af0ba3eb256}{n\+\_\+points}} +\item +int \mbox{\hyperlink{namespacetest_motion_distortion_a8493384c61de1f81ddb7c407d63df2b8}{velocity}} = np.\+array(\mbox{[}\mbox{\hyperlink{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}{h}}\mbox{[}0, 0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}{h}}\mbox{[}1, 0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_ad5ed049a2c1601e6f4f9e5d69619c804}{theta\+\_\+deg}}\mbox{]}) / \mbox{\hyperlink{namespacetest_motion_distortion_a486233493fc0e05fe1bdbe7b7e5d0f1e}{period}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a4fc87d3e0555721c49e62c74ca5e0cce}{distorted}} = distort(\mbox{\hyperlink{namespacetest_motion_distortion_ab4d948a1902fb16de6b605fd976adf71}{current\+Frame}}, \mbox{\hyperlink{namespacetest_motion_distortion_a8493384c61de1f81ddb7c407d63df2b8}{velocity}}, \mbox{\hyperlink{namespacetest_motion_distortion_a0877761f00ee2460fe16820f9d52daf1}{frequency}}, \mbox{\hyperlink{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}{h}}) +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a16f3add66da7caa94dad99c6e62e5160}{outlier\+\_\+ind}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a85217f3efc8710cdcda27b2298c29f80}{noise\+To\+Add}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}} = \mbox{\hyperlink{namespacetest_motion_distortion_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}}\mbox{[}\+:2, \+:2\mbox{]} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}} = \mbox{\hyperlink{namespacetest_motion_distortion_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}}\mbox{[}\+:2, 2\+:\mbox{]} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a3b98e2dffc6cb06a89dcb0d5c60a0206}{A}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}} = np.\+linalg.\+inv(\mbox{\hyperlink{namespacetest_motion_distortion_a3b98e2dffc6cb06a89dcb0d5c60a0206}{A}}) +\item +int \mbox{\hyperlink{namespacetest_motion_distortion_ab69a1473bbefcd69e648eed41f4cf499}{theta\+\_\+fit}} = np.\+arctan2(\mbox{\hyperlink{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}}\mbox{[}1, 0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}}\mbox{[}0, 0\mbox{]}) $\ast$ 180 / np.\+pi +\item +tuple \mbox{\hyperlink{namespacetest_motion_distortion_a1b714106eb7bad251438c439fc59e407}{src\+Coord2}} = (\mbox{\hyperlink{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}} @ distorted.\+T + \mbox{\hyperlink{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}).T +\item +\mbox{\hyperlink{namespacetest_motion_distortion_adca18f0c2258ab57e96c3f009761ea85}{title\+\_\+append}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a62197192f0fbf4e0675eb37be1c4c175}{alpha}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_aebfdce4f6cc7241ba38924f77a12e7cf}{clear}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a36cde68b055f3f2ee671020af4ccf4e2}{False}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a584efbd5d11809943039e71845b0cd7f}{show}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a05c99e7a4b8e210f2a90435ada048345}{plot\+Displace}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a0a395e89714f60150df6675faaa1f6cb}{T\+\_\+wj0}} = np.\+eye(3) +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a0e515884ff3ebc059c605589aec689b7}{p\+\_\+w}} = \mbox{\hyperlink{namespacetest_motion_distortion_a6ea61aa1009f507ec5cc56ec088c994e}{ground\+Truth}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_aa9fffd513bf2e2cbfe44da13aa4a69bf}{p\+\_\+jt}} = \mbox{\hyperlink{namespacetest_motion_distortion_a4fc87d3e0555721c49e62c74ca5e0cce}{distorted}} +\item +int \mbox{\hyperlink{namespacetest_motion_distortion_ad68b1bf260bf575b3e2c6ede7e8cb890}{v\+\_\+j0}} = np.\+array(\mbox{[}\mbox{\hyperlink{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}\mbox{[}0,0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}\mbox{[}1,0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_ab69a1473bbefcd69e648eed41f4cf499}{theta\+\_\+fit}} $\ast$ np.\+pi / 180\mbox{]}) / \mbox{\hyperlink{namespacetest_motion_distortion_a486233493fc0e05fe1bdbe7b7e5d0f1e}{period}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a2ad6563ac916a24a87640bf0355b44f9}{T\+\_\+wj}} +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a08d7ab388db4b26c426bef86ef14b56d}{cov\+\_\+p}} = np.\+diag(\mbox{[}4, 4\mbox{]}) +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a0a3c99d367d844f8d11bbe4e735df941}{cov\+\_\+v}} = np.\+diag(\mbox{[}1, 1, (5 $\ast$ np.\+pi / 180) $\ast$$\ast$ 2\mbox{]}) +\item +\mbox{\hyperlink{namespacetest_motion_distortion_ae4611af3884f5d62ef0628317c03fff1}{MDS}} = \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver}{Motion\+Distortion\+Solver}}(\mbox{\hyperlink{namespacetest_motion_distortion_a0a395e89714f60150df6675faaa1f6cb}{T\+\_\+wj0}}, \mbox{\hyperlink{namespacetest_motion_distortion_a0e515884ff3ebc059c605589aec689b7}{p\+\_\+w}}, \mbox{\hyperlink{namespacetest_motion_distortion_aa9fffd513bf2e2cbfe44da13aa4a69bf}{p\+\_\+jt}}, \mbox{\hyperlink{namespacetest_motion_distortion_ad68b1bf260bf575b3e2c6ede7e8cb890}{v\+\_\+j0}}, \mbox{\hyperlink{namespacetest_motion_distortion_a2ad6563ac916a24a87640bf0355b44f9}{T\+\_\+wj}}, \mbox{\hyperlink{namespacetest_motion_distortion_a08d7ab388db4b26c426bef86ef14b56d}{cov\+\_\+p}}, \mbox{\hyperlink{namespacetest_motion_distortion_a0a3c99d367d844f8d11bbe4e735df941}{cov\+\_\+v}}) +\item +\mbox{\hyperlink{namespacetest_motion_distortion_afae9a38dc58a08daa2011e18a26770f7}{undistorted}} = MDS.\+undistort(\mbox{\hyperlink{namespacetest_motion_distortion_ad68b1bf260bf575b3e2c6ede7e8cb890}{v\+\_\+j0}}) +\item +tuple \mbox{\hyperlink{namespacetest_motion_distortion_a1648556515a367ae4a45a7e2330cd9eb}{src\+Coord3}} = (\mbox{\hyperlink{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}} @ undistorted.\+T + \mbox{\hyperlink{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}).T +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a41000f175dc0115080e2a682cc06dbe9}{params}} = MDS.\+optimize\+\_\+library() +\item +\mbox{\hyperlink{namespacetest_motion_distortion_a8d47c866b21811d9fceea3b06fc84638}{final\+\_\+undistorted}} = MDS.\+undistort(\mbox{\hyperlink{namespacetest_motion_distortion_a41000f175dc0115080e2a682cc06dbe9}{params}}\mbox{[}\+:3\mbox{]}) +\item +\mbox{\hyperlink{namespacetest_motion_distortion_ab3d350d501d99e7bbe8f68ace7af32c7}{transform}} = convert\+Pose\+To\+Transform(\mbox{\hyperlink{namespacetest_motion_distortion_a41000f175dc0115080e2a682cc06dbe9}{params}}\mbox{[}3\+:\mbox{]}) +\item +tuple \mbox{\hyperlink{namespacetest_motion_distortion_aa469d7addbb311effcc0cc5fa6c86dfd}{solution}} = (\mbox{\hyperlink{namespacetest_motion_distortion_ab3d350d501d99e7bbe8f68ace7af32c7}{transform}} @ \mbox{\hyperlink{namespacetest_motion_distortion_a8d47c866b21811d9fceea3b06fc84638}{final\+\_\+undistorted}})\mbox{[}\+:, \+:2, 0\mbox{]} +\end{DoxyCompactItemize} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespacetest_motion_distortion_a3b98e2dffc6cb06a89dcb0d5c60a0206}\label{namespacetest_motion_distortion_a3b98e2dffc6cb06a89dcb0d5c60a0206}} +\index{testMotionDistortion@{testMotionDistortion}!A@{A}} +\index{A@{A}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{A}{A}} +{\footnotesize\ttfamily A} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = np.block([[R\_fit, h\_fit],} +\DoxyCodeLine{2 [np.zeros((1, 2)), 1]])} + +\end{DoxyCode} +\mbox{\Hypertarget{namespacetest_motion_distortion_a03b4b9a49913cb27a8dff899ea68f892}\label{namespacetest_motion_distortion_a03b4b9a49913cb27a8dff899ea68f892}} +\index{testMotionDistortion@{testMotionDistortion}!A\_inv@{A\_inv}} +\index{A\_inv@{A\_inv}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{A\_inv}{A\_inv}} +{\footnotesize\ttfamily A\+\_\+inv = np.\+linalg.\+inv(\mbox{\hyperlink{namespacetest_motion_distortion_a3b98e2dffc6cb06a89dcb0d5c60a0206}{A}})} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a62197192f0fbf4e0675eb37be1c4c175}\label{namespacetest_motion_distortion_a62197192f0fbf4e0675eb37be1c4c175}} +\index{testMotionDistortion@{testMotionDistortion}!alpha@{alpha}} +\index{alpha@{alpha}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{alpha}{alpha}} +{\footnotesize\ttfamily alpha} + +\mbox{\Hypertarget{namespacetest_motion_distortion_aebfdce4f6cc7241ba38924f77a12e7cf}\label{namespacetest_motion_distortion_aebfdce4f6cc7241ba38924f77a12e7cf}} +\index{testMotionDistortion@{testMotionDistortion}!clear@{clear}} +\index{clear@{clear}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{clear}{clear}} +{\footnotesize\ttfamily clear} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a08d7ab388db4b26c426bef86ef14b56d}\label{namespacetest_motion_distortion_a08d7ab388db4b26c426bef86ef14b56d}} +\index{testMotionDistortion@{testMotionDistortion}!cov\_p@{cov\_p}} +\index{cov\_p@{cov\_p}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{cov\_p}{cov\_p}} +{\footnotesize\ttfamily cov\+\_\+p = np.\+diag(\mbox{[}4, 4\mbox{]})} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a0a3c99d367d844f8d11bbe4e735df941}\label{namespacetest_motion_distortion_a0a3c99d367d844f8d11bbe4e735df941}} +\index{testMotionDistortion@{testMotionDistortion}!cov\_v@{cov\_v}} +\index{cov\_v@{cov\_v}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{cov\_v}{cov\_v}} +{\footnotesize\ttfamily cov\+\_\+v = np.\+diag(\mbox{[}1, 1, (5 $\ast$ np.\+pi / 180) $\ast$$\ast$ 2\mbox{]})} + +\mbox{\Hypertarget{namespacetest_motion_distortion_ab4d948a1902fb16de6b605fd976adf71}\label{namespacetest_motion_distortion_ab4d948a1902fb16de6b605fd976adf71}} +\index{testMotionDistortion@{testMotionDistortion}!currentFrame@{currentFrame}} +\index{currentFrame@{currentFrame}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{currentFrame}{currentFrame}} +{\footnotesize\ttfamily current\+Frame} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a4fc87d3e0555721c49e62c74ca5e0cce}\label{namespacetest_motion_distortion_a4fc87d3e0555721c49e62c74ca5e0cce}} +\index{testMotionDistortion@{testMotionDistortion}!distorted@{distorted}} +\index{distorted@{distorted}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{distorted}{distorted}} +{\footnotesize\ttfamily distorted = distort(\mbox{\hyperlink{namespacetest_motion_distortion_ab4d948a1902fb16de6b605fd976adf71}{current\+Frame}}, \mbox{\hyperlink{namespacetest_motion_distortion_a8493384c61de1f81ddb7c407d63df2b8}{velocity}}, \mbox{\hyperlink{namespacetest_motion_distortion_a0877761f00ee2460fe16820f9d52daf1}{frequency}}, \mbox{\hyperlink{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}{h}})} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a36cde68b055f3f2ee671020af4ccf4e2}\label{namespacetest_motion_distortion_a36cde68b055f3f2ee671020af4ccf4e2}} +\index{testMotionDistortion@{testMotionDistortion}!False@{False}} +\index{False@{False}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{False}{False}} +{\footnotesize\ttfamily False} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a8d47c866b21811d9fceea3b06fc84638}\label{namespacetest_motion_distortion_a8d47c866b21811d9fceea3b06fc84638}} +\index{testMotionDistortion@{testMotionDistortion}!final\_undistorted@{final\_undistorted}} +\index{final\_undistorted@{final\_undistorted}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{final\_undistorted}{final\_undistorted}} +{\footnotesize\ttfamily final\+\_\+undistorted = MDS.\+undistort(\mbox{\hyperlink{namespacetest_motion_distortion_a41000f175dc0115080e2a682cc06dbe9}{params}}\mbox{[}\+:3\mbox{]})} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a0877761f00ee2460fe16820f9d52daf1}\label{namespacetest_motion_distortion_a0877761f00ee2460fe16820f9d52daf1}} +\index{testMotionDistortion@{testMotionDistortion}!frequency@{frequency}} +\index{frequency@{frequency}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{frequency}{frequency}} +{\footnotesize\ttfamily int frequency = 4} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a6ea61aa1009f507ec5cc56ec088c994e}\label{namespacetest_motion_distortion_a6ea61aa1009f507ec5cc56ec088c994e}} +\index{testMotionDistortion@{testMotionDistortion}!groundTruth@{groundTruth}} +\index{groundTruth@{groundTruth}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{groundTruth}{groundTruth}} +{\footnotesize\ttfamily ground\+Truth} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}\label{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}} +\index{testMotionDistortion@{testMotionDistortion}!h@{h}} +\index{h@{h}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{h}{h}} +{\footnotesize\ttfamily h} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}\label{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}} +\index{testMotionDistortion@{testMotionDistortion}!h\_fit@{h\_fit}} +\index{h\_fit@{h\_fit}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{h\_fit}{h\_fit}} +{\footnotesize\ttfamily h\+\_\+fit = \mbox{\hyperlink{namespacetest_motion_distortion_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}}\mbox{[}\+:2, 2\+:\mbox{]}} + +\mbox{\Hypertarget{namespacetest_motion_distortion_ae4611af3884f5d62ef0628317c03fff1}\label{namespacetest_motion_distortion_ae4611af3884f5d62ef0628317c03fff1}} +\index{testMotionDistortion@{testMotionDistortion}!MDS@{MDS}} +\index{MDS@{MDS}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{MDS}{MDS}} +{\footnotesize\ttfamily MDS = \mbox{\hyperlink{classmotion_distortion_1_1_motion_distortion_solver}{Motion\+Distortion\+Solver}}(\mbox{\hyperlink{namespacetest_motion_distortion_a0a395e89714f60150df6675faaa1f6cb}{T\+\_\+wj0}}, \mbox{\hyperlink{namespacetest_motion_distortion_a0e515884ff3ebc059c605589aec689b7}{p\+\_\+w}}, \mbox{\hyperlink{namespacetest_motion_distortion_aa9fffd513bf2e2cbfe44da13aa4a69bf}{p\+\_\+jt}}, \mbox{\hyperlink{namespacetest_motion_distortion_ad68b1bf260bf575b3e2c6ede7e8cb890}{v\+\_\+j0}}, \mbox{\hyperlink{namespacetest_motion_distortion_a2ad6563ac916a24a87640bf0355b44f9}{T\+\_\+wj}}, \mbox{\hyperlink{namespacetest_motion_distortion_a08d7ab388db4b26c426bef86ef14b56d}{cov\+\_\+p}}, \mbox{\hyperlink{namespacetest_motion_distortion_a0a3c99d367d844f8d11bbe4e735df941}{cov\+\_\+v}})} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a7722c8ecbb62d99aee7ce68b1752f337}\label{namespacetest_motion_distortion_a7722c8ecbb62d99aee7ce68b1752f337}} +\index{testMotionDistortion@{testMotionDistortion}!N@{N}} +\index{N@{N}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{N}{N}} +{\footnotesize\ttfamily int N = 100} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a2202ecdde3f1299448698af0ba3eb256}\label{namespacetest_motion_distortion_a2202ecdde3f1299448698af0ba3eb256}} +\index{testMotionDistortion@{testMotionDistortion}!n\_points@{n\_points}} +\index{n\_points@{n\_points}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{n\_points}{n\_points}} +{\footnotesize\ttfamily n\+\_\+points} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a85217f3efc8710cdcda27b2298c29f80}\label{namespacetest_motion_distortion_a85217f3efc8710cdcda27b2298c29f80}} +\index{testMotionDistortion@{testMotionDistortion}!noiseToAdd@{noiseToAdd}} +\index{noiseToAdd@{noiseToAdd}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{noiseToAdd}{noiseToAdd}} +{\footnotesize\ttfamily noise\+To\+Add} + +\mbox{\Hypertarget{namespacetest_motion_distortion_ac167268f99229eb4f16b0291abb2031b}\label{namespacetest_motion_distortion_ac167268f99229eb4f16b0291abb2031b}} +\index{testMotionDistortion@{testMotionDistortion}!noisy@{noisy}} +\index{noisy@{noisy}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{noisy}{noisy}} +{\footnotesize\ttfamily bool noisy = \mbox{\hyperlink{namespacetest_motion_distortion_a36cde68b055f3f2ee671020af4ccf4e2}{False}}} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a16f3add66da7caa94dad99c6e62e5160}\label{namespacetest_motion_distortion_a16f3add66da7caa94dad99c6e62e5160}} +\index{testMotionDistortion@{testMotionDistortion}!outlier\_ind@{outlier\_ind}} +\index{outlier\_ind@{outlier\_ind}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{outlier\_ind}{outlier\_ind}} +{\footnotesize\ttfamily outlier\+\_\+ind} + +\mbox{\Hypertarget{namespacetest_motion_distortion_aeb5e3b3a31f302552b5bd35f3accd3c2}\label{namespacetest_motion_distortion_aeb5e3b3a31f302552b5bd35f3accd3c2}} +\index{testMotionDistortion@{testMotionDistortion}!outlier\_rate@{outlier\_rate}} +\index{outlier\_rate@{outlier\_rate}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{outlier\_rate}{outlier\_rate}} +{\footnotesize\ttfamily float outlier\+\_\+rate = 0.\+4} + +\mbox{\Hypertarget{namespacetest_motion_distortion_aa9fffd513bf2e2cbfe44da13aa4a69bf}\label{namespacetest_motion_distortion_aa9fffd513bf2e2cbfe44da13aa4a69bf}} +\index{testMotionDistortion@{testMotionDistortion}!p\_jt@{p\_jt}} +\index{p\_jt@{p\_jt}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{p\_jt}{p\_jt}} +{\footnotesize\ttfamily p\+\_\+jt = \mbox{\hyperlink{namespacetest_motion_distortion_a4fc87d3e0555721c49e62c74ca5e0cce}{distorted}}} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a0e515884ff3ebc059c605589aec689b7}\label{namespacetest_motion_distortion_a0e515884ff3ebc059c605589aec689b7}} +\index{testMotionDistortion@{testMotionDistortion}!p\_w@{p\_w}} +\index{p\_w@{p\_w}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{p\_w}{p\_w}} +{\footnotesize\ttfamily p\+\_\+w = \mbox{\hyperlink{namespacetest_motion_distortion_a6ea61aa1009f507ec5cc56ec088c994e}{ground\+Truth}}} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a41000f175dc0115080e2a682cc06dbe9}\label{namespacetest_motion_distortion_a41000f175dc0115080e2a682cc06dbe9}} +\index{testMotionDistortion@{testMotionDistortion}!params@{params}} +\index{params@{params}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{params}{params}} +{\footnotesize\ttfamily params = MDS.\+optimize\+\_\+library()} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a486233493fc0e05fe1bdbe7b7e5d0f1e}\label{namespacetest_motion_distortion_a486233493fc0e05fe1bdbe7b7e5d0f1e}} +\index{testMotionDistortion@{testMotionDistortion}!period@{period}} +\index{period@{period}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{period}{period}} +{\footnotesize\ttfamily int period = 1 / \mbox{\hyperlink{namespacetest_motion_distortion_a0877761f00ee2460fe16820f9d52daf1}{frequency}}} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a05c99e7a4b8e210f2a90435ada048345}\label{namespacetest_motion_distortion_a05c99e7a4b8e210f2a90435ada048345}} +\index{testMotionDistortion@{testMotionDistortion}!plotDisplace@{plotDisplace}} +\index{plotDisplace@{plotDisplace}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{plotDisplace}{plotDisplace}} +{\footnotesize\ttfamily plot\+Displace} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}\label{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}} +\index{testMotionDistortion@{testMotionDistortion}!R\_fit@{R\_fit}} +\index{R\_fit@{R\_fit}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{R\_fit}{R\_fit}} +{\footnotesize\ttfamily R\+\_\+fit = \mbox{\hyperlink{namespacetest_motion_distortion_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}}\mbox{[}\+:2, \+:2\mbox{]}} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a584efbd5d11809943039e71845b0cd7f}\label{namespacetest_motion_distortion_a584efbd5d11809943039e71845b0cd7f}} +\index{testMotionDistortion@{testMotionDistortion}!show@{show}} +\index{show@{show}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{show}{show}} +{\footnotesize\ttfamily show} + +\mbox{\Hypertarget{namespacetest_motion_distortion_aa469d7addbb311effcc0cc5fa6c86dfd}\label{namespacetest_motion_distortion_aa469d7addbb311effcc0cc5fa6c86dfd}} +\index{testMotionDistortion@{testMotionDistortion}!solution@{solution}} +\index{solution@{solution}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{solution}{solution}} +{\footnotesize\ttfamily tuple solution = (\mbox{\hyperlink{namespacetest_motion_distortion_ab3d350d501d99e7bbe8f68ace7af32c7}{transform}} @ \mbox{\hyperlink{namespacetest_motion_distortion_a8d47c866b21811d9fceea3b06fc84638}{final\+\_\+undistorted}})\mbox{[}\+:, \+:2, 0\mbox{]}} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a1b714106eb7bad251438c439fc59e407}\label{namespacetest_motion_distortion_a1b714106eb7bad251438c439fc59e407}} +\index{testMotionDistortion@{testMotionDistortion}!srcCoord2@{srcCoord2}} +\index{srcCoord2@{srcCoord2}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{srcCoord2}{srcCoord2}} +{\footnotesize\ttfamily tuple src\+Coord2 = (\mbox{\hyperlink{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}} @ distorted.\+T + \mbox{\hyperlink{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}).T} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a1648556515a367ae4a45a7e2330cd9eb}\label{namespacetest_motion_distortion_a1648556515a367ae4a45a7e2330cd9eb}} +\index{testMotionDistortion@{testMotionDistortion}!srcCoord3@{srcCoord3}} +\index{srcCoord3@{srcCoord3}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{srcCoord3}{srcCoord3}} +{\footnotesize\ttfamily tuple src\+Coord3 = (\mbox{\hyperlink{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}} @ undistorted.\+T + \mbox{\hyperlink{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}).T} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a2ad6563ac916a24a87640bf0355b44f9}\label{namespacetest_motion_distortion_a2ad6563ac916a24a87640bf0355b44f9}} +\index{testMotionDistortion@{testMotionDistortion}!T\_wj@{T\_wj}} +\index{T\_wj@{T\_wj}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{T\_wj}{T\_wj}} +{\footnotesize\ttfamily T\+\_\+wj} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = np.block([[R\_fit, h\_fit],} +\DoxyCodeLine{2 [np.zeros((2,)), 1]])} + +\end{DoxyCode} +\mbox{\Hypertarget{namespacetest_motion_distortion_a0a395e89714f60150df6675faaa1f6cb}\label{namespacetest_motion_distortion_a0a395e89714f60150df6675faaa1f6cb}} +\index{testMotionDistortion@{testMotionDistortion}!T\_wj0@{T\_wj0}} +\index{T\_wj0@{T\_wj0}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{T\_wj0}{T\_wj0}} +{\footnotesize\ttfamily T\+\_\+wj0 = np.\+eye(3)} + +\mbox{\Hypertarget{namespacetest_motion_distortion_ad5ed049a2c1601e6f4f9e5d69619c804}\label{namespacetest_motion_distortion_ad5ed049a2c1601e6f4f9e5d69619c804}} +\index{testMotionDistortion@{testMotionDistortion}!theta\_deg@{theta\_deg}} +\index{theta\_deg@{theta\_deg}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{theta\_deg}{theta\_deg}} +{\footnotesize\ttfamily theta\+\_\+deg} + +\mbox{\Hypertarget{namespacetest_motion_distortion_ab69a1473bbefcd69e648eed41f4cf499}\label{namespacetest_motion_distortion_ab69a1473bbefcd69e648eed41f4cf499}} +\index{testMotionDistortion@{testMotionDistortion}!theta\_fit@{theta\_fit}} +\index{theta\_fit@{theta\_fit}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{theta\_fit}{theta\_fit}} +{\footnotesize\ttfamily int theta\+\_\+fit = np.\+arctan2(\mbox{\hyperlink{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}}\mbox{[}1, 0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}}\mbox{[}0, 0\mbox{]}) $\ast$ 180 / np.\+pi} + +\mbox{\Hypertarget{namespacetest_motion_distortion_adca18f0c2258ab57e96c3f009761ea85}\label{namespacetest_motion_distortion_adca18f0c2258ab57e96c3f009761ea85}} +\index{testMotionDistortion@{testMotionDistortion}!title\_append@{title\_append}} +\index{title\_append@{title\_append}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{title\_append}{title\_append}} +{\footnotesize\ttfamily title\+\_\+append} + +\mbox{\Hypertarget{namespacetest_motion_distortion_ab3d350d501d99e7bbe8f68ace7af32c7}\label{namespacetest_motion_distortion_ab3d350d501d99e7bbe8f68ace7af32c7}} +\index{testMotionDistortion@{testMotionDistortion}!transform@{transform}} +\index{transform@{transform}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{transform}{transform}} +{\footnotesize\ttfamily transform = convert\+Pose\+To\+Transform(\mbox{\hyperlink{namespacetest_motion_distortion_a41000f175dc0115080e2a682cc06dbe9}{params}}\mbox{[}3\+:\mbox{]})} + +\mbox{\Hypertarget{namespacetest_motion_distortion_afae9a38dc58a08daa2011e18a26770f7}\label{namespacetest_motion_distortion_afae9a38dc58a08daa2011e18a26770f7}} +\index{testMotionDistortion@{testMotionDistortion}!undistorted@{undistorted}} +\index{undistorted@{undistorted}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{undistorted}{undistorted}} +{\footnotesize\ttfamily undistorted = MDS.\+undistort(\mbox{\hyperlink{namespacetest_motion_distortion_ad68b1bf260bf575b3e2c6ede7e8cb890}{v\+\_\+j0}})} + +\mbox{\Hypertarget{namespacetest_motion_distortion_af5a541b70835126d40b66611fae2b02a}\label{namespacetest_motion_distortion_af5a541b70835126d40b66611fae2b02a}} +\index{testMotionDistortion@{testMotionDistortion}!useOld@{useOld}} +\index{useOld@{useOld}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{useOld}{useOld}} +{\footnotesize\ttfamily bool use\+Old = \mbox{\hyperlink{namespacetest_motion_distortion_a36cde68b055f3f2ee671020af4ccf4e2}{False}}} + +\mbox{\Hypertarget{namespacetest_motion_distortion_ad68b1bf260bf575b3e2c6ede7e8cb890}\label{namespacetest_motion_distortion_ad68b1bf260bf575b3e2c6ede7e8cb890}} +\index{testMotionDistortion@{testMotionDistortion}!v\_j0@{v\_j0}} +\index{v\_j0@{v\_j0}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{v\_j0}{v\_j0}} +{\footnotesize\ttfamily int v\+\_\+j0 = np.\+array(\mbox{[}\mbox{\hyperlink{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}\mbox{[}0,0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}\mbox{[}1,0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_ab69a1473bbefcd69e648eed41f4cf499}{theta\+\_\+fit}} $\ast$ np.\+pi / 180\mbox{]}) / \mbox{\hyperlink{namespacetest_motion_distortion_a486233493fc0e05fe1bdbe7b7e5d0f1e}{period}}} + +\mbox{\Hypertarget{namespacetest_motion_distortion_a8493384c61de1f81ddb7c407d63df2b8}\label{namespacetest_motion_distortion_a8493384c61de1f81ddb7c407d63df2b8}} +\index{testMotionDistortion@{testMotionDistortion}!velocity@{velocity}} +\index{velocity@{velocity}!testMotionDistortion@{testMotionDistortion}} +\doxysubsubsection{\texorpdfstring{velocity}{velocity}} +{\footnotesize\ttfamily int velocity = np.\+array(\mbox{[}\mbox{\hyperlink{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}{h}}\mbox{[}0, 0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}{h}}\mbox{[}1, 0\mbox{]}, \mbox{\hyperlink{namespacetest_motion_distortion_ad5ed049a2c1601e6f4f9e5d69619c804}{theta\+\_\+deg}}\mbox{]}) / \mbox{\hyperlink{namespacetest_motion_distortion_a486233493fc0e05fe1bdbe7b7e5d0f1e}{period}}} + diff --git a/doc/latex/namespacetest_transform.tex b/doc/latex/namespacetest_transform.tex new file mode 100644 index 0000000..f38355d --- /dev/null +++ b/doc/latex/namespacetest_transform.tex @@ -0,0 +1,190 @@ +\hypertarget{namespacetest_transform}{}\doxysection{test\+Transform Namespace Reference} +\label{namespacetest_transform}\index{testTransform@{testTransform}} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{namespacetest_transform_a7722c8ecbb62d99aee7ce68b1752f337}{N}} = 100 +\item +float \mbox{\hyperlink{namespacetest_transform_aeb5e3b3a31f302552b5bd35f3accd3c2}{outlier\+\_\+rate}} = 0.\+4 +\item +bool \mbox{\hyperlink{namespacetest_transform_ac167268f99229eb4f16b0291abb2031b}{noisy}} = \mbox{\hyperlink{namespacetest_transform_a36cde68b055f3f2ee671020af4ccf4e2}{False}} +\item +bool \mbox{\hyperlink{namespacetest_transform_af5a541b70835126d40b66611fae2b02a}{use\+Old}} = \mbox{\hyperlink{namespacetest_transform_a36cde68b055f3f2ee671020af4ccf4e2}{False}} +\item +\mbox{\hyperlink{namespacetest_transform_a48eb521013d78f7dad08a4aabe451e1b}{src\+Coord}} +\item +\mbox{\hyperlink{namespacetest_transform_ae4834211499fa0991173526c2592ef12}{target\+Coord}} +\item +\mbox{\hyperlink{namespacetest_transform_ad5ed049a2c1601e6f4f9e5d69619c804}{theta\+\_\+deg}} +\item +\mbox{\hyperlink{namespacetest_transform_a5e36941b3d856737e81516acd45edc50}{h}} +\item +\mbox{\hyperlink{namespacetest_transform_a2202ecdde3f1299448698af0ba3eb256}{n\+\_\+points}} +\item +\mbox{\hyperlink{namespacetest_transform_a16f3add66da7caa94dad99c6e62e5160}{outlier\+\_\+ind}} +\item +\mbox{\hyperlink{namespacetest_transform_a85217f3efc8710cdcda27b2298c29f80}{noise\+To\+Add}} +\item +\mbox{\hyperlink{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}} = \mbox{\hyperlink{namespacetest_transform_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}}\mbox{[}\+:2, \+:2\mbox{]} +\item +\mbox{\hyperlink{namespacetest_transform_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}} = \mbox{\hyperlink{namespacetest_transform_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}}\mbox{[}\+:2, 2\+:\mbox{]} +\item +\mbox{\hyperlink{namespacetest_transform_a3b98e2dffc6cb06a89dcb0d5c60a0206}{A}} +\item +\mbox{\hyperlink{namespacetest_transform_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}} = np.\+linalg.\+inv(\mbox{\hyperlink{namespacetest_transform_a3b98e2dffc6cb06a89dcb0d5c60a0206}{A}}) +\item +int \mbox{\hyperlink{namespacetest_transform_ab69a1473bbefcd69e648eed41f4cf499}{theta\+\_\+fit}} = np.\+arctan2(\mbox{\hyperlink{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}}\mbox{[}1, 0\mbox{]}, \mbox{\hyperlink{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}}\mbox{[}0, 0\mbox{]}) $\ast$ 180 / np.\+pi +\item +tuple \mbox{\hyperlink{namespacetest_transform_a1b714106eb7bad251438c439fc59e407}{src\+Coord2}} = (\mbox{\hyperlink{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}} @ target\+Coord.\+T + \mbox{\hyperlink{namespacetest_transform_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}).T +\item +\mbox{\hyperlink{namespacetest_transform_adca18f0c2258ab57e96c3f009761ea85}{title\+\_\+append}} +\item +\mbox{\hyperlink{namespacetest_transform_a62197192f0fbf4e0675eb37be1c4c175}{alpha}} +\item +\mbox{\hyperlink{namespacetest_transform_aebfdce4f6cc7241ba38924f77a12e7cf}{clear}} +\item +\mbox{\hyperlink{namespacetest_transform_a36cde68b055f3f2ee671020af4ccf4e2}{False}} +\item +\mbox{\hyperlink{namespacetest_transform_a584efbd5d11809943039e71845b0cd7f}{show}} +\end{DoxyCompactItemize} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespacetest_transform_a3b98e2dffc6cb06a89dcb0d5c60a0206}\label{namespacetest_transform_a3b98e2dffc6cb06a89dcb0d5c60a0206}} +\index{testTransform@{testTransform}!A@{A}} +\index{A@{A}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{A}{A}} +{\footnotesize\ttfamily A} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = np.block([[R\_fit, h\_fit],} +\DoxyCodeLine{2 [np.zeros((1, 2)), 1]])} + +\end{DoxyCode} +\mbox{\Hypertarget{namespacetest_transform_a03b4b9a49913cb27a8dff899ea68f892}\label{namespacetest_transform_a03b4b9a49913cb27a8dff899ea68f892}} +\index{testTransform@{testTransform}!A\_inv@{A\_inv}} +\index{A\_inv@{A\_inv}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{A\_inv}{A\_inv}} +{\footnotesize\ttfamily A\+\_\+inv = np.\+linalg.\+inv(\mbox{\hyperlink{namespacetest_transform_a3b98e2dffc6cb06a89dcb0d5c60a0206}{A}})} + +\mbox{\Hypertarget{namespacetest_transform_a62197192f0fbf4e0675eb37be1c4c175}\label{namespacetest_transform_a62197192f0fbf4e0675eb37be1c4c175}} +\index{testTransform@{testTransform}!alpha@{alpha}} +\index{alpha@{alpha}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{alpha}{alpha}} +{\footnotesize\ttfamily alpha} + +\mbox{\Hypertarget{namespacetest_transform_aebfdce4f6cc7241ba38924f77a12e7cf}\label{namespacetest_transform_aebfdce4f6cc7241ba38924f77a12e7cf}} +\index{testTransform@{testTransform}!clear@{clear}} +\index{clear@{clear}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{clear}{clear}} +{\footnotesize\ttfamily clear} + +\mbox{\Hypertarget{namespacetest_transform_a36cde68b055f3f2ee671020af4ccf4e2}\label{namespacetest_transform_a36cde68b055f3f2ee671020af4ccf4e2}} +\index{testTransform@{testTransform}!False@{False}} +\index{False@{False}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{False}{False}} +{\footnotesize\ttfamily False} + +\mbox{\Hypertarget{namespacetest_transform_a5e36941b3d856737e81516acd45edc50}\label{namespacetest_transform_a5e36941b3d856737e81516acd45edc50}} +\index{testTransform@{testTransform}!h@{h}} +\index{h@{h}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{h}{h}} +{\footnotesize\ttfamily h} + +\mbox{\Hypertarget{namespacetest_transform_a29ad3fdd24965a3db8b834e04d27a7ea}\label{namespacetest_transform_a29ad3fdd24965a3db8b834e04d27a7ea}} +\index{testTransform@{testTransform}!h\_fit@{h\_fit}} +\index{h\_fit@{h\_fit}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{h\_fit}{h\_fit}} +{\footnotesize\ttfamily h\+\_\+fit = \mbox{\hyperlink{namespacetest_transform_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}}\mbox{[}\+:2, 2\+:\mbox{]}} + +\mbox{\Hypertarget{namespacetest_transform_a7722c8ecbb62d99aee7ce68b1752f337}\label{namespacetest_transform_a7722c8ecbb62d99aee7ce68b1752f337}} +\index{testTransform@{testTransform}!N@{N}} +\index{N@{N}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{N}{N}} +{\footnotesize\ttfamily int N = 100} + +\mbox{\Hypertarget{namespacetest_transform_a2202ecdde3f1299448698af0ba3eb256}\label{namespacetest_transform_a2202ecdde3f1299448698af0ba3eb256}} +\index{testTransform@{testTransform}!n\_points@{n\_points}} +\index{n\_points@{n\_points}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{n\_points}{n\_points}} +{\footnotesize\ttfamily n\+\_\+points} + +\mbox{\Hypertarget{namespacetest_transform_a85217f3efc8710cdcda27b2298c29f80}\label{namespacetest_transform_a85217f3efc8710cdcda27b2298c29f80}} +\index{testTransform@{testTransform}!noiseToAdd@{noiseToAdd}} +\index{noiseToAdd@{noiseToAdd}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{noiseToAdd}{noiseToAdd}} +{\footnotesize\ttfamily noise\+To\+Add} + +\mbox{\Hypertarget{namespacetest_transform_ac167268f99229eb4f16b0291abb2031b}\label{namespacetest_transform_ac167268f99229eb4f16b0291abb2031b}} +\index{testTransform@{testTransform}!noisy@{noisy}} +\index{noisy@{noisy}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{noisy}{noisy}} +{\footnotesize\ttfamily bool noisy = \mbox{\hyperlink{namespacetest_transform_a36cde68b055f3f2ee671020af4ccf4e2}{False}}} + +\mbox{\Hypertarget{namespacetest_transform_a16f3add66da7caa94dad99c6e62e5160}\label{namespacetest_transform_a16f3add66da7caa94dad99c6e62e5160}} +\index{testTransform@{testTransform}!outlier\_ind@{outlier\_ind}} +\index{outlier\_ind@{outlier\_ind}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{outlier\_ind}{outlier\_ind}} +{\footnotesize\ttfamily outlier\+\_\+ind} + +\mbox{\Hypertarget{namespacetest_transform_aeb5e3b3a31f302552b5bd35f3accd3c2}\label{namespacetest_transform_aeb5e3b3a31f302552b5bd35f3accd3c2}} +\index{testTransform@{testTransform}!outlier\_rate@{outlier\_rate}} +\index{outlier\_rate@{outlier\_rate}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{outlier\_rate}{outlier\_rate}} +{\footnotesize\ttfamily float outlier\+\_\+rate = 0.\+4} + +\mbox{\Hypertarget{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}\label{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}} +\index{testTransform@{testTransform}!R\_fit@{R\_fit}} +\index{R\_fit@{R\_fit}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{R\_fit}{R\_fit}} +{\footnotesize\ttfamily R\+\_\+fit = \mbox{\hyperlink{namespacetest_transform_a03b4b9a49913cb27a8dff899ea68f892}{A\+\_\+inv}}\mbox{[}\+:2, \+:2\mbox{]}} + +\mbox{\Hypertarget{namespacetest_transform_a584efbd5d11809943039e71845b0cd7f}\label{namespacetest_transform_a584efbd5d11809943039e71845b0cd7f}} +\index{testTransform@{testTransform}!show@{show}} +\index{show@{show}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{show}{show}} +{\footnotesize\ttfamily show} + +\mbox{\Hypertarget{namespacetest_transform_a48eb521013d78f7dad08a4aabe451e1b}\label{namespacetest_transform_a48eb521013d78f7dad08a4aabe451e1b}} +\index{testTransform@{testTransform}!srcCoord@{srcCoord}} +\index{srcCoord@{srcCoord}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{srcCoord}{srcCoord}} +{\footnotesize\ttfamily src\+Coord} + +\mbox{\Hypertarget{namespacetest_transform_a1b714106eb7bad251438c439fc59e407}\label{namespacetest_transform_a1b714106eb7bad251438c439fc59e407}} +\index{testTransform@{testTransform}!srcCoord2@{srcCoord2}} +\index{srcCoord2@{srcCoord2}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{srcCoord2}{srcCoord2}} +{\footnotesize\ttfamily tuple src\+Coord2 = (\mbox{\hyperlink{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}} @ target\+Coord.\+T + \mbox{\hyperlink{namespacetest_transform_a29ad3fdd24965a3db8b834e04d27a7ea}{h\+\_\+fit}}).T} + +\mbox{\Hypertarget{namespacetest_transform_ae4834211499fa0991173526c2592ef12}\label{namespacetest_transform_ae4834211499fa0991173526c2592ef12}} +\index{testTransform@{testTransform}!targetCoord@{targetCoord}} +\index{targetCoord@{targetCoord}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{targetCoord}{targetCoord}} +{\footnotesize\ttfamily target\+Coord} + +\mbox{\Hypertarget{namespacetest_transform_ad5ed049a2c1601e6f4f9e5d69619c804}\label{namespacetest_transform_ad5ed049a2c1601e6f4f9e5d69619c804}} +\index{testTransform@{testTransform}!theta\_deg@{theta\_deg}} +\index{theta\_deg@{theta\_deg}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{theta\_deg}{theta\_deg}} +{\footnotesize\ttfamily theta\+\_\+deg} + +\mbox{\Hypertarget{namespacetest_transform_ab69a1473bbefcd69e648eed41f4cf499}\label{namespacetest_transform_ab69a1473bbefcd69e648eed41f4cf499}} +\index{testTransform@{testTransform}!theta\_fit@{theta\_fit}} +\index{theta\_fit@{theta\_fit}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{theta\_fit}{theta\_fit}} +{\footnotesize\ttfamily int theta\+\_\+fit = np.\+arctan2(\mbox{\hyperlink{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}}\mbox{[}1, 0\mbox{]}, \mbox{\hyperlink{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}{R\+\_\+fit}}\mbox{[}0, 0\mbox{]}) $\ast$ 180 / np.\+pi} + +\mbox{\Hypertarget{namespacetest_transform_adca18f0c2258ab57e96c3f009761ea85}\label{namespacetest_transform_adca18f0c2258ab57e96c3f009761ea85}} +\index{testTransform@{testTransform}!title\_append@{title\_append}} +\index{title\_append@{title\_append}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{title\_append}{title\_append}} +{\footnotesize\ttfamily title\+\_\+append} + +\mbox{\Hypertarget{namespacetest_transform_af5a541b70835126d40b66611fae2b02a}\label{namespacetest_transform_af5a541b70835126d40b66611fae2b02a}} +\index{testTransform@{testTransform}!useOld@{useOld}} +\index{useOld@{useOld}!testTransform@{testTransform}} +\doxysubsubsection{\texorpdfstring{useOld}{useOld}} +{\footnotesize\ttfamily bool use\+Old = \mbox{\hyperlink{namespacetest_transform_a36cde68b055f3f2ee671020af4ccf4e2}{False}}} + diff --git a/doc/latex/namespacetrajectory_plotting.tex b/doc/latex/namespacetrajectory_plotting.tex new file mode 100644 index 0000000..8ac5930 --- /dev/null +++ b/doc/latex/namespacetrajectory_plotting.tex @@ -0,0 +1,154 @@ +\hypertarget{namespacetrajectory_plotting}{}\doxysection{trajectory\+Plotting Namespace Reference} +\label{namespacetrajectory_plotting}\index{trajectoryPlotting@{trajectoryPlotting}} +\doxysubsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}} +\end{DoxyCompactItemize} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{namespacetrajectory_plotting_ad97043d2e531a6e8fa6a96f2fa1c626e}{compute\+Poses\+RMSE}} (gt\+Poses, \mbox{\hyperlink{namespacetrajectory_plotting_a1874cfdbfd36b762a0c028c0cde1979b}{est\+Poses}}) +\item +def \mbox{\hyperlink{namespacetrajectory_plotting_a016ffc757367f9b328db391698f8042f}{plot\+Gt\+And\+Est\+Trajectory}} (\mbox{\hyperlink{namespacetrajectory_plotting_a1be80d6bbf048641b45053e009e0dbdd}{gt\+Traj}}, \mbox{\hyperlink{namespacetrajectory_plotting_a8d5e95f4d6054db64fd36facd315f2e6}{est\+Traj}}, title=\textquotesingle{}GT and EST Trajectories\textquotesingle{}, info=None, save\+Path=None, arrow=False) +\item +def \mbox{\hyperlink{namespacetrajectory_plotting_a1fdedfe2db4ca15dc9cf2cc8b501756d}{get\+Ground\+Truth\+Trajectory}} (\mbox{\hyperlink{namespacetrajectory_plotting_a3135d377c1653c1d35443c74ae0589d9}{gt\+Path}}) +\item +def \mbox{\hyperlink{namespacetrajectory_plotting_a8d09aef19b822c81eca8b7ea4e45b98d}{get\+Ground\+Truth\+Trajectory\+GPS}} (\mbox{\hyperlink{namespacetrajectory_plotting_a3135d377c1653c1d35443c74ae0589d9}{gt\+Path}}) +\end{DoxyCompactItemize} +\doxysubsection*{Variables} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{namespacetrajectory_plotting_a0d700e6dfa2a9f624cd51f991a793585}{dataset\+Name}} = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{} +\item +\mbox{\hyperlink{namespacetrajectory_plotting_ac559b123c3618ef31794f03fb8742e8e}{timestamp\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{}) +\item +\mbox{\hyperlink{namespacetrajectory_plotting_a3135d377c1653c1d35443c74ae0589d9}{gt\+Path}} = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}gps\char`\"{}, \char`\"{}gps.\+csv\char`\"{}) +\item +def \mbox{\hyperlink{namespacetrajectory_plotting_a1be80d6bbf048641b45053e009e0dbdd}{gt\+Traj}} = \mbox{\hyperlink{namespacetrajectory_plotting_a8d09aef19b822c81eca8b7ea4e45b98d}{get\+Ground\+Truth\+Trajectory\+GPS}}(\mbox{\hyperlink{namespacetrajectory_plotting_a3135d377c1653c1d35443c74ae0589d9}{gt\+Path}}) +\item +\mbox{\hyperlink{namespacetrajectory_plotting_a37f904f43339b2c0cc7d86e8cfb6d836}{keyframe\+\_\+timestamps}} +\item +def \mbox{\hyperlink{namespacetrajectory_plotting_a1874cfdbfd36b762a0c028c0cde1979b}{est\+Poses}} = gt\+Traj.\+get\+Pose\+At\+Times(\mbox{\hyperlink{namespacetrajectory_plotting_a37f904f43339b2c0cc7d86e8cfb6d836}{keyframe\+\_\+timestamps}}) +\item +\mbox{\hyperlink{namespacetrajectory_plotting_a5f275402fe7e3f672eab8b802e8913ca}{noise}} +\item +\mbox{\hyperlink{namespacetrajectory_plotting_a8d5e95f4d6054db64fd36facd315f2e6}{est\+Traj}} = \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}}(\mbox{\hyperlink{namespacetrajectory_plotting_a37f904f43339b2c0cc7d86e8cfb6d836}{keyframe\+\_\+timestamps}}, \mbox{\hyperlink{namespacetrajectory_plotting_a1874cfdbfd36b762a0c028c0cde1979b}{est\+Poses}}) +\item +\mbox{\hyperlink{namespacetrajectory_plotting_a17afa58b2bc574dedcd1cc02e1fdf165}{block}} +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespacetrajectory_plotting_ad97043d2e531a6e8fa6a96f2fa1c626e}\label{namespacetrajectory_plotting_ad97043d2e531a6e8fa6a96f2fa1c626e}} +\index{trajectoryPlotting@{trajectoryPlotting}!computePosesRMSE@{computePosesRMSE}} +\index{computePosesRMSE@{computePosesRMSE}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{computePosesRMSE()}{computePosesRMSE()}} +{\footnotesize\ttfamily def trajectory\+Plotting.\+compute\+Poses\+RMSE (\begin{DoxyParamCaption}\item[{}]{gt\+Poses, }\item[{}]{est\+Poses }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Compute the Root Mean Square Error between the prediction and the actual poses +\end{DoxyVerb} + \mbox{\Hypertarget{namespacetrajectory_plotting_a1fdedfe2db4ca15dc9cf2cc8b501756d}\label{namespacetrajectory_plotting_a1fdedfe2db4ca15dc9cf2cc8b501756d}} +\index{trajectoryPlotting@{trajectoryPlotting}!getGroundTruthTrajectory@{getGroundTruthTrajectory}} +\index{getGroundTruthTrajectory@{getGroundTruthTrajectory}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{getGroundTruthTrajectory()}{getGroundTruthTrajectory()}} +{\footnotesize\ttfamily def trajectory\+Plotting.\+get\+Ground\+Truth\+Trajectory (\begin{DoxyParamCaption}\item[{}]{gt\+Path }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Returns ground truth trajectory given radar_odometry.csv +@param[in] gtPath Path to ground truth file +@return Trajectory object +\end{DoxyVerb} + \mbox{\Hypertarget{namespacetrajectory_plotting_a8d09aef19b822c81eca8b7ea4e45b98d}\label{namespacetrajectory_plotting_a8d09aef19b822c81eca8b7ea4e45b98d}} +\index{trajectoryPlotting@{trajectoryPlotting}!getGroundTruthTrajectoryGPS@{getGroundTruthTrajectoryGPS}} +\index{getGroundTruthTrajectoryGPS@{getGroundTruthTrajectoryGPS}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{getGroundTruthTrajectoryGPS()}{getGroundTruthTrajectoryGPS()}} +{\footnotesize\ttfamily def trajectory\+Plotting.\+get\+Ground\+Truth\+Trajectory\+GPS (\begin{DoxyParamCaption}\item[{}]{gt\+Path }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Returns ground truth trajectory given gps.csv +@param[in] gtPath Path to ground truth file +@return Trajectory object +\end{DoxyVerb} + \mbox{\Hypertarget{namespacetrajectory_plotting_a016ffc757367f9b328db391698f8042f}\label{namespacetrajectory_plotting_a016ffc757367f9b328db391698f8042f}} +\index{trajectoryPlotting@{trajectoryPlotting}!plotGtAndEstTrajectory@{plotGtAndEstTrajectory}} +\index{plotGtAndEstTrajectory@{plotGtAndEstTrajectory}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{plotGtAndEstTrajectory()}{plotGtAndEstTrajectory()}} +{\footnotesize\ttfamily def trajectory\+Plotting.\+plot\+Gt\+And\+Est\+Trajectory (\begin{DoxyParamCaption}\item[{}]{gt\+Traj, }\item[{}]{est\+Traj, }\item[{}]{title = {\ttfamily \textquotesingle{}GT~and~EST~Trajectories\textquotesingle{}}, }\item[{}]{info = {\ttfamily None}, }\item[{}]{save\+Path = {\ttfamily None}, }\item[{}]{arrow = {\ttfamily False} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Plot ground truth trajectory and estimated trajectory +@param[in] gtTrajectory Ground truth trajectory +@param[in] estTrajectory Estimated trajectory +@param[in] title Title of the plot +@param[in] info Extra information to write in text +\end{DoxyVerb} + + +\doxysubsection{Variable Documentation} +\mbox{\Hypertarget{namespacetrajectory_plotting_a17afa58b2bc574dedcd1cc02e1fdf165}\label{namespacetrajectory_plotting_a17afa58b2bc574dedcd1cc02e1fdf165}} +\index{trajectoryPlotting@{trajectoryPlotting}!block@{block}} +\index{block@{block}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{block}{block}} +{\footnotesize\ttfamily block} + +\mbox{\Hypertarget{namespacetrajectory_plotting_a0d700e6dfa2a9f624cd51f991a793585}\label{namespacetrajectory_plotting_a0d700e6dfa2a9f624cd51f991a793585}} +\index{trajectoryPlotting@{trajectoryPlotting}!datasetName@{datasetName}} +\index{datasetName@{datasetName}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{datasetName}{datasetName}} +{\footnotesize\ttfamily int dataset\+Name = sys.\+argv\mbox{[}1\mbox{]} if len(sys.\+argv) $>$ 1 else \char`\"{}tiny\char`\"{}} + +\mbox{\Hypertarget{namespacetrajectory_plotting_a1874cfdbfd36b762a0c028c0cde1979b}\label{namespacetrajectory_plotting_a1874cfdbfd36b762a0c028c0cde1979b}} +\index{trajectoryPlotting@{trajectoryPlotting}!estPoses@{estPoses}} +\index{estPoses@{estPoses}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{estPoses}{estPoses}} +{\footnotesize\ttfamily def est\+Poses = gt\+Traj.\+get\+Pose\+At\+Times(\mbox{\hyperlink{namespacetrajectory_plotting_a37f904f43339b2c0cc7d86e8cfb6d836}{keyframe\+\_\+timestamps}})} + +\mbox{\Hypertarget{namespacetrajectory_plotting_a8d5e95f4d6054db64fd36facd315f2e6}\label{namespacetrajectory_plotting_a8d5e95f4d6054db64fd36facd315f2e6}} +\index{trajectoryPlotting@{trajectoryPlotting}!estTraj@{estTraj}} +\index{estTraj@{estTraj}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{estTraj}{estTraj}} +{\footnotesize\ttfamily est\+Traj = \mbox{\hyperlink{classtrajectory_plotting_1_1_trajectory}{Trajectory}}(\mbox{\hyperlink{namespacetrajectory_plotting_a37f904f43339b2c0cc7d86e8cfb6d836}{keyframe\+\_\+timestamps}}, \mbox{\hyperlink{namespacetrajectory_plotting_a1874cfdbfd36b762a0c028c0cde1979b}{est\+Poses}})} + +\mbox{\Hypertarget{namespacetrajectory_plotting_a3135d377c1653c1d35443c74ae0589d9}\label{namespacetrajectory_plotting_a3135d377c1653c1d35443c74ae0589d9}} +\index{trajectoryPlotting@{trajectoryPlotting}!gtPath@{gtPath}} +\index{gtPath@{gtPath}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{gtPath}{gtPath}} +{\footnotesize\ttfamily gt\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}gps\char`\"{}, \char`\"{}gps.\+csv\char`\"{})} + +\mbox{\Hypertarget{namespacetrajectory_plotting_a1be80d6bbf048641b45053e009e0dbdd}\label{namespacetrajectory_plotting_a1be80d6bbf048641b45053e009e0dbdd}} +\index{trajectoryPlotting@{trajectoryPlotting}!gtTraj@{gtTraj}} +\index{gtTraj@{gtTraj}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{gtTraj}{gtTraj}} +{\footnotesize\ttfamily def gt\+Traj = \mbox{\hyperlink{namespacetrajectory_plotting_a8d09aef19b822c81eca8b7ea4e45b98d}{get\+Ground\+Truth\+Trajectory\+GPS}}(\mbox{\hyperlink{namespacetrajectory_plotting_a3135d377c1653c1d35443c74ae0589d9}{gt\+Path}})} + +\mbox{\Hypertarget{namespacetrajectory_plotting_a37f904f43339b2c0cc7d86e8cfb6d836}\label{namespacetrajectory_plotting_a37f904f43339b2c0cc7d86e8cfb6d836}} +\index{trajectoryPlotting@{trajectoryPlotting}!keyframe\_timestamps@{keyframe\_timestamps}} +\index{keyframe\_timestamps@{keyframe\_timestamps}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{keyframe\_timestamps}{keyframe\_timestamps}} +{\footnotesize\ttfamily keyframe\+\_\+timestamps} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = np.arange(} +\DoxyCodeLine{2 gtTraj.timestamps[0], gtTraj.timestamps[-\/1],} +\DoxyCodeLine{3 (gtTraj.timestamps[-\/1] -\/ gtTraj.timestamps[0]) / 1000)} + +\end{DoxyCode} +\mbox{\Hypertarget{namespacetrajectory_plotting_a5f275402fe7e3f672eab8b802e8913ca}\label{namespacetrajectory_plotting_a5f275402fe7e3f672eab8b802e8913ca}} +\index{trajectoryPlotting@{trajectoryPlotting}!noise@{noise}} +\index{noise@{noise}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{noise}{noise}} +{\footnotesize\ttfamily noise} + +{\bfseries Initial value\+:} +\begin{DoxyCode}{0} +\DoxyCodeLine{1 = np.random.multivariate\_normal(mean=(.01, .05),} +\DoxyCodeLine{2 cov=np.array([[.8, .2], [.2, .8]]) *} +\DoxyCodeLine{3 1e-\/2,} +\DoxyCodeLine{4 size=(keyframe\_timestamps.shape[0]))} + +\end{DoxyCode} +\mbox{\Hypertarget{namespacetrajectory_plotting_ac559b123c3618ef31794f03fb8742e8e}\label{namespacetrajectory_plotting_ac559b123c3618ef31794f03fb8742e8e}} +\index{trajectoryPlotting@{trajectoryPlotting}!timestampPath@{timestampPath}} +\index{timestampPath@{timestampPath}!trajectoryPlotting@{trajectoryPlotting}} +\doxysubsubsection{\texorpdfstring{timestampPath}{timestampPath}} +{\footnotesize\ttfamily timestamp\+Path = os.\+path.\+join(\char`\"{}data\char`\"{}, dataset\+Name, \char`\"{}radar.\+timestamps\char`\"{})} + diff --git a/doc/latex/namespaceutils.tex b/doc/latex/namespaceutils.tex new file mode 100644 index 0000000..0562c82 --- /dev/null +++ b/doc/latex/namespaceutils.tex @@ -0,0 +1,145 @@ +\hypertarget{namespaceutils}{}\doxysection{utils Namespace Reference} +\label{namespaceutils}\index{utils@{utils}} +\doxysubsection*{Functions} +\begin{DoxyCompactItemize} +\item +def \mbox{\hyperlink{namespaceutils_afdc21e7b35e4ca2a96f6314f06d735c6}{tic}} () +\item +def \mbox{\hyperlink{namespaceutils_a9919d38aa96697a9823f5326d879d1b1}{toc}} (\mbox{\hyperlink{namespaceutils_afdc21e7b35e4ca2a96f6314f06d735c6}{tic}}) +\item +def \mbox{\hyperlink{namespaceutils_ac60a7571babb0959cd2674b4ba8714d3}{f\+\_\+arr}} (xs, th\+\_\+deg=False) +\item +def \mbox{\hyperlink{namespaceutils_ac544ae154ff41d402e6ef846d244cf42}{radar\+Img\+Path\+To\+Timestamp}} (radar\+Img\+Path) +\item +def \mbox{\hyperlink{namespaceutils_abad9c76e9f3a3e8fe8fd996dad0f22f3}{normalize\+\_\+angles}} (th) +\item +def \mbox{\hyperlink{namespaceutils_a85e6a7b3ea035409ce59f983ac66a4c0}{get\+Rotation\+Matrix}} (th, degrees=False) +\item +def \mbox{\hyperlink{namespaceutils_a10a2d7ad99b45d90d58ed75eb48fa6ff}{convert\+Pose\+To\+Transform}} (poses) +\item +def \mbox{\hyperlink{namespaceutils_a53b42cbb565a19553cdb198201b1c481}{convert\+Transform\+To\+Pose}} (pose\+\_\+transforms) +\item +def \mbox{\hyperlink{namespaceutils_ad9cc7ea78c5525f4bea20c77c9ae8e55}{flatten}} (x) +\item +def \mbox{\hyperlink{namespaceutils_aa667ba47db3bb680dd31ee4538d0975c}{convert\+Rand\+Hto\+Deltas}} (R, h) +\item +def \mbox{\hyperlink{namespaceutils_ab543a183d6e0e958ad69d6720c124f9d}{quiver}} (poses, c=\textquotesingle{}r\textquotesingle{}, label=None) +\item +def \mbox{\hyperlink{namespaceutils_a37b2b347d8269378f55538a32a8a12c7}{plt\+\_\+full\+\_\+extent}} (ax, pad=0.\+0) +\item +def \mbox{\hyperlink{namespaceutils_aea9c613b426700faba0bb9d28e5cfe71}{plt\+\_\+savefig\+\_\+by\+\_\+axis}} (file\+Path, fig, ax, pad=0.\+0) +\item +def \mbox{\hyperlink{namespaceutils_a2c0af5648f0d4a2e9a215c84a0f0e047}{invert\+\_\+transform}} (T) +\item +def \mbox{\hyperlink{namespaceutils_a0723d0c99279ac18d3dc10070ac0ad12}{homogenize}} (points) +\end{DoxyCompactItemize} + + +\doxysubsection{Function Documentation} +\mbox{\Hypertarget{namespaceutils_a10a2d7ad99b45d90d58ed75eb48fa6ff}\label{namespaceutils_a10a2d7ad99b45d90d58ed75eb48fa6ff}} +\index{utils@{utils}!convertPoseToTransform@{convertPoseToTransform}} +\index{convertPoseToTransform@{convertPoseToTransform}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{convertPoseToTransform()}{convertPoseToTransform()}} +{\footnotesize\ttfamily def utils.\+convert\+Pose\+To\+Transform (\begin{DoxyParamCaption}\item[{}]{poses }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@param[in] poses np.ndarray of (3,) or (N x 3) +@return pose_transforms np.ndarray of (3 x 3) or (N x 3 x 3) +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceutils_aa667ba47db3bb680dd31ee4538d0975c}\label{namespaceutils_aa667ba47db3bb680dd31ee4538d0975c}} +\index{utils@{utils}!convertRandHtoDeltas@{convertRandHtoDeltas}} +\index{convertRandHtoDeltas@{convertRandHtoDeltas}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{convertRandHtoDeltas()}{convertRandHtoDeltas()}} +{\footnotesize\ttfamily def utils.\+convert\+Rand\+Hto\+Deltas (\begin{DoxyParamCaption}\item[{}]{R, }\item[{}]{h }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceutils_a53b42cbb565a19553cdb198201b1c481}\label{namespaceutils_a53b42cbb565a19553cdb198201b1c481}} +\index{utils@{utils}!convertTransformToPose@{convertTransformToPose}} +\index{convertTransformToPose@{convertTransformToPose}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{convertTransformToPose()}{convertTransformToPose()}} +{\footnotesize\ttfamily def utils.\+convert\+Transform\+To\+Pose (\begin{DoxyParamCaption}\item[{}]{pose\+\_\+transforms }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@param[in] pose_transforms np.ndarray of (3 x 3) or (N x 3 x 3) +@return poses np.ndarray of (3,) or (N x 3) +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceutils_ac60a7571babb0959cd2674b4ba8714d3}\label{namespaceutils_ac60a7571babb0959cd2674b4ba8714d3}} +\index{utils@{utils}!f\_arr@{f\_arr}} +\index{f\_arr@{f\_arr}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{f\_arr()}{f\_arr()}} +{\footnotesize\ttfamily def utils.\+f\+\_\+arr (\begin{DoxyParamCaption}\item[{}]{xs, }\item[{}]{th\+\_\+deg = {\ttfamily False} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceutils_ad9cc7ea78c5525f4bea20c77c9ae8e55}\label{namespaceutils_ad9cc7ea78c5525f4bea20c77c9ae8e55}} +\index{utils@{utils}!flatten@{flatten}} +\index{flatten@{flatten}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{flatten()}{flatten()}} +{\footnotesize\ttfamily def utils.\+flatten (\begin{DoxyParamCaption}\item[{}]{x }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceutils_a85e6a7b3ea035409ce59f983ac66a4c0}\label{namespaceutils_a85e6a7b3ea035409ce59f983ac66a4c0}} +\index{utils@{utils}!getRotationMatrix@{getRotationMatrix}} +\index{getRotationMatrix@{getRotationMatrix}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{getRotationMatrix()}{getRotationMatrix()}} +{\footnotesize\ttfamily def utils.\+get\+Rotation\+Matrix (\begin{DoxyParamCaption}\item[{}]{th, }\item[{}]{degrees = {\ttfamily False} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceutils_a0723d0c99279ac18d3dc10070ac0ad12}\label{namespaceutils_a0723d0c99279ac18d3dc10070ac0ad12}} +\index{utils@{utils}!homogenize@{homogenize}} +\index{homogenize@{homogenize}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{homogenize()}{homogenize()}} +{\footnotesize\ttfamily def utils.\+homogenize (\begin{DoxyParamCaption}\item[{}]{points }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceutils_a2c0af5648f0d4a2e9a215c84a0f0e047}\label{namespaceutils_a2c0af5648f0d4a2e9a215c84a0f0e047}} +\index{utils@{utils}!invert\_transform@{invert\_transform}} +\index{invert\_transform@{invert\_transform}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{invert\_transform()}{invert\_transform()}} +{\footnotesize\ttfamily def utils.\+invert\+\_\+transform (\begin{DoxyParamCaption}\item[{}]{T }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceutils_abad9c76e9f3a3e8fe8fd996dad0f22f3}\label{namespaceutils_abad9c76e9f3a3e8fe8fd996dad0f22f3}} +\index{utils@{utils}!normalize\_angles@{normalize\_angles}} +\index{normalize\_angles@{normalize\_angles}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{normalize\_angles()}{normalize\_angles()}} +{\footnotesize\ttfamily def utils.\+normalize\+\_\+angles (\begin{DoxyParamCaption}\item[{}]{th }\end{DoxyParamCaption})} + +\begin{DoxyVerb}Normalize an angle to be between -pi and pi +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceutils_a37b2b347d8269378f55538a32a8a12c7}\label{namespaceutils_a37b2b347d8269378f55538a32a8a12c7}} +\index{utils@{utils}!plt\_full\_extent@{plt\_full\_extent}} +\index{plt\_full\_extent@{plt\_full\_extent}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{plt\_full\_extent()}{plt\_full\_extent()}} +{\footnotesize\ttfamily def utils.\+plt\+\_\+full\+\_\+extent (\begin{DoxyParamCaption}\item[{}]{ax, }\item[{}]{pad = {\ttfamily 0.0} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Get the full extent of a plt axes, including axes labels, tick labels, and titles. +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceutils_aea9c613b426700faba0bb9d28e5cfe71}\label{namespaceutils_aea9c613b426700faba0bb9d28e5cfe71}} +\index{utils@{utils}!plt\_savefig\_by\_axis@{plt\_savefig\_by\_axis}} +\index{plt\_savefig\_by\_axis@{plt\_savefig\_by\_axis}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{plt\_savefig\_by\_axis()}{plt\_savefig\_by\_axis()}} +{\footnotesize\ttfamily def utils.\+plt\+\_\+savefig\+\_\+by\+\_\+axis (\begin{DoxyParamCaption}\item[{}]{file\+Path, }\item[{}]{fig, }\item[{}]{ax, }\item[{}]{pad = {\ttfamily 0.0} }\end{DoxyParamCaption})} + +\begin{DoxyVerb}@brief Save a plt figure by extent of its axis (allows us to save subplots) +@param[in] filePath Path to save figure to +@param[in] fig Overall figure containing axis +@param[in] ax Axis to save +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceutils_ab543a183d6e0e958ad69d6720c124f9d}\label{namespaceutils_ab543a183d6e0e958ad69d6720c124f9d}} +\index{utils@{utils}!quiver@{quiver}} +\index{quiver@{quiver}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{quiver()}{quiver()}} +{\footnotesize\ttfamily def utils.\+quiver (\begin{DoxyParamCaption}\item[{}]{poses, }\item[{}]{c = {\ttfamily \textquotesingle{}r\textquotesingle{}}, }\item[{}]{label = {\ttfamily None} }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceutils_ac544ae154ff41d402e6ef846d244cf42}\label{namespaceutils_ac544ae154ff41d402e6ef846d244cf42}} +\index{utils@{utils}!radarImgPathToTimestamp@{radarImgPathToTimestamp}} +\index{radarImgPathToTimestamp@{radarImgPathToTimestamp}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{radarImgPathToTimestamp()}{radarImgPathToTimestamp()}} +{\footnotesize\ttfamily def utils.\+radar\+Img\+Path\+To\+Timestamp (\begin{DoxyParamCaption}\item[{}]{radar\+Img\+Path }\end{DoxyParamCaption})} + +\begin{DoxyVerb}eg: radarImgPathToTimestamp('data\\tiny\\radar\\1547131046353776.png') -> 1547131046353776 +\end{DoxyVerb} + \mbox{\Hypertarget{namespaceutils_afdc21e7b35e4ca2a96f6314f06d735c6}\label{namespaceutils_afdc21e7b35e4ca2a96f6314f06d735c6}} +\index{utils@{utils}!tic@{tic}} +\index{tic@{tic}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{tic()}{tic()}} +{\footnotesize\ttfamily def utils.\+tic (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespaceutils_a9919d38aa96697a9823f5326d879d1b1}\label{namespaceutils_a9919d38aa96697a9823f5326d879d1b1}} +\index{utils@{utils}!toc@{toc}} +\index{toc@{toc}!utils@{utils}} +\doxysubsubsection{\texorpdfstring{toc()}{toc()}} +{\footnotesize\ttfamily def utils.\+toc (\begin{DoxyParamCaption}\item[{}]{tic }\end{DoxyParamCaption})} + diff --git a/doc/latex/refman.aux b/doc/latex/refman.aux new file mode 100644 index 0000000..fffa1c5 --- /dev/null +++ b/doc/latex/refman.aux @@ -0,0 +1,992 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\providecommand \oddpage@label [2]{} +\@writefile{toc}{\@ifundefined {etoctocstyle}{\let \etoc@startlocaltoc \@gobble \let \etoc@settocdepth \@gobble \let \etoc@depthtag \@gobble \let \etoc@setlocaltop \@gobble }{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}RAW-\/\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}ROAM\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}: Really Adverse Weather-\/\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Radar Odometry and Mapping (Python reimplementation of Radar\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}SLAM)}{1}{chapter.1}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{md__r_e_a_d_m_e}{{1}{1}{RAW-\/\+ROAM\+: Really Adverse Weather-\/\+Radar Odometry and Mapping (Python reimplementation of Radar\+SLAM)}{chapter.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.1}Results (\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Odometry)}{1}{section.1.1}\protected@file@percent } +\newlabel{md__r_e_a_d_m_e_autotoc_md1}{{1.1}{1}{Results (\+Odometry)}{section.1.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.2}Running Code}{1}{section.1.2}\protected@file@percent } +\newlabel{md__r_e_a_d_m_e_autotoc_md2}{{1.2}{1}{Running Code}{section.1.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.2.1}Radar Sequences}{1}{subsection.1.2.1}\protected@file@percent } +\newlabel{md__r_e_a_d_m_e_autotoc_md3}{{1.2.1}{1}{Radar Sequences}{subsection.1.2.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.3}Documentation}{1}{section.1.3}\protected@file@percent } +\newlabel{md__r_e_a_d_m_e_autotoc_md4}{{1.3}{1}{Documentation}{section.1.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.4}Relevant Papers}{1}{section.1.4}\protected@file@percent } +\newlabel{md__r_e_a_d_m_e_autotoc_md5}{{1.4}{1}{Relevant Papers}{section.1.4}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Namespace Index}{3}{chapter.2}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}Packages}{3}{section.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Hierarchical Index}{5}{chapter.3}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}Class Hierarchy}{5}{section.3.1}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {4}Class Index}{7}{chapter.4}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}Class List}{7}{section.4.1}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Namespace Documentation}{9}{chapter.5}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}ANMS Namespace Reference}{9}{section.5.1}\protected@file@percent } +\newlabel{namespace_a_n_m_s}{{5.1}{9}{ANMS Namespace Reference}{section.5.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Function Documentation}{9}{subsection.5.1.1}\protected@file@percent } +\newlabel{namespace_a_n_m_s_ae9e9d70287f00bb9b6fe316b03d12325}{{5.1.1}{9}{Function Documentation}{subsection.5.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1.1}ssc()}{9}{subsubsection.5.1.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.2}Coord Namespace Reference}{9}{section.5.2}\protected@file@percent } +\newlabel{namespace_coord}{{5.2}{9}{Coord Namespace Reference}{section.5.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.3}FMT Namespace Reference}{10}{section.5.3}\protected@file@percent } +\newlabel{namespace_f_m_t}{{5.3}{10}{FMT Namespace Reference}{section.5.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}Function Documentation}{10}{subsection.5.3.1}\protected@file@percent } +\newlabel{namespace_f_m_t_a1dc91b97654961781d4c92b4e027b85d}{{5.3.1}{10}{Function Documentation}{subsection.5.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1.1}getRotationUsingFMT()}{10}{subsubsection.5.3.1.1}\protected@file@percent } +\newlabel{namespace_f_m_t_ae81fb59f14932ae340751f9684bd6d8b}{{5.3.1.1}{11}{\texorpdfstring {getRotationUsingFMT()}{getRotationUsingFMT()}}{subsubsection.5.3.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1.2}getTranslationUsingPhaseCorrelation()}{11}{subsubsection.5.3.1.2}\protected@file@percent } +\newlabel{namespace_f_m_t_a082f20cace72b4f16273efde8c24a34a}{{5.3.1.2}{11}{\texorpdfstring {getTranslationUsingPhaseCorrelation()}{getTranslationUsingPhaseCorrelation()}}{subsubsection.5.3.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1.3}plotCartPolar()}{11}{subsubsection.5.3.1.3}\protected@file@percent } +\newlabel{namespace_f_m_t_a9d81f4081733eda3b7e60455434818c0}{{5.3.1.3}{11}{\texorpdfstring {plotCartPolar()}{plotCartPolar()}}{subsubsection.5.3.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1.4}plotCartPolarWithRotation()}{11}{subsubsection.5.3.1.4}\protected@file@percent } +\newlabel{namespace_f_m_t_ab27cd6416890c30979ca7e7a5c3ccdbc}{{5.3.1.4}{11}{\texorpdfstring {plotCartPolarWithRotation()}{plotCartPolarWithRotation()}}{subsubsection.5.3.1.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1.5}rotateImg()}{11}{subsubsection.5.3.1.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}Variable Documentation}{12}{subsection.5.3.2}\protected@file@percent } +\newlabel{namespace_f_m_t_a74c00f943164f2ca306c340a6cb1f263}{{5.3.2}{12}{Variable Documentation}{subsection.5.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.1}currImgCart}{12}{subsubsection.5.3.2.1}\protected@file@percent } +\newlabel{namespace_f_m_t_a626acce33f1a6fe3200798b2ad4d1187}{{5.3.2.1}{12}{\texorpdfstring {currImgCart}{currImgCart}}{subsubsection.5.3.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.2}currImgPolar}{12}{subsubsection.5.3.2.2}\protected@file@percent } +\newlabel{namespace_f_m_t_abef58ec544fb87b0bc3d6657c3824bfc}{{5.3.2.2}{12}{\texorpdfstring {currImgPolar}{currImgPolar}}{subsubsection.5.3.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.3}dataPath}{12}{subsubsection.5.3.2.3}\protected@file@percent } +\newlabel{namespace_f_m_t_a58496a66cbc7a6dfb37042c7e7731cdf}{{5.3.2.3}{12}{\texorpdfstring {dataPath}{dataPath}}{subsubsection.5.3.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.4}endSeqInd}{12}{subsubsection.5.3.2.4}\protected@file@percent } +\newlabel{namespace_f_m_t_a0dd30d2c854453a5a754e2a81c971651}{{5.3.2.4}{12}{\texorpdfstring {endSeqInd}{endSeqInd}}{subsubsection.5.3.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.5}exist\_ok}{12}{subsubsection.5.3.2.5}\protected@file@percent } +\newlabel{namespace_f_m_t_ac5da2cfe183e7b0e3a179c878393cbc8}{{5.3.2.5}{12}{\texorpdfstring {exist\_ok}{exist\_ok}}{subsubsection.5.3.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.6}FMT\_DOWNSAMPLE\_FACTOR}{12}{subsubsection.5.3.2.6}\protected@file@percent } +\newlabel{namespace_f_m_t_a4122483525ff4c7724276defa28c835d}{{5.3.2.6}{12}{\texorpdfstring {FMT\_DOWNSAMPLE\_FACTOR}{FMT\_DOWNSAMPLE\_FACTOR}}{subsubsection.5.3.2.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.7}FMT\_RANGE\_CLIP\_M}{13}{subsubsection.5.3.2.7}\protected@file@percent } +\newlabel{namespace_f_m_t_a8d579ebe0582eed800eb106350236c4a}{{5.3.2.7}{13}{\texorpdfstring {FMT\_RANGE\_CLIP\_M}{FMT\_RANGE\_CLIP\_M}}{subsubsection.5.3.2.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.8}imgPathArr}{13}{subsubsection.5.3.2.8}\protected@file@percent } +\newlabel{namespace_f_m_t_a3ab4a737af4a26ba845d42353015fa10}{{5.3.2.8}{13}{\texorpdfstring {imgPathArr}{imgPathArr}}{subsubsection.5.3.2.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.9}imgSavePath}{13}{subsubsection.5.3.2.9}\protected@file@percent } +\newlabel{namespace_f_m_t_a36e10122b3a979f9d319b0f86727b1be}{{5.3.2.9}{13}{\texorpdfstring {imgSavePath}{imgSavePath}}{subsubsection.5.3.2.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.10}imgSavePathInd}{13}{subsubsection.5.3.2.10}\protected@file@percent } +\newlabel{namespace_f_m_t_a18deea10409123f5ce6e4f03579a5cf8}{{5.3.2.10}{13}{\texorpdfstring {imgSavePathInd}{imgSavePathInd}}{subsubsection.5.3.2.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.11}prevImgCart}{13}{subsubsection.5.3.2.11}\protected@file@percent } +\newlabel{namespace_f_m_t_a822a7e1a3f096654545785622beed02c}{{5.3.2.11}{13}{\texorpdfstring {prevImgCart}{prevImgCart}}{subsubsection.5.3.2.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.12}prevImgPolar}{13}{subsubsection.5.3.2.12}\protected@file@percent } +\newlabel{namespace_f_m_t_ac54d9701c1a01225f5636eeb571f4e1a}{{5.3.2.12}{13}{\texorpdfstring {prevImgPolar}{prevImgPolar}}{subsubsection.5.3.2.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.13}REMOVE\_OLD\_RESULTS}{13}{subsubsection.5.3.2.13}\protected@file@percent } +\newlabel{namespace_f_m_t_a8ab7bcb35ce5bba05608c72da6b4a0d3}{{5.3.2.13}{13}{\texorpdfstring {REMOVE\_OLD\_RESULTS}{REMOVE\_OLD\_RESULTS}}{subsubsection.5.3.2.13}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.14}response}{14}{subsubsection.5.3.2.14}\protected@file@percent } +\newlabel{namespace_f_m_t_a596c19fb1995cd525505549d59373972}{{5.3.2.14}{14}{\texorpdfstring {response}{response}}{subsubsection.5.3.2.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.15}rotRad}{14}{subsubsection.5.3.2.15}\protected@file@percent } +\newlabel{namespace_f_m_t_acec6d8ad52a28972fa74e071c1a63b6a}{{5.3.2.15}{14}{\texorpdfstring {rotRad}{rotRad}}{subsubsection.5.3.2.15}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.16}scale}{14}{subsubsection.5.3.2.16}\protected@file@percent } +\newlabel{namespace_f_m_t_ab4c8b6b49cd9b038d45a79c64377946a}{{5.3.2.16}{14}{\texorpdfstring {scale}{scale}}{subsubsection.5.3.2.16}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.17}sequenceName}{14}{subsubsection.5.3.2.17}\protected@file@percent } +\newlabel{namespace_f_m_t_a8ef2335bbb2c7c07c8e2b35959b03c52}{{5.3.2.17}{14}{\texorpdfstring {sequenceName}{sequenceName}}{subsubsection.5.3.2.17}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.18}sequenceSize}{14}{subsubsection.5.3.2.18}\protected@file@percent } +\newlabel{namespace_f_m_t_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}{{5.3.2.18}{14}{\texorpdfstring {sequenceSize}{sequenceSize}}{subsubsection.5.3.2.18}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.19}startSeqInd}{14}{subsubsection.5.3.2.19}\protected@file@percent } +\newlabel{namespace_f_m_t_adfe857b14dacc3123d5c36a0fa44f0b0}{{5.3.2.19}{14}{\texorpdfstring {startSeqInd}{startSeqInd}}{subsubsection.5.3.2.19}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.20}stepSize}{14}{subsubsection.5.3.2.20}\protected@file@percent } +\newlabel{namespace_f_m_t_ac559b123c3618ef31794f03fb8742e8e}{{5.3.2.20}{14}{\texorpdfstring {stepSize}{stepSize}}{subsubsection.5.3.2.20}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2.21}timestampPath}{14}{subsubsection.5.3.2.21}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.4}gen\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Fake\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Data Namespace Reference}{15}{section.5.4}\protected@file@percent } +\newlabel{namespacegen_fake_data}{{5.4}{15}{gen\+Fake\+Data Namespace Reference}{section.5.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}Function Documentation}{15}{subsection.5.4.1}\protected@file@percent } +\newlabel{namespacegen_fake_data_a4f2fe44331e2fe3b7478d11c1a156749}{{5.4.1}{15}{Function Documentation}{subsection.5.4.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.1}addNoise()}{15}{subsubsection.5.4.1.1}\protected@file@percent } +\newlabel{namespacegen_fake_data_aa2b3c0429ce6e0a8b72d380d8868890a}{{5.4.1.1}{15}{\texorpdfstring {addNoise()}{addNoise()}}{subsubsection.5.4.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.2}convertPolarPointsToCartesian()}{15}{subsubsection.5.4.1.2}\protected@file@percent } +\newlabel{namespacegen_fake_data_aa06afad9db0dd98727ea4b16c0d90df6}{{5.4.1.2}{15}{\texorpdfstring {convertPolarPointsToCartesian()}{convertPolarPointsToCartesian()}}{subsubsection.5.4.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.3}createOutliers()}{16}{subsubsection.5.4.1.3}\protected@file@percent } +\newlabel{namespacegen_fake_data_a2b986854c74712290c89276485636000}{{5.4.1.3}{16}{\texorpdfstring {createOutliers()}{createOutliers()}}{subsubsection.5.4.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.4}distort()}{16}{subsubsection.5.4.1.4}\protected@file@percent } +\newlabel{namespacegen_fake_data_a3c15e800e7f2ed5806ad919c0e657768}{{5.4.1.4}{16}{\texorpdfstring {distort()}{distort()}}{subsubsection.5.4.1.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.5}generateFakeCorrespondences()}{16}{subsubsection.5.4.1.5}\protected@file@percent } +\newlabel{namespacegen_fake_data_a13ccee862d67bebec295bd789557df1b}{{5.4.1.5}{16}{\texorpdfstring {generateFakeCorrespondences()}{generateFakeCorrespondences()}}{subsubsection.5.4.1.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.6}generateFakeCorrespondencesPolar()}{17}{subsubsection.5.4.1.6}\protected@file@percent } +\newlabel{namespacegen_fake_data_ac4ddf52aeaea780b6f90b7617238e0a7}{{5.4.1.6}{17}{\texorpdfstring {generateFakeCorrespondencesPolar()}{generateFakeCorrespondencesPolar()}}{subsubsection.5.4.1.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.7}generateFakeFeatures()}{17}{subsubsection.5.4.1.7}\protected@file@percent } +\newlabel{namespacegen_fake_data_a88a051f71e6c953f36fd2c8529dc5965}{{5.4.1.7}{17}{\texorpdfstring {generateFakeFeatures()}{generateFakeFeatures()}}{subsubsection.5.4.1.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.8}generateFakeFeaturesPolar()}{17}{subsubsection.5.4.1.8}\protected@file@percent } +\newlabel{namespacegen_fake_data_a5630333dafdfe14cac998f3535043154}{{5.4.1.8}{17}{\texorpdfstring {generateFakeFeaturesPolar()}{generateFakeFeaturesPolar()}}{subsubsection.5.4.1.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.9}generateTranslationVector()}{17}{subsubsection.5.4.1.9}\protected@file@percent } +\newlabel{namespacegen_fake_data_a8a24de590353fb58d5c7d4dce36cce67}{{5.4.1.9}{17}{\texorpdfstring {generateTranslationVector()}{generateTranslationVector()}}{subsubsection.5.4.1.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.10}plotFakeFeatures()}{17}{subsubsection.5.4.1.10}\protected@file@percent } +\newlabel{namespacegen_fake_data_a1b3b698af37c150c207a5c1acbfb87b2}{{5.4.1.10}{17}{\texorpdfstring {plotFakeFeatures()}{plotFakeFeatures()}}{subsubsection.5.4.1.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.4.1.11}transformCoords()}{18}{subsubsection.5.4.1.11}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.5}get\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Features Namespace Reference}{18}{section.5.5}\protected@file@percent } +\newlabel{namespaceget_features}{{5.5}{18}{get\+Features Namespace Reference}{section.5.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.5.1}Function Documentation}{19}{subsection.5.5.1}\protected@file@percent } +\newlabel{namespaceget_features_a5bfbafee19410b1af43185ec6b0022cf}{{5.5.1}{19}{Function Documentation}{subsection.5.5.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1.1}adaptiveNMS()}{19}{subsubsection.5.5.1.1}\protected@file@percent } +\newlabel{namespaceget_features_afca08058596f3843b6bee711cbabe674}{{5.5.1.1}{19}{\texorpdfstring {adaptiveNMS()}{adaptiveNMS()}}{subsubsection.5.5.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1.2}appendNewFeatures()}{19}{subsubsection.5.5.1.2}\protected@file@percent } +\newlabel{namespaceget_features_ae8382cc7430856b5063266ad1c87a5d4}{{5.5.1.2}{19}{\texorpdfstring {appendNewFeatures()}{appendNewFeatures()}}{subsubsection.5.5.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1.3}calculateFeatureLossThreshold()}{19}{subsubsection.5.5.1.3}\protected@file@percent } +\newlabel{namespaceget_features_a0ec79941c6b79baef593909536cf5833}{{5.5.1.3}{19}{\texorpdfstring {calculateFeatureLossThreshold()}{calculateFeatureLossThreshold()}}{subsubsection.5.5.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1.4}getBlobsFromCart()}{19}{subsubsection.5.5.1.4}\protected@file@percent } +\newlabel{namespaceget_features_a9d9b7405369034b3d3c7f94c9db65d7e}{{5.5.1.4}{19}{\texorpdfstring {getBlobsFromCart()}{getBlobsFromCart()}}{subsubsection.5.5.1.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1.5}getFeatures()}{20}{subsubsection.5.5.1.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.5.2}Variable Documentation}{20}{subsection.5.5.2}\protected@file@percent } +\newlabel{namespaceget_features_acf196203986789887c8a9bacc6da5fe7}{{5.5.2}{20}{Variable Documentation}{subsection.5.5.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.1}blobIndices}{20}{subsubsection.5.5.2.1}\protected@file@percent } +\newlabel{namespaceget_features_a6094d13377d1fec9c88b87f81b4bdb5f}{{5.5.2.1}{20}{\texorpdfstring {blobIndices}{blobIndices}}{subsubsection.5.5.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.2}blobSigma}{20}{subsubsection.5.5.2.2}\protected@file@percent } +\newlabel{namespaceget_features_a6bdef3ee8d485940c1c686546b5efbbc}{{5.5.2.2}{20}{\texorpdfstring {blobSigma}{blobSigma}}{subsubsection.5.5.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.3}blobX}{20}{subsubsection.5.5.2.3}\protected@file@percent } +\newlabel{namespaceget_features_aa8ebde97c28b77d3f8550a0e885ffe7b}{{5.5.2.3}{20}{\texorpdfstring {blobX}{blobX}}{subsubsection.5.5.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.4}blobY}{20}{subsubsection.5.5.2.4}\protected@file@percent } +\newlabel{namespaceget_features_aa2873ec3849a18fe7e6928280f89b403}{{5.5.2.4}{20}{\texorpdfstring {blobY}{blobY}}{subsubsection.5.5.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.5}color}{21}{subsubsection.5.5.2.5}\protected@file@percent } +\newlabel{namespaceget_features_a35c778d114d90fd36619e81a44f47a9d}{{5.5.2.5}{21}{\texorpdfstring {color}{color}}{subsubsection.5.5.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.6}coord}{21}{subsubsection.5.5.2.6}\protected@file@percent } +\newlabel{namespaceget_features_abef58ec544fb87b0bc3d6657c3824bfc}{{5.5.2.6}{21}{\texorpdfstring {coord}{coord}}{subsubsection.5.5.2.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.7}dataPath}{21}{subsubsection.5.5.2.7}\protected@file@percent } +\newlabel{namespaceget_features_a0d700e6dfa2a9f624cd51f991a793585}{{5.5.2.7}{21}{\texorpdfstring {dataPath}{dataPath}}{subsubsection.5.5.2.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.8}datasetName}{21}{subsubsection.5.5.2.8}\protected@file@percent } +\newlabel{namespaceget_features_abe72605eaafb6f440b8368038490ef5e}{{5.5.2.8}{21}{\texorpdfstring {datasetName}{datasetName}}{subsubsection.5.5.2.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.9}DEFAULT\_FEATURE\_PARAMS}{21}{subsubsection.5.5.2.9}\protected@file@percent } +\newlabel{namespaceget_features_afb358f48b1646c750fb9da6c6585be2b}{{5.5.2.9}{21}{\texorpdfstring {DEFAULT\_FEATURE\_PARAMS}{DEFAULT\_FEATURE\_PARAMS}}{subsubsection.5.5.2.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.10}end}{21}{subsubsection.5.5.2.10}\protected@file@percent } +\newlabel{namespaceget_features_a0dd30d2c854453a5a754e2a81c971651}{{5.5.2.10}{21}{\texorpdfstring {end}{end}}{subsubsection.5.5.2.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.11}exist\_ok}{21}{subsubsection.5.5.2.11}\protected@file@percent } +\newlabel{namespaceget_features_acb793f7781c82b09ae5aba2ddea15941}{{5.5.2.11}{21}{\texorpdfstring {exist\_ok}{exist\_ok}}{subsubsection.5.5.2.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.12}flush}{22}{subsubsection.5.5.2.12}\protected@file@percent } +\newlabel{namespaceget_features_ab9927de0f2ac5e7a36f51077c9c4dafe}{{5.5.2.12}{22}{\texorpdfstring {flush}{flush}}{subsubsection.5.5.2.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.13}imgCart}{22}{subsubsection.5.5.2.13}\protected@file@percent } +\newlabel{namespaceget_features_a8e0762c5a3e319f481e485a7ef229d52}{{5.5.2.13}{22}{\texorpdfstring {imgCart}{imgCart}}{subsubsection.5.5.2.13}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.14}imgCartBGR}{22}{subsubsection.5.5.2.14}\protected@file@percent } +\newlabel{namespaceget_features_ab7f52fe3c12ded088797a6fbcabd31fc}{{5.5.2.14}{22}{\texorpdfstring {imgCartBGR}{imgCartBGR}}{subsubsection.5.5.2.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.15}imgPolar}{22}{subsubsection.5.5.2.15}\protected@file@percent } +\newlabel{namespaceget_features_a5a1ecb7fe1a4f12cba5dfa099fb10bba}{{5.5.2.15}{22}{\texorpdfstring {imgPolar}{imgPolar}}{subsubsection.5.5.2.15}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.16}N\_FEATURES\_BEFORE\_RETRACK}{22}{subsubsection.5.5.2.16}\protected@file@percent } +\newlabel{namespaceget_features_a012224f6fb0d9dcb13f93fb89f037799}{{5.5.2.16}{22}{\texorpdfstring {N\_FEATURES\_BEFORE\_RETRACK}{N\_FEATURES\_BEFORE\_RETRACK}}{subsubsection.5.5.2.16}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.17}nImgs}{22}{subsubsection.5.5.2.17}\protected@file@percent } +\newlabel{namespaceget_features_afe0b2b0f8f2978793660014703b32251}{{5.5.2.17}{22}{\texorpdfstring {nImgs}{nImgs}}{subsubsection.5.5.2.17}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.18}nIndices}{22}{subsubsection.5.5.2.18}\protected@file@percent } +\newlabel{namespaceget_features_a29780b3849a623c52a306ab69585385c}{{5.5.2.18}{22}{\texorpdfstring {nIndices}{nIndices}}{subsubsection.5.5.2.18}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.19}nIndicesANMS}{22}{subsubsection.5.5.2.19}\protected@file@percent } +\newlabel{namespaceget_features_ace997372c39f64ff25edb675036cdf98}{{5.5.2.19}{22}{\texorpdfstring {nIndicesANMS}{nIndicesANMS}}{subsubsection.5.5.2.19}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.20}PERCENT\_FEATURE\_LOSS\_THRESHOLD}{23}{subsubsection.5.5.2.20}\protected@file@percent } +\newlabel{namespaceget_features_a1800715a9a0efa70440b9cbac95fb2fd}{{5.5.2.20}{23}{\texorpdfstring {PERCENT\_FEATURE\_LOSS\_THRESHOLD}{PERCENT\_FEATURE\_LOSS\_THRESHOLD}}{subsubsection.5.5.2.20}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.21}s\_blobIndices}{23}{subsubsection.5.5.2.21}\protected@file@percent } +\newlabel{namespaceget_features_a662fb0cf784aecaa685e2a1bd9b430ab}{{5.5.2.21}{23}{\texorpdfstring {s\_blobIndices}{s\_blobIndices}}{subsubsection.5.5.2.21}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.22}streamArr}{23}{subsubsection.5.5.2.22}\protected@file@percent } +\newlabel{namespaceget_features_ac559b123c3618ef31794f03fb8742e8e}{{5.5.2.22}{23}{\texorpdfstring {streamArr}{streamArr}}{subsubsection.5.5.2.22}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.23}timestampPath}{23}{subsubsection.5.5.2.23}\protected@file@percent } +\newlabel{namespaceget_features_a2797efdfd7b06e306947463a2a9b9017}{{5.5.2.23}{23}{\texorpdfstring {timestampPath}{timestampPath}}{subsubsection.5.5.2.23}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.24}toSaveImgPath}{23}{subsubsection.5.5.2.24}\protected@file@percent } +\newlabel{namespaceget_features_a596ed4974cf087011c3566c6d7a0b46e}{{5.5.2.24}{23}{\texorpdfstring {toSaveImgPath}{toSaveImgPath}}{subsubsection.5.5.2.24}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2.25}toSavePath}{23}{subsubsection.5.5.2.25}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.6}get\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Point\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Cloud Namespace Reference}{23}{section.5.6}\protected@file@percent } +\newlabel{namespaceget_point_cloud}{{5.6}{23}{get\+Point\+Cloud Namespace Reference}{section.5.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.6.1}Function Documentation}{24}{subsection.5.6.1}\protected@file@percent } +\newlabel{namespaceget_point_cloud_a0dccab4a9c9f55f5a8a98a2a41708927}{{5.6.1}{24}{Function Documentation}{subsection.5.6.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.1.1}getPointCloudPolarInd()}{24}{subsubsection.5.6.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.6.2}Variable Documentation}{24}{subsection.5.6.2}\protected@file@percent } +\newlabel{namespaceget_point_cloud_ae0323a9039add2978bf5b49550572c7c}{{5.6.2}{24}{Variable Documentation}{subsection.5.6.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.1}c}{24}{subsubsection.5.6.2.1}\protected@file@percent } +\newlabel{namespaceget_point_cloud_abef58ec544fb87b0bc3d6657c3824bfc}{{5.6.2.1}{24}{\texorpdfstring {c}{c}}{subsubsection.5.6.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.2}dataPath}{24}{subsubsection.5.6.2.2}\protected@file@percent } +\newlabel{namespaceget_point_cloud_a0d700e6dfa2a9f624cd51f991a793585}{{5.6.2.2}{24}{\texorpdfstring {dataPath}{dataPath}}{subsubsection.5.6.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.3}datasetName}{25}{subsubsection.5.6.2.3}\protected@file@percent } +\newlabel{namespaceget_point_cloud_afc536b8d1febbe73625037539b22dae7}{{5.6.2.3}{25}{\texorpdfstring {datasetName}{datasetName}}{subsubsection.5.6.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.4}featureAzim}{25}{subsubsection.5.6.2.4}\protected@file@percent } +\newlabel{namespaceget_point_cloud_a39a522115419b34c999e9aafdacfdaf1}{{5.6.2.4}{25}{\texorpdfstring {featureAzim}{featureAzim}}{subsubsection.5.6.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.5}featureImgCart}{25}{subsubsection.5.6.2.5}\protected@file@percent } +\newlabel{namespaceget_point_cloud_ab23f5124628a67cb3da370ff515d7f8a}{{5.6.2.5}{25}{\texorpdfstring {featureImgCart}{featureImgCart}}{subsubsection.5.6.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.6}featurePolarImage}{25}{subsubsection.5.6.2.6}\protected@file@percent } +\newlabel{namespaceget_point_cloud_aaf79fe01476e41d1fa357a0d05894da5}{{5.6.2.6}{25}{\texorpdfstring {featurePolarImage}{featurePolarImage}}{subsubsection.5.6.2.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.7}featurePolarIndices}{25}{subsubsection.5.6.2.7}\protected@file@percent } +\newlabel{namespaceget_point_cloud_a0b5c7e3ed1c2acd58088bfc6bd2064cf}{{5.6.2.7}{25}{\texorpdfstring {featurePolarIndices}{featurePolarIndices}}{subsubsection.5.6.2.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.8}featureRange}{25}{subsubsection.5.6.2.8}\protected@file@percent } +\newlabel{namespaceget_point_cloud_ab9927de0f2ac5e7a36f51077c9c4dafe}{{5.6.2.8}{25}{\texorpdfstring {featureRange}{featureRange}}{subsubsection.5.6.2.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.9}imgCart}{25}{subsubsection.5.6.2.9}\protected@file@percent } +\newlabel{namespaceget_point_cloud_af68a5edb2e0c03691df3560577eeeb8c}{{5.6.2.9}{25}{\texorpdfstring {imgCart}{imgCart}}{subsubsection.5.6.2.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.10}imgCartRGB}{25}{subsubsection.5.6.2.10}\protected@file@percent } +\newlabel{namespaceget_point_cloud_ab7f52fe3c12ded088797a6fbcabd31fc}{{5.6.2.10}{25}{\texorpdfstring {imgCartRGB}{imgCartRGB}}{subsubsection.5.6.2.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.11}imgPolar}{26}{subsubsection.5.6.2.11}\protected@file@percent } +\newlabel{namespaceget_point_cloud_a012224f6fb0d9dcb13f93fb89f037799}{{5.6.2.11}{26}{\texorpdfstring {imgPolar}{imgPolar}}{subsubsection.5.6.2.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.12}nImgs}{26}{subsubsection.5.6.2.12}\protected@file@percent } +\newlabel{namespaceget_point_cloud_a662fb0cf784aecaa685e2a1bd9b430ab}{{5.6.2.12}{26}{\texorpdfstring {nImgs}{nImgs}}{subsubsection.5.6.2.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.13}streamArr}{26}{subsubsection.5.6.2.13}\protected@file@percent } +\newlabel{namespaceget_point_cloud_ac559b123c3618ef31794f03fb8742e8e}{{5.6.2.13}{26}{\texorpdfstring {streamArr}{streamArr}}{subsubsection.5.6.2.13}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.6.2.14}timestampPath}{26}{subsubsection.5.6.2.14}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.7}get\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Transform\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}KLT Namespace Reference}{26}{section.5.7}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t}{{5.7}{26}{get\+Transform\+KLT Namespace Reference}{section.5.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.7.1}Function Documentation}{27}{subsection.5.7.1}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_ae26aaa718930078284fc40d348d091be}{{5.7.1}{27}{Function Documentation}{subsection.5.7.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.1.1}calculateTransform()}{28}{subsubsection.5.7.1.1}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a5247db70b7a571740c7f595efd3cb24e}{{5.7.1.1}{28}{\texorpdfstring {calculateTransform()}{calculateTransform()}}{subsubsection.5.7.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.1.2}calculateTransformDth()}{28}{subsubsection.5.7.1.2}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a2e0ccc9d641f582521e59400a74ed8bf}{{5.7.1.2}{28}{\texorpdfstring {calculateTransformDth()}{calculateTransformDth()}}{subsubsection.5.7.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.1.3}calculateTransformDxDth()}{28}{subsubsection.5.7.1.3}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a57049ac993252c8c3b8302ef994e7e5d}{{5.7.1.3}{28}{\texorpdfstring {calculateTransformDxDth()}{calculateTransformDxDth()}}{subsubsection.5.7.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.1.4}calculateTransformSVD()}{28}{subsubsection.5.7.1.4}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_aec2c9cf17d6e459e271c80aa5376bfba}{{5.7.1.4}{28}{\texorpdfstring {calculateTransformSVD()}{calculateTransformSVD()}}{subsubsection.5.7.1.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.1.5}estimateTransformUsingDelats()}{29}{subsubsection.5.7.1.5}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a15357d00ea355252f4f042f054c0ecca}{{5.7.1.5}{29}{\texorpdfstring {estimateTransformUsingDelats()}{estimateTransformUsingDelats()}}{subsubsection.5.7.1.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.1.6}getTrackedPointsKLT()}{29}{subsubsection.5.7.1.6}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a14efd28bd750b3627d98d5be79bac379}{{5.7.1.6}{29}{\texorpdfstring {getTrackedPointsKLT()}{getTrackedPointsKLT()}}{subsubsection.5.7.1.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.1.7}visualize\_transform()}{29}{subsubsection.5.7.1.7}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.7.2}Variable Documentation}{30}{subsection.5.7.2}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a62197192f0fbf4e0675eb37be1c4c175}{{5.7.2}{30}{Variable Documentation}{subsection.5.7.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.1}alpha}{30}{subsubsection.5.7.2.1}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a64e5e9d133965546d92e7de800454c3d}{{5.7.2.1}{30}{\texorpdfstring {alpha}{alpha}}{subsubsection.5.7.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.2}bad\_new}{30}{subsubsection.5.7.2.2}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a6e4f9c6a6f5046478d8c0c0dc1bfdd93}{{5.7.2.2}{30}{\texorpdfstring {bad\_new}{bad\_new}}{subsubsection.5.7.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.3}bad\_old}{30}{subsubsection.5.7.2.3}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_ab9f5ca1d8e721da9310e0e6689a1ecff}{{5.7.2.3}{30}{\texorpdfstring {bad\_old}{bad\_old}}{subsubsection.5.7.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.4}blobCoord}{30}{subsubsection.5.7.2.4}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a0197cb5e5c380ebb913e29e92eb18c83}{{5.7.2.4}{30}{\texorpdfstring {blobCoord}{blobCoord}}{subsubsection.5.7.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.5}corrStatus}{30}{subsubsection.5.7.2.5}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a7030b1f08a51af7a83a292a5d887733c}{{5.7.2.5}{30}{\texorpdfstring {corrStatus}{corrStatus}}{subsubsection.5.7.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.6}currImg}{30}{subsubsection.5.7.2.6}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a6d09892567e78d7f00528e9cabeec3b3}{{5.7.2.6}{30}{\texorpdfstring {currImg}{currImg}}{subsubsection.5.7.2.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.7}currTimestamp}{30}{subsubsection.5.7.2.7}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_abef58ec544fb87b0bc3d6657c3824bfc}{{5.7.2.7}{30}{\texorpdfstring {currTimestamp}{currTimestamp}}{subsubsection.5.7.2.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.8}dataPath}{31}{subsubsection.5.7.2.8}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a0d700e6dfa2a9f624cd51f991a793585}{{5.7.2.8}{31}{\texorpdfstring {dataPath}{dataPath}}{subsubsection.5.7.2.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.9}datasetName}{31}{subsubsection.5.7.2.9}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a1771cf24eb9fba7812cc70ad9642945d}{{5.7.2.9}{31}{\texorpdfstring {datasetName}{datasetName}}{subsubsection.5.7.2.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.10}dth}{31}{subsubsection.5.7.2.10}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_aacddc911cdfe5cd5ec97b084754542d4}{{5.7.2.10}{31}{\texorpdfstring {dth}{dth}}{subsubsection.5.7.2.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.11}dx}{31}{subsubsection.5.7.2.11}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_afe12a2a7d5c2b32fa7cb5b98139ea2e7}{{5.7.2.11}{31}{\texorpdfstring {dx}{dx}}{subsubsection.5.7.2.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.12}ERR\_THRESHOLD}{31}{subsubsection.5.7.2.12}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_aa12b25e34c9134c20bd08a8c04a4aae8}{{5.7.2.12}{31}{\texorpdfstring {ERR\_THRESHOLD}{ERR\_THRESHOLD}}{subsubsection.5.7.2.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.13}est\_deltas}{31}{subsubsection.5.7.2.13}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a8d5e95f4d6054db64fd36facd315f2e6}{{5.7.2.13}{31}{\texorpdfstring {est\_deltas}{est\_deltas}}{subsubsection.5.7.2.13}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.14}estTraj}{31}{subsubsection.5.7.2.14}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a0dd30d2c854453a5a754e2a81c971651}{{5.7.2.14}{31}{\texorpdfstring {estTraj}{estTraj}}{subsubsection.5.7.2.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.15}exist\_ok}{31}{subsubsection.5.7.2.15}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_af458882b9b7797c19efdc0d53203b2e4}{{5.7.2.15}{31}{\texorpdfstring {exist\_ok}{exist\_ok}}{subsubsection.5.7.2.15}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.16}extraLabel}{32}{subsubsection.5.7.2.16}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_ae52bd29a36c41945a19cd0c56c5efebc}{{5.7.2.16}{32}{\texorpdfstring {extraLabel}{extraLabel}}{subsubsection.5.7.2.16}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.17}good\_new}{32}{subsubsection.5.7.2.17}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a45be5cadab0e8b0e395d21a6e7f85ca7}{{5.7.2.17}{32}{\texorpdfstring {good\_new}{good\_new}}{subsubsection.5.7.2.17}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.18}good\_old}{32}{subsubsection.5.7.2.18}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a24aecbea81eae21b50e7dedc92066c6e}{{5.7.2.18}{32}{\texorpdfstring {good\_old}{good\_old}}{subsubsection.5.7.2.18}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.19}gt\_deltas}{32}{subsubsection.5.7.2.19}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a08c3a4c31d5817521dbdf24631e562c7}{{5.7.2.19}{32}{\texorpdfstring {gt\_deltas}{gt\_deltas}}{subsubsection.5.7.2.19}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.20}gtTraj}{32}{subsubsection.5.7.2.20}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_aa926dcdb7bac0d33b238c31e26b39275}{{5.7.2.20}{32}{\texorpdfstring {gtTraj}{gtTraj}}{subsubsection.5.7.2.20}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.21}gtTrajPath}{32}{subsubsection.5.7.2.21}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a5e36941b3d856737e81516acd45edc50}{{5.7.2.21}{32}{\texorpdfstring {gtTrajPath}{gtTrajPath}}{subsubsection.5.7.2.21}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.22}h}{32}{subsubsection.5.7.2.22}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a8d579ebe0582eed800eb106350236c4a}{{5.7.2.22}{32}{\texorpdfstring {h}{h}}{subsubsection.5.7.2.22}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.23}imgPathArr}{32}{subsubsection.5.7.2.23}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a3ab4a737af4a26ba845d42353015fa10}{{5.7.2.23}{32}{\texorpdfstring {imgPathArr}{imgPathArr}}{subsubsection.5.7.2.23}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.24}imgSavePath}{33}{subsubsection.5.7.2.24}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_ab5fca5820e0a2b2742ba664eb8931e57}{{5.7.2.24}{33}{\texorpdfstring {imgSavePath}{imgSavePath}}{subsubsection.5.7.2.24}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.25}initPose}{33}{subsubsection.5.7.2.25}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a2435800391d95bbda30c8aee08e55c54}{{5.7.2.25}{33}{\texorpdfstring {initPose}{initPose}}{subsubsection.5.7.2.25}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.26}initTimestamp}{33}{subsubsection.5.7.2.26}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_abafedb46c85f0c231fcfe7083f7ceae6}{{5.7.2.26}{33}{\texorpdfstring {initTimestamp}{initTimestamp}}{subsubsection.5.7.2.26}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.27}LK\_PARAMS}{33}{subsubsection.5.7.2.27}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a5a1ecb7fe1a4f12cba5dfa099fb10bba}{{5.7.2.27}{33}{\texorpdfstring {LK\_PARAMS}{LK\_PARAMS}}{subsubsection.5.7.2.27}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.28}N\_FEATURES\_BEFORE\_RETRACK}{33}{subsubsection.5.7.2.28}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a1a8e9592154f2e95676d6e7e13aa77b1}{{5.7.2.28}{33}{\texorpdfstring {N\_FEATURES\_BEFORE\_RETRACK}{N\_FEATURES\_BEFORE\_RETRACK}}{subsubsection.5.7.2.28}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.29}nBadFeatures}{33}{subsubsection.5.7.2.29}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a191221b7abb5cc30e04160ad276a2404}{{5.7.2.29}{33}{\texorpdfstring {nBadFeatures}{nBadFeatures}}{subsubsection.5.7.2.29}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.30}nFeatures}{34}{subsubsection.5.7.2.30}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_ac3251f460d048fe4ae016b44b7d7d370}{{5.7.2.30}{34}{\texorpdfstring {nFeatures}{nFeatures}}{subsubsection.5.7.2.30}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.31}nGoodFeatures}{34}{subsubsection.5.7.2.31}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a012224f6fb0d9dcb13f93fb89f037799}{{5.7.2.31}{34}{\texorpdfstring {nGoodFeatures}{nGoodFeatures}}{subsubsection.5.7.2.31}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.32}nImgs}{34}{subsubsection.5.7.2.32}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_aee649bd757375f54cb00357ecdf164a0}{{5.7.2.32}{34}{\texorpdfstring {nImgs}{nImgs}}{subsubsection.5.7.2.32}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.33}PLOT\_BAD\_FEATURES}{34}{subsubsection.5.7.2.33}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a2327e63b5316a77636521af36e611518}{{5.7.2.33}{34}{\texorpdfstring {PLOT\_BAD\_FEATURES}{PLOT\_BAD\_FEATURES}}{subsubsection.5.7.2.33}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.34}prev\_good\_old}{34}{subsubsection.5.7.2.34}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a2859654ba27c6c8017869a188748e446}{{5.7.2.34}{34}{\texorpdfstring {prev\_good\_old}{prev\_good\_old}}{subsubsection.5.7.2.34}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.35}prevImg}{34}{subsubsection.5.7.2.35}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_acb95449a94688af33f6e9bb090cf2936}{{5.7.2.35}{34}{\texorpdfstring {prevImg}{prevImg}}{subsubsection.5.7.2.35}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.36}R}{34}{subsubsection.5.7.2.36}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_abc00d48bd1d419b17ec367d6d5becaef}{{5.7.2.36}{34}{\texorpdfstring {R}{R}}{subsubsection.5.7.2.36}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.37}REMOVE\_OLD\_RESULTS}{34}{subsubsection.5.7.2.37}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a776784c483557d4b64ced9d3423bdb4c}{{5.7.2.37}{34}{\texorpdfstring {REMOVE\_OLD\_RESULTS}{REMOVE\_OLD\_RESULTS}}{subsubsection.5.7.2.37}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.38}saveFeaturePath}{35}{subsubsection.5.7.2.38}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a07670d1a0d3d0aa33543d1546c86bab0}{{5.7.2.38}{35}{\texorpdfstring {saveFeaturePath}{saveFeaturePath}}{subsubsection.5.7.2.38}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.39}savePath}{35}{subsubsection.5.7.2.39}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a584efbd5d11809943039e71845b0cd7f}{{5.7.2.39}{35}{\texorpdfstring {savePath}{savePath}}{subsubsection.5.7.2.39}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.40}show}{35}{subsubsection.5.7.2.40}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a550769bbd4e7537ff90a656f5b0c23b2}{{5.7.2.40}{35}{\texorpdfstring {show}{show}}{subsubsection.5.7.2.40}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.41}start}{35}{subsubsection.5.7.2.41}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_ae4502b0a2a023faba5a5ea0da218d623}{{5.7.2.41}{35}{\texorpdfstring {start}{start}}{subsubsection.5.7.2.41}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.42}startImgInd}{35}{subsubsection.5.7.2.42}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a71e24db6312e99e75bdc49e89d65948e}{{5.7.2.42}{35}{\texorpdfstring {startImgInd}{startImgInd}}{subsubsection.5.7.2.42}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.43}timestamp}{35}{subsubsection.5.7.2.43}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_ac559b123c3618ef31794f03fb8742e8e}{{5.7.2.43}{35}{\texorpdfstring {timestamp}{timestamp}}{subsubsection.5.7.2.43}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.44}timestampPath}{35}{subsubsection.5.7.2.44}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a2797efdfd7b06e306947463a2a9b9017}{{5.7.2.44}{35}{\texorpdfstring {timestampPath}{timestampPath}}{subsubsection.5.7.2.44}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.45}toSaveImgPath}{36}{subsubsection.5.7.2.45}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_aa51f3d18d70a9ff98f22758e37152ac6}{{5.7.2.45}{36}{\texorpdfstring {toSaveImgPath}{toSaveImgPath}}{subsubsection.5.7.2.45}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.46}toSaveTrajPath}{36}{subsubsection.5.7.2.46}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a4575c573acd9741770c3a97dac5062ba}{{5.7.2.46}{36}{\texorpdfstring {toSaveTrajPath}{toSaveTrajPath}}{subsubsection.5.7.2.46}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.47}trajSavePath}{36}{subsubsection.5.7.2.47}\protected@file@percent } +\newlabel{namespaceget_transform_k_l_t_a5709b84de1dc903d78a2f503b956e541}{{5.7.2.47}{36}{\texorpdfstring {trajSavePath}{trajSavePath}}{subsubsection.5.7.2.47}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.7.2.48}transformed\_pts}{36}{subsubsection.5.7.2.48}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.8}Mapping Namespace Reference}{36}{section.5.8}\protected@file@percent } +\newlabel{namespace_mapping}{{5.8}{36}{Mapping Namespace Reference}{section.5.8}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.8.1}Variable Documentation}{36}{subsection.5.8.1}\protected@file@percent } +\newlabel{namespace_mapping_a9d912e1ca0fa7da394e152167652474f}{{5.8.1}{36}{Variable Documentation}{subsection.5.8.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.8.1.1}RADAR\_CART\_CENTER}{37}{subsubsection.5.8.1.1}\protected@file@percent } +\newlabel{namespace_mapping_aa74fdf8323f8821aeea561922c6f32cf}{{5.8.1.1}{37}{\texorpdfstring {RADAR\_CART\_CENTER}{RADAR\_CART\_CENTER}}{subsubsection.5.8.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.8.1.2}ROT\_THRESHOLD}{37}{subsubsection.5.8.1.2}\protected@file@percent } +\newlabel{namespace_mapping_ab8c306442c12aedb83f7c0d06210e9f2}{{5.8.1.2}{37}{\texorpdfstring {ROT\_THRESHOLD}{ROT\_THRESHOLD}}{subsubsection.5.8.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.8.1.3}TRANS\_THRESHOLD}{37}{subsubsection.5.8.1.3}\protected@file@percent } +\newlabel{namespace_mapping_abe3c8fb0a99c9c14b8d8f9c95d1531b4}{{5.8.1.3}{37}{\texorpdfstring {TRANS\_THRESHOLD}{TRANS\_THRESHOLD}}{subsubsection.5.8.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.8.1.4}TRANS\_THRESHOLD\_SQ}{37}{subsubsection.5.8.1.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.9}motion\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Distortion Namespace Reference}{37}{section.5.9}\protected@file@percent } +\newlabel{namespacemotion_distortion}{{5.9}{37}{motion\+Distortion Namespace Reference}{section.5.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.9.1}Variable Documentation}{37}{subsection.5.9.1}\protected@file@percent } +\newlabel{namespacemotion_distortion_a9e4a472297e345628c1e8db1788c1f47}{{5.9.1}{37}{Variable Documentation}{subsection.5.9.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.9.1.1}RADAR\_SCAN\_FREQUENCY}{37}{subsubsection.5.9.1.1}\protected@file@percent } +\newlabel{namespacemotion_distortion_af99838407de1f00344ce35d8675e41a7}{{5.9.1.1}{37}{\texorpdfstring {RADAR\_SCAN\_FREQUENCY}{RADAR\_SCAN\_FREQUENCY}}{subsubsection.5.9.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.9.1.2}VERBOSE}{38}{subsubsection.5.9.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.10}outlier\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Rejection Namespace Reference}{38}{section.5.10}\protected@file@percent } +\newlabel{namespaceoutlier_rejection}{{5.10}{38}{outlier\+Rejection Namespace Reference}{section.5.10}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.10.1}Function Documentation}{38}{subsection.5.10.1}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_abe332cee7e7dd62325f3d3977b7695cc}{{5.10.1}{38}{Function Documentation}{subsection.5.10.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.1.1}rejectOutliers()}{39}{subsubsection.5.10.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.10.2}Variable Documentation}{39}{subsection.5.10.2}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a62197192f0fbf4e0675eb37be1c4c175}{{5.10.2}{39}{Variable Documentation}{subsection.5.10.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.1}alpha}{39}{subsubsection.5.10.2.1}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a1c211780ce1ff21c7bfb6a6774120f16}{{5.10.2.1}{39}{\texorpdfstring {alpha}{alpha}}{subsubsection.5.10.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.2}DIST\_THRESHOLD\_M}{39}{subsubsection.5.10.2.2}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_aa1a900cf7b7e48e9c35a34904a9310af}{{5.10.2.2}{39}{\texorpdfstring {DIST\_THRESHOLD\_M}{DIST\_THRESHOLD\_M}}{subsubsection.5.10.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.3}DIST\_THRESHOLD\_PX}{39}{subsubsection.5.10.2.3}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a3ad17c677614a9c975c73a1ac35e0cb9}{{5.10.2.3}{39}{\texorpdfstring {DIST\_THRESHOLD\_PX}{DIST\_THRESHOLD\_PX}}{subsubsection.5.10.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.4}DISTSQ\_THRESHOLD\_PX}{39}{subsubsection.5.10.2.4}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a6d399314f187a822309539b80a54a60d}{{5.10.2.4}{39}{\texorpdfstring {DISTSQ\_THRESHOLD\_PX}{DISTSQ\_THRESHOLD\_PX}}{subsubsection.5.10.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.5}FORCE\_OUTLIERS}{40}{subsubsection.5.10.2.5}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a19c16bb0a566f43231b7cec31757cd12}{{5.10.2.5}{40}{\texorpdfstring {FORCE\_OUTLIERS}{FORCE\_OUTLIERS}}{subsubsection.5.10.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.6}max\_translation\_m}{40}{subsubsection.5.10.2.6}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a644efa9be834d5512b3c3f95fecb636c}{{5.10.2.6}{40}{\texorpdfstring {max\_translation\_m}{max\_translation\_m}}{subsubsection.5.10.2.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.7}n\_outliers}{40}{subsubsection.5.10.2.7}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a2202ecdde3f1299448698af0ba3eb256}{{5.10.2.7}{40}{\texorpdfstring {n\_outliers}{n\_outliers}}{subsubsection.5.10.2.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.8}n\_points}{40}{subsubsection.5.10.2.8}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_af059cdd6419168c9dbdeff4cf4b0b775}{{5.10.2.8}{40}{\texorpdfstring {n\_points}{n\_points}}{subsubsection.5.10.2.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.9}new\_coord}{40}{subsubsection.5.10.2.9}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a04b9553e65e1a1461832f347cb5e942a}{{5.10.2.9}{40}{\texorpdfstring {new\_coord}{new\_coord}}{subsubsection.5.10.2.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.10}new\_coord\_perfect}{40}{subsubsection.5.10.2.10}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a85217f3efc8710cdcda27b2298c29f80}{{5.10.2.10}{40}{\texorpdfstring {new\_coord\_perfect}{new\_coord\_perfect}}{subsubsection.5.10.2.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.11}noiseToAdd}{40}{subsubsection.5.10.2.11}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a16f3add66da7caa94dad99c6e62e5160}{{5.10.2.11}{40}{\texorpdfstring {noiseToAdd}{noiseToAdd}}{subsubsection.5.10.2.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.12}outlier\_ind}{40}{subsubsection.5.10.2.12}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_abb949c00e517693eadcd7dba40403020}{{5.10.2.12}{40}{\texorpdfstring {outlier\_ind}{outlier\_ind}}{subsubsection.5.10.2.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.13}prev\_coord}{41}{subsubsection.5.10.2.13}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_af01450d8e397ca1aa936330694f1a3ff}{{5.10.2.13}{41}{\texorpdfstring {prev\_coord}{prev\_coord}}{subsubsection.5.10.2.13}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.14}pruned\_new\_coord}{41}{subsubsection.5.10.2.14}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_ac4f2fa8ef2ad08a8ce87667b9e847366}{{5.10.2.14}{41}{\texorpdfstring {pruned\_new\_coord}{pruned\_new\_coord}}{subsubsection.5.10.2.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.15}pruned\_prev\_coord}{41}{subsubsection.5.10.2.15}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a584efbd5d11809943039e71845b0cd7f}{{5.10.2.15}{41}{\texorpdfstring {pruned\_prev\_coord}{pruned\_prev\_coord}}{subsubsection.5.10.2.15}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.16}show}{41}{subsubsection.5.10.2.16}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_ad5ed049a2c1601e6f4f9e5d69619c804}{{5.10.2.16}{41}{\texorpdfstring {show}{show}}{subsubsection.5.10.2.16}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.17}theta\_deg}{41}{subsubsection.5.10.2.17}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_ad1aa2538c2e1a7556cc668bd67b4bff6}{{5.10.2.17}{41}{\texorpdfstring {theta\_deg}{theta\_deg}}{subsubsection.5.10.2.17}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.18}theta\_max\_deg}{41}{subsubsection.5.10.2.18}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_adca18f0c2258ab57e96c3f009761ea85}{{5.10.2.18}{41}{\texorpdfstring {theta\_max\_deg}{theta\_max\_deg}}{subsubsection.5.10.2.18}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.19}title\_append}{41}{subsubsection.5.10.2.19}\protected@file@percent } +\newlabel{namespaceoutlier_rejection_a57b2042477f45ffac90299611ca75467}{{5.10.2.19}{41}{\texorpdfstring {title\_append}{title\_append}}{subsubsection.5.10.2.19}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.10.2.20}trans\_vec}{41}{subsubsection.5.10.2.20}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.11}parse\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Data Namespace Reference}{42}{section.5.11}\protected@file@percent } +\newlabel{namespaceparse_data}{{5.11}{42}{parse\+Data Namespace Reference}{section.5.11}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.11.1}Function Documentation}{42}{subsection.5.11.1}\protected@file@percent } +\newlabel{namespaceparse_data_a553fc4256c8cecae88df08c33914983e}{{5.11.1}{42}{Function Documentation}{subsection.5.11.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.1}convertCartesianImageToPolar()}{42}{subsubsection.5.11.1.1}\protected@file@percent } +\newlabel{namespaceparse_data_aa28b753fcba74d91ea125fbc1035c60d}{{5.11.1.1}{42}{\texorpdfstring {convertCartesianImageToPolar()}{convertCartesianImageToPolar()}}{subsubsection.5.11.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.2}convertPolarImageToCartesian()}{43}{subsubsection.5.11.1.2}\protected@file@percent } +\newlabel{namespaceparse_data_a608f255c49e53c775f4095f98b721e88}{{5.11.1.2}{43}{\texorpdfstring {convertPolarImageToCartesian()}{convertPolarImageToCartesian()}}{subsubsection.5.11.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.3}convertPolarImgToLogPolar()}{43}{subsubsection.5.11.1.3}\protected@file@percent } +\newlabel{namespaceparse_data_a41a7777dda4396b3ef8ee2fbb10cea2e}{{5.11.1.3}{43}{\texorpdfstring {convertPolarImgToLogPolar()}{convertPolarImgToLogPolar()}}{subsubsection.5.11.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.4}drawCVPoint()}{43}{subsubsection.5.11.1.4}\protected@file@percent } +\newlabel{namespaceparse_data_a9e426a68efc45366f9a6f6783d7660a5}{{5.11.1.4}{43}{\texorpdfstring {drawCVPoint()}{drawCVPoint()}}{subsubsection.5.11.1.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.5}extractDataFromRadarImage()}{43}{subsubsection.5.11.1.5}\protected@file@percent } +\newlabel{namespaceparse_data_a36e96b28ee694506251cc890843fc71c}{{5.11.1.5}{43}{\texorpdfstring {extractDataFromRadarImage()}{extractDataFromRadarImage()}}{subsubsection.5.11.1.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.6}getCartImageFromImgPaths()}{44}{subsubsection.5.11.1.6}\protected@file@percent } +\newlabel{namespaceparse_data_ac055b87b5e7ae8930fbae66eea74ee5a}{{5.11.1.6}{44}{\texorpdfstring {getCartImageFromImgPaths()}{getCartImageFromImgPaths()}}{subsubsection.5.11.1.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.7}getDataFromImgPathsByIndex()}{44}{subsubsection.5.11.1.7}\protected@file@percent } +\newlabel{namespaceparse_data_a693d72eb158b3187d467637850c1be17}{{5.11.1.7}{44}{\texorpdfstring {getDataFromImgPathsByIndex()}{getDataFromImgPathsByIndex()}}{subsubsection.5.11.1.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.8}getPolarImageFromImgPaths()}{44}{subsubsection.5.11.1.8}\protected@file@percent } +\newlabel{namespaceparse_data_a15cc603507e025614d75be46af8c7236}{{5.11.1.8}{44}{\texorpdfstring {getPolarImageFromImgPaths()}{getPolarImageFromImgPaths()}}{subsubsection.5.11.1.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.9}getRadarImgPaths()}{45}{subsubsection.5.11.1.9}\protected@file@percent } +\newlabel{namespaceparse_data_ae891ad024b063e91ca7ec43883074676}{{5.11.1.9}{45}{\texorpdfstring {getRadarImgPaths()}{getRadarImgPaths()}}{subsubsection.5.11.1.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.1.10}getRadarStreamPolar()}{45}{subsubsection.5.11.1.10}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.11.2}Variable Documentation}{45}{subsection.5.11.2}\protected@file@percent } +\newlabel{namespaceparse_data_ae0323a9039add2978bf5b49550572c7c}{{5.11.2}{45}{Variable Documentation}{subsection.5.11.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.1}c}{45}{subsubsection.5.11.2.1}\protected@file@percent } +\newlabel{namespaceparse_data_abef58ec544fb87b0bc3d6657c3824bfc}{{5.11.2.1}{45}{\texorpdfstring {c}{c}}{subsubsection.5.11.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.2}dataPath}{45}{subsubsection.5.11.2.2}\protected@file@percent } +\newlabel{namespaceparse_data_a0d700e6dfa2a9f624cd51f991a793585}{{5.11.2.2}{45}{\texorpdfstring {dataPath}{dataPath}}{subsubsection.5.11.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.3}datasetName}{45}{subsubsection.5.11.2.3}\protected@file@percent } +\newlabel{namespaceparse_data_a574381b982eec58cb6b83b809bf23c5f}{{5.11.2.3}{45}{\texorpdfstring {datasetName}{datasetName}}{subsubsection.5.11.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.4}DOWNSAMPLE\_FACTOR}{46}{subsubsection.5.11.2.4}\protected@file@percent } +\newlabel{namespaceparse_data_afd970fd9434c5d9f93551cb140a8bf63}{{5.11.2.4}{46}{\texorpdfstring {DOWNSAMPLE\_FACTOR}{DOWNSAMPLE\_FACTOR}}{subsubsection.5.11.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.5}imgCart}{46}{subsubsection.5.11.2.5}\protected@file@percent } +\newlabel{namespaceparse_data_ab5b20adc8fe382f5829e2c07334689c0}{{5.11.2.5}{46}{\texorpdfstring {imgCart}{imgCart}}{subsubsection.5.11.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.6}imgPolar}{46}{subsubsection.5.11.2.6}\protected@file@percent } +\newlabel{namespaceparse_data_a63cc91387ebc1ec23ea351b8cf4d8c24}{{5.11.2.6}{46}{\texorpdfstring {imgPolar}{imgPolar}}{subsubsection.5.11.2.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.7}MAX\_RANGE\_CLIP\_DEFAULT}{46}{subsubsection.5.11.2.7}\protected@file@percent } +\newlabel{namespaceparse_data_a5a1c66393231cdb3bd1d18745913faf7}{{5.11.2.7}{46}{\texorpdfstring {MAX\_RANGE\_CLIP\_DEFAULT}{MAX\_RANGE\_CLIP\_DEFAULT}}{subsubsection.5.11.2.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.8}nImgs}{46}{subsubsection.5.11.2.8}\protected@file@percent } +\newlabel{namespaceparse_data_a59f0fd548af922cd02e62fb7a73819e8}{{5.11.2.8}{46}{\texorpdfstring {nImgs}{nImgs}}{subsubsection.5.11.2.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.9}RANGE\_RESOLUTION\_CART\_M}{46}{subsubsection.5.11.2.9}\protected@file@percent } +\newlabel{namespaceparse_data_a4839997a207abe23d2e932bf8606065c}{{5.11.2.9}{46}{\texorpdfstring {RANGE\_RESOLUTION\_CART\_M}{RANGE\_RESOLUTION\_CART\_M}}{subsubsection.5.11.2.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.10}RANGE\_RESOLUTION\_M}{46}{subsubsection.5.11.2.10}\protected@file@percent } +\newlabel{namespaceparse_data_afd7616dc1e1f2275cbaab68388060ecc}{{5.11.2.10}{46}{\texorpdfstring {RANGE\_RESOLUTION\_M}{RANGE\_RESOLUTION\_M}}{subsubsection.5.11.2.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.11}streamArr}{46}{subsubsection.5.11.2.11}\protected@file@percent } +\newlabel{namespaceparse_data_ac559b123c3618ef31794f03fb8742e8e}{{5.11.2.11}{46}{\texorpdfstring {streamArr}{streamArr}}{subsubsection.5.11.2.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.11.2.12}timestampPath}{47}{subsubsection.5.11.2.12}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.12}Pose\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Graph\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Lib Namespace Reference}{47}{section.5.12}\protected@file@percent } +\newlabel{namespace_pose_graph_lib}{{5.12}{47}{Pose\+Graph\+Lib Namespace Reference}{section.5.12}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.13}Raw\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}ROAMSystem Namespace Reference}{47}{section.5.13}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system}{{5.13}{47}{Raw\+ROAMSystem Namespace Reference}{section.5.13}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.13.1}Variable Documentation}{47}{subsection.5.13.1}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_a0d700e6dfa2a9f624cd51f991a793585}{{5.13.1}{47}{Variable Documentation}{subsection.5.13.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.1}datasetName}{47}{subsubsection.5.13.1.1}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_a58496a66cbc7a6dfb37042c7e7731cdf}{{5.13.1.1}{47}{\texorpdfstring {datasetName}{datasetName}}{subsubsection.5.13.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.2}endSeqInd}{47}{subsubsection.5.13.1.2}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_a3ab4a737af4a26ba845d42353015fa10}{{5.13.1.2}{47}{\texorpdfstring {endSeqInd}{endSeqInd}}{subsubsection.5.13.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.3}imgSavePath}{48}{subsubsection.5.13.1.3}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_ade0809af2b538933a9e6736a3675a088}{{5.13.1.3}{48}{\texorpdfstring {imgSavePath}{imgSavePath}}{subsubsection.5.13.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.4}paramFlags}{48}{subsubsection.5.13.1.4}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_a9d912e1ca0fa7da394e152167652474f}{{5.13.1.4}{48}{\texorpdfstring {paramFlags}{paramFlags}}{subsubsection.5.13.1.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.5}RADAR\_CART\_CENTER}{48}{subsubsection.5.13.1.5}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_abc00d48bd1d419b17ec367d6d5becaef}{{5.13.1.5}{48}{\texorpdfstring {RADAR\_CART\_CENTER}{RADAR\_CART\_CENTER}}{subsubsection.5.13.1.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.6}REMOVE\_OLD\_RESULTS}{48}{subsubsection.5.13.1.6}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_afbe7c1c7b1d5d8d6082cb2ecd6e392fb}{{5.13.1.6}{48}{\texorpdfstring {REMOVE\_OLD\_RESULTS}{REMOVE\_OLD\_RESULTS}}{subsubsection.5.13.1.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.7}startSeqInd}{48}{subsubsection.5.13.1.7}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_ac4ca86dead4518ac4fd6e30172db3d9e}{{5.13.1.7}{48}{\texorpdfstring {startSeqInd}{startSeqInd}}{subsubsection.5.13.1.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.8}system}{48}{subsubsection.5.13.1.8}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_a4575c573acd9741770c3a97dac5062ba}{{5.13.1.8}{48}{\texorpdfstring {system}{system}}{subsubsection.5.13.1.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.9}trajSavePath}{49}{subsubsection.5.13.1.9}\protected@file@percent } +\newlabel{namespace_raw_r_o_a_m_system_a3a8a505694cddaa9655fa95d969ad7d5}{{5.13.1.9}{49}{\texorpdfstring {trajSavePath}{trajSavePath}}{subsubsection.5.13.1.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.13.1.10}wantToPlot}{49}{subsubsection.5.13.1.10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.14}test\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Motion\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Distortion Namespace Reference}{49}{section.5.14}\protected@file@percent } +\newlabel{namespacetest_motion_distortion}{{5.14}{49}{test\+Motion\+Distortion Namespace Reference}{section.5.14}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.14.1}Variable Documentation}{50}{subsection.5.14.1}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a3b98e2dffc6cb06a89dcb0d5c60a0206}{{5.14.1}{50}{Variable Documentation}{subsection.5.14.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.1}A}{50}{subsubsection.5.14.1.1}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a03b4b9a49913cb27a8dff899ea68f892}{{5.14.1.1}{50}{\texorpdfstring {A}{A}}{subsubsection.5.14.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.2}A\_inv}{50}{subsubsection.5.14.1.2}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a62197192f0fbf4e0675eb37be1c4c175}{{5.14.1.2}{50}{\texorpdfstring {A\_inv}{A\_inv}}{subsubsection.5.14.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.3}alpha}{50}{subsubsection.5.14.1.3}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_aebfdce4f6cc7241ba38924f77a12e7cf}{{5.14.1.3}{50}{\texorpdfstring {alpha}{alpha}}{subsubsection.5.14.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.4}clear}{50}{subsubsection.5.14.1.4}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a08d7ab388db4b26c426bef86ef14b56d}{{5.14.1.4}{50}{\texorpdfstring {clear}{clear}}{subsubsection.5.14.1.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.5}cov\_p}{50}{subsubsection.5.14.1.5}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a0a3c99d367d844f8d11bbe4e735df941}{{5.14.1.5}{50}{\texorpdfstring {cov\_p}{cov\_p}}{subsubsection.5.14.1.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.6}cov\_v}{50}{subsubsection.5.14.1.6}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_ab4d948a1902fb16de6b605fd976adf71}{{5.14.1.6}{50}{\texorpdfstring {cov\_v}{cov\_v}}{subsubsection.5.14.1.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.7}currentFrame}{51}{subsubsection.5.14.1.7}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a4fc87d3e0555721c49e62c74ca5e0cce}{{5.14.1.7}{51}{\texorpdfstring {currentFrame}{currentFrame}}{subsubsection.5.14.1.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.8}distorted}{51}{subsubsection.5.14.1.8}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a36cde68b055f3f2ee671020af4ccf4e2}{{5.14.1.8}{51}{\texorpdfstring {distorted}{distorted}}{subsubsection.5.14.1.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.9}False}{51}{subsubsection.5.14.1.9}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a8d47c866b21811d9fceea3b06fc84638}{{5.14.1.9}{51}{\texorpdfstring {False}{False}}{subsubsection.5.14.1.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.10}final\_undistorted}{51}{subsubsection.5.14.1.10}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a0877761f00ee2460fe16820f9d52daf1}{{5.14.1.10}{51}{\texorpdfstring {final\_undistorted}{final\_undistorted}}{subsubsection.5.14.1.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.11}frequency}{51}{subsubsection.5.14.1.11}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a6ea61aa1009f507ec5cc56ec088c994e}{{5.14.1.11}{51}{\texorpdfstring {frequency}{frequency}}{subsubsection.5.14.1.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.12}groundTruth}{51}{subsubsection.5.14.1.12}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a5e36941b3d856737e81516acd45edc50}{{5.14.1.12}{51}{\texorpdfstring {groundTruth}{groundTruth}}{subsubsection.5.14.1.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.13}h}{51}{subsubsection.5.14.1.13}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a29ad3fdd24965a3db8b834e04d27a7ea}{{5.14.1.13}{51}{\texorpdfstring {h}{h}}{subsubsection.5.14.1.13}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.14}h\_fit}{51}{subsubsection.5.14.1.14}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_ae4611af3884f5d62ef0628317c03fff1}{{5.14.1.14}{51}{\texorpdfstring {h\_fit}{h\_fit}}{subsubsection.5.14.1.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.15}MDS}{52}{subsubsection.5.14.1.15}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a7722c8ecbb62d99aee7ce68b1752f337}{{5.14.1.15}{52}{\texorpdfstring {MDS}{MDS}}{subsubsection.5.14.1.15}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.16}N}{52}{subsubsection.5.14.1.16}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a2202ecdde3f1299448698af0ba3eb256}{{5.14.1.16}{52}{\texorpdfstring {N}{N}}{subsubsection.5.14.1.16}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.17}n\_points}{52}{subsubsection.5.14.1.17}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a85217f3efc8710cdcda27b2298c29f80}{{5.14.1.17}{52}{\texorpdfstring {n\_points}{n\_points}}{subsubsection.5.14.1.17}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.18}noiseToAdd}{52}{subsubsection.5.14.1.18}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_ac167268f99229eb4f16b0291abb2031b}{{5.14.1.18}{52}{\texorpdfstring {noiseToAdd}{noiseToAdd}}{subsubsection.5.14.1.18}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.19}noisy}{52}{subsubsection.5.14.1.19}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a16f3add66da7caa94dad99c6e62e5160}{{5.14.1.19}{52}{\texorpdfstring {noisy}{noisy}}{subsubsection.5.14.1.19}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.20}outlier\_ind}{52}{subsubsection.5.14.1.20}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_aeb5e3b3a31f302552b5bd35f3accd3c2}{{5.14.1.20}{52}{\texorpdfstring {outlier\_ind}{outlier\_ind}}{subsubsection.5.14.1.20}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.21}outlier\_rate}{52}{subsubsection.5.14.1.21}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_aa9fffd513bf2e2cbfe44da13aa4a69bf}{{5.14.1.21}{52}{\texorpdfstring {outlier\_rate}{outlier\_rate}}{subsubsection.5.14.1.21}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.22}p\_jt}{52}{subsubsection.5.14.1.22}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a0e515884ff3ebc059c605589aec689b7}{{5.14.1.22}{52}{\texorpdfstring {p\_jt}{p\_jt}}{subsubsection.5.14.1.22}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.23}p\_w}{53}{subsubsection.5.14.1.23}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a41000f175dc0115080e2a682cc06dbe9}{{5.14.1.23}{53}{\texorpdfstring {p\_w}{p\_w}}{subsubsection.5.14.1.23}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.24}params}{53}{subsubsection.5.14.1.24}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a486233493fc0e05fe1bdbe7b7e5d0f1e}{{5.14.1.24}{53}{\texorpdfstring {params}{params}}{subsubsection.5.14.1.24}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.25}period}{53}{subsubsection.5.14.1.25}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a05c99e7a4b8e210f2a90435ada048345}{{5.14.1.25}{53}{\texorpdfstring {period}{period}}{subsubsection.5.14.1.25}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.26}plotDisplace}{53}{subsubsection.5.14.1.26}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a50ec735237ea65bfb54b2b8155ccf738}{{5.14.1.26}{53}{\texorpdfstring {plotDisplace}{plotDisplace}}{subsubsection.5.14.1.26}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.27}R\_fit}{53}{subsubsection.5.14.1.27}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a584efbd5d11809943039e71845b0cd7f}{{5.14.1.27}{53}{\texorpdfstring {R\_fit}{R\_fit}}{subsubsection.5.14.1.27}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.28}show}{53}{subsubsection.5.14.1.28}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_aa469d7addbb311effcc0cc5fa6c86dfd}{{5.14.1.28}{53}{\texorpdfstring {show}{show}}{subsubsection.5.14.1.28}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.29}solution}{53}{subsubsection.5.14.1.29}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a1b714106eb7bad251438c439fc59e407}{{5.14.1.29}{53}{\texorpdfstring {solution}{solution}}{subsubsection.5.14.1.29}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.30}srcCoord2}{53}{subsubsection.5.14.1.30}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a1648556515a367ae4a45a7e2330cd9eb}{{5.14.1.30}{53}{\texorpdfstring {srcCoord2}{srcCoord2}}{subsubsection.5.14.1.30}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.31}srcCoord3}{54}{subsubsection.5.14.1.31}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a2ad6563ac916a24a87640bf0355b44f9}{{5.14.1.31}{54}{\texorpdfstring {srcCoord3}{srcCoord3}}{subsubsection.5.14.1.31}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.32}T\_wj}{54}{subsubsection.5.14.1.32}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a0a395e89714f60150df6675faaa1f6cb}{{5.14.1.32}{54}{\texorpdfstring {T\_wj}{T\_wj}}{subsubsection.5.14.1.32}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.33}T\_wj0}{54}{subsubsection.5.14.1.33}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_ad5ed049a2c1601e6f4f9e5d69619c804}{{5.14.1.33}{54}{\texorpdfstring {T\_wj0}{T\_wj0}}{subsubsection.5.14.1.33}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.34}theta\_deg}{54}{subsubsection.5.14.1.34}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_ab69a1473bbefcd69e648eed41f4cf499}{{5.14.1.34}{54}{\texorpdfstring {theta\_deg}{theta\_deg}}{subsubsection.5.14.1.34}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.35}theta\_fit}{54}{subsubsection.5.14.1.35}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_adca18f0c2258ab57e96c3f009761ea85}{{5.14.1.35}{54}{\texorpdfstring {theta\_fit}{theta\_fit}}{subsubsection.5.14.1.35}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.36}title\_append}{54}{subsubsection.5.14.1.36}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_ab3d350d501d99e7bbe8f68ace7af32c7}{{5.14.1.36}{54}{\texorpdfstring {title\_append}{title\_append}}{subsubsection.5.14.1.36}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.37}transform}{54}{subsubsection.5.14.1.37}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_afae9a38dc58a08daa2011e18a26770f7}{{5.14.1.37}{54}{\texorpdfstring {transform}{transform}}{subsubsection.5.14.1.37}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.38}undistorted}{55}{subsubsection.5.14.1.38}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_af5a541b70835126d40b66611fae2b02a}{{5.14.1.38}{55}{\texorpdfstring {undistorted}{undistorted}}{subsubsection.5.14.1.38}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.39}useOld}{55}{subsubsection.5.14.1.39}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_ad68b1bf260bf575b3e2c6ede7e8cb890}{{5.14.1.39}{55}{\texorpdfstring {useOld}{useOld}}{subsubsection.5.14.1.39}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.40}v\_j0}{55}{subsubsection.5.14.1.40}\protected@file@percent } +\newlabel{namespacetest_motion_distortion_a8493384c61de1f81ddb7c407d63df2b8}{{5.14.1.40}{55}{\texorpdfstring {v\_j0}{v\_j0}}{subsubsection.5.14.1.40}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.14.1.41}velocity}{55}{subsubsection.5.14.1.41}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.15}test\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Transform Namespace Reference}{55}{section.5.15}\protected@file@percent } +\newlabel{namespacetest_transform}{{5.15}{55}{test\+Transform Namespace Reference}{section.5.15}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.15.1}Variable Documentation}{56}{subsection.5.15.1}\protected@file@percent } +\newlabel{namespacetest_transform_a3b98e2dffc6cb06a89dcb0d5c60a0206}{{5.15.1}{56}{Variable Documentation}{subsection.5.15.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.1}A}{56}{subsubsection.5.15.1.1}\protected@file@percent } +\newlabel{namespacetest_transform_a03b4b9a49913cb27a8dff899ea68f892}{{5.15.1.1}{56}{\texorpdfstring {A}{A}}{subsubsection.5.15.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.2}A\_inv}{56}{subsubsection.5.15.1.2}\protected@file@percent } +\newlabel{namespacetest_transform_a62197192f0fbf4e0675eb37be1c4c175}{{5.15.1.2}{56}{\texorpdfstring {A\_inv}{A\_inv}}{subsubsection.5.15.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.3}alpha}{56}{subsubsection.5.15.1.3}\protected@file@percent } +\newlabel{namespacetest_transform_aebfdce4f6cc7241ba38924f77a12e7cf}{{5.15.1.3}{56}{\texorpdfstring {alpha}{alpha}}{subsubsection.5.15.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.4}clear}{56}{subsubsection.5.15.1.4}\protected@file@percent } +\newlabel{namespacetest_transform_a36cde68b055f3f2ee671020af4ccf4e2}{{5.15.1.4}{56}{\texorpdfstring {clear}{clear}}{subsubsection.5.15.1.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.5}False}{56}{subsubsection.5.15.1.5}\protected@file@percent } +\newlabel{namespacetest_transform_a5e36941b3d856737e81516acd45edc50}{{5.15.1.5}{56}{\texorpdfstring {False}{False}}{subsubsection.5.15.1.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.6}h}{56}{subsubsection.5.15.1.6}\protected@file@percent } +\newlabel{namespacetest_transform_a29ad3fdd24965a3db8b834e04d27a7ea}{{5.15.1.6}{56}{\texorpdfstring {h}{h}}{subsubsection.5.15.1.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.7}h\_fit}{57}{subsubsection.5.15.1.7}\protected@file@percent } +\newlabel{namespacetest_transform_a7722c8ecbb62d99aee7ce68b1752f337}{{5.15.1.7}{57}{\texorpdfstring {h\_fit}{h\_fit}}{subsubsection.5.15.1.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.8}N}{57}{subsubsection.5.15.1.8}\protected@file@percent } +\newlabel{namespacetest_transform_a2202ecdde3f1299448698af0ba3eb256}{{5.15.1.8}{57}{\texorpdfstring {N}{N}}{subsubsection.5.15.1.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.9}n\_points}{57}{subsubsection.5.15.1.9}\protected@file@percent } +\newlabel{namespacetest_transform_a85217f3efc8710cdcda27b2298c29f80}{{5.15.1.9}{57}{\texorpdfstring {n\_points}{n\_points}}{subsubsection.5.15.1.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.10}noiseToAdd}{57}{subsubsection.5.15.1.10}\protected@file@percent } +\newlabel{namespacetest_transform_ac167268f99229eb4f16b0291abb2031b}{{5.15.1.10}{57}{\texorpdfstring {noiseToAdd}{noiseToAdd}}{subsubsection.5.15.1.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.11}noisy}{57}{subsubsection.5.15.1.11}\protected@file@percent } +\newlabel{namespacetest_transform_a16f3add66da7caa94dad99c6e62e5160}{{5.15.1.11}{57}{\texorpdfstring {noisy}{noisy}}{subsubsection.5.15.1.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.12}outlier\_ind}{57}{subsubsection.5.15.1.12}\protected@file@percent } +\newlabel{namespacetest_transform_aeb5e3b3a31f302552b5bd35f3accd3c2}{{5.15.1.12}{57}{\texorpdfstring {outlier\_ind}{outlier\_ind}}{subsubsection.5.15.1.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.13}outlier\_rate}{57}{subsubsection.5.15.1.13}\protected@file@percent } +\newlabel{namespacetest_transform_a50ec735237ea65bfb54b2b8155ccf738}{{5.15.1.13}{57}{\texorpdfstring {outlier\_rate}{outlier\_rate}}{subsubsection.5.15.1.13}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.14}R\_fit}{57}{subsubsection.5.15.1.14}\protected@file@percent } +\newlabel{namespacetest_transform_a584efbd5d11809943039e71845b0cd7f}{{5.15.1.14}{57}{\texorpdfstring {R\_fit}{R\_fit}}{subsubsection.5.15.1.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.15}show}{58}{subsubsection.5.15.1.15}\protected@file@percent } +\newlabel{namespacetest_transform_a48eb521013d78f7dad08a4aabe451e1b}{{5.15.1.15}{58}{\texorpdfstring {show}{show}}{subsubsection.5.15.1.15}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.16}srcCoord}{58}{subsubsection.5.15.1.16}\protected@file@percent } +\newlabel{namespacetest_transform_a1b714106eb7bad251438c439fc59e407}{{5.15.1.16}{58}{\texorpdfstring {srcCoord}{srcCoord}}{subsubsection.5.15.1.16}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.17}srcCoord2}{58}{subsubsection.5.15.1.17}\protected@file@percent } +\newlabel{namespacetest_transform_ae4834211499fa0991173526c2592ef12}{{5.15.1.17}{58}{\texorpdfstring {srcCoord2}{srcCoord2}}{subsubsection.5.15.1.17}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.18}targetCoord}{58}{subsubsection.5.15.1.18}\protected@file@percent } +\newlabel{namespacetest_transform_ad5ed049a2c1601e6f4f9e5d69619c804}{{5.15.1.18}{58}{\texorpdfstring {targetCoord}{targetCoord}}{subsubsection.5.15.1.18}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.19}theta\_deg}{58}{subsubsection.5.15.1.19}\protected@file@percent } +\newlabel{namespacetest_transform_ab69a1473bbefcd69e648eed41f4cf499}{{5.15.1.19}{58}{\texorpdfstring {theta\_deg}{theta\_deg}}{subsubsection.5.15.1.19}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.20}theta\_fit}{58}{subsubsection.5.15.1.20}\protected@file@percent } +\newlabel{namespacetest_transform_adca18f0c2258ab57e96c3f009761ea85}{{5.15.1.20}{58}{\texorpdfstring {theta\_fit}{theta\_fit}}{subsubsection.5.15.1.20}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.21}title\_append}{58}{subsubsection.5.15.1.21}\protected@file@percent } +\newlabel{namespacetest_transform_af5a541b70835126d40b66611fae2b02a}{{5.15.1.21}{58}{\texorpdfstring {title\_append}{title\_append}}{subsubsection.5.15.1.21}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.15.1.22}useOld}{58}{subsubsection.5.15.1.22}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.16}Tracker Namespace Reference}{59}{section.5.16}\protected@file@percent } +\newlabel{namespace_tracker}{{5.16}{59}{Tracker Namespace Reference}{section.5.16}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.17}trajectory\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Plotting Namespace Reference}{59}{section.5.17}\protected@file@percent } +\newlabel{namespacetrajectory_plotting}{{5.17}{59}{trajectory\+Plotting Namespace Reference}{section.5.17}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.17.1}Function Documentation}{59}{subsection.5.17.1}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_ad97043d2e531a6e8fa6a96f2fa1c626e}{{5.17.1}{59}{Function Documentation}{subsection.5.17.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.1.1}computePosesRMSE()}{59}{subsubsection.5.17.1.1}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a1fdedfe2db4ca15dc9cf2cc8b501756d}{{5.17.1.1}{59}{\texorpdfstring {computePosesRMSE()}{computePosesRMSE()}}{subsubsection.5.17.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.1.2}getGroundTruthTrajectory()}{60}{subsubsection.5.17.1.2}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a8d09aef19b822c81eca8b7ea4e45b98d}{{5.17.1.2}{60}{\texorpdfstring {getGroundTruthTrajectory()}{getGroundTruthTrajectory()}}{subsubsection.5.17.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.1.3}getGroundTruthTrajectoryGPS()}{60}{subsubsection.5.17.1.3}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a016ffc757367f9b328db391698f8042f}{{5.17.1.3}{60}{\texorpdfstring {getGroundTruthTrajectoryGPS()}{getGroundTruthTrajectoryGPS()}}{subsubsection.5.17.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.1.4}plotGtAndEstTrajectory()}{60}{subsubsection.5.17.1.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.17.2}Variable Documentation}{60}{subsection.5.17.2}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a17afa58b2bc574dedcd1cc02e1fdf165}{{5.17.2}{60}{Variable Documentation}{subsection.5.17.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.2.1}block}{60}{subsubsection.5.17.2.1}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a0d700e6dfa2a9f624cd51f991a793585}{{5.17.2.1}{60}{\texorpdfstring {block}{block}}{subsubsection.5.17.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.2.2}datasetName}{61}{subsubsection.5.17.2.2}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a1874cfdbfd36b762a0c028c0cde1979b}{{5.17.2.2}{61}{\texorpdfstring {datasetName}{datasetName}}{subsubsection.5.17.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.2.3}estPoses}{61}{subsubsection.5.17.2.3}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a8d5e95f4d6054db64fd36facd315f2e6}{{5.17.2.3}{61}{\texorpdfstring {estPoses}{estPoses}}{subsubsection.5.17.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.2.4}estTraj}{61}{subsubsection.5.17.2.4}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a3135d377c1653c1d35443c74ae0589d9}{{5.17.2.4}{61}{\texorpdfstring {estTraj}{estTraj}}{subsubsection.5.17.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.2.5}gtPath}{61}{subsubsection.5.17.2.5}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a1be80d6bbf048641b45053e009e0dbdd}{{5.17.2.5}{61}{\texorpdfstring {gtPath}{gtPath}}{subsubsection.5.17.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.2.6}gtTraj}{61}{subsubsection.5.17.2.6}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a37f904f43339b2c0cc7d86e8cfb6d836}{{5.17.2.6}{61}{\texorpdfstring {gtTraj}{gtTraj}}{subsubsection.5.17.2.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.2.7}keyframe\_timestamps}{61}{subsubsection.5.17.2.7}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_a5f275402fe7e3f672eab8b802e8913ca}{{5.17.2.7}{61}{\texorpdfstring {keyframe\_timestamps}{keyframe\_timestamps}}{subsubsection.5.17.2.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.2.8}noise}{61}{subsubsection.5.17.2.8}\protected@file@percent } +\newlabel{namespacetrajectory_plotting_ac559b123c3618ef31794f03fb8742e8e}{{5.17.2.8}{61}{\texorpdfstring {noise}{noise}}{subsubsection.5.17.2.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.17.2.9}timestampPath}{62}{subsubsection.5.17.2.9}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.18}utils Namespace Reference}{62}{section.5.18}\protected@file@percent } +\newlabel{namespaceutils}{{5.18}{62}{utils Namespace Reference}{section.5.18}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.18.1}Function Documentation}{62}{subsection.5.18.1}\protected@file@percent } +\newlabel{namespaceutils_a10a2d7ad99b45d90d58ed75eb48fa6ff}{{5.18.1}{62}{Function Documentation}{subsection.5.18.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.1}convertPoseToTransform()}{62}{subsubsection.5.18.1.1}\protected@file@percent } +\newlabel{namespaceutils_aa667ba47db3bb680dd31ee4538d0975c}{{5.18.1.1}{62}{\texorpdfstring {convertPoseToTransform()}{convertPoseToTransform()}}{subsubsection.5.18.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.2}convertRandHtoDeltas()}{62}{subsubsection.5.18.1.2}\protected@file@percent } +\newlabel{namespaceutils_a53b42cbb565a19553cdb198201b1c481}{{5.18.1.2}{62}{\texorpdfstring {convertRandHtoDeltas()}{convertRandHtoDeltas()}}{subsubsection.5.18.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.3}convertTransformToPose()}{63}{subsubsection.5.18.1.3}\protected@file@percent } +\newlabel{namespaceutils_ac60a7571babb0959cd2674b4ba8714d3}{{5.18.1.3}{63}{\texorpdfstring {convertTransformToPose()}{convertTransformToPose()}}{subsubsection.5.18.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.4}f\_arr()}{63}{subsubsection.5.18.1.4}\protected@file@percent } +\newlabel{namespaceutils_ad9cc7ea78c5525f4bea20c77c9ae8e55}{{5.18.1.4}{63}{\texorpdfstring {f\_arr()}{f\_arr()}}{subsubsection.5.18.1.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.5}flatten()}{63}{subsubsection.5.18.1.5}\protected@file@percent } +\newlabel{namespaceutils_a85e6a7b3ea035409ce59f983ac66a4c0}{{5.18.1.5}{63}{\texorpdfstring {flatten()}{flatten()}}{subsubsection.5.18.1.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.6}getRotationMatrix()}{63}{subsubsection.5.18.1.6}\protected@file@percent } +\newlabel{namespaceutils_a0723d0c99279ac18d3dc10070ac0ad12}{{5.18.1.6}{63}{\texorpdfstring {getRotationMatrix()}{getRotationMatrix()}}{subsubsection.5.18.1.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.7}homogenize()}{63}{subsubsection.5.18.1.7}\protected@file@percent } +\newlabel{namespaceutils_a2c0af5648f0d4a2e9a215c84a0f0e047}{{5.18.1.7}{63}{\texorpdfstring {homogenize()}{homogenize()}}{subsubsection.5.18.1.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.8}invert\_transform()}{63}{subsubsection.5.18.1.8}\protected@file@percent } +\newlabel{namespaceutils_abad9c76e9f3a3e8fe8fd996dad0f22f3}{{5.18.1.8}{63}{\texorpdfstring {invert\_transform()}{invert\_transform()}}{subsubsection.5.18.1.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.9}normalize\_angles()}{64}{subsubsection.5.18.1.9}\protected@file@percent } +\newlabel{namespaceutils_a37b2b347d8269378f55538a32a8a12c7}{{5.18.1.9}{64}{\texorpdfstring {normalize\_angles()}{normalize\_angles()}}{subsubsection.5.18.1.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.10}plt\_full\_extent()}{64}{subsubsection.5.18.1.10}\protected@file@percent } +\newlabel{namespaceutils_aea9c613b426700faba0bb9d28e5cfe71}{{5.18.1.10}{64}{\texorpdfstring {plt\_full\_extent()}{plt\_full\_extent()}}{subsubsection.5.18.1.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.11}plt\_savefig\_by\_axis()}{64}{subsubsection.5.18.1.11}\protected@file@percent } +\newlabel{namespaceutils_ab543a183d6e0e958ad69d6720c124f9d}{{5.18.1.11}{64}{\texorpdfstring {plt\_savefig\_by\_axis()}{plt\_savefig\_by\_axis()}}{subsubsection.5.18.1.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.12}quiver()}{64}{subsubsection.5.18.1.12}\protected@file@percent } +\newlabel{namespaceutils_ac544ae154ff41d402e6ef846d244cf42}{{5.18.1.12}{64}{\texorpdfstring {quiver()}{quiver()}}{subsubsection.5.18.1.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.13}radarImgPathToTimestamp()}{64}{subsubsection.5.18.1.13}\protected@file@percent } +\newlabel{namespaceutils_afdc21e7b35e4ca2a96f6314f06d735c6}{{5.18.1.13}{64}{\texorpdfstring {radarImgPathToTimestamp()}{radarImgPathToTimestamp()}}{subsubsection.5.18.1.13}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.14}tic()}{65}{subsubsection.5.18.1.14}\protected@file@percent } +\newlabel{namespaceutils_a9919d38aa96697a9823f5326d879d1b1}{{5.18.1.14}{65}{\texorpdfstring {tic()}{tic()}}{subsubsection.5.18.1.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.18.1.15}toc()}{65}{subsubsection.5.18.1.15}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Class Documentation}{67}{chapter.6}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {6.1}Bundle\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Adjustment Class Reference}{67}{section.6.1}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_bundle_adjustment}{{6.1}{67}{Bundle\+Adjustment Class Reference}{section.6.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}Constructor \& Destructor Documentation}{67}{subsection.6.1.1}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_bundle_adjustment_ae64f0875afe3067b97ba370b354b9213}{{6.1.1}{67}{Constructor \& Destructor Documentation}{subsection.6.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.1.1}\_\_init\_\_()}{67}{subsubsection.6.1.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}Member Function Documentation}{67}{subsection.6.1.2}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_bundle_adjustment_afd2f2f2c53ede9e8de84f631d89d0a4d}{{6.1.2}{67}{Member Function Documentation}{subsection.6.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2.1}add\_edge()}{67}{subsubsection.6.1.2.1}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_bundle_adjustment_a6fd42378608542f13e1c2492cfb7dd74}{{6.1.2.1}{67}{\texorpdfstring {add\_edge()}{add\_edge()}}{subsubsection.6.1.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2.2}add\_point()}{68}{subsubsection.6.1.2.2}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_bundle_adjustment_a9a15c780e8d512f3252c1a8f9764bfc2}{{6.1.2.2}{68}{\texorpdfstring {add\_point()}{add\_point()}}{subsubsection.6.1.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2.3}add\_pose()}{68}{subsubsection.6.1.2.3}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_bundle_adjustment_adbdf5c885f53f5d357c6ef664aa0b1a7}{{6.1.2.3}{68}{\texorpdfstring {add\_pose()}{add\_pose()}}{subsubsection.6.1.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2.4}get\_point()}{68}{subsubsection.6.1.2.4}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_bundle_adjustment_a9f3d0b5aea3681f1c07d7f88111f537e}{{6.1.2.4}{68}{\texorpdfstring {get\_point()}{get\_point()}}{subsubsection.6.1.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2.5}get\_pose()}{68}{subsubsection.6.1.2.5}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_bundle_adjustment_acb41507945373592650a226a5c330e4e}{{6.1.2.5}{68}{\texorpdfstring {get\_pose()}{get\_pose()}}{subsubsection.6.1.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2.6}optimize()}{68}{subsubsection.6.1.2.6}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.2}Cart\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Coord Class Reference}{69}{section.6.2}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord}{{6.2}{69}{Cart\+Coord Class Reference}{section.6.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}Detailed Description}{69}{subsection.6.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}Constructor \& Destructor Documentation}{69}{subsection.6.2.2}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_abccb4447212ff86e5d232682050b743c}{{6.2.2}{69}{Constructor \& Destructor Documentation}{subsection.6.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.1}\_\_init\_\_()}{69}{subsubsection.6.2.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}Member Function Documentation}{69}{subsection.6.2.3}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_a23e8041ce1015febe4fdace3225714f9}{{6.2.3}{69}{Member Function Documentation}{subsection.6.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.1}\_\_str\_\_()}{70}{subsubsection.6.2.3.1}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_ac158a01135b092bd40f1f52f7ba606a0}{{6.2.3.1}{70}{\texorpdfstring {\_\_str\_\_()}{\_\_str\_\_()}}{subsubsection.6.2.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.2}add()}{70}{subsubsection.6.2.3.2}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_abf0cffdf5d7c9541d7835543474cfb33}{{6.2.3.2}{70}{\texorpdfstring {add()}{add()}}{subsubsection.6.2.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.3}addCoord()}{70}{subsubsection.6.2.3.3}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_a089eb0274b6e3569800bc4df2c1856a5}{{6.2.3.3}{70}{\texorpdfstring {addCoord()}{addCoord()}}{subsubsection.6.2.3.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.4}asTuple()}{70}{subsubsection.6.2.3.4}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_a5116776fb71b488b73a26117a590e4f1}{{6.2.3.4}{70}{\texorpdfstring {asTuple()}{asTuple()}}{subsubsection.6.2.3.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.5}getAngle()}{70}{subsubsection.6.2.3.5}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_a52b0dfb6137418e667a29a3d6f38381f}{{6.2.3.5}{70}{\texorpdfstring {getAngle()}{getAngle()}}{subsubsection.6.2.3.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.6}getDistance()}{70}{subsubsection.6.2.3.6}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_ad53ca4fe02199dd659e4263dabedcbc2}{{6.2.3.6}{70}{\texorpdfstring {getDistance()}{getDistance()}}{subsubsection.6.2.3.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.7}getX()}{71}{subsubsection.6.2.3.7}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_aab0c980e953aa02722d5d985aeba649f}{{6.2.3.7}{71}{\texorpdfstring {getX()}{getX()}}{subsubsection.6.2.3.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.8}getY()}{71}{subsubsection.6.2.3.8}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_ab59c8af84ef521a147c726904703c8b0}{{6.2.3.8}{71}{\texorpdfstring {getY()}{getY()}}{subsubsection.6.2.3.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.9}scale()}{71}{subsubsection.6.2.3.9}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_af98adc2273ee467719863568b65d1294}{{6.2.3.9}{71}{\texorpdfstring {scale()}{scale()}}{subsubsection.6.2.3.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.10}scaleX()}{71}{subsubsection.6.2.3.10}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_a3eb779a8ba87a0bfcff18d97a54abed4}{{6.2.3.10}{71}{\texorpdfstring {scaleX()}{scaleX()}}{subsubsection.6.2.3.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.11}scaleY()}{71}{subsubsection.6.2.3.11}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_acc3259cd47f8262a8a3e65f59ee36acf}{{6.2.3.11}{71}{\texorpdfstring {scaleY()}{scaleY()}}{subsubsection.6.2.3.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.12}sub()}{71}{subsubsection.6.2.3.12}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.4}Member Data Documentation}{71}{subsection.6.2.4}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_a9336ebf25087d91c818ee6e9ec29f8c1}{{6.2.4}{71}{Member Data Documentation}{subsection.6.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.1}x}{72}{subsubsection.6.2.4.1}\protected@file@percent } +\newlabel{class_coord_1_1_cart_coord_a2fb1c5cf58867b5bbc9a1b145a86f3a0}{{6.2.4.1}{72}{\texorpdfstring {x}{x}}{subsubsection.6.2.4.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.2}y}{72}{subsubsection.6.2.4.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.3}Keyframe Class Reference}{72}{section.6.3}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe}{{6.3}{72}{Keyframe Class Reference}{section.6.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}Constructor \& Destructor Documentation}{72}{subsection.6.3.1}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_ab50c2d12f6ba6f7013e2e09dc7104cea}{{6.3.1}{72}{Constructor \& Destructor Documentation}{subsection.6.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.1.1}\_\_init\_\_()}{72}{subsubsection.6.3.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}Member Function Documentation}{73}{subsection.6.3.2}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_a415d52be7be81fd08afe59b1f5d5f9d0}{{6.3.2}{73}{Member Function Documentation}{subsection.6.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2.1}convertFeaturesLocalToGlobal()}{73}{subsubsection.6.3.2.1}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_a90e0f7f754575a4561f5485033860a1d}{{6.3.2.1}{73}{\texorpdfstring {convertFeaturesLocalToGlobal()}{convertFeaturesLocalToGlobal()}}{subsubsection.6.3.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2.2}copyFromOtherKeyframe()}{73}{subsubsection.6.3.2.2}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_a303cd2587f0d363c0cb55441f9e300bd}{{6.3.2.2}{73}{\texorpdfstring {copyFromOtherKeyframe()}{copyFromOtherKeyframe()}}{subsubsection.6.3.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2.3}getPrunedFeaturesGlobalPosition()}{73}{subsubsection.6.3.2.3}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_a796d47daedb509f711f32670dcc56204}{{6.3.2.3}{73}{\texorpdfstring {getPrunedFeaturesGlobalPosition()}{getPrunedFeaturesGlobalPosition()}}{subsubsection.6.3.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2.4}pruneFeaturePoints()}{73}{subsubsection.6.3.2.4}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_ae98897aae59622e52c1e12f602c6893f}{{6.3.2.4}{73}{\texorpdfstring {pruneFeaturePoints()}{pruneFeaturePoints()}}{subsubsection.6.3.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2.5}updateInfo()}{74}{subsubsection.6.3.2.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}Member Data Documentation}{74}{subsection.6.3.3}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_ae336e904e1abb473dc7527fd2e48d8bb}{{6.3.3}{74}{Member Data Documentation}{subsection.6.3.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3.1}featurePointsLocal}{74}{subsubsection.6.3.3.1}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_a05e8255630d01c3245aee8388687031e}{{6.3.3.1}{74}{\texorpdfstring {featurePointsLocal}{featurePointsLocal}}{subsubsection.6.3.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3.2}featurePointsLocalUndistorted}{74}{subsubsection.6.3.3.2}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_aa8c7a28ed457095b58a6fc21c3beb218}{{6.3.3.2}{74}{\texorpdfstring {featurePointsLocalUndistorted}{featurePointsLocalUndistorted}}{subsubsection.6.3.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3.3}pointCloud}{74}{subsubsection.6.3.3.3}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_a78b2a3e80010e80c618c3033d6d11547}{{6.3.3.3}{74}{\texorpdfstring {pointCloud}{pointCloud}}{subsubsection.6.3.3.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3.4}pose}{74}{subsubsection.6.3.3.4}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_a7555a7153bea157ba766d90f8a357ac7}{{6.3.3.4}{74}{\texorpdfstring {pose}{pose}}{subsubsection.6.3.3.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3.5}prunedFeaturePoints}{74}{subsubsection.6.3.3.5}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_a2b11eb8819c3458601190586c033134c}{{6.3.3.5}{74}{\texorpdfstring {prunedFeaturePoints}{prunedFeaturePoints}}{subsubsection.6.3.3.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3.6}prunedUndistortedLocals}{75}{subsubsection.6.3.3.6}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_a4b406a56724e048b3fa039dd55390f9b}{{6.3.3.6}{75}{\texorpdfstring {prunedUndistortedLocals}{prunedUndistortedLocals}}{subsubsection.6.3.3.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3.7}radarPolarImg}{75}{subsubsection.6.3.3.7}\protected@file@percent } +\newlabel{class_mapping_1_1_keyframe_aecfeca1289d00fbe5fc76a8dd5295913}{{6.3.3.7}{75}{\texorpdfstring {radarPolarImg}{radarPolarImg}}{subsubsection.6.3.3.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.3.8}velocity}{75}{subsubsection.6.3.3.8}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.4}Map Class Reference}{75}{section.6.4}\protected@file@percent } +\newlabel{class_mapping_1_1_map}{{6.4}{75}{Map Class Reference}{section.6.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}Constructor \& Destructor Documentation}{75}{subsection.6.4.1}\protected@file@percent } +\newlabel{class_mapping_1_1_map_a4badc56bb5b8b58a6014c37755298e21}{{6.4.1}{75}{Constructor \& Destructor Documentation}{subsection.6.4.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.1.1}\_\_init\_\_()}{75}{subsubsection.6.4.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}Member Function Documentation}{76}{subsection.6.4.2}\protected@file@percent } +\newlabel{class_mapping_1_1_map_aab2cc502236200b5db10f3f1279c5f1f}{{6.4.2}{76}{Member Function Documentation}{subsection.6.4.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.2.1}addKeyframe()}{76}{subsubsection.6.4.2.1}\protected@file@percent } +\newlabel{class_mapping_1_1_map_a10ef9dd0d4ce2784093b0738c27081e4}{{6.4.2.1}{76}{\texorpdfstring {addKeyframe()}{addKeyframe()}}{subsubsection.6.4.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.2.2}isGoodKeyframe()}{76}{subsubsection.6.4.2.2}\protected@file@percent } +\newlabel{class_mapping_1_1_map_a2f4804050397d59933e98f778bbbfef6}{{6.4.2.2}{76}{\texorpdfstring {isGoodKeyframe()}{isGoodKeyframe()}}{subsubsection.6.4.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.2.3}plot()}{76}{subsubsection.6.4.2.3}\protected@file@percent } +\newlabel{class_mapping_1_1_map_a71b2362e9de31ea699a730abaa8f3cd6}{{6.4.2.3}{76}{\texorpdfstring {plot()}{plot()}}{subsubsection.6.4.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.2.4}updateInternalTraj()}{76}{subsubsection.6.4.2.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.3}Member Data Documentation}{77}{subsection.6.4.3}\protected@file@percent } +\newlabel{class_mapping_1_1_map_a8d5e95f4d6054db64fd36facd315f2e6}{{6.4.3}{77}{Member Data Documentation}{subsection.6.4.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.3.1}estTraj}{77}{subsubsection.6.4.3.1}\protected@file@percent } +\newlabel{class_mapping_1_1_map_ac133126788d5db734ec6f70884178ea8}{{6.4.3.1}{77}{\texorpdfstring {estTraj}{estTraj}}{subsubsection.6.4.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.3.2}filePaths}{77}{subsubsection.6.4.3.2}\protected@file@percent } +\newlabel{class_mapping_1_1_map_a8d579ebe0582eed800eb106350236c4a}{{6.4.3.2}{77}{\texorpdfstring {filePaths}{filePaths}}{subsubsection.6.4.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.3.3}imgPathArr}{77}{subsubsection.6.4.3.3}\protected@file@percent } +\newlabel{class_mapping_1_1_map_a8ce2f0b893bb0be63c6e98aa3f2a0233}{{6.4.3.3}{77}{\texorpdfstring {imgPathArr}{imgPathArr}}{subsubsection.6.4.3.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.3.4}keyframes}{77}{subsubsection.6.4.3.4}\protected@file@percent } +\newlabel{class_mapping_1_1_map_a2b1c4b0bf8907122b4696c04f05a72ce}{{6.4.3.4}{77}{\texorpdfstring {keyframes}{keyframes}}{subsubsection.6.4.3.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.3.5}mapPoints}{77}{subsubsection.6.4.3.5}\protected@file@percent } +\newlabel{class_mapping_1_1_map_ada038ff63190b4fbc01af8dace29ec1f}{{6.4.3.5}{77}{\texorpdfstring {mapPoints}{mapPoints}}{subsubsection.6.4.3.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.3.6}sequenceName}{77}{subsubsection.6.4.3.6}\protected@file@percent } +\newlabel{class_mapping_1_1_map_a8ef2335bbb2c7c07c8e2b35959b03c52}{{6.4.3.6}{77}{\texorpdfstring {sequenceName}{sequenceName}}{subsubsection.6.4.3.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.4.3.7}sequenceSize}{77}{subsubsection.6.4.3.7}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.5}Motion\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Distortion\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Solver Class Reference}{78}{section.6.5}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver}{{6.5}{78}{Motion\+Distortion\+Solver Class Reference}{section.6.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.5.1}Constructor \& Destructor Documentation}{78}{subsection.6.5.1}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a3f22b34fa12c1f655ed25c4286a467ec}{{6.5.1}{78}{Constructor \& Destructor Documentation}{subsection.6.5.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.1.1}\_\_init\_\_()\hspace {0.1cm}{\footnotesize \ttfamily [1/2]}}{78}{subsubsection.6.5.1.1}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a7f16413ad010eda322f733ea904fdbd3}{{6.5.1.1}{78}{\texorpdfstring {\_\_init\_\_()}{\_\_init\_\_()}\hspace {0.1cm}{\footnotesize \ttfamily [1/2]}}{subsubsection.6.5.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.1.2}\_\_init\_\_()\hspace {0.1cm}{\footnotesize \ttfamily [2/2]}}{79}{subsubsection.6.5.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.5.2}Member Function Documentation}{79}{subsection.6.5.2}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a537d4d68fc42a4376fa5f6b6a961b57a}{{6.5.2}{79}{Member Function Documentation}{subsection.6.5.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.1}compute\_time\_deltas()}{79}{subsubsection.6.5.2.1}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a0354ae991f4cc0144ce33e1fdb469a20}{{6.5.2.1}{79}{\texorpdfstring {compute\_time\_deltas()}{compute\_time\_deltas()}}{subsubsection.6.5.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.2}error()}{79}{subsubsection.6.5.2.2}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_ab508478fa9741dac7d287ff768cc0788}{{6.5.2.2}{79}{\texorpdfstring {error()}{error()}}{subsubsection.6.5.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.3}error\_vector()}{79}{subsubsection.6.5.2.3}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a71b1396a9f04a79e3115d693419ccf45}{{6.5.2.3}{79}{\texorpdfstring {error\_vector()}{error\_vector()}}{subsubsection.6.5.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.4}expected\_observed\_pts()}{80}{subsubsection.6.5.2.4}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a44ec490a2fa6ee1f2b5a971fa270541f}{{6.5.2.4}{80}{\texorpdfstring {expected\_observed\_pts()}{expected\_observed\_pts()}}{subsubsection.6.5.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.5}infer\_velocity()}{80}{subsubsection.6.5.2.5}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a2fc868177b0b6b3e920e4619aad77171}{{6.5.2.5}{80}{\texorpdfstring {infer\_velocity()}{infer\_velocity()}}{subsubsection.6.5.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.6}jacobian()}{80}{subsubsection.6.5.2.6}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a2d68bc205a33412b11c6dcb28fc17d67}{{6.5.2.6}{80}{\texorpdfstring {jacobian()}{jacobian()}}{subsubsection.6.5.2.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.7}jacobian\_vector()}{80}{subsubsection.6.5.2.7}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a771350ea3f844ac8fca4338337419242}{{6.5.2.7}{80}{\texorpdfstring {jacobian\_vector()}{jacobian\_vector()}}{subsubsection.6.5.2.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.8}optimize()}{80}{subsubsection.6.5.2.8}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_abac4fa4418ddc34ea1b8a6f28ac42c3d}{{6.5.2.8}{80}{\texorpdfstring {optimize()}{optimize()}}{subsubsection.6.5.2.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.9}optimize\_library()}{81}{subsubsection.6.5.2.9}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a5f3489f6d7167cec6bc6fddf8a1d75bd}{{6.5.2.9}{81}{\texorpdfstring {optimize\_library()}{optimize\_library()}}{subsubsection.6.5.2.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.10}undistort()}{81}{subsubsection.6.5.2.10}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a716b0a6bdc489d052e4243c840ed336f}{{6.5.2.10}{81}{\texorpdfstring {undistort()}{undistort()}}{subsubsection.6.5.2.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.2.11}update\_problem()}{81}{subsubsection.6.5.2.11}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.5.3}Member Data Documentation}{81}{subsection.6.5.3}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a0514aabed091ee5e2f35766eb01eced6}{{6.5.3}{81}{Member Data Documentation}{subsection.6.5.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.1}debug}{81}{subsubsection.6.5.3.1}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_af3c2f70b3a5027fce7c3161665b6b6af}{{6.5.3.1}{81}{\texorpdfstring {debug}{debug}}{subsubsection.6.5.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.2}dT}{81}{subsubsection.6.5.3.2}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a1d4048f86eeeda5fdd5ff70c2667fd8d}{{6.5.3.2}{81}{\texorpdfstring {dT}{dT}}{subsubsection.6.5.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.3}info\_vector}{82}{subsubsection.6.5.3.3}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_aa9fffd513bf2e2cbfe44da13aa4a69bf}{{6.5.3.3}{82}{\texorpdfstring {info\_vector}{info\_vector}}{subsubsection.6.5.3.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.4}p\_jt}{82}{subsubsection.6.5.3.4}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a0e515884ff3ebc059c605589aec689b7}{{6.5.3.4}{82}{\texorpdfstring {p\_jt}{p\_jt}}{subsubsection.6.5.3.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.5}p\_w}{82}{subsubsection.6.5.3.5}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a7ae9c91f3c812a21666616d48fbe3ac8}{{6.5.3.5}{82}{\texorpdfstring {p\_w}{p\_w}}{subsubsection.6.5.3.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.6}sigma\_p}{82}{subsubsection.6.5.3.6}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a0e071ef606c97ccac78bde51b78f6edf}{{6.5.3.6}{82}{\texorpdfstring {sigma\_p}{sigma\_p}}{subsubsection.6.5.3.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.7}sigma\_v}{82}{subsubsection.6.5.3.7}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a0a395e89714f60150df6675faaa1f6cb}{{6.5.3.7}{82}{\texorpdfstring {sigma\_v}{sigma\_v}}{subsubsection.6.5.3.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.8}T\_wj0}{82}{subsubsection.6.5.3.8}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a071a910fd6194ba61a5d9cf24569b393}{{6.5.3.8}{82}{\texorpdfstring {T\_wj0}{T\_wj0}}{subsubsection.6.5.3.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.9}T\_wj0\_inv}{82}{subsubsection.6.5.3.9}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a0937342a2f4d12c7784f942bfe386536}{{6.5.3.9}{82}{\texorpdfstring {T\_wj0\_inv}{T\_wj0\_inv}}{subsubsection.6.5.3.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.10}T\_wj\_initial}{82}{subsubsection.6.5.3.10}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_ad7beefc4bde186fd252b285986218942}{{6.5.3.10}{82}{\texorpdfstring {T\_wj\_initial}{T\_wj\_initial}}{subsubsection.6.5.3.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.11}total\_scan\_time}{83}{subsubsection.6.5.3.11}\protected@file@percent } +\newlabel{classmotion_distortion_1_1_motion_distortion_solver_a9f1d2973eab93bf4884920981c129781}{{6.5.3.11}{83}{\texorpdfstring {total\_scan\_time}{total\_scan\_time}}{subsubsection.6.5.3.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.5.3.12}v\_j\_initial}{83}{subsubsection.6.5.3.12}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.6}Polar\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Coord Class Reference}{83}{section.6.6}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord}{{6.6}{83}{Polar\+Coord Class Reference}{section.6.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.6.1}Detailed Description}{83}{subsection.6.6.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.6.2}Constructor \& Destructor Documentation}{83}{subsection.6.6.2}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord_a0304e8d786206153c1e8280834562d07}{{6.6.2}{83}{Constructor \& Destructor Documentation}{subsection.6.6.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.6.2.1}\_\_init\_\_()}{83}{subsubsection.6.6.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.6.3}Member Function Documentation}{84}{subsection.6.6.3}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord_a23e8041ce1015febe4fdace3225714f9}{{6.6.3}{84}{Member Function Documentation}{subsection.6.6.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.6.3.1}\_\_str\_\_()}{84}{subsubsection.6.6.3.1}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord_a089eb0274b6e3569800bc4df2c1856a5}{{6.6.3.1}{84}{\texorpdfstring {\_\_str\_\_()}{\_\_str\_\_()}}{subsubsection.6.6.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.6.3.2}asTuple()}{84}{subsubsection.6.6.3.2}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord_a825c5e22cef04b24de421e2aa38e783f}{{6.6.3.2}{84}{\texorpdfstring {asTuple()}{asTuple()}}{subsubsection.6.6.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.6.3.3}getR()}{84}{subsubsection.6.6.3.3}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord_ad54274926ee132aa66a6a883d9bc15cf}{{6.6.3.3}{84}{\texorpdfstring {getR()}{getR()}}{subsubsection.6.6.3.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.6.3.4}getTheta()}{84}{subsubsection.6.6.3.4}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord_a6c67b38af655d81a01450f9aa2575153}{{6.6.3.4}{84}{\texorpdfstring {getTheta()}{getTheta()}}{subsubsection.6.6.3.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.6.3.5}scaleR()}{84}{subsubsection.6.6.3.5}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord_a174b43f651e4e95e432fddb5b4183829}{{6.6.3.5}{84}{\texorpdfstring {scaleR()}{scaleR()}}{subsubsection.6.6.3.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.6.3.6}toCart()}{84}{subsubsection.6.6.3.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.6.4}Member Data Documentation}{85}{subsection.6.6.4}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord_a514f1b439f404f86f77090fa9edc96ce}{{6.6.4}{85}{Member Data Documentation}{subsection.6.6.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.6.4.1}r}{85}{subsubsection.6.6.4.1}\protected@file@percent } +\newlabel{class_coord_1_1_polar_coord_aebf487f5d315cb61f0bd86455edff1fd}{{6.6.4.1}{85}{\texorpdfstring {r}{r}}{subsubsection.6.6.4.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.6.4.2}theta}{85}{subsubsection.6.6.4.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.7}Pose\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Graph\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Optimization Class Reference}{85}{section.6.7}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_pose_graph_optimization}{{6.7}{85}{Pose\+Graph\+Optimization Class Reference}{section.6.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.7.1}Constructor \& Destructor Documentation}{85}{subsection.6.7.1}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_pose_graph_optimization_ae64f0875afe3067b97ba370b354b9213}{{6.7.1}{85}{Constructor \& Destructor Documentation}{subsection.6.7.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.7.1.1}\_\_init\_\_()}{85}{subsubsection.6.7.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.7.2}Member Function Documentation}{85}{subsection.6.7.2}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_pose_graph_optimization_a6a199750c0620c6a47c7b455c27f3625}{{6.7.2}{85}{Member Function Documentation}{subsection.6.7.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.7.2.1}add\_edge()}{85}{subsubsection.6.7.2.1}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_pose_graph_optimization_a822c2871ea7b5f9131d36e4b7ebd239b}{{6.7.2.1}{85}{\texorpdfstring {add\_edge()}{add\_edge()}}{subsubsection.6.7.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.7.2.2}add\_vertex()}{86}{subsubsection.6.7.2.2}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_pose_graph_optimization_a8b1e208660dd8873de527e140998d048}{{6.7.2.2}{86}{\texorpdfstring {add\_vertex()}{add\_vertex()}}{subsubsection.6.7.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.7.2.3}get\_pose()}{86}{subsubsection.6.7.2.3}\protected@file@percent } +\newlabel{class_pose_graph_lib_1_1_pose_graph_optimization_af7e7eb351601c9a4569e9bf1566035a5}{{6.7.2.3}{86}{\texorpdfstring {get\_pose()}{get\_pose()}}{subsubsection.6.7.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.7.2.4}optimize()}{86}{subsubsection.6.7.2.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.8}Raw\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}ROAMSystem Class Reference}{86}{section.6.8}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system}{{6.8}{86}{Raw\+ROAMSystem Class Reference}{section.6.8}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.8.1}Constructor \& Destructor Documentation}{87}{subsection.6.8.1}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aaa625e533c1d594cffd5d8032dd3eb17}{{6.8.1}{87}{Constructor \& Destructor Documentation}{subsection.6.8.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.1.1}\_\_init\_\_()}{87}{subsubsection.6.8.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.8.2}Member Function Documentation}{87}{subsection.6.8.2}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a50adb4e1f5eaab2b5d1fa4f4b9b45652}{{6.8.2}{87}{Member Function Documentation}{subsection.6.8.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.2.1}plot()}{87}{subsubsection.6.8.2.1}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ab609ee8f1ec2225e40bb4c519b7d8c76}{{6.8.2.1}{87}{\texorpdfstring {plot()}{plot()}}{subsubsection.6.8.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.2.2}plotTraj()}{88}{subsubsection.6.8.2.2}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aeb372a8b83527187620cda92e01fcdbd}{{6.8.2.2}{88}{\texorpdfstring {plotTraj()}{plotTraj()}}{subsubsection.6.8.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.2.3}run()}{88}{subsubsection.6.8.2.3}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a4bfd1fc8e3e6eb9a09ead0e93bc79cdb}{{6.8.2.3}{88}{\texorpdfstring {run()}{run()}}{subsubsection.6.8.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.2.4}updateTrajectory()}{88}{subsubsection.6.8.2.4}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_aa3a95039e4a0987c355da8d8ac48eb26}{{6.8.2.4}{88}{\texorpdfstring {updateTrajectory()}{updateTrajectory()}}{subsubsection.6.8.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.2.5}updateTrajectoryAbsolute()}{89}{subsubsection.6.8.2.5}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a01a780439bdd4eed44ec3dc476fcc7c8}{{6.8.2.5}{89}{\texorpdfstring {updateTrajectoryAbsolute()}{updateTrajectoryAbsolute()}}{subsubsection.6.8.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.2.6}updateTrajFromTracker()}{89}{subsubsection.6.8.2.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.8.3}Member Data Documentation}{89}{subsection.6.8.3}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8d5e95f4d6054db64fd36facd315f2e6}{{6.8.3}{89}{Member Data Documentation}{subsection.6.8.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.1}estTraj}{89}{subsubsection.6.8.3.1}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a64aa603bc3c6c1587e7c6542452481ac}{{6.8.3.1}{89}{\texorpdfstring {estTraj}{estTraj}}{subsubsection.6.8.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.2}fig}{89}{subsubsection.6.8.3.2}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ac133126788d5db734ec6f70884178ea8}{{6.8.3.2}{89}{\texorpdfstring {fig}{fig}}{subsubsection.6.8.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.3}filePaths}{89}{subsubsection.6.8.3.3}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a08c3a4c31d5817521dbdf24631e562c7}{{6.8.3.3}{89}{\texorpdfstring {filePaths}{filePaths}}{subsubsection.6.8.3.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.4}gtTraj}{89}{subsubsection.6.8.3.4}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a9b935ac3b117f5b7bb52024481ca6bde}{{6.8.3.4}{89}{\texorpdfstring {gtTraj}{gtTraj}}{subsubsection.6.8.3.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.5}hasGroundTruth}{90}{subsubsection.6.8.3.5}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8d579ebe0582eed800eb106350236c4a}{{6.8.3.5}{90}{\texorpdfstring {hasGroundTruth}{hasGroundTruth}}{subsubsection.6.8.3.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.6}imgPathArr}{90}{subsubsection.6.8.3.6}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a9ec9dda576db2a36c42c1c3af155d07c}{{6.8.3.6}{90}{\texorpdfstring {imgPathArr}{imgPathArr}}{subsubsection.6.8.3.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.7}map}{90}{subsubsection.6.8.3.7}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a4eb076d8bfa712c536ede28c13d7ae7e}{{6.8.3.7}{90}{\texorpdfstring {map}{map}}{subsubsection.6.8.3.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.8}paramFlags}{90}{subsubsection.6.8.3.8}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_ada038ff63190b4fbc01af8dace29ec1f}{{6.8.3.8}{90}{\texorpdfstring {paramFlags}{paramFlags}}{subsubsection.6.8.3.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.9}sequenceName}{90}{subsubsection.6.8.3.9}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_a8ef2335bbb2c7c07c8e2b35959b03c52}{{6.8.3.9}{90}{\texorpdfstring {sequenceName}{sequenceName}}{subsubsection.6.8.3.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.10}sequenceSize}{90}{subsubsection.6.8.3.10}\protected@file@percent } +\newlabel{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system_abec0b9ee4648af3b77db73e8070f1736}{{6.8.3.10}{90}{\texorpdfstring {sequenceSize}{sequenceSize}}{subsubsection.6.8.3.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.8.3.11}tracker}{90}{subsubsection.6.8.3.11}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.9}Tracker Class Reference}{91}{section.6.9}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker}{{6.9}{91}{Tracker Class Reference}{section.6.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.9.1}Constructor \& Destructor Documentation}{91}{subsection.6.9.1}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a50cd44879d0981e765b880213eb46692}{{6.9.1}{91}{Constructor \& Destructor Documentation}{subsection.6.9.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.1.1}\_\_init\_\_()}{91}{subsubsection.6.9.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.9.2}Member Function Documentation}{91}{subsection.6.9.2}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a8072a77a7c03adb53639fb97c7a04b5b}{{6.9.2}{91}{Member Function Documentation}{subsection.6.9.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.2.1}getTransform()}{91}{subsubsection.6.9.2.1}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a8d30f4090822251a3fea3db1e53ce83c}{{6.9.2.1}{91}{\texorpdfstring {getTransform()}{getTransform()}}{subsubsection.6.9.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.2.2}initTraj()}{92}{subsubsection.6.9.2.2}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a8038366cd3daf819bf43b24c7c4b3371}{{6.9.2.2}{92}{\texorpdfstring {initTraj()}{initTraj()}}{subsubsection.6.9.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.2.3}plot()}{92}{subsubsection.6.9.2.3}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a5502aeee99457c25dc9237a16f102fd9}{{6.9.2.3}{92}{\texorpdfstring {plot()}{plot()}}{subsubsection.6.9.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.2.4}track()}{92}{subsubsection.6.9.2.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.9.3}Member Data Documentation}{92}{subsection.6.9.3}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a8d5e95f4d6054db64fd36facd315f2e6}{{6.9.3}{92}{Member Data Documentation}{subsection.6.9.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.3.1}estTraj}{93}{subsubsection.6.9.3.1}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_ac133126788d5db734ec6f70884178ea8}{{6.9.3.1}{93}{\texorpdfstring {estTraj}{estTraj}}{subsubsection.6.9.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.3.2}filePaths}{93}{subsubsection.6.9.3.2}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a08c3a4c31d5817521dbdf24631e562c7}{{6.9.3.2}{93}{\texorpdfstring {filePaths}{filePaths}}{subsubsection.6.9.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.3.3}gtTraj}{93}{subsubsection.6.9.3.3}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a8d579ebe0582eed800eb106350236c4a}{{6.9.3.3}{93}{\texorpdfstring {gtTraj}{gtTraj}}{subsubsection.6.9.3.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.3.4}imgPathArr}{93}{subsubsection.6.9.3.4}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a4eb076d8bfa712c536ede28c13d7ae7e}{{6.9.3.4}{93}{\texorpdfstring {imgPathArr}{imgPathArr}}{subsubsection.6.9.3.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.3.5}paramFlags}{93}{subsubsection.6.9.3.5}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_ada038ff63190b4fbc01af8dace29ec1f}{{6.9.3.5}{93}{\texorpdfstring {paramFlags}{paramFlags}}{subsubsection.6.9.3.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.3.6}sequenceName}{93}{subsubsection.6.9.3.6}\protected@file@percent } +\newlabel{class_tracker_1_1_tracker_a8ef2335bbb2c7c07c8e2b35959b03c52}{{6.9.3.6}{93}{\texorpdfstring {sequenceName}{sequenceName}}{subsubsection.6.9.3.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.9.3.7}sequenceSize}{93}{subsubsection.6.9.3.7}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.10}Trajectory Class Reference}{94}{section.6.10}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory}{{6.10}{94}{Trajectory Class Reference}{section.6.10}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.10.1}Constructor \& Destructor Documentation}{94}{subsection.6.10.1}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_a71a1a749bd09d5ebf80433b59ec5bf4c}{{6.10.1}{94}{Constructor \& Destructor Documentation}{subsection.6.10.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.1.1}\_\_init\_\_()}{94}{subsubsection.6.10.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.10.2}Member Function Documentation}{94}{subsection.6.10.2}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_a08950a5574e6fa031de10f01899414a7}{{6.10.2}{94}{Member Function Documentation}{subsection.6.10.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.2.1}appendAbsoluteTransform()}{94}{subsubsection.6.10.2.1}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_a75e78dbec634ef9815d87f0a8fd101a4}{{6.10.2.1}{94}{\texorpdfstring {appendAbsoluteTransform()}{appendAbsoluteTransform()}}{subsubsection.6.10.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.2.2}appendRelativeDeltas()}{95}{subsubsection.6.10.2.2}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_a18b62f49e9be3d5913bfddf1409241a5}{{6.10.2.2}{95}{\texorpdfstring {appendRelativeDeltas()}{appendRelativeDeltas()}}{subsubsection.6.10.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.2.3}appendRelativeTransform()}{95}{subsubsection.6.10.2.3}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_a7a7a8f886746f69fa22f688534e5eb41}{{6.10.2.3}{95}{\texorpdfstring {appendRelativeTransform()}{appendRelativeTransform()}}{subsubsection.6.10.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.2.4}getGroundTruthDeltasAtTime()}{95}{subsubsection.6.10.2.4}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_af71c2208e017a99508ff89271af73f04}{{6.10.2.4}{95}{\texorpdfstring {getGroundTruthDeltasAtTime()}{getGroundTruthDeltasAtTime()}}{subsubsection.6.10.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.2.5}getPoseAtTimes()}{95}{subsubsection.6.10.2.5}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_ab6639608bd1c7a82abfd40ea1f53b904}{{6.10.2.5}{95}{\texorpdfstring {getPoseAtTimes()}{getPoseAtTimes()}}{subsubsection.6.10.2.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.2.6}plot()}{96}{subsubsection.6.10.2.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.10.3}Member Data Documentation}{96}{subsection.6.10.3}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_ae295f4fa8996d01631c561ab3cb77670}{{6.10.3}{96}{Member Data Documentation}{subsection.6.10.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.3.1}pose\_transform}{96}{subsubsection.6.10.3.1}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_ad852f76f56388944f342af3b11bd2c31}{{6.10.3.1}{96}{\texorpdfstring {pose\_transform}{pose\_transform}}{subsubsection.6.10.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.3.2}poses}{96}{subsubsection.6.10.3.2}\protected@file@percent } +\newlabel{classtrajectory_plotting_1_1_trajectory_ada03328a9187736162c7277d89ef159e}{{6.10.3.2}{96}{\texorpdfstring {poses}{poses}}{subsubsection.6.10.3.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.10.3.3}timestamps}{96}{subsubsection.6.10.3.3}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{Index}{97}{section*.49}\protected@file@percent } +\gdef \@abspage@last{123} diff --git a/doc/latex/refman.idx b/doc/latex/refman.idx new file mode 100644 index 0000000..9731cf6 --- /dev/null +++ b/doc/latex/refman.idx @@ -0,0 +1,858 @@ +\indexentry{ANMS@{ANMS}|hyperpage}{9} +\indexentry{ANMS@{ANMS}!ssc@{ssc}|hyperpage}{9} +\indexentry{ssc@{ssc}!ANMS@{ANMS}|hyperpage}{9} +\indexentry{Coord@{Coord}|hyperpage}{9} +\indexentry{FMT@{FMT}|hyperpage}{10} +\indexentry{FMT@{FMT}!getRotationUsingFMT@{getRotationUsingFMT}|hyperpage}{10} +\indexentry{getRotationUsingFMT@{getRotationUsingFMT}!FMT@{FMT}|hyperpage}{10} +\indexentry{FMT@{FMT}!getTranslationUsingPhaseCorrelation@{getTranslationUsingPhaseCorrelation}|hyperpage}{11} +\indexentry{getTranslationUsingPhaseCorrelation@{getTranslationUsingPhaseCorrelation}!FMT@{FMT}|hyperpage}{11} +\indexentry{FMT@{FMT}!plotCartPolar@{plotCartPolar}|hyperpage}{11} +\indexentry{plotCartPolar@{plotCartPolar}!FMT@{FMT}|hyperpage}{11} +\indexentry{FMT@{FMT}!plotCartPolarWithRotation@{plotCartPolarWithRotation}|hyperpage}{11} +\indexentry{plotCartPolarWithRotation@{plotCartPolarWithRotation}!FMT@{FMT}|hyperpage}{11} +\indexentry{FMT@{FMT}!rotateImg@{rotateImg}|hyperpage}{11} +\indexentry{rotateImg@{rotateImg}!FMT@{FMT}|hyperpage}{11} +\indexentry{FMT@{FMT}!currImgCart@{currImgCart}|hyperpage}{12} +\indexentry{currImgCart@{currImgCart}!FMT@{FMT}|hyperpage}{12} +\indexentry{FMT@{FMT}!currImgPolar@{currImgPolar}|hyperpage}{12} +\indexentry{currImgPolar@{currImgPolar}!FMT@{FMT}|hyperpage}{12} +\indexentry{FMT@{FMT}!dataPath@{dataPath}|hyperpage}{12} +\indexentry{dataPath@{dataPath}!FMT@{FMT}|hyperpage}{12} +\indexentry{FMT@{FMT}!endSeqInd@{endSeqInd}|hyperpage}{12} +\indexentry{endSeqInd@{endSeqInd}!FMT@{FMT}|hyperpage}{12} +\indexentry{FMT@{FMT}!exist\_ok@{exist\_ok}|hyperpage}{12} +\indexentry{exist\_ok@{exist\_ok}!FMT@{FMT}|hyperpage}{12} +\indexentry{FMT@{FMT}!FMT\_DOWNSAMPLE\_FACTOR@{FMT\_DOWNSAMPLE\_FACTOR}|hyperpage}{12} +\indexentry{FMT\_DOWNSAMPLE\_FACTOR@{FMT\_DOWNSAMPLE\_FACTOR}!FMT@{FMT}|hyperpage}{12} +\indexentry{FMT@{FMT}!FMT\_RANGE\_CLIP\_M@{FMT\_RANGE\_CLIP\_M}|hyperpage}{12} +\indexentry{FMT\_RANGE\_CLIP\_M@{FMT\_RANGE\_CLIP\_M}!FMT@{FMT}|hyperpage}{12} +\indexentry{FMT@{FMT}!imgPathArr@{imgPathArr}|hyperpage}{13} +\indexentry{imgPathArr@{imgPathArr}!FMT@{FMT}|hyperpage}{13} +\indexentry{FMT@{FMT}!imgSavePath@{imgSavePath}|hyperpage}{13} +\indexentry{imgSavePath@{imgSavePath}!FMT@{FMT}|hyperpage}{13} +\indexentry{FMT@{FMT}!imgSavePathInd@{imgSavePathInd}|hyperpage}{13} +\indexentry{imgSavePathInd@{imgSavePathInd}!FMT@{FMT}|hyperpage}{13} +\indexentry{FMT@{FMT}!prevImgCart@{prevImgCart}|hyperpage}{13} +\indexentry{prevImgCart@{prevImgCart}!FMT@{FMT}|hyperpage}{13} +\indexentry{FMT@{FMT}!prevImgPolar@{prevImgPolar}|hyperpage}{13} +\indexentry{prevImgPolar@{prevImgPolar}!FMT@{FMT}|hyperpage}{13} +\indexentry{FMT@{FMT}!REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}|hyperpage}{13} +\indexentry{REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}!FMT@{FMT}|hyperpage}{13} +\indexentry{FMT@{FMT}!response@{response}|hyperpage}{13} +\indexentry{response@{response}!FMT@{FMT}|hyperpage}{13} +\indexentry{FMT@{FMT}!rotRad@{rotRad}|hyperpage}{14} +\indexentry{rotRad@{rotRad}!FMT@{FMT}|hyperpage}{14} +\indexentry{FMT@{FMT}!scale@{scale}|hyperpage}{14} +\indexentry{scale@{scale}!FMT@{FMT}|hyperpage}{14} +\indexentry{FMT@{FMT}!sequenceName@{sequenceName}|hyperpage}{14} +\indexentry{sequenceName@{sequenceName}!FMT@{FMT}|hyperpage}{14} +\indexentry{FMT@{FMT}!sequenceSize@{sequenceSize}|hyperpage}{14} +\indexentry{sequenceSize@{sequenceSize}!FMT@{FMT}|hyperpage}{14} +\indexentry{FMT@{FMT}!startSeqInd@{startSeqInd}|hyperpage}{14} +\indexentry{startSeqInd@{startSeqInd}!FMT@{FMT}|hyperpage}{14} +\indexentry{FMT@{FMT}!stepSize@{stepSize}|hyperpage}{14} +\indexentry{stepSize@{stepSize}!FMT@{FMT}|hyperpage}{14} +\indexentry{FMT@{FMT}!timestampPath@{timestampPath}|hyperpage}{14} +\indexentry{timestampPath@{timestampPath}!FMT@{FMT}|hyperpage}{14} +\indexentry{genFakeData@{genFakeData}|hyperpage}{15} +\indexentry{genFakeData@{genFakeData}!addNoise@{addNoise}|hyperpage}{15} +\indexentry{addNoise@{addNoise}!genFakeData@{genFakeData}|hyperpage}{15} +\indexentry{genFakeData@{genFakeData}!convertPolarPointsToCartesian@{convertPolarPointsToCartesian}|hyperpage}{15} +\indexentry{convertPolarPointsToCartesian@{convertPolarPointsToCartesian}!genFakeData@{genFakeData}|hyperpage}{15} +\indexentry{genFakeData@{genFakeData}!createOutliers@{createOutliers}|hyperpage}{15} +\indexentry{createOutliers@{createOutliers}!genFakeData@{genFakeData}|hyperpage}{15} +\indexentry{genFakeData@{genFakeData}!distort@{distort}|hyperpage}{16} +\indexentry{distort@{distort}!genFakeData@{genFakeData}|hyperpage}{16} +\indexentry{genFakeData@{genFakeData}!generateFakeCorrespondences@{generateFakeCorrespondences}|hyperpage}{16} +\indexentry{generateFakeCorrespondences@{generateFakeCorrespondences}!genFakeData@{genFakeData}|hyperpage}{16} +\indexentry{genFakeData@{genFakeData}!generateFakeCorrespondencesPolar@{generateFakeCorrespondencesPolar}|hyperpage}{16} +\indexentry{generateFakeCorrespondencesPolar@{generateFakeCorrespondencesPolar}!genFakeData@{genFakeData}|hyperpage}{16} +\indexentry{genFakeData@{genFakeData}!generateFakeFeatures@{generateFakeFeatures}|hyperpage}{17} +\indexentry{generateFakeFeatures@{generateFakeFeatures}!genFakeData@{genFakeData}|hyperpage}{17} +\indexentry{genFakeData@{genFakeData}!generateFakeFeaturesPolar@{generateFakeFeaturesPolar}|hyperpage}{17} +\indexentry{generateFakeFeaturesPolar@{generateFakeFeaturesPolar}!genFakeData@{genFakeData}|hyperpage}{17} +\indexentry{genFakeData@{genFakeData}!generateTranslationVector@{generateTranslationVector}|hyperpage}{17} +\indexentry{generateTranslationVector@{generateTranslationVector}!genFakeData@{genFakeData}|hyperpage}{17} +\indexentry{genFakeData@{genFakeData}!plotFakeFeatures@{plotFakeFeatures}|hyperpage}{17} +\indexentry{plotFakeFeatures@{plotFakeFeatures}!genFakeData@{genFakeData}|hyperpage}{17} +\indexentry{genFakeData@{genFakeData}!transformCoords@{transformCoords}|hyperpage}{17} +\indexentry{transformCoords@{transformCoords}!genFakeData@{genFakeData}|hyperpage}{17} +\indexentry{getFeatures@{getFeatures}|hyperpage}{18} +\indexentry{getFeatures@{getFeatures}!adaptiveNMS@{adaptiveNMS}|hyperpage}{19} +\indexentry{adaptiveNMS@{adaptiveNMS}!getFeatures@{getFeatures}|hyperpage}{19} +\indexentry{getFeatures@{getFeatures}!appendNewFeatures@{appendNewFeatures}|hyperpage}{19} +\indexentry{appendNewFeatures@{appendNewFeatures}!getFeatures@{getFeatures}|hyperpage}{19} +\indexentry{getFeatures@{getFeatures}!calculateFeatureLossThreshold@{calculateFeatureLossThreshold}|hyperpage}{19} +\indexentry{calculateFeatureLossThreshold@{calculateFeatureLossThreshold}!getFeatures@{getFeatures}|hyperpage}{19} +\indexentry{getFeatures@{getFeatures}!getBlobsFromCart@{getBlobsFromCart}|hyperpage}{19} +\indexentry{getBlobsFromCart@{getBlobsFromCart}!getFeatures@{getFeatures}|hyperpage}{19} +\indexentry{getFeatures@{getFeatures}!getFeatures@{getFeatures}|hyperpage}{19} +\indexentry{getFeatures@{getFeatures}!getFeatures@{getFeatures}|hyperpage}{19} +\indexentry{getFeatures@{getFeatures}!blobIndices@{blobIndices}|hyperpage}{20} +\indexentry{blobIndices@{blobIndices}!getFeatures@{getFeatures}|hyperpage}{20} +\indexentry{getFeatures@{getFeatures}!blobSigma@{blobSigma}|hyperpage}{20} +\indexentry{blobSigma@{blobSigma}!getFeatures@{getFeatures}|hyperpage}{20} +\indexentry{getFeatures@{getFeatures}!blobX@{blobX}|hyperpage}{20} +\indexentry{blobX@{blobX}!getFeatures@{getFeatures}|hyperpage}{20} +\indexentry{getFeatures@{getFeatures}!blobY@{blobY}|hyperpage}{20} +\indexentry{blobY@{blobY}!getFeatures@{getFeatures}|hyperpage}{20} +\indexentry{getFeatures@{getFeatures}!color@{color}|hyperpage}{20} +\indexentry{color@{color}!getFeatures@{getFeatures}|hyperpage}{20} +\indexentry{getFeatures@{getFeatures}!coord@{coord}|hyperpage}{21} +\indexentry{coord@{coord}!getFeatures@{getFeatures}|hyperpage}{21} +\indexentry{getFeatures@{getFeatures}!dataPath@{dataPath}|hyperpage}{21} +\indexentry{dataPath@{dataPath}!getFeatures@{getFeatures}|hyperpage}{21} +\indexentry{getFeatures@{getFeatures}!datasetName@{datasetName}|hyperpage}{21} +\indexentry{datasetName@{datasetName}!getFeatures@{getFeatures}|hyperpage}{21} +\indexentry{getFeatures@{getFeatures}!DEFAULT\_FEATURE\_PARAMS@{DEFAULT\_FEATURE\_PARAMS}|hyperpage}{21} +\indexentry{DEFAULT\_FEATURE\_PARAMS@{DEFAULT\_FEATURE\_PARAMS}!getFeatures@{getFeatures}|hyperpage}{21} +\indexentry{getFeatures@{getFeatures}!end@{end}|hyperpage}{21} +\indexentry{end@{end}!getFeatures@{getFeatures}|hyperpage}{21} +\indexentry{getFeatures@{getFeatures}!exist\_ok@{exist\_ok}|hyperpage}{21} +\indexentry{exist\_ok@{exist\_ok}!getFeatures@{getFeatures}|hyperpage}{21} +\indexentry{getFeatures@{getFeatures}!flush@{flush}|hyperpage}{21} +\indexentry{flush@{flush}!getFeatures@{getFeatures}|hyperpage}{21} +\indexentry{getFeatures@{getFeatures}!imgCart@{imgCart}|hyperpage}{22} +\indexentry{imgCart@{imgCart}!getFeatures@{getFeatures}|hyperpage}{22} +\indexentry{getFeatures@{getFeatures}!imgCartBGR@{imgCartBGR}|hyperpage}{22} +\indexentry{imgCartBGR@{imgCartBGR}!getFeatures@{getFeatures}|hyperpage}{22} +\indexentry{getFeatures@{getFeatures}!imgPolar@{imgPolar}|hyperpage}{22} +\indexentry{imgPolar@{imgPolar}!getFeatures@{getFeatures}|hyperpage}{22} +\indexentry{getFeatures@{getFeatures}!N\_FEATURES\_BEFORE\_RETRACK@{N\_FEATURES\_BEFORE\_RETRACK}|hyperpage}{22} +\indexentry{N\_FEATURES\_BEFORE\_RETRACK@{N\_FEATURES\_BEFORE\_RETRACK}!getFeatures@{getFeatures}|hyperpage}{22} +\indexentry{getFeatures@{getFeatures}!nImgs@{nImgs}|hyperpage}{22} +\indexentry{nImgs@{nImgs}!getFeatures@{getFeatures}|hyperpage}{22} +\indexentry{getFeatures@{getFeatures}!nIndices@{nIndices}|hyperpage}{22} +\indexentry{nIndices@{nIndices}!getFeatures@{getFeatures}|hyperpage}{22} +\indexentry{getFeatures@{getFeatures}!nIndicesANMS@{nIndicesANMS}|hyperpage}{22} +\indexentry{nIndicesANMS@{nIndicesANMS}!getFeatures@{getFeatures}|hyperpage}{22} +\indexentry{getFeatures@{getFeatures}!PERCENT\_FEATURE\_LOSS\_THRESHOLD@{PERCENT\_FEATURE\_LOSS\_THRESHOLD}|hyperpage}{22} +\indexentry{PERCENT\_FEATURE\_LOSS\_THRESHOLD@{PERCENT\_FEATURE\_LOSS\_THRESHOLD}!getFeatures@{getFeatures}|hyperpage}{22} +\indexentry{getFeatures@{getFeatures}!s\_blobIndices@{s\_blobIndices}|hyperpage}{23} +\indexentry{s\_blobIndices@{s\_blobIndices}!getFeatures@{getFeatures}|hyperpage}{23} +\indexentry{getFeatures@{getFeatures}!streamArr@{streamArr}|hyperpage}{23} +\indexentry{streamArr@{streamArr}!getFeatures@{getFeatures}|hyperpage}{23} +\indexentry{getFeatures@{getFeatures}!timestampPath@{timestampPath}|hyperpage}{23} +\indexentry{timestampPath@{timestampPath}!getFeatures@{getFeatures}|hyperpage}{23} +\indexentry{getFeatures@{getFeatures}!toSaveImgPath@{toSaveImgPath}|hyperpage}{23} +\indexentry{toSaveImgPath@{toSaveImgPath}!getFeatures@{getFeatures}|hyperpage}{23} +\indexentry{getFeatures@{getFeatures}!toSavePath@{toSavePath}|hyperpage}{23} +\indexentry{toSavePath@{toSavePath}!getFeatures@{getFeatures}|hyperpage}{23} +\indexentry{getPointCloud@{getPointCloud}|hyperpage}{23} +\indexentry{getPointCloud@{getPointCloud}!getPointCloudPolarInd@{getPointCloudPolarInd}|hyperpage}{24} +\indexentry{getPointCloudPolarInd@{getPointCloudPolarInd}!getPointCloud@{getPointCloud}|hyperpage}{24} +\indexentry{getPointCloud@{getPointCloud}!c@{c}|hyperpage}{24} +\indexentry{c@{c}!getPointCloud@{getPointCloud}|hyperpage}{24} +\indexentry{getPointCloud@{getPointCloud}!dataPath@{dataPath}|hyperpage}{24} +\indexentry{dataPath@{dataPath}!getPointCloud@{getPointCloud}|hyperpage}{24} +\indexentry{getPointCloud@{getPointCloud}!datasetName@{datasetName}|hyperpage}{24} +\indexentry{datasetName@{datasetName}!getPointCloud@{getPointCloud}|hyperpage}{24} +\indexentry{getPointCloud@{getPointCloud}!featureAzim@{featureAzim}|hyperpage}{25} +\indexentry{featureAzim@{featureAzim}!getPointCloud@{getPointCloud}|hyperpage}{25} +\indexentry{getPointCloud@{getPointCloud}!featureImgCart@{featureImgCart}|hyperpage}{25} +\indexentry{featureImgCart@{featureImgCart}!getPointCloud@{getPointCloud}|hyperpage}{25} +\indexentry{getPointCloud@{getPointCloud}!featurePolarImage@{featurePolarImage}|hyperpage}{25} +\indexentry{featurePolarImage@{featurePolarImage}!getPointCloud@{getPointCloud}|hyperpage}{25} +\indexentry{getPointCloud@{getPointCloud}!featurePolarIndices@{featurePolarIndices}|hyperpage}{25} +\indexentry{featurePolarIndices@{featurePolarIndices}!getPointCloud@{getPointCloud}|hyperpage}{25} +\indexentry{getPointCloud@{getPointCloud}!featureRange@{featureRange}|hyperpage}{25} +\indexentry{featureRange@{featureRange}!getPointCloud@{getPointCloud}|hyperpage}{25} +\indexentry{getPointCloud@{getPointCloud}!imgCart@{imgCart}|hyperpage}{25} +\indexentry{imgCart@{imgCart}!getPointCloud@{getPointCloud}|hyperpage}{25} +\indexentry{getPointCloud@{getPointCloud}!imgCartRGB@{imgCartRGB}|hyperpage}{25} +\indexentry{imgCartRGB@{imgCartRGB}!getPointCloud@{getPointCloud}|hyperpage}{25} +\indexentry{getPointCloud@{getPointCloud}!imgPolar@{imgPolar}|hyperpage}{25} +\indexentry{imgPolar@{imgPolar}!getPointCloud@{getPointCloud}|hyperpage}{25} +\indexentry{getPointCloud@{getPointCloud}!nImgs@{nImgs}|hyperpage}{26} +\indexentry{nImgs@{nImgs}!getPointCloud@{getPointCloud}|hyperpage}{26} +\indexentry{getPointCloud@{getPointCloud}!streamArr@{streamArr}|hyperpage}{26} +\indexentry{streamArr@{streamArr}!getPointCloud@{getPointCloud}|hyperpage}{26} +\indexentry{getPointCloud@{getPointCloud}!timestampPath@{timestampPath}|hyperpage}{26} +\indexentry{timestampPath@{timestampPath}!getPointCloud@{getPointCloud}|hyperpage}{26} +\indexentry{getTransformKLT@{getTransformKLT}|hyperpage}{26} +\indexentry{getTransformKLT@{getTransformKLT}!calculateTransform@{calculateTransform}|hyperpage}{27} +\indexentry{calculateTransform@{calculateTransform}!getTransformKLT@{getTransformKLT}|hyperpage}{27} +\indexentry{getTransformKLT@{getTransformKLT}!calculateTransformDth@{calculateTransformDth}|hyperpage}{28} +\indexentry{calculateTransformDth@{calculateTransformDth}!getTransformKLT@{getTransformKLT}|hyperpage}{28} +\indexentry{getTransformKLT@{getTransformKLT}!calculateTransformDxDth@{calculateTransformDxDth}|hyperpage}{28} +\indexentry{calculateTransformDxDth@{calculateTransformDxDth}!getTransformKLT@{getTransformKLT}|hyperpage}{28} +\indexentry{getTransformKLT@{getTransformKLT}!calculateTransformSVD@{calculateTransformSVD}|hyperpage}{28} +\indexentry{calculateTransformSVD@{calculateTransformSVD}!getTransformKLT@{getTransformKLT}|hyperpage}{28} +\indexentry{getTransformKLT@{getTransformKLT}!estimateTransformUsingDelats@{estimateTransformUsingDelats}|hyperpage}{28} +\indexentry{estimateTransformUsingDelats@{estimateTransformUsingDelats}!getTransformKLT@{getTransformKLT}|hyperpage}{28} +\indexentry{getTransformKLT@{getTransformKLT}!getTrackedPointsKLT@{getTrackedPointsKLT}|hyperpage}{29} +\indexentry{getTrackedPointsKLT@{getTrackedPointsKLT}!getTransformKLT@{getTransformKLT}|hyperpage}{29} +\indexentry{getTransformKLT@{getTransformKLT}!visualize\_transform@{visualize\_transform}|hyperpage}{29} +\indexentry{visualize\_transform@{visualize\_transform}!getTransformKLT@{getTransformKLT}|hyperpage}{29} +\indexentry{getTransformKLT@{getTransformKLT}!alpha@{alpha}|hyperpage}{30} +\indexentry{alpha@{alpha}!getTransformKLT@{getTransformKLT}|hyperpage}{30} +\indexentry{getTransformKLT@{getTransformKLT}!bad\_new@{bad\_new}|hyperpage}{30} +\indexentry{bad\_new@{bad\_new}!getTransformKLT@{getTransformKLT}|hyperpage}{30} +\indexentry{getTransformKLT@{getTransformKLT}!bad\_old@{bad\_old}|hyperpage}{30} +\indexentry{bad\_old@{bad\_old}!getTransformKLT@{getTransformKLT}|hyperpage}{30} +\indexentry{getTransformKLT@{getTransformKLT}!blobCoord@{blobCoord}|hyperpage}{30} +\indexentry{blobCoord@{blobCoord}!getTransformKLT@{getTransformKLT}|hyperpage}{30} +\indexentry{getTransformKLT@{getTransformKLT}!corrStatus@{corrStatus}|hyperpage}{30} +\indexentry{corrStatus@{corrStatus}!getTransformKLT@{getTransformKLT}|hyperpage}{30} +\indexentry{getTransformKLT@{getTransformKLT}!currImg@{currImg}|hyperpage}{30} +\indexentry{currImg@{currImg}!getTransformKLT@{getTransformKLT}|hyperpage}{30} +\indexentry{getTransformKLT@{getTransformKLT}!currTimestamp@{currTimestamp}|hyperpage}{30} +\indexentry{currTimestamp@{currTimestamp}!getTransformKLT@{getTransformKLT}|hyperpage}{30} +\indexentry{getTransformKLT@{getTransformKLT}!dataPath@{dataPath}|hyperpage}{30} +\indexentry{dataPath@{dataPath}!getTransformKLT@{getTransformKLT}|hyperpage}{30} +\indexentry{getTransformKLT@{getTransformKLT}!datasetName@{datasetName}|hyperpage}{31} +\indexentry{datasetName@{datasetName}!getTransformKLT@{getTransformKLT}|hyperpage}{31} +\indexentry{getTransformKLT@{getTransformKLT}!dth@{dth}|hyperpage}{31} +\indexentry{dth@{dth}!getTransformKLT@{getTransformKLT}|hyperpage}{31} +\indexentry{getTransformKLT@{getTransformKLT}!dx@{dx}|hyperpage}{31} +\indexentry{dx@{dx}!getTransformKLT@{getTransformKLT}|hyperpage}{31} +\indexentry{getTransformKLT@{getTransformKLT}!ERR\_THRESHOLD@{ERR\_THRESHOLD}|hyperpage}{31} +\indexentry{ERR\_THRESHOLD@{ERR\_THRESHOLD}!getTransformKLT@{getTransformKLT}|hyperpage}{31} +\indexentry{getTransformKLT@{getTransformKLT}!est\_deltas@{est\_deltas}|hyperpage}{31} +\indexentry{est\_deltas@{est\_deltas}!getTransformKLT@{getTransformKLT}|hyperpage}{31} +\indexentry{getTransformKLT@{getTransformKLT}!estTraj@{estTraj}|hyperpage}{31} +\indexentry{estTraj@{estTraj}!getTransformKLT@{getTransformKLT}|hyperpage}{31} +\indexentry{getTransformKLT@{getTransformKLT}!exist\_ok@{exist\_ok}|hyperpage}{31} +\indexentry{exist\_ok@{exist\_ok}!getTransformKLT@{getTransformKLT}|hyperpage}{31} +\indexentry{getTransformKLT@{getTransformKLT}!extraLabel@{extraLabel}|hyperpage}{31} +\indexentry{extraLabel@{extraLabel}!getTransformKLT@{getTransformKLT}|hyperpage}{31} +\indexentry{getTransformKLT@{getTransformKLT}!good\_new@{good\_new}|hyperpage}{32} +\indexentry{good\_new@{good\_new}!getTransformKLT@{getTransformKLT}|hyperpage}{32} +\indexentry{getTransformKLT@{getTransformKLT}!good\_old@{good\_old}|hyperpage}{32} +\indexentry{good\_old@{good\_old}!getTransformKLT@{getTransformKLT}|hyperpage}{32} +\indexentry{getTransformKLT@{getTransformKLT}!gt\_deltas@{gt\_deltas}|hyperpage}{32} +\indexentry{gt\_deltas@{gt\_deltas}!getTransformKLT@{getTransformKLT}|hyperpage}{32} +\indexentry{getTransformKLT@{getTransformKLT}!gtTraj@{gtTraj}|hyperpage}{32} +\indexentry{gtTraj@{gtTraj}!getTransformKLT@{getTransformKLT}|hyperpage}{32} +\indexentry{getTransformKLT@{getTransformKLT}!gtTrajPath@{gtTrajPath}|hyperpage}{32} +\indexentry{gtTrajPath@{gtTrajPath}!getTransformKLT@{getTransformKLT}|hyperpage}{32} +\indexentry{getTransformKLT@{getTransformKLT}!h@{h}|hyperpage}{32} +\indexentry{h@{h}!getTransformKLT@{getTransformKLT}|hyperpage}{32} +\indexentry{getTransformKLT@{getTransformKLT}!imgPathArr@{imgPathArr}|hyperpage}{32} +\indexentry{imgPathArr@{imgPathArr}!getTransformKLT@{getTransformKLT}|hyperpage}{32} +\indexentry{getTransformKLT@{getTransformKLT}!imgSavePath@{imgSavePath}|hyperpage}{32} +\indexentry{imgSavePath@{imgSavePath}!getTransformKLT@{getTransformKLT}|hyperpage}{32} +\indexentry{getTransformKLT@{getTransformKLT}!initPose@{initPose}|hyperpage}{33} +\indexentry{initPose@{initPose}!getTransformKLT@{getTransformKLT}|hyperpage}{33} +\indexentry{getTransformKLT@{getTransformKLT}!initTimestamp@{initTimestamp}|hyperpage}{33} +\indexentry{initTimestamp@{initTimestamp}!getTransformKLT@{getTransformKLT}|hyperpage}{33} +\indexentry{getTransformKLT@{getTransformKLT}!LK\_PARAMS@{LK\_PARAMS}|hyperpage}{33} +\indexentry{LK\_PARAMS@{LK\_PARAMS}!getTransformKLT@{getTransformKLT}|hyperpage}{33} +\indexentry{getTransformKLT@{getTransformKLT}!N\_FEATURES\_BEFORE\_RETRACK@{N\_FEATURES\_BEFORE\_RETRACK}|hyperpage}{33} +\indexentry{N\_FEATURES\_BEFORE\_RETRACK@{N\_FEATURES\_BEFORE\_RETRACK}!getTransformKLT@{getTransformKLT}|hyperpage}{33} +\indexentry{getTransformKLT@{getTransformKLT}!nBadFeatures@{nBadFeatures}|hyperpage}{33} +\indexentry{nBadFeatures@{nBadFeatures}!getTransformKLT@{getTransformKLT}|hyperpage}{33} +\indexentry{getTransformKLT@{getTransformKLT}!nFeatures@{nFeatures}|hyperpage}{33} +\indexentry{nFeatures@{nFeatures}!getTransformKLT@{getTransformKLT}|hyperpage}{33} +\indexentry{getTransformKLT@{getTransformKLT}!nGoodFeatures@{nGoodFeatures}|hyperpage}{34} +\indexentry{nGoodFeatures@{nGoodFeatures}!getTransformKLT@{getTransformKLT}|hyperpage}{34} +\indexentry{getTransformKLT@{getTransformKLT}!nImgs@{nImgs}|hyperpage}{34} +\indexentry{nImgs@{nImgs}!getTransformKLT@{getTransformKLT}|hyperpage}{34} +\indexentry{getTransformKLT@{getTransformKLT}!PLOT\_BAD\_FEATURES@{PLOT\_BAD\_FEATURES}|hyperpage}{34} +\indexentry{PLOT\_BAD\_FEATURES@{PLOT\_BAD\_FEATURES}!getTransformKLT@{getTransformKLT}|hyperpage}{34} +\indexentry{getTransformKLT@{getTransformKLT}!prev\_good\_old@{prev\_good\_old}|hyperpage}{34} +\indexentry{prev\_good\_old@{prev\_good\_old}!getTransformKLT@{getTransformKLT}|hyperpage}{34} +\indexentry{getTransformKLT@{getTransformKLT}!prevImg@{prevImg}|hyperpage}{34} +\indexentry{prevImg@{prevImg}!getTransformKLT@{getTransformKLT}|hyperpage}{34} +\indexentry{getTransformKLT@{getTransformKLT}!R@{R}|hyperpage}{34} +\indexentry{R@{R}!getTransformKLT@{getTransformKLT}|hyperpage}{34} +\indexentry{getTransformKLT@{getTransformKLT}!REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}|hyperpage}{34} +\indexentry{REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}!getTransformKLT@{getTransformKLT}|hyperpage}{34} +\indexentry{getTransformKLT@{getTransformKLT}!saveFeaturePath@{saveFeaturePath}|hyperpage}{34} +\indexentry{saveFeaturePath@{saveFeaturePath}!getTransformKLT@{getTransformKLT}|hyperpage}{34} +\indexentry{getTransformKLT@{getTransformKLT}!savePath@{savePath}|hyperpage}{35} +\indexentry{savePath@{savePath}!getTransformKLT@{getTransformKLT}|hyperpage}{35} +\indexentry{getTransformKLT@{getTransformKLT}!show@{show}|hyperpage}{35} +\indexentry{show@{show}!getTransformKLT@{getTransformKLT}|hyperpage}{35} +\indexentry{getTransformKLT@{getTransformKLT}!start@{start}|hyperpage}{35} +\indexentry{start@{start}!getTransformKLT@{getTransformKLT}|hyperpage}{35} +\indexentry{getTransformKLT@{getTransformKLT}!startImgInd@{startImgInd}|hyperpage}{35} +\indexentry{startImgInd@{startImgInd}!getTransformKLT@{getTransformKLT}|hyperpage}{35} +\indexentry{getTransformKLT@{getTransformKLT}!timestamp@{timestamp}|hyperpage}{35} +\indexentry{timestamp@{timestamp}!getTransformKLT@{getTransformKLT}|hyperpage}{35} +\indexentry{getTransformKLT@{getTransformKLT}!timestampPath@{timestampPath}|hyperpage}{35} +\indexentry{timestampPath@{timestampPath}!getTransformKLT@{getTransformKLT}|hyperpage}{35} +\indexentry{getTransformKLT@{getTransformKLT}!toSaveImgPath@{toSaveImgPath}|hyperpage}{35} +\indexentry{toSaveImgPath@{toSaveImgPath}!getTransformKLT@{getTransformKLT}|hyperpage}{35} +\indexentry{getTransformKLT@{getTransformKLT}!toSaveTrajPath@{toSaveTrajPath}|hyperpage}{36} +\indexentry{toSaveTrajPath@{toSaveTrajPath}!getTransformKLT@{getTransformKLT}|hyperpage}{36} +\indexentry{getTransformKLT@{getTransformKLT}!trajSavePath@{trajSavePath}|hyperpage}{36} +\indexentry{trajSavePath@{trajSavePath}!getTransformKLT@{getTransformKLT}|hyperpage}{36} +\indexentry{getTransformKLT@{getTransformKLT}!transformed\_pts@{transformed\_pts}|hyperpage}{36} +\indexentry{transformed\_pts@{transformed\_pts}!getTransformKLT@{getTransformKLT}|hyperpage}{36} +\indexentry{Mapping@{Mapping}|hyperpage}{36} +\indexentry{Mapping@{Mapping}!RADAR\_CART\_CENTER@{RADAR\_CART\_CENTER}|hyperpage}{36} +\indexentry{RADAR\_CART\_CENTER@{RADAR\_CART\_CENTER}!Mapping@{Mapping}|hyperpage}{36} +\indexentry{Mapping@{Mapping}!ROT\_THRESHOLD@{ROT\_THRESHOLD}|hyperpage}{37} +\indexentry{ROT\_THRESHOLD@{ROT\_THRESHOLD}!Mapping@{Mapping}|hyperpage}{37} +\indexentry{Mapping@{Mapping}!TRANS\_THRESHOLD@{TRANS\_THRESHOLD}|hyperpage}{37} +\indexentry{TRANS\_THRESHOLD@{TRANS\_THRESHOLD}!Mapping@{Mapping}|hyperpage}{37} +\indexentry{Mapping@{Mapping}!TRANS\_THRESHOLD\_SQ@{TRANS\_THRESHOLD\_SQ}|hyperpage}{37} +\indexentry{TRANS\_THRESHOLD\_SQ@{TRANS\_THRESHOLD\_SQ}!Mapping@{Mapping}|hyperpage}{37} +\indexentry{motionDistortion@{motionDistortion}|hyperpage}{37} +\indexentry{motionDistortion@{motionDistortion}!RADAR\_SCAN\_FREQUENCY@{RADAR\_SCAN\_FREQUENCY}|hyperpage}{37} +\indexentry{RADAR\_SCAN\_FREQUENCY@{RADAR\_SCAN\_FREQUENCY}!motionDistortion@{motionDistortion}|hyperpage}{37} +\indexentry{motionDistortion@{motionDistortion}!VERBOSE@{VERBOSE}|hyperpage}{37} +\indexentry{VERBOSE@{VERBOSE}!motionDistortion@{motionDistortion}|hyperpage}{37} +\indexentry{outlierRejection@{outlierRejection}|hyperpage}{38} +\indexentry{outlierRejection@{outlierRejection}!rejectOutliers@{rejectOutliers}|hyperpage}{38} +\indexentry{rejectOutliers@{rejectOutliers}!outlierRejection@{outlierRejection}|hyperpage}{38} +\indexentry{outlierRejection@{outlierRejection}!alpha@{alpha}|hyperpage}{39} +\indexentry{alpha@{alpha}!outlierRejection@{outlierRejection}|hyperpage}{39} +\indexentry{outlierRejection@{outlierRejection}!DIST\_THRESHOLD\_M@{DIST\_THRESHOLD\_M}|hyperpage}{39} +\indexentry{DIST\_THRESHOLD\_M@{DIST\_THRESHOLD\_M}!outlierRejection@{outlierRejection}|hyperpage}{39} +\indexentry{outlierRejection@{outlierRejection}!DIST\_THRESHOLD\_PX@{DIST\_THRESHOLD\_PX}|hyperpage}{39} +\indexentry{DIST\_THRESHOLD\_PX@{DIST\_THRESHOLD\_PX}!outlierRejection@{outlierRejection}|hyperpage}{39} +\indexentry{outlierRejection@{outlierRejection}!DISTSQ\_THRESHOLD\_PX@{DISTSQ\_THRESHOLD\_PX}|hyperpage}{39} +\indexentry{DISTSQ\_THRESHOLD\_PX@{DISTSQ\_THRESHOLD\_PX}!outlierRejection@{outlierRejection}|hyperpage}{39} +\indexentry{outlierRejection@{outlierRejection}!FORCE\_OUTLIERS@{FORCE\_OUTLIERS}|hyperpage}{39} +\indexentry{FORCE\_OUTLIERS@{FORCE\_OUTLIERS}!outlierRejection@{outlierRejection}|hyperpage}{39} +\indexentry{outlierRejection@{outlierRejection}!max\_translation\_m@{max\_translation\_m}|hyperpage}{40} +\indexentry{max\_translation\_m@{max\_translation\_m}!outlierRejection@{outlierRejection}|hyperpage}{40} +\indexentry{outlierRejection@{outlierRejection}!n\_outliers@{n\_outliers}|hyperpage}{40} +\indexentry{n\_outliers@{n\_outliers}!outlierRejection@{outlierRejection}|hyperpage}{40} +\indexentry{outlierRejection@{outlierRejection}!n\_points@{n\_points}|hyperpage}{40} +\indexentry{n\_points@{n\_points}!outlierRejection@{outlierRejection}|hyperpage}{40} +\indexentry{outlierRejection@{outlierRejection}!new\_coord@{new\_coord}|hyperpage}{40} +\indexentry{new\_coord@{new\_coord}!outlierRejection@{outlierRejection}|hyperpage}{40} +\indexentry{outlierRejection@{outlierRejection}!new\_coord\_perfect@{new\_coord\_perfect}|hyperpage}{40} +\indexentry{new\_coord\_perfect@{new\_coord\_perfect}!outlierRejection@{outlierRejection}|hyperpage}{40} +\indexentry{outlierRejection@{outlierRejection}!noiseToAdd@{noiseToAdd}|hyperpage}{40} +\indexentry{noiseToAdd@{noiseToAdd}!outlierRejection@{outlierRejection}|hyperpage}{40} +\indexentry{outlierRejection@{outlierRejection}!outlier\_ind@{outlier\_ind}|hyperpage}{40} +\indexentry{outlier\_ind@{outlier\_ind}!outlierRejection@{outlierRejection}|hyperpage}{40} +\indexentry{outlierRejection@{outlierRejection}!prev\_coord@{prev\_coord}|hyperpage}{40} +\indexentry{prev\_coord@{prev\_coord}!outlierRejection@{outlierRejection}|hyperpage}{40} +\indexentry{outlierRejection@{outlierRejection}!pruned\_new\_coord@{pruned\_new\_coord}|hyperpage}{41} +\indexentry{pruned\_new\_coord@{pruned\_new\_coord}!outlierRejection@{outlierRejection}|hyperpage}{41} +\indexentry{outlierRejection@{outlierRejection}!pruned\_prev\_coord@{pruned\_prev\_coord}|hyperpage}{41} +\indexentry{pruned\_prev\_coord@{pruned\_prev\_coord}!outlierRejection@{outlierRejection}|hyperpage}{41} +\indexentry{outlierRejection@{outlierRejection}!show@{show}|hyperpage}{41} +\indexentry{show@{show}!outlierRejection@{outlierRejection}|hyperpage}{41} +\indexentry{outlierRejection@{outlierRejection}!theta\_deg@{theta\_deg}|hyperpage}{41} +\indexentry{theta\_deg@{theta\_deg}!outlierRejection@{outlierRejection}|hyperpage}{41} +\indexentry{outlierRejection@{outlierRejection}!theta\_max\_deg@{theta\_max\_deg}|hyperpage}{41} +\indexentry{theta\_max\_deg@{theta\_max\_deg}!outlierRejection@{outlierRejection}|hyperpage}{41} +\indexentry{outlierRejection@{outlierRejection}!title\_append@{title\_append}|hyperpage}{41} +\indexentry{title\_append@{title\_append}!outlierRejection@{outlierRejection}|hyperpage}{41} +\indexentry{outlierRejection@{outlierRejection}!trans\_vec@{trans\_vec}|hyperpage}{41} +\indexentry{trans\_vec@{trans\_vec}!outlierRejection@{outlierRejection}|hyperpage}{41} +\indexentry{parseData@{parseData}|hyperpage}{42} +\indexentry{parseData@{parseData}!convertCartesianImageToPolar@{convertCartesianImageToPolar}|hyperpage}{42} +\indexentry{convertCartesianImageToPolar@{convertCartesianImageToPolar}!parseData@{parseData}|hyperpage}{42} +\indexentry{parseData@{parseData}!convertPolarImageToCartesian@{convertPolarImageToCartesian}|hyperpage}{42} +\indexentry{convertPolarImageToCartesian@{convertPolarImageToCartesian}!parseData@{parseData}|hyperpage}{42} +\indexentry{parseData@{parseData}!convertPolarImgToLogPolar@{convertPolarImgToLogPolar}|hyperpage}{43} +\indexentry{convertPolarImgToLogPolar@{convertPolarImgToLogPolar}!parseData@{parseData}|hyperpage}{43} +\indexentry{parseData@{parseData}!drawCVPoint@{drawCVPoint}|hyperpage}{43} +\indexentry{drawCVPoint@{drawCVPoint}!parseData@{parseData}|hyperpage}{43} +\indexentry{parseData@{parseData}!extractDataFromRadarImage@{extractDataFromRadarImage}|hyperpage}{43} +\indexentry{extractDataFromRadarImage@{extractDataFromRadarImage}!parseData@{parseData}|hyperpage}{43} +\indexentry{parseData@{parseData}!getCartImageFromImgPaths@{getCartImageFromImgPaths}|hyperpage}{43} +\indexentry{getCartImageFromImgPaths@{getCartImageFromImgPaths}!parseData@{parseData}|hyperpage}{43} +\indexentry{parseData@{parseData}!getDataFromImgPathsByIndex@{getDataFromImgPathsByIndex}|hyperpage}{44} +\indexentry{getDataFromImgPathsByIndex@{getDataFromImgPathsByIndex}!parseData@{parseData}|hyperpage}{44} +\indexentry{parseData@{parseData}!getPolarImageFromImgPaths@{getPolarImageFromImgPaths}|hyperpage}{44} +\indexentry{getPolarImageFromImgPaths@{getPolarImageFromImgPaths}!parseData@{parseData}|hyperpage}{44} +\indexentry{parseData@{parseData}!getRadarImgPaths@{getRadarImgPaths}|hyperpage}{44} +\indexentry{getRadarImgPaths@{getRadarImgPaths}!parseData@{parseData}|hyperpage}{44} +\indexentry{parseData@{parseData}!getRadarStreamPolar@{getRadarStreamPolar}|hyperpage}{45} +\indexentry{getRadarStreamPolar@{getRadarStreamPolar}!parseData@{parseData}|hyperpage}{45} +\indexentry{parseData@{parseData}!c@{c}|hyperpage}{45} +\indexentry{c@{c}!parseData@{parseData}|hyperpage}{45} +\indexentry{parseData@{parseData}!dataPath@{dataPath}|hyperpage}{45} +\indexentry{dataPath@{dataPath}!parseData@{parseData}|hyperpage}{45} +\indexentry{parseData@{parseData}!datasetName@{datasetName}|hyperpage}{45} +\indexentry{datasetName@{datasetName}!parseData@{parseData}|hyperpage}{45} +\indexentry{parseData@{parseData}!DOWNSAMPLE\_FACTOR@{DOWNSAMPLE\_FACTOR}|hyperpage}{45} +\indexentry{DOWNSAMPLE\_FACTOR@{DOWNSAMPLE\_FACTOR}!parseData@{parseData}|hyperpage}{45} +\indexentry{parseData@{parseData}!imgCart@{imgCart}|hyperpage}{46} +\indexentry{imgCart@{imgCart}!parseData@{parseData}|hyperpage}{46} +\indexentry{parseData@{parseData}!imgPolar@{imgPolar}|hyperpage}{46} +\indexentry{imgPolar@{imgPolar}!parseData@{parseData}|hyperpage}{46} +\indexentry{parseData@{parseData}!MAX\_RANGE\_CLIP\_DEFAULT@{MAX\_RANGE\_CLIP\_DEFAULT}|hyperpage}{46} +\indexentry{MAX\_RANGE\_CLIP\_DEFAULT@{MAX\_RANGE\_CLIP\_DEFAULT}!parseData@{parseData}|hyperpage}{46} +\indexentry{parseData@{parseData}!nImgs@{nImgs}|hyperpage}{46} +\indexentry{nImgs@{nImgs}!parseData@{parseData}|hyperpage}{46} +\indexentry{parseData@{parseData}!RANGE\_RESOLUTION\_CART\_M@{RANGE\_RESOLUTION\_CART\_M}|hyperpage}{46} +\indexentry{RANGE\_RESOLUTION\_CART\_M@{RANGE\_RESOLUTION\_CART\_M}!parseData@{parseData}|hyperpage}{46} +\indexentry{parseData@{parseData}!RANGE\_RESOLUTION\_M@{RANGE\_RESOLUTION\_M}|hyperpage}{46} +\indexentry{RANGE\_RESOLUTION\_M@{RANGE\_RESOLUTION\_M}!parseData@{parseData}|hyperpage}{46} +\indexentry{parseData@{parseData}!streamArr@{streamArr}|hyperpage}{46} +\indexentry{streamArr@{streamArr}!parseData@{parseData}|hyperpage}{46} +\indexentry{parseData@{parseData}!timestampPath@{timestampPath}|hyperpage}{46} +\indexentry{timestampPath@{timestampPath}!parseData@{parseData}|hyperpage}{46} +\indexentry{PoseGraphLib@{PoseGraphLib}|hyperpage}{47} +\indexentry{RawROAMSystem@{RawROAMSystem}|hyperpage}{47} +\indexentry{RawROAMSystem@{RawROAMSystem}!datasetName@{datasetName}|hyperpage}{47} +\indexentry{datasetName@{datasetName}!RawROAMSystem@{RawROAMSystem}|hyperpage}{47} +\indexentry{RawROAMSystem@{RawROAMSystem}!endSeqInd@{endSeqInd}|hyperpage}{47} +\indexentry{endSeqInd@{endSeqInd}!RawROAMSystem@{RawROAMSystem}|hyperpage}{47} +\indexentry{RawROAMSystem@{RawROAMSystem}!imgSavePath@{imgSavePath}|hyperpage}{47} +\indexentry{imgSavePath@{imgSavePath}!RawROAMSystem@{RawROAMSystem}|hyperpage}{47} +\indexentry{RawROAMSystem@{RawROAMSystem}!paramFlags@{paramFlags}|hyperpage}{48} +\indexentry{paramFlags@{paramFlags}!RawROAMSystem@{RawROAMSystem}|hyperpage}{48} +\indexentry{RawROAMSystem@{RawROAMSystem}!RADAR\_CART\_CENTER@{RADAR\_CART\_CENTER}|hyperpage}{48} +\indexentry{RADAR\_CART\_CENTER@{RADAR\_CART\_CENTER}!RawROAMSystem@{RawROAMSystem}|hyperpage}{48} +\indexentry{RawROAMSystem@{RawROAMSystem}!REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}|hyperpage}{48} +\indexentry{REMOVE\_OLD\_RESULTS@{REMOVE\_OLD\_RESULTS}!RawROAMSystem@{RawROAMSystem}|hyperpage}{48} +\indexentry{RawROAMSystem@{RawROAMSystem}!startSeqInd@{startSeqInd}|hyperpage}{48} +\indexentry{startSeqInd@{startSeqInd}!RawROAMSystem@{RawROAMSystem}|hyperpage}{48} +\indexentry{RawROAMSystem@{RawROAMSystem}!system@{system}|hyperpage}{48} +\indexentry{system@{system}!RawROAMSystem@{RawROAMSystem}|hyperpage}{48} +\indexentry{RawROAMSystem@{RawROAMSystem}!trajSavePath@{trajSavePath}|hyperpage}{48} +\indexentry{trajSavePath@{trajSavePath}!RawROAMSystem@{RawROAMSystem}|hyperpage}{48} +\indexentry{RawROAMSystem@{RawROAMSystem}!wantToPlot@{wantToPlot}|hyperpage}{49} +\indexentry{wantToPlot@{wantToPlot}!RawROAMSystem@{RawROAMSystem}|hyperpage}{49} +\indexentry{testMotionDistortion@{testMotionDistortion}|hyperpage}{49} +\indexentry{testMotionDistortion@{testMotionDistortion}!A@{A}|hyperpage}{50} +\indexentry{A@{A}!testMotionDistortion@{testMotionDistortion}|hyperpage}{50} +\indexentry{testMotionDistortion@{testMotionDistortion}!A\_inv@{A\_inv}|hyperpage}{50} +\indexentry{A\_inv@{A\_inv}!testMotionDistortion@{testMotionDistortion}|hyperpage}{50} +\indexentry{testMotionDistortion@{testMotionDistortion}!alpha@{alpha}|hyperpage}{50} +\indexentry{alpha@{alpha}!testMotionDistortion@{testMotionDistortion}|hyperpage}{50} +\indexentry{testMotionDistortion@{testMotionDistortion}!clear@{clear}|hyperpage}{50} +\indexentry{clear@{clear}!testMotionDistortion@{testMotionDistortion}|hyperpage}{50} +\indexentry{testMotionDistortion@{testMotionDistortion}!cov\_p@{cov\_p}|hyperpage}{50} +\indexentry{cov\_p@{cov\_p}!testMotionDistortion@{testMotionDistortion}|hyperpage}{50} +\indexentry{testMotionDistortion@{testMotionDistortion}!cov\_v@{cov\_v}|hyperpage}{50} +\indexentry{cov\_v@{cov\_v}!testMotionDistortion@{testMotionDistortion}|hyperpage}{50} +\indexentry{testMotionDistortion@{testMotionDistortion}!currentFrame@{currentFrame}|hyperpage}{50} +\indexentry{currentFrame@{currentFrame}!testMotionDistortion@{testMotionDistortion}|hyperpage}{50} +\indexentry{testMotionDistortion@{testMotionDistortion}!distorted@{distorted}|hyperpage}{51} +\indexentry{distorted@{distorted}!testMotionDistortion@{testMotionDistortion}|hyperpage}{51} +\indexentry{testMotionDistortion@{testMotionDistortion}!False@{False}|hyperpage}{51} +\indexentry{False@{False}!testMotionDistortion@{testMotionDistortion}|hyperpage}{51} +\indexentry{testMotionDistortion@{testMotionDistortion}!final\_undistorted@{final\_undistorted}|hyperpage}{51} +\indexentry{final\_undistorted@{final\_undistorted}!testMotionDistortion@{testMotionDistortion}|hyperpage}{51} +\indexentry{testMotionDistortion@{testMotionDistortion}!frequency@{frequency}|hyperpage}{51} +\indexentry{frequency@{frequency}!testMotionDistortion@{testMotionDistortion}|hyperpage}{51} +\indexentry{testMotionDistortion@{testMotionDistortion}!groundTruth@{groundTruth}|hyperpage}{51} +\indexentry{groundTruth@{groundTruth}!testMotionDistortion@{testMotionDistortion}|hyperpage}{51} +\indexentry{testMotionDistortion@{testMotionDistortion}!h@{h}|hyperpage}{51} +\indexentry{h@{h}!testMotionDistortion@{testMotionDistortion}|hyperpage}{51} +\indexentry{testMotionDistortion@{testMotionDistortion}!h\_fit@{h\_fit}|hyperpage}{51} +\indexentry{h\_fit@{h\_fit}!testMotionDistortion@{testMotionDistortion}|hyperpage}{51} +\indexentry{testMotionDistortion@{testMotionDistortion}!MDS@{MDS}|hyperpage}{51} +\indexentry{MDS@{MDS}!testMotionDistortion@{testMotionDistortion}|hyperpage}{51} +\indexentry{testMotionDistortion@{testMotionDistortion}!N@{N}|hyperpage}{52} +\indexentry{N@{N}!testMotionDistortion@{testMotionDistortion}|hyperpage}{52} +\indexentry{testMotionDistortion@{testMotionDistortion}!n\_points@{n\_points}|hyperpage}{52} +\indexentry{n\_points@{n\_points}!testMotionDistortion@{testMotionDistortion}|hyperpage}{52} +\indexentry{testMotionDistortion@{testMotionDistortion}!noiseToAdd@{noiseToAdd}|hyperpage}{52} +\indexentry{noiseToAdd@{noiseToAdd}!testMotionDistortion@{testMotionDistortion}|hyperpage}{52} +\indexentry{testMotionDistortion@{testMotionDistortion}!noisy@{noisy}|hyperpage}{52} +\indexentry{noisy@{noisy}!testMotionDistortion@{testMotionDistortion}|hyperpage}{52} +\indexentry{testMotionDistortion@{testMotionDistortion}!outlier\_ind@{outlier\_ind}|hyperpage}{52} +\indexentry{outlier\_ind@{outlier\_ind}!testMotionDistortion@{testMotionDistortion}|hyperpage}{52} +\indexentry{testMotionDistortion@{testMotionDistortion}!outlier\_rate@{outlier\_rate}|hyperpage}{52} +\indexentry{outlier\_rate@{outlier\_rate}!testMotionDistortion@{testMotionDistortion}|hyperpage}{52} +\indexentry{testMotionDistortion@{testMotionDistortion}!p\_jt@{p\_jt}|hyperpage}{52} +\indexentry{p\_jt@{p\_jt}!testMotionDistortion@{testMotionDistortion}|hyperpage}{52} +\indexentry{testMotionDistortion@{testMotionDistortion}!p\_w@{p\_w}|hyperpage}{52} +\indexentry{p\_w@{p\_w}!testMotionDistortion@{testMotionDistortion}|hyperpage}{52} +\indexentry{testMotionDistortion@{testMotionDistortion}!params@{params}|hyperpage}{53} +\indexentry{params@{params}!testMotionDistortion@{testMotionDistortion}|hyperpage}{53} +\indexentry{testMotionDistortion@{testMotionDistortion}!period@{period}|hyperpage}{53} +\indexentry{period@{period}!testMotionDistortion@{testMotionDistortion}|hyperpage}{53} +\indexentry{testMotionDistortion@{testMotionDistortion}!plotDisplace@{plotDisplace}|hyperpage}{53} +\indexentry{plotDisplace@{plotDisplace}!testMotionDistortion@{testMotionDistortion}|hyperpage}{53} +\indexentry{testMotionDistortion@{testMotionDistortion}!R\_fit@{R\_fit}|hyperpage}{53} +\indexentry{R\_fit@{R\_fit}!testMotionDistortion@{testMotionDistortion}|hyperpage}{53} +\indexentry{testMotionDistortion@{testMotionDistortion}!show@{show}|hyperpage}{53} +\indexentry{show@{show}!testMotionDistortion@{testMotionDistortion}|hyperpage}{53} +\indexentry{testMotionDistortion@{testMotionDistortion}!solution@{solution}|hyperpage}{53} +\indexentry{solution@{solution}!testMotionDistortion@{testMotionDistortion}|hyperpage}{53} +\indexentry{testMotionDistortion@{testMotionDistortion}!srcCoord2@{srcCoord2}|hyperpage}{53} +\indexentry{srcCoord2@{srcCoord2}!testMotionDistortion@{testMotionDistortion}|hyperpage}{53} +\indexentry{testMotionDistortion@{testMotionDistortion}!srcCoord3@{srcCoord3}|hyperpage}{53} +\indexentry{srcCoord3@{srcCoord3}!testMotionDistortion@{testMotionDistortion}|hyperpage}{53} +\indexentry{testMotionDistortion@{testMotionDistortion}!T\_wj@{T\_wj}|hyperpage}{54} +\indexentry{T\_wj@{T\_wj}!testMotionDistortion@{testMotionDistortion}|hyperpage}{54} +\indexentry{testMotionDistortion@{testMotionDistortion}!T\_wj0@{T\_wj0}|hyperpage}{54} +\indexentry{T\_wj0@{T\_wj0}!testMotionDistortion@{testMotionDistortion}|hyperpage}{54} +\indexentry{testMotionDistortion@{testMotionDistortion}!theta\_deg@{theta\_deg}|hyperpage}{54} +\indexentry{theta\_deg@{theta\_deg}!testMotionDistortion@{testMotionDistortion}|hyperpage}{54} +\indexentry{testMotionDistortion@{testMotionDistortion}!theta\_fit@{theta\_fit}|hyperpage}{54} +\indexentry{theta\_fit@{theta\_fit}!testMotionDistortion@{testMotionDistortion}|hyperpage}{54} +\indexentry{testMotionDistortion@{testMotionDistortion}!title\_append@{title\_append}|hyperpage}{54} +\indexentry{title\_append@{title\_append}!testMotionDistortion@{testMotionDistortion}|hyperpage}{54} +\indexentry{testMotionDistortion@{testMotionDistortion}!transform@{transform}|hyperpage}{54} +\indexentry{transform@{transform}!testMotionDistortion@{testMotionDistortion}|hyperpage}{54} +\indexentry{testMotionDistortion@{testMotionDistortion}!undistorted@{undistorted}|hyperpage}{54} +\indexentry{undistorted@{undistorted}!testMotionDistortion@{testMotionDistortion}|hyperpage}{54} +\indexentry{testMotionDistortion@{testMotionDistortion}!useOld@{useOld}|hyperpage}{55} +\indexentry{useOld@{useOld}!testMotionDistortion@{testMotionDistortion}|hyperpage}{55} +\indexentry{testMotionDistortion@{testMotionDistortion}!v\_j0@{v\_j0}|hyperpage}{55} +\indexentry{v\_j0@{v\_j0}!testMotionDistortion@{testMotionDistortion}|hyperpage}{55} +\indexentry{testMotionDistortion@{testMotionDistortion}!velocity@{velocity}|hyperpage}{55} +\indexentry{velocity@{velocity}!testMotionDistortion@{testMotionDistortion}|hyperpage}{55} +\indexentry{testTransform@{testTransform}|hyperpage}{55} +\indexentry{testTransform@{testTransform}!A@{A}|hyperpage}{56} +\indexentry{A@{A}!testTransform@{testTransform}|hyperpage}{56} +\indexentry{testTransform@{testTransform}!A\_inv@{A\_inv}|hyperpage}{56} +\indexentry{A\_inv@{A\_inv}!testTransform@{testTransform}|hyperpage}{56} +\indexentry{testTransform@{testTransform}!alpha@{alpha}|hyperpage}{56} +\indexentry{alpha@{alpha}!testTransform@{testTransform}|hyperpage}{56} +\indexentry{testTransform@{testTransform}!clear@{clear}|hyperpage}{56} +\indexentry{clear@{clear}!testTransform@{testTransform}|hyperpage}{56} +\indexentry{testTransform@{testTransform}!False@{False}|hyperpage}{56} +\indexentry{False@{False}!testTransform@{testTransform}|hyperpage}{56} +\indexentry{testTransform@{testTransform}!h@{h}|hyperpage}{56} +\indexentry{h@{h}!testTransform@{testTransform}|hyperpage}{56} +\indexentry{testTransform@{testTransform}!h\_fit@{h\_fit}|hyperpage}{56} +\indexentry{h\_fit@{h\_fit}!testTransform@{testTransform}|hyperpage}{56} +\indexentry{testTransform@{testTransform}!N@{N}|hyperpage}{57} +\indexentry{N@{N}!testTransform@{testTransform}|hyperpage}{57} +\indexentry{testTransform@{testTransform}!n\_points@{n\_points}|hyperpage}{57} +\indexentry{n\_points@{n\_points}!testTransform@{testTransform}|hyperpage}{57} +\indexentry{testTransform@{testTransform}!noiseToAdd@{noiseToAdd}|hyperpage}{57} +\indexentry{noiseToAdd@{noiseToAdd}!testTransform@{testTransform}|hyperpage}{57} +\indexentry{testTransform@{testTransform}!noisy@{noisy}|hyperpage}{57} +\indexentry{noisy@{noisy}!testTransform@{testTransform}|hyperpage}{57} +\indexentry{testTransform@{testTransform}!outlier\_ind@{outlier\_ind}|hyperpage}{57} +\indexentry{outlier\_ind@{outlier\_ind}!testTransform@{testTransform}|hyperpage}{57} +\indexentry{testTransform@{testTransform}!outlier\_rate@{outlier\_rate}|hyperpage}{57} +\indexentry{outlier\_rate@{outlier\_rate}!testTransform@{testTransform}|hyperpage}{57} +\indexentry{testTransform@{testTransform}!R\_fit@{R\_fit}|hyperpage}{57} +\indexentry{R\_fit@{R\_fit}!testTransform@{testTransform}|hyperpage}{57} +\indexentry{testTransform@{testTransform}!show@{show}|hyperpage}{57} +\indexentry{show@{show}!testTransform@{testTransform}|hyperpage}{57} +\indexentry{testTransform@{testTransform}!srcCoord@{srcCoord}|hyperpage}{58} +\indexentry{srcCoord@{srcCoord}!testTransform@{testTransform}|hyperpage}{58} +\indexentry{testTransform@{testTransform}!srcCoord2@{srcCoord2}|hyperpage}{58} +\indexentry{srcCoord2@{srcCoord2}!testTransform@{testTransform}|hyperpage}{58} +\indexentry{testTransform@{testTransform}!targetCoord@{targetCoord}|hyperpage}{58} +\indexentry{targetCoord@{targetCoord}!testTransform@{testTransform}|hyperpage}{58} +\indexentry{testTransform@{testTransform}!theta\_deg@{theta\_deg}|hyperpage}{58} +\indexentry{theta\_deg@{theta\_deg}!testTransform@{testTransform}|hyperpage}{58} +\indexentry{testTransform@{testTransform}!theta\_fit@{theta\_fit}|hyperpage}{58} +\indexentry{theta\_fit@{theta\_fit}!testTransform@{testTransform}|hyperpage}{58} +\indexentry{testTransform@{testTransform}!title\_append@{title\_append}|hyperpage}{58} +\indexentry{title\_append@{title\_append}!testTransform@{testTransform}|hyperpage}{58} +\indexentry{testTransform@{testTransform}!useOld@{useOld}|hyperpage}{58} +\indexentry{useOld@{useOld}!testTransform@{testTransform}|hyperpage}{58} +\indexentry{Tracker@{Tracker}|hyperpage}{59} +\indexentry{trajectoryPlotting@{trajectoryPlotting}|hyperpage}{59} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!computePosesRMSE@{computePosesRMSE}|hyperpage}{59} +\indexentry{computePosesRMSE@{computePosesRMSE}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{59} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!getGroundTruthTrajectory@{getGroundTruthTrajectory}|hyperpage}{59} +\indexentry{getGroundTruthTrajectory@{getGroundTruthTrajectory}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{59} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!getGroundTruthTrajectoryGPS@{getGroundTruthTrajectoryGPS}|hyperpage}{60} +\indexentry{getGroundTruthTrajectoryGPS@{getGroundTruthTrajectoryGPS}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{60} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!plotGtAndEstTrajectory@{plotGtAndEstTrajectory}|hyperpage}{60} +\indexentry{plotGtAndEstTrajectory@{plotGtAndEstTrajectory}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{60} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!block@{block}|hyperpage}{60} +\indexentry{block@{block}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{60} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!datasetName@{datasetName}|hyperpage}{60} +\indexentry{datasetName@{datasetName}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{60} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!estPoses@{estPoses}|hyperpage}{61} +\indexentry{estPoses@{estPoses}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{61} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!estTraj@{estTraj}|hyperpage}{61} +\indexentry{estTraj@{estTraj}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{61} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!gtPath@{gtPath}|hyperpage}{61} +\indexentry{gtPath@{gtPath}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{61} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!gtTraj@{gtTraj}|hyperpage}{61} +\indexentry{gtTraj@{gtTraj}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{61} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!keyframe\_timestamps@{keyframe\_timestamps}|hyperpage}{61} +\indexentry{keyframe\_timestamps@{keyframe\_timestamps}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{61} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!noise@{noise}|hyperpage}{61} +\indexentry{noise@{noise}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{61} +\indexentry{trajectoryPlotting@{trajectoryPlotting}!timestampPath@{timestampPath}|hyperpage}{61} +\indexentry{timestampPath@{timestampPath}!trajectoryPlotting@{trajectoryPlotting}|hyperpage}{61} +\indexentry{utils@{utils}|hyperpage}{62} +\indexentry{utils@{utils}!convertPoseToTransform@{convertPoseToTransform}|hyperpage}{62} +\indexentry{convertPoseToTransform@{convertPoseToTransform}!utils@{utils}|hyperpage}{62} +\indexentry{utils@{utils}!convertRandHtoDeltas@{convertRandHtoDeltas}|hyperpage}{62} +\indexentry{convertRandHtoDeltas@{convertRandHtoDeltas}!utils@{utils}|hyperpage}{62} +\indexentry{utils@{utils}!convertTransformToPose@{convertTransformToPose}|hyperpage}{62} +\indexentry{convertTransformToPose@{convertTransformToPose}!utils@{utils}|hyperpage}{62} +\indexentry{utils@{utils}!f\_arr@{f\_arr}|hyperpage}{63} +\indexentry{f\_arr@{f\_arr}!utils@{utils}|hyperpage}{63} +\indexentry{utils@{utils}!flatten@{flatten}|hyperpage}{63} +\indexentry{flatten@{flatten}!utils@{utils}|hyperpage}{63} +\indexentry{utils@{utils}!getRotationMatrix@{getRotationMatrix}|hyperpage}{63} +\indexentry{getRotationMatrix@{getRotationMatrix}!utils@{utils}|hyperpage}{63} +\indexentry{utils@{utils}!homogenize@{homogenize}|hyperpage}{63} +\indexentry{homogenize@{homogenize}!utils@{utils}|hyperpage}{63} +\indexentry{utils@{utils}!invert\_transform@{invert\_transform}|hyperpage}{63} +\indexentry{invert\_transform@{invert\_transform}!utils@{utils}|hyperpage}{63} +\indexentry{utils@{utils}!normalize\_angles@{normalize\_angles}|hyperpage}{63} +\indexentry{normalize\_angles@{normalize\_angles}!utils@{utils}|hyperpage}{63} +\indexentry{utils@{utils}!plt\_full\_extent@{plt\_full\_extent}|hyperpage}{64} +\indexentry{plt\_full\_extent@{plt\_full\_extent}!utils@{utils}|hyperpage}{64} +\indexentry{utils@{utils}!plt\_savefig\_by\_axis@{plt\_savefig\_by\_axis}|hyperpage}{64} +\indexentry{plt\_savefig\_by\_axis@{plt\_savefig\_by\_axis}!utils@{utils}|hyperpage}{64} +\indexentry{utils@{utils}!quiver@{quiver}|hyperpage}{64} +\indexentry{quiver@{quiver}!utils@{utils}|hyperpage}{64} +\indexentry{utils@{utils}!radarImgPathToTimestamp@{radarImgPathToTimestamp}|hyperpage}{64} +\indexentry{radarImgPathToTimestamp@{radarImgPathToTimestamp}!utils@{utils}|hyperpage}{64} +\indexentry{utils@{utils}!tic@{tic}|hyperpage}{64} +\indexentry{tic@{tic}!utils@{utils}|hyperpage}{64} +\indexentry{utils@{utils}!toc@{toc}|hyperpage}{65} +\indexentry{toc@{toc}!utils@{utils}|hyperpage}{65} +\indexentry{BundleAdjustment@{BundleAdjustment}|hyperpage}{67} +\indexentry{BundleAdjustment@{BundleAdjustment}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{67} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!BundleAdjustment@{BundleAdjustment}|hyperpage}{67} +\indexentry{BundleAdjustment@{BundleAdjustment}!add\_edge@{add\_edge}|hyperpage}{67} +\indexentry{add\_edge@{add\_edge}!BundleAdjustment@{BundleAdjustment}|hyperpage}{67} +\indexentry{BundleAdjustment@{BundleAdjustment}!add\_point@{add\_point}|hyperpage}{67} +\indexentry{add\_point@{add\_point}!BundleAdjustment@{BundleAdjustment}|hyperpage}{67} +\indexentry{BundleAdjustment@{BundleAdjustment}!add\_pose@{add\_pose}|hyperpage}{68} +\indexentry{add\_pose@{add\_pose}!BundleAdjustment@{BundleAdjustment}|hyperpage}{68} +\indexentry{BundleAdjustment@{BundleAdjustment}!get\_point@{get\_point}|hyperpage}{68} +\indexentry{get\_point@{get\_point}!BundleAdjustment@{BundleAdjustment}|hyperpage}{68} +\indexentry{BundleAdjustment@{BundleAdjustment}!get\_pose@{get\_pose}|hyperpage}{68} +\indexentry{get\_pose@{get\_pose}!BundleAdjustment@{BundleAdjustment}|hyperpage}{68} +\indexentry{BundleAdjustment@{BundleAdjustment}!optimize@{optimize}|hyperpage}{68} +\indexentry{optimize@{optimize}!BundleAdjustment@{BundleAdjustment}|hyperpage}{68} +\indexentry{CartCoord@{CartCoord}|hyperpage}{69} +\indexentry{CartCoord@{CartCoord}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{69} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!CartCoord@{CartCoord}|hyperpage}{69} +\indexentry{CartCoord@{CartCoord}!\_\_str\_\_@{\_\_str\_\_}|hyperpage}{69} +\indexentry{\_\_str\_\_@{\_\_str\_\_}!CartCoord@{CartCoord}|hyperpage}{69} +\indexentry{CartCoord@{CartCoord}!add@{add}|hyperpage}{70} +\indexentry{add@{add}!CartCoord@{CartCoord}|hyperpage}{70} +\indexentry{CartCoord@{CartCoord}!addCoord@{addCoord}|hyperpage}{70} +\indexentry{addCoord@{addCoord}!CartCoord@{CartCoord}|hyperpage}{70} +\indexentry{CartCoord@{CartCoord}!asTuple@{asTuple}|hyperpage}{70} +\indexentry{asTuple@{asTuple}!CartCoord@{CartCoord}|hyperpage}{70} +\indexentry{CartCoord@{CartCoord}!getAngle@{getAngle}|hyperpage}{70} +\indexentry{getAngle@{getAngle}!CartCoord@{CartCoord}|hyperpage}{70} +\indexentry{CartCoord@{CartCoord}!getDistance@{getDistance}|hyperpage}{70} +\indexentry{getDistance@{getDistance}!CartCoord@{CartCoord}|hyperpage}{70} +\indexentry{CartCoord@{CartCoord}!getX@{getX}|hyperpage}{70} +\indexentry{getX@{getX}!CartCoord@{CartCoord}|hyperpage}{70} +\indexentry{CartCoord@{CartCoord}!getY@{getY}|hyperpage}{71} +\indexentry{getY@{getY}!CartCoord@{CartCoord}|hyperpage}{71} +\indexentry{CartCoord@{CartCoord}!scale@{scale}|hyperpage}{71} +\indexentry{scale@{scale}!CartCoord@{CartCoord}|hyperpage}{71} +\indexentry{CartCoord@{CartCoord}!scaleX@{scaleX}|hyperpage}{71} +\indexentry{scaleX@{scaleX}!CartCoord@{CartCoord}|hyperpage}{71} +\indexentry{CartCoord@{CartCoord}!scaleY@{scaleY}|hyperpage}{71} +\indexentry{scaleY@{scaleY}!CartCoord@{CartCoord}|hyperpage}{71} +\indexentry{CartCoord@{CartCoord}!sub@{sub}|hyperpage}{71} +\indexentry{sub@{sub}!CartCoord@{CartCoord}|hyperpage}{71} +\indexentry{CartCoord@{CartCoord}!x@{x}|hyperpage}{71} +\indexentry{x@{x}!CartCoord@{CartCoord}|hyperpage}{71} +\indexentry{CartCoord@{CartCoord}!y@{y}|hyperpage}{72} +\indexentry{y@{y}!CartCoord@{CartCoord}|hyperpage}{72} +\indexentry{Keyframe@{Keyframe}|hyperpage}{72} +\indexentry{Keyframe@{Keyframe}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{72} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!Keyframe@{Keyframe}|hyperpage}{72} +\indexentry{Keyframe@{Keyframe}!convertFeaturesLocalToGlobal@{convertFeaturesLocalToGlobal}|hyperpage}{73} +\indexentry{convertFeaturesLocalToGlobal@{convertFeaturesLocalToGlobal}!Keyframe@{Keyframe}|hyperpage}{73} +\indexentry{Keyframe@{Keyframe}!copyFromOtherKeyframe@{copyFromOtherKeyframe}|hyperpage}{73} +\indexentry{copyFromOtherKeyframe@{copyFromOtherKeyframe}!Keyframe@{Keyframe}|hyperpage}{73} +\indexentry{Keyframe@{Keyframe}!getPrunedFeaturesGlobalPosition@{getPrunedFeaturesGlobalPosition}|hyperpage}{73} +\indexentry{getPrunedFeaturesGlobalPosition@{getPrunedFeaturesGlobalPosition}!Keyframe@{Keyframe}|hyperpage}{73} +\indexentry{Keyframe@{Keyframe}!pruneFeaturePoints@{pruneFeaturePoints}|hyperpage}{73} +\indexentry{pruneFeaturePoints@{pruneFeaturePoints}!Keyframe@{Keyframe}|hyperpage}{73} +\indexentry{Keyframe@{Keyframe}!updateInfo@{updateInfo}|hyperpage}{73} +\indexentry{updateInfo@{updateInfo}!Keyframe@{Keyframe}|hyperpage}{73} +\indexentry{Keyframe@{Keyframe}!featurePointsLocal@{featurePointsLocal}|hyperpage}{74} +\indexentry{featurePointsLocal@{featurePointsLocal}!Keyframe@{Keyframe}|hyperpage}{74} +\indexentry{Keyframe@{Keyframe}!featurePointsLocalUndistorted@{featurePointsLocalUndistorted}|hyperpage}{74} +\indexentry{featurePointsLocalUndistorted@{featurePointsLocalUndistorted}!Keyframe@{Keyframe}|hyperpage}{74} +\indexentry{Keyframe@{Keyframe}!pointCloud@{pointCloud}|hyperpage}{74} +\indexentry{pointCloud@{pointCloud}!Keyframe@{Keyframe}|hyperpage}{74} +\indexentry{Keyframe@{Keyframe}!pose@{pose}|hyperpage}{74} +\indexentry{pose@{pose}!Keyframe@{Keyframe}|hyperpage}{74} +\indexentry{Keyframe@{Keyframe}!prunedFeaturePoints@{prunedFeaturePoints}|hyperpage}{74} +\indexentry{prunedFeaturePoints@{prunedFeaturePoints}!Keyframe@{Keyframe}|hyperpage}{74} +\indexentry{Keyframe@{Keyframe}!prunedUndistortedLocals@{prunedUndistortedLocals}|hyperpage}{74} +\indexentry{prunedUndistortedLocals@{prunedUndistortedLocals}!Keyframe@{Keyframe}|hyperpage}{74} +\indexentry{Keyframe@{Keyframe}!radarPolarImg@{radarPolarImg}|hyperpage}{75} +\indexentry{radarPolarImg@{radarPolarImg}!Keyframe@{Keyframe}|hyperpage}{75} +\indexentry{Keyframe@{Keyframe}!velocity@{velocity}|hyperpage}{75} +\indexentry{velocity@{velocity}!Keyframe@{Keyframe}|hyperpage}{75} +\indexentry{Map@{Map}|hyperpage}{75} +\indexentry{Map@{Map}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{75} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!Map@{Map}|hyperpage}{75} +\indexentry{Map@{Map}!addKeyframe@{addKeyframe}|hyperpage}{76} +\indexentry{addKeyframe@{addKeyframe}!Map@{Map}|hyperpage}{76} +\indexentry{Map@{Map}!isGoodKeyframe@{isGoodKeyframe}|hyperpage}{76} +\indexentry{isGoodKeyframe@{isGoodKeyframe}!Map@{Map}|hyperpage}{76} +\indexentry{Map@{Map}!plot@{plot}|hyperpage}{76} +\indexentry{plot@{plot}!Map@{Map}|hyperpage}{76} +\indexentry{Map@{Map}!updateInternalTraj@{updateInternalTraj}|hyperpage}{76} +\indexentry{updateInternalTraj@{updateInternalTraj}!Map@{Map}|hyperpage}{76} +\indexentry{Map@{Map}!estTraj@{estTraj}|hyperpage}{77} +\indexentry{estTraj@{estTraj}!Map@{Map}|hyperpage}{77} +\indexentry{Map@{Map}!filePaths@{filePaths}|hyperpage}{77} +\indexentry{filePaths@{filePaths}!Map@{Map}|hyperpage}{77} +\indexentry{Map@{Map}!imgPathArr@{imgPathArr}|hyperpage}{77} +\indexentry{imgPathArr@{imgPathArr}!Map@{Map}|hyperpage}{77} +\indexentry{Map@{Map}!keyframes@{keyframes}|hyperpage}{77} +\indexentry{keyframes@{keyframes}!Map@{Map}|hyperpage}{77} +\indexentry{Map@{Map}!mapPoints@{mapPoints}|hyperpage}{77} +\indexentry{mapPoints@{mapPoints}!Map@{Map}|hyperpage}{77} +\indexentry{Map@{Map}!sequenceName@{sequenceName}|hyperpage}{77} +\indexentry{sequenceName@{sequenceName}!Map@{Map}|hyperpage}{77} +\indexentry{Map@{Map}!sequenceSize@{sequenceSize}|hyperpage}{77} +\indexentry{sequenceSize@{sequenceSize}!Map@{Map}|hyperpage}{77} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{78} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{78} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{78} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{78} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{78} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!compute\_time\_deltas@{compute\_time\_deltas}|hyperpage}{79} +\indexentry{compute\_time\_deltas@{compute\_time\_deltas}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{79} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!error@{error}|hyperpage}{79} +\indexentry{error@{error}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{79} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!error\_vector@{error\_vector}|hyperpage}{79} +\indexentry{error\_vector@{error\_vector}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{79} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!expected\_observed\_pts@{expected\_observed\_pts}|hyperpage}{79} +\indexentry{expected\_observed\_pts@{expected\_observed\_pts}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{79} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!infer\_velocity@{infer\_velocity}|hyperpage}{80} +\indexentry{infer\_velocity@{infer\_velocity}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{80} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!jacobian@{jacobian}|hyperpage}{80} +\indexentry{jacobian@{jacobian}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{80} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!jacobian\_vector@{jacobian\_vector}|hyperpage}{80} +\indexentry{jacobian\_vector@{jacobian\_vector}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{80} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!optimize@{optimize}|hyperpage}{80} +\indexentry{optimize@{optimize}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{80} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!optimize\_library@{optimize\_library}|hyperpage}{80} +\indexentry{optimize\_library@{optimize\_library}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{80} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!undistort@{undistort}|hyperpage}{81} +\indexentry{undistort@{undistort}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{81} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!update\_problem@{update\_problem}|hyperpage}{81} +\indexentry{update\_problem@{update\_problem}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{81} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!debug@{debug}|hyperpage}{81} +\indexentry{debug@{debug}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{81} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!dT@{dT}|hyperpage}{81} +\indexentry{dT@{dT}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{81} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!info\_vector@{info\_vector}|hyperpage}{81} +\indexentry{info\_vector@{info\_vector}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{81} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!p\_jt@{p\_jt}|hyperpage}{82} +\indexentry{p\_jt@{p\_jt}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{82} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!p\_w@{p\_w}|hyperpage}{82} +\indexentry{p\_w@{p\_w}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{82} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!sigma\_p@{sigma\_p}|hyperpage}{82} +\indexentry{sigma\_p@{sigma\_p}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{82} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!sigma\_v@{sigma\_v}|hyperpage}{82} +\indexentry{sigma\_v@{sigma\_v}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{82} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!T\_wj0@{T\_wj0}|hyperpage}{82} +\indexentry{T\_wj0@{T\_wj0}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{82} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!T\_wj0\_inv@{T\_wj0\_inv}|hyperpage}{82} +\indexentry{T\_wj0\_inv@{T\_wj0\_inv}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{82} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!T\_wj\_initial@{T\_wj\_initial}|hyperpage}{82} +\indexentry{T\_wj\_initial@{T\_wj\_initial}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{82} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!total\_scan\_time@{total\_scan\_time}|hyperpage}{82} +\indexentry{total\_scan\_time@{total\_scan\_time}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{82} +\indexentry{MotionDistortionSolver@{MotionDistortionSolver}!v\_j\_initial@{v\_j\_initial}|hyperpage}{83} +\indexentry{v\_j\_initial@{v\_j\_initial}!MotionDistortionSolver@{MotionDistortionSolver}|hyperpage}{83} +\indexentry{PolarCoord@{PolarCoord}|hyperpage}{83} +\indexentry{PolarCoord@{PolarCoord}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{83} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!PolarCoord@{PolarCoord}|hyperpage}{83} +\indexentry{PolarCoord@{PolarCoord}!\_\_str\_\_@{\_\_str\_\_}|hyperpage}{84} +\indexentry{\_\_str\_\_@{\_\_str\_\_}!PolarCoord@{PolarCoord}|hyperpage}{84} +\indexentry{PolarCoord@{PolarCoord}!asTuple@{asTuple}|hyperpage}{84} +\indexentry{asTuple@{asTuple}!PolarCoord@{PolarCoord}|hyperpage}{84} +\indexentry{PolarCoord@{PolarCoord}!getR@{getR}|hyperpage}{84} +\indexentry{getR@{getR}!PolarCoord@{PolarCoord}|hyperpage}{84} +\indexentry{PolarCoord@{PolarCoord}!getTheta@{getTheta}|hyperpage}{84} +\indexentry{getTheta@{getTheta}!PolarCoord@{PolarCoord}|hyperpage}{84} +\indexentry{PolarCoord@{PolarCoord}!scaleR@{scaleR}|hyperpage}{84} +\indexentry{scaleR@{scaleR}!PolarCoord@{PolarCoord}|hyperpage}{84} +\indexentry{PolarCoord@{PolarCoord}!toCart@{toCart}|hyperpage}{84} +\indexentry{toCart@{toCart}!PolarCoord@{PolarCoord}|hyperpage}{84} +\indexentry{PolarCoord@{PolarCoord}!r@{r}|hyperpage}{85} +\indexentry{r@{r}!PolarCoord@{PolarCoord}|hyperpage}{85} +\indexentry{PolarCoord@{PolarCoord}!theta@{theta}|hyperpage}{85} +\indexentry{theta@{theta}!PolarCoord@{PolarCoord}|hyperpage}{85} +\indexentry{PoseGraphOptimization@{PoseGraphOptimization}|hyperpage}{85} +\indexentry{PoseGraphOptimization@{PoseGraphOptimization}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{85} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!PoseGraphOptimization@{PoseGraphOptimization}|hyperpage}{85} +\indexentry{PoseGraphOptimization@{PoseGraphOptimization}!add\_edge@{add\_edge}|hyperpage}{85} +\indexentry{add\_edge@{add\_edge}!PoseGraphOptimization@{PoseGraphOptimization}|hyperpage}{85} +\indexentry{PoseGraphOptimization@{PoseGraphOptimization}!add\_vertex@{add\_vertex}|hyperpage}{85} +\indexentry{add\_vertex@{add\_vertex}!PoseGraphOptimization@{PoseGraphOptimization}|hyperpage}{85} +\indexentry{PoseGraphOptimization@{PoseGraphOptimization}!get\_pose@{get\_pose}|hyperpage}{86} +\indexentry{get\_pose@{get\_pose}!PoseGraphOptimization@{PoseGraphOptimization}|hyperpage}{86} +\indexentry{PoseGraphOptimization@{PoseGraphOptimization}!optimize@{optimize}|hyperpage}{86} +\indexentry{optimize@{optimize}!PoseGraphOptimization@{PoseGraphOptimization}|hyperpage}{86} +\indexentry{RawROAMSystem@{RawROAMSystem}|hyperpage}{86} +\indexentry{RawROAMSystem@{RawROAMSystem}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{87} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!RawROAMSystem@{RawROAMSystem}|hyperpage}{87} +\indexentry{RawROAMSystem@{RawROAMSystem}!plot@{plot}|hyperpage}{87} +\indexentry{plot@{plot}!RawROAMSystem@{RawROAMSystem}|hyperpage}{87} +\indexentry{RawROAMSystem@{RawROAMSystem}!plotTraj@{plotTraj}|hyperpage}{87} +\indexentry{plotTraj@{plotTraj}!RawROAMSystem@{RawROAMSystem}|hyperpage}{87} +\indexentry{RawROAMSystem@{RawROAMSystem}!run@{run}|hyperpage}{88} +\indexentry{run@{run}!RawROAMSystem@{RawROAMSystem}|hyperpage}{88} +\indexentry{RawROAMSystem@{RawROAMSystem}!updateTrajectory@{updateTrajectory}|hyperpage}{88} +\indexentry{updateTrajectory@{updateTrajectory}!RawROAMSystem@{RawROAMSystem}|hyperpage}{88} +\indexentry{RawROAMSystem@{RawROAMSystem}!updateTrajectoryAbsolute@{updateTrajectoryAbsolute}|hyperpage}{88} +\indexentry{updateTrajectoryAbsolute@{updateTrajectoryAbsolute}!RawROAMSystem@{RawROAMSystem}|hyperpage}{88} +\indexentry{RawROAMSystem@{RawROAMSystem}!updateTrajFromTracker@{updateTrajFromTracker}|hyperpage}{89} +\indexentry{updateTrajFromTracker@{updateTrajFromTracker}!RawROAMSystem@{RawROAMSystem}|hyperpage}{89} +\indexentry{RawROAMSystem@{RawROAMSystem}!estTraj@{estTraj}|hyperpage}{89} +\indexentry{estTraj@{estTraj}!RawROAMSystem@{RawROAMSystem}|hyperpage}{89} +\indexentry{RawROAMSystem@{RawROAMSystem}!fig@{fig}|hyperpage}{89} +\indexentry{fig@{fig}!RawROAMSystem@{RawROAMSystem}|hyperpage}{89} +\indexentry{RawROAMSystem@{RawROAMSystem}!filePaths@{filePaths}|hyperpage}{89} +\indexentry{filePaths@{filePaths}!RawROAMSystem@{RawROAMSystem}|hyperpage}{89} +\indexentry{RawROAMSystem@{RawROAMSystem}!gtTraj@{gtTraj}|hyperpage}{89} +\indexentry{gtTraj@{gtTraj}!RawROAMSystem@{RawROAMSystem}|hyperpage}{89} +\indexentry{RawROAMSystem@{RawROAMSystem}!hasGroundTruth@{hasGroundTruth}|hyperpage}{89} +\indexentry{hasGroundTruth@{hasGroundTruth}!RawROAMSystem@{RawROAMSystem}|hyperpage}{89} +\indexentry{RawROAMSystem@{RawROAMSystem}!imgPathArr@{imgPathArr}|hyperpage}{90} +\indexentry{imgPathArr@{imgPathArr}!RawROAMSystem@{RawROAMSystem}|hyperpage}{90} +\indexentry{RawROAMSystem@{RawROAMSystem}!map@{map}|hyperpage}{90} +\indexentry{map@{map}!RawROAMSystem@{RawROAMSystem}|hyperpage}{90} +\indexentry{RawROAMSystem@{RawROAMSystem}!paramFlags@{paramFlags}|hyperpage}{90} +\indexentry{paramFlags@{paramFlags}!RawROAMSystem@{RawROAMSystem}|hyperpage}{90} +\indexentry{RawROAMSystem@{RawROAMSystem}!sequenceName@{sequenceName}|hyperpage}{90} +\indexentry{sequenceName@{sequenceName}!RawROAMSystem@{RawROAMSystem}|hyperpage}{90} +\indexentry{RawROAMSystem@{RawROAMSystem}!sequenceSize@{sequenceSize}|hyperpage}{90} +\indexentry{sequenceSize@{sequenceSize}!RawROAMSystem@{RawROAMSystem}|hyperpage}{90} +\indexentry{RawROAMSystem@{RawROAMSystem}!tracker@{tracker}|hyperpage}{90} +\indexentry{tracker@{tracker}!RawROAMSystem@{RawROAMSystem}|hyperpage}{90} +\indexentry{Tracker@{Tracker}|hyperpage}{91} +\indexentry{Tracker@{Tracker}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{91} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!Tracker@{Tracker}|hyperpage}{91} +\indexentry{Tracker@{Tracker}!getTransform@{getTransform}|hyperpage}{91} +\indexentry{getTransform@{getTransform}!Tracker@{Tracker}|hyperpage}{91} +\indexentry{Tracker@{Tracker}!initTraj@{initTraj}|hyperpage}{91} +\indexentry{initTraj@{initTraj}!Tracker@{Tracker}|hyperpage}{91} +\indexentry{Tracker@{Tracker}!plot@{plot}|hyperpage}{92} +\indexentry{plot@{plot}!Tracker@{Tracker}|hyperpage}{92} +\indexentry{Tracker@{Tracker}!track@{track}|hyperpage}{92} +\indexentry{track@{track}!Tracker@{Tracker}|hyperpage}{92} +\indexentry{Tracker@{Tracker}!estTraj@{estTraj}|hyperpage}{92} +\indexentry{estTraj@{estTraj}!Tracker@{Tracker}|hyperpage}{92} +\indexentry{Tracker@{Tracker}!filePaths@{filePaths}|hyperpage}{93} +\indexentry{filePaths@{filePaths}!Tracker@{Tracker}|hyperpage}{93} +\indexentry{Tracker@{Tracker}!gtTraj@{gtTraj}|hyperpage}{93} +\indexentry{gtTraj@{gtTraj}!Tracker@{Tracker}|hyperpage}{93} +\indexentry{Tracker@{Tracker}!imgPathArr@{imgPathArr}|hyperpage}{93} +\indexentry{imgPathArr@{imgPathArr}!Tracker@{Tracker}|hyperpage}{93} +\indexentry{Tracker@{Tracker}!paramFlags@{paramFlags}|hyperpage}{93} +\indexentry{paramFlags@{paramFlags}!Tracker@{Tracker}|hyperpage}{93} +\indexentry{Tracker@{Tracker}!sequenceName@{sequenceName}|hyperpage}{93} +\indexentry{sequenceName@{sequenceName}!Tracker@{Tracker}|hyperpage}{93} +\indexentry{Tracker@{Tracker}!sequenceSize@{sequenceSize}|hyperpage}{93} +\indexentry{sequenceSize@{sequenceSize}!Tracker@{Tracker}|hyperpage}{93} +\indexentry{Trajectory@{Trajectory}|hyperpage}{94} +\indexentry{Trajectory@{Trajectory}!\_\_init\_\_@{\_\_init\_\_}|hyperpage}{94} +\indexentry{\_\_init\_\_@{\_\_init\_\_}!Trajectory@{Trajectory}|hyperpage}{94} +\indexentry{Trajectory@{Trajectory}!appendAbsoluteTransform@{appendAbsoluteTransform}|hyperpage}{94} +\indexentry{appendAbsoluteTransform@{appendAbsoluteTransform}!Trajectory@{Trajectory}|hyperpage}{94} +\indexentry{Trajectory@{Trajectory}!appendRelativeDeltas@{appendRelativeDeltas}|hyperpage}{94} +\indexentry{appendRelativeDeltas@{appendRelativeDeltas}!Trajectory@{Trajectory}|hyperpage}{94} +\indexentry{Trajectory@{Trajectory}!appendRelativeTransform@{appendRelativeTransform}|hyperpage}{95} +\indexentry{appendRelativeTransform@{appendRelativeTransform}!Trajectory@{Trajectory}|hyperpage}{95} +\indexentry{Trajectory@{Trajectory}!getGroundTruthDeltasAtTime@{getGroundTruthDeltasAtTime}|hyperpage}{95} +\indexentry{getGroundTruthDeltasAtTime@{getGroundTruthDeltasAtTime}!Trajectory@{Trajectory}|hyperpage}{95} +\indexentry{Trajectory@{Trajectory}!getPoseAtTimes@{getPoseAtTimes}|hyperpage}{95} +\indexentry{getPoseAtTimes@{getPoseAtTimes}!Trajectory@{Trajectory}|hyperpage}{95} +\indexentry{Trajectory@{Trajectory}!plot@{plot}|hyperpage}{95} +\indexentry{plot@{plot}!Trajectory@{Trajectory}|hyperpage}{95} +\indexentry{Trajectory@{Trajectory}!pose\_transform@{pose\_transform}|hyperpage}{96} +\indexentry{pose\_transform@{pose\_transform}!Trajectory@{Trajectory}|hyperpage}{96} +\indexentry{Trajectory@{Trajectory}!poses@{poses}|hyperpage}{96} +\indexentry{poses@{poses}!Trajectory@{Trajectory}|hyperpage}{96} +\indexentry{Trajectory@{Trajectory}!timestamps@{timestamps}|hyperpage}{96} +\indexentry{timestamps@{timestamps}!Trajectory@{Trajectory}|hyperpage}{96} diff --git a/doc/latex/refman.ilg b/doc/latex/refman.ilg new file mode 100644 index 0000000..fca3124 --- /dev/null +++ b/doc/latex/refman.ilg @@ -0,0 +1,6 @@ +This is makeindex, version 2.15 [TeX Live 2021] (kpathsea + Thai support). +Scanning input file refman.idx....done (858 entries accepted, 0 rejected). +Sorting entries..........done (9584 comparisons). +Generating output file refman.ind....done (1233 lines written, 0 warnings). +Output written in refman.ind. +Transcript written in refman.ilg. diff --git a/doc/latex/refman.ind b/doc/latex/refman.ind new file mode 100644 index 0000000..08d9dd6 --- /dev/null +++ b/doc/latex/refman.ind @@ -0,0 +1,1233 @@ +\begin{theindex} + + \item {\_\_init\_\_} + \subitem {BundleAdjustment}, \hyperpage{67} + \subitem {CartCoord}, \hyperpage{69} + \subitem {Keyframe}, \hyperpage{72} + \subitem {Map}, \hyperpage{75} + \subitem {MotionDistortionSolver}, \hyperpage{78} + \subitem {PolarCoord}, \hyperpage{83} + \subitem {PoseGraphOptimization}, \hyperpage{85} + \subitem {RawROAMSystem}, \hyperpage{87} + \subitem {Tracker}, \hyperpage{91} + \subitem {Trajectory}, \hyperpage{94} + \item {\_\_str\_\_} + \subitem {CartCoord}, \hyperpage{69} + \subitem {PolarCoord}, \hyperpage{84} + + \indexspace + + \item {A} + \subitem {testMotionDistortion}, \hyperpage{50} + \subitem {testTransform}, \hyperpage{56} + \item {A\_inv} + \subitem {testMotionDistortion}, \hyperpage{50} + \subitem {testTransform}, \hyperpage{56} + \item {adaptiveNMS} + \subitem {getFeatures}, \hyperpage{19} + \item {add} + \subitem {CartCoord}, \hyperpage{70} + \item {add\_edge} + \subitem {BundleAdjustment}, \hyperpage{67} + \subitem {PoseGraphOptimization}, \hyperpage{85} + \item {add\_point} + \subitem {BundleAdjustment}, \hyperpage{67} + \item {add\_pose} + \subitem {BundleAdjustment}, \hyperpage{68} + \item {add\_vertex} + \subitem {PoseGraphOptimization}, \hyperpage{85} + \item {addCoord} + \subitem {CartCoord}, \hyperpage{70} + \item {addKeyframe} + \subitem {Map}, \hyperpage{76} + \item {addNoise} + \subitem {genFakeData}, \hyperpage{15} + \item {alpha} + \subitem {getTransformKLT}, \hyperpage{30} + \subitem {outlierRejection}, \hyperpage{39} + \subitem {testMotionDistortion}, \hyperpage{50} + \subitem {testTransform}, \hyperpage{56} + \item {ANMS}, \hyperpage{9} + \subitem {ssc}, \hyperpage{9} + \item {appendAbsoluteTransform} + \subitem {Trajectory}, \hyperpage{94} + \item {appendNewFeatures} + \subitem {getFeatures}, \hyperpage{19} + \item {appendRelativeDeltas} + \subitem {Trajectory}, \hyperpage{94} + \item {appendRelativeTransform} + \subitem {Trajectory}, \hyperpage{95} + \item {asTuple} + \subitem {CartCoord}, \hyperpage{70} + \subitem {PolarCoord}, \hyperpage{84} + + \indexspace + + \item {bad\_new} + \subitem {getTransformKLT}, \hyperpage{30} + \item {bad\_old} + \subitem {getTransformKLT}, \hyperpage{30} + \item {blobCoord} + \subitem {getTransformKLT}, \hyperpage{30} + \item {blobIndices} + \subitem {getFeatures}, \hyperpage{20} + \item {blobSigma} + \subitem {getFeatures}, \hyperpage{20} + \item {blobX} + \subitem {getFeatures}, \hyperpage{20} + \item {blobY} + \subitem {getFeatures}, \hyperpage{20} + \item {block} + \subitem {trajectoryPlotting}, \hyperpage{60} + \item {BundleAdjustment}, \hyperpage{67} + \subitem {\_\_init\_\_}, \hyperpage{67} + \subitem {add\_edge}, \hyperpage{67} + \subitem {add\_point}, \hyperpage{67} + \subitem {add\_pose}, \hyperpage{68} + \subitem {get\_point}, \hyperpage{68} + \subitem {get\_pose}, \hyperpage{68} + \subitem {optimize}, \hyperpage{68} + + \indexspace + + \item {c} + \subitem {getPointCloud}, \hyperpage{24} + \subitem {parseData}, \hyperpage{45} + \item {calculateFeatureLossThreshold} + \subitem {getFeatures}, \hyperpage{19} + \item {calculateTransform} + \subitem {getTransformKLT}, \hyperpage{27} + \item {calculateTransformDth} + \subitem {getTransformKLT}, \hyperpage{28} + \item {calculateTransformDxDth} + \subitem {getTransformKLT}, \hyperpage{28} + \item {calculateTransformSVD} + \subitem {getTransformKLT}, \hyperpage{28} + \item {CartCoord}, \hyperpage{69} + \subitem {\_\_init\_\_}, \hyperpage{69} + \subitem {\_\_str\_\_}, \hyperpage{69} + \subitem {add}, \hyperpage{70} + \subitem {addCoord}, \hyperpage{70} + \subitem {asTuple}, \hyperpage{70} + \subitem {getAngle}, \hyperpage{70} + \subitem {getDistance}, \hyperpage{70} + \subitem {getX}, \hyperpage{70} + \subitem {getY}, \hyperpage{71} + \subitem {scale}, \hyperpage{71} + \subitem {scaleX}, \hyperpage{71} + \subitem {scaleY}, \hyperpage{71} + \subitem {sub}, \hyperpage{71} + \subitem {x}, \hyperpage{71} + \subitem {y}, \hyperpage{72} + \item {clear} + \subitem {testMotionDistortion}, \hyperpage{50} + \subitem {testTransform}, \hyperpage{56} + \item {color} + \subitem {getFeatures}, \hyperpage{20} + \item {compute\_time\_deltas} + \subitem {MotionDistortionSolver}, \hyperpage{79} + \item {computePosesRMSE} + \subitem {trajectoryPlotting}, \hyperpage{59} + \item {convertCartesianImageToPolar} + \subitem {parseData}, \hyperpage{42} + \item {convertFeaturesLocalToGlobal} + \subitem {Keyframe}, \hyperpage{73} + \item {convertPolarImageToCartesian} + \subitem {parseData}, \hyperpage{42} + \item {convertPolarImgToLogPolar} + \subitem {parseData}, \hyperpage{43} + \item {convertPolarPointsToCartesian} + \subitem {genFakeData}, \hyperpage{15} + \item {convertPoseToTransform} + \subitem {utils}, \hyperpage{62} + \item {convertRandHtoDeltas} + \subitem {utils}, \hyperpage{62} + \item {convertTransformToPose} + \subitem {utils}, \hyperpage{62} + \item {Coord}, \hyperpage{9} + \item {coord} + \subitem {getFeatures}, \hyperpage{21} + \item {copyFromOtherKeyframe} + \subitem {Keyframe}, \hyperpage{73} + \item {corrStatus} + \subitem {getTransformKLT}, \hyperpage{30} + \item {cov\_p} + \subitem {testMotionDistortion}, \hyperpage{50} + \item {cov\_v} + \subitem {testMotionDistortion}, \hyperpage{50} + \item {createOutliers} + \subitem {genFakeData}, \hyperpage{15} + \item {currentFrame} + \subitem {testMotionDistortion}, \hyperpage{50} + \item {currImg} + \subitem {getTransformKLT}, \hyperpage{30} + \item {currImgCart} + \subitem {FMT}, \hyperpage{12} + \item {currImgPolar} + \subitem {FMT}, \hyperpage{12} + \item {currTimestamp} + \subitem {getTransformKLT}, \hyperpage{30} + + \indexspace + + \item {dataPath} + \subitem {FMT}, \hyperpage{12} + \subitem {getFeatures}, \hyperpage{21} + \subitem {getPointCloud}, \hyperpage{24} + \subitem {getTransformKLT}, \hyperpage{30} + \subitem {parseData}, \hyperpage{45} + \item {datasetName} + \subitem {getFeatures}, \hyperpage{21} + \subitem {getPointCloud}, \hyperpage{24} + \subitem {getTransformKLT}, \hyperpage{31} + \subitem {parseData}, \hyperpage{45} + \subitem {RawROAMSystem}, \hyperpage{47} + \subitem {trajectoryPlotting}, \hyperpage{60} + \item {debug} + \subitem {MotionDistortionSolver}, \hyperpage{81} + \item {DEFAULT\_FEATURE\_PARAMS} + \subitem {getFeatures}, \hyperpage{21} + \item {DIST\_THRESHOLD\_M} + \subitem {outlierRejection}, \hyperpage{39} + \item {DIST\_THRESHOLD\_PX} + \subitem {outlierRejection}, \hyperpage{39} + \item {distort} + \subitem {genFakeData}, \hyperpage{16} + \item {distorted} + \subitem {testMotionDistortion}, \hyperpage{51} + \item {DISTSQ\_THRESHOLD\_PX} + \subitem {outlierRejection}, \hyperpage{39} + \item {DOWNSAMPLE\_FACTOR} + \subitem {parseData}, \hyperpage{45} + \item {drawCVPoint} + \subitem {parseData}, \hyperpage{43} + \item {dT} + \subitem {MotionDistortionSolver}, \hyperpage{81} + \item {dth} + \subitem {getTransformKLT}, \hyperpage{31} + \item {dx} + \subitem {getTransformKLT}, \hyperpage{31} + + \indexspace + + \item {end} + \subitem {getFeatures}, \hyperpage{21} + \item {endSeqInd} + \subitem {FMT}, \hyperpage{12} + \subitem {RawROAMSystem}, \hyperpage{47} + \item {ERR\_THRESHOLD} + \subitem {getTransformKLT}, \hyperpage{31} + \item {error} + \subitem {MotionDistortionSolver}, \hyperpage{79} + \item {error\_vector} + \subitem {MotionDistortionSolver}, \hyperpage{79} + \item {est\_deltas} + \subitem {getTransformKLT}, \hyperpage{31} + \item {estimateTransformUsingDelats} + \subitem {getTransformKLT}, \hyperpage{28} + \item {estPoses} + \subitem {trajectoryPlotting}, \hyperpage{61} + \item {estTraj} + \subitem {getTransformKLT}, \hyperpage{31} + \subitem {Map}, \hyperpage{77} + \subitem {RawROAMSystem}, \hyperpage{89} + \subitem {Tracker}, \hyperpage{92} + \subitem {trajectoryPlotting}, \hyperpage{61} + \item {exist\_ok} + \subitem {FMT}, \hyperpage{12} + \subitem {getFeatures}, \hyperpage{21} + \subitem {getTransformKLT}, \hyperpage{31} + \item {expected\_observed\_pts} + \subitem {MotionDistortionSolver}, \hyperpage{79} + \item {extractDataFromRadarImage} + \subitem {parseData}, \hyperpage{43} + \item {extraLabel} + \subitem {getTransformKLT}, \hyperpage{31} + + \indexspace + + \item {f\_arr} + \subitem {utils}, \hyperpage{63} + \item {False} + \subitem {testMotionDistortion}, \hyperpage{51} + \subitem {testTransform}, \hyperpage{56} + \item {featureAzim} + \subitem {getPointCloud}, \hyperpage{25} + \item {featureImgCart} + \subitem {getPointCloud}, \hyperpage{25} + \item {featurePointsLocal} + \subitem {Keyframe}, \hyperpage{74} + \item {featurePointsLocalUndistorted} + \subitem {Keyframe}, \hyperpage{74} + \item {featurePolarImage} + \subitem {getPointCloud}, \hyperpage{25} + \item {featurePolarIndices} + \subitem {getPointCloud}, \hyperpage{25} + \item {featureRange} + \subitem {getPointCloud}, \hyperpage{25} + \item {fig} + \subitem {RawROAMSystem}, \hyperpage{89} + \item {filePaths} + \subitem {Map}, \hyperpage{77} + \subitem {RawROAMSystem}, \hyperpage{89} + \subitem {Tracker}, \hyperpage{93} + \item {final\_undistorted} + \subitem {testMotionDistortion}, \hyperpage{51} + \item {flatten} + \subitem {utils}, \hyperpage{63} + \item {flush} + \subitem {getFeatures}, \hyperpage{21} + \item {FMT}, \hyperpage{10} + \subitem {currImgCart}, \hyperpage{12} + \subitem {currImgPolar}, \hyperpage{12} + \subitem {dataPath}, \hyperpage{12} + \subitem {endSeqInd}, \hyperpage{12} + \subitem {exist\_ok}, \hyperpage{12} + \subitem {FMT\_DOWNSAMPLE\_FACTOR}, \hyperpage{12} + \subitem {FMT\_RANGE\_CLIP\_M}, \hyperpage{12} + \subitem {getRotationUsingFMT}, \hyperpage{10} + \subitem {getTranslationUsingPhaseCorrelation}, \hyperpage{11} + \subitem {imgPathArr}, \hyperpage{13} + \subitem {imgSavePath}, \hyperpage{13} + \subitem {imgSavePathInd}, \hyperpage{13} + \subitem {plotCartPolar}, \hyperpage{11} + \subitem {plotCartPolarWithRotation}, \hyperpage{11} + \subitem {prevImgCart}, \hyperpage{13} + \subitem {prevImgPolar}, \hyperpage{13} + \subitem {REMOVE\_OLD\_RESULTS}, \hyperpage{13} + \subitem {response}, \hyperpage{13} + \subitem {rotateImg}, \hyperpage{11} + \subitem {rotRad}, \hyperpage{14} + \subitem {scale}, \hyperpage{14} + \subitem {sequenceName}, \hyperpage{14} + \subitem {sequenceSize}, \hyperpage{14} + \subitem {startSeqInd}, \hyperpage{14} + \subitem {stepSize}, \hyperpage{14} + \subitem {timestampPath}, \hyperpage{14} + \item {FMT\_DOWNSAMPLE\_FACTOR} + \subitem {FMT}, \hyperpage{12} + \item {FMT\_RANGE\_CLIP\_M} + \subitem {FMT}, \hyperpage{12} + \item {FORCE\_OUTLIERS} + \subitem {outlierRejection}, \hyperpage{39} + \item {frequency} + \subitem {testMotionDistortion}, \hyperpage{51} + + \indexspace + + \item {generateFakeCorrespondences} + \subitem {genFakeData}, \hyperpage{16} + \item {generateFakeCorrespondencesPolar} + \subitem {genFakeData}, \hyperpage{16} + \item {generateFakeFeatures} + \subitem {genFakeData}, \hyperpage{17} + \item {generateFakeFeaturesPolar} + \subitem {genFakeData}, \hyperpage{17} + \item {generateTranslationVector} + \subitem {genFakeData}, \hyperpage{17} + \item {genFakeData}, \hyperpage{15} + \subitem {addNoise}, \hyperpage{15} + \subitem {convertPolarPointsToCartesian}, \hyperpage{15} + \subitem {createOutliers}, \hyperpage{15} + \subitem {distort}, \hyperpage{16} + \subitem {generateFakeCorrespondences}, \hyperpage{16} + \subitem {generateFakeCorrespondencesPolar}, \hyperpage{16} + \subitem {generateFakeFeatures}, \hyperpage{17} + \subitem {generateFakeFeaturesPolar}, \hyperpage{17} + \subitem {generateTranslationVector}, \hyperpage{17} + \subitem {plotFakeFeatures}, \hyperpage{17} + \subitem {transformCoords}, \hyperpage{17} + \item {get\_point} + \subitem {BundleAdjustment}, \hyperpage{68} + \item {get\_pose} + \subitem {BundleAdjustment}, \hyperpage{68} + \subitem {PoseGraphOptimization}, \hyperpage{86} + \item {getAngle} + \subitem {CartCoord}, \hyperpage{70} + \item {getBlobsFromCart} + \subitem {getFeatures}, \hyperpage{19} + \item {getCartImageFromImgPaths} + \subitem {parseData}, \hyperpage{43} + \item {getDataFromImgPathsByIndex} + \subitem {parseData}, \hyperpage{44} + \item {getDistance} + \subitem {CartCoord}, \hyperpage{70} + \item {getFeatures}, \hyperpage{18} + \subitem {adaptiveNMS}, \hyperpage{19} + \subitem {appendNewFeatures}, \hyperpage{19} + \subitem {blobIndices}, \hyperpage{20} + \subitem {blobSigma}, \hyperpage{20} + \subitem {blobX}, \hyperpage{20} + \subitem {blobY}, \hyperpage{20} + \subitem {calculateFeatureLossThreshold}, \hyperpage{19} + \subitem {color}, \hyperpage{20} + \subitem {coord}, \hyperpage{21} + \subitem {dataPath}, \hyperpage{21} + \subitem {datasetName}, \hyperpage{21} + \subitem {DEFAULT\_FEATURE\_PARAMS}, \hyperpage{21} + \subitem {end}, \hyperpage{21} + \subitem {exist\_ok}, \hyperpage{21} + \subitem {flush}, \hyperpage{21} + \subitem {getBlobsFromCart}, \hyperpage{19} + \subitem {getFeatures}, \hyperpage{19} + \subitem {imgCart}, \hyperpage{22} + \subitem {imgCartBGR}, \hyperpage{22} + \subitem {imgPolar}, \hyperpage{22} + \subitem {N\_FEATURES\_BEFORE\_RETRACK}, \hyperpage{22} + \subitem {nImgs}, \hyperpage{22} + \subitem {nIndices}, \hyperpage{22} + \subitem {nIndicesANMS}, \hyperpage{22} + \subitem {PERCENT\_FEATURE\_LOSS\_THRESHOLD}, \hyperpage{22} + \subitem {s\_blobIndices}, \hyperpage{23} + \subitem {streamArr}, \hyperpage{23} + \subitem {timestampPath}, \hyperpage{23} + \subitem {toSaveImgPath}, \hyperpage{23} + \subitem {toSavePath}, \hyperpage{23} + \item {getGroundTruthDeltasAtTime} + \subitem {Trajectory}, \hyperpage{95} + \item {getGroundTruthTrajectory} + \subitem {trajectoryPlotting}, \hyperpage{59} + \item {getGroundTruthTrajectoryGPS} + \subitem {trajectoryPlotting}, \hyperpage{60} + \item {getPointCloud}, \hyperpage{23} + \subitem {c}, \hyperpage{24} + \subitem {dataPath}, \hyperpage{24} + \subitem {datasetName}, \hyperpage{24} + \subitem {featureAzim}, \hyperpage{25} + \subitem {featureImgCart}, \hyperpage{25} + \subitem {featurePolarImage}, \hyperpage{25} + \subitem {featurePolarIndices}, \hyperpage{25} + \subitem {featureRange}, \hyperpage{25} + \subitem {getPointCloudPolarInd}, \hyperpage{24} + \subitem {imgCart}, \hyperpage{25} + \subitem {imgCartRGB}, \hyperpage{25} + \subitem {imgPolar}, \hyperpage{25} + \subitem {nImgs}, \hyperpage{26} + \subitem {streamArr}, \hyperpage{26} + \subitem {timestampPath}, \hyperpage{26} + \item {getPointCloudPolarInd} + \subitem {getPointCloud}, \hyperpage{24} + \item {getPolarImageFromImgPaths} + \subitem {parseData}, \hyperpage{44} + \item {getPoseAtTimes} + \subitem {Trajectory}, \hyperpage{95} + \item {getPrunedFeaturesGlobalPosition} + \subitem {Keyframe}, \hyperpage{73} + \item {getR} + \subitem {PolarCoord}, \hyperpage{84} + \item {getRadarImgPaths} + \subitem {parseData}, \hyperpage{44} + \item {getRadarStreamPolar} + \subitem {parseData}, \hyperpage{45} + \item {getRotationMatrix} + \subitem {utils}, \hyperpage{63} + \item {getRotationUsingFMT} + \subitem {FMT}, \hyperpage{10} + \item {getTheta} + \subitem {PolarCoord}, \hyperpage{84} + \item {getTrackedPointsKLT} + \subitem {getTransformKLT}, \hyperpage{29} + \item {getTransform} + \subitem {Tracker}, \hyperpage{91} + \item {getTransformKLT}, \hyperpage{26} + \subitem {alpha}, \hyperpage{30} + \subitem {bad\_new}, \hyperpage{30} + \subitem {bad\_old}, \hyperpage{30} + \subitem {blobCoord}, \hyperpage{30} + \subitem {calculateTransform}, \hyperpage{27} + \subitem {calculateTransformDth}, \hyperpage{28} + \subitem {calculateTransformDxDth}, \hyperpage{28} + \subitem {calculateTransformSVD}, \hyperpage{28} + \subitem {corrStatus}, \hyperpage{30} + \subitem {currImg}, \hyperpage{30} + \subitem {currTimestamp}, \hyperpage{30} + \subitem {dataPath}, \hyperpage{30} + \subitem {datasetName}, \hyperpage{31} + \subitem {dth}, \hyperpage{31} + \subitem {dx}, \hyperpage{31} + \subitem {ERR\_THRESHOLD}, \hyperpage{31} + \subitem {est\_deltas}, \hyperpage{31} + \subitem {estimateTransformUsingDelats}, \hyperpage{28} + \subitem {estTraj}, \hyperpage{31} + \subitem {exist\_ok}, \hyperpage{31} + \subitem {extraLabel}, \hyperpage{31} + \subitem {getTrackedPointsKLT}, \hyperpage{29} + \subitem {good\_new}, \hyperpage{32} + \subitem {good\_old}, \hyperpage{32} + \subitem {gt\_deltas}, \hyperpage{32} + \subitem {gtTraj}, \hyperpage{32} + \subitem {gtTrajPath}, \hyperpage{32} + \subitem {h}, \hyperpage{32} + \subitem {imgPathArr}, \hyperpage{32} + \subitem {imgSavePath}, \hyperpage{32} + \subitem {initPose}, \hyperpage{33} + \subitem {initTimestamp}, \hyperpage{33} + \subitem {LK\_PARAMS}, \hyperpage{33} + \subitem {N\_FEATURES\_BEFORE\_RETRACK}, \hyperpage{33} + \subitem {nBadFeatures}, \hyperpage{33} + \subitem {nFeatures}, \hyperpage{33} + \subitem {nGoodFeatures}, \hyperpage{34} + \subitem {nImgs}, \hyperpage{34} + \subitem {PLOT\_BAD\_FEATURES}, \hyperpage{34} + \subitem {prev\_good\_old}, \hyperpage{34} + \subitem {prevImg}, \hyperpage{34} + \subitem {R}, \hyperpage{34} + \subitem {REMOVE\_OLD\_RESULTS}, \hyperpage{34} + \subitem {saveFeaturePath}, \hyperpage{34} + \subitem {savePath}, \hyperpage{35} + \subitem {show}, \hyperpage{35} + \subitem {start}, \hyperpage{35} + \subitem {startImgInd}, \hyperpage{35} + \subitem {timestamp}, \hyperpage{35} + \subitem {timestampPath}, \hyperpage{35} + \subitem {toSaveImgPath}, \hyperpage{35} + \subitem {toSaveTrajPath}, \hyperpage{36} + \subitem {trajSavePath}, \hyperpage{36} + \subitem {transformed\_pts}, \hyperpage{36} + \subitem {visualize\_transform}, \hyperpage{29} + \item {getTranslationUsingPhaseCorrelation} + \subitem {FMT}, \hyperpage{11} + \item {getX} + \subitem {CartCoord}, \hyperpage{70} + \item {getY} + \subitem {CartCoord}, \hyperpage{71} + \item {good\_new} + \subitem {getTransformKLT}, \hyperpage{32} + \item {good\_old} + \subitem {getTransformKLT}, \hyperpage{32} + \item {groundTruth} + \subitem {testMotionDistortion}, \hyperpage{51} + \item {gt\_deltas} + \subitem {getTransformKLT}, \hyperpage{32} + \item {gtPath} + \subitem {trajectoryPlotting}, \hyperpage{61} + \item {gtTraj} + \subitem {getTransformKLT}, \hyperpage{32} + \subitem {RawROAMSystem}, \hyperpage{89} + \subitem {Tracker}, \hyperpage{93} + \subitem {trajectoryPlotting}, \hyperpage{61} + \item {gtTrajPath} + \subitem {getTransformKLT}, \hyperpage{32} + + \indexspace + + \item {h} + \subitem {getTransformKLT}, \hyperpage{32} + \subitem {testMotionDistortion}, \hyperpage{51} + \subitem {testTransform}, \hyperpage{56} + \item {h\_fit} + \subitem {testMotionDistortion}, \hyperpage{51} + \subitem {testTransform}, \hyperpage{56} + \item {hasGroundTruth} + \subitem {RawROAMSystem}, \hyperpage{89} + \item {homogenize} + \subitem {utils}, \hyperpage{63} + + \indexspace + + \item {imgCart} + \subitem {getFeatures}, \hyperpage{22} + \subitem {getPointCloud}, \hyperpage{25} + \subitem {parseData}, \hyperpage{46} + \item {imgCartBGR} + \subitem {getFeatures}, \hyperpage{22} + \item {imgCartRGB} + \subitem {getPointCloud}, \hyperpage{25} + \item {imgPathArr} + \subitem {FMT}, \hyperpage{13} + \subitem {getTransformKLT}, \hyperpage{32} + \subitem {Map}, \hyperpage{77} + \subitem {RawROAMSystem}, \hyperpage{90} + \subitem {Tracker}, \hyperpage{93} + \item {imgPolar} + \subitem {getFeatures}, \hyperpage{22} + \subitem {getPointCloud}, \hyperpage{25} + \subitem {parseData}, \hyperpage{46} + \item {imgSavePath} + \subitem {FMT}, \hyperpage{13} + \subitem {getTransformKLT}, \hyperpage{32} + \subitem {RawROAMSystem}, \hyperpage{47} + \item {imgSavePathInd} + \subitem {FMT}, \hyperpage{13} + \item {infer\_velocity} + \subitem {MotionDistortionSolver}, \hyperpage{80} + \item {info\_vector} + \subitem {MotionDistortionSolver}, \hyperpage{81} + \item {initPose} + \subitem {getTransformKLT}, \hyperpage{33} + \item {initTimestamp} + \subitem {getTransformKLT}, \hyperpage{33} + \item {initTraj} + \subitem {Tracker}, \hyperpage{91} + \item {invert\_transform} + \subitem {utils}, \hyperpage{63} + \item {isGoodKeyframe} + \subitem {Map}, \hyperpage{76} + + \indexspace + + \item {jacobian} + \subitem {MotionDistortionSolver}, \hyperpage{80} + \item {jacobian\_vector} + \subitem {MotionDistortionSolver}, \hyperpage{80} + + \indexspace + + \item {Keyframe}, \hyperpage{72} + \subitem {\_\_init\_\_}, \hyperpage{72} + \subitem {convertFeaturesLocalToGlobal}, \hyperpage{73} + \subitem {copyFromOtherKeyframe}, \hyperpage{73} + \subitem {featurePointsLocal}, \hyperpage{74} + \subitem {featurePointsLocalUndistorted}, \hyperpage{74} + \subitem {getPrunedFeaturesGlobalPosition}, \hyperpage{73} + \subitem {pointCloud}, \hyperpage{74} + \subitem {pose}, \hyperpage{74} + \subitem {prunedFeaturePoints}, \hyperpage{74} + \subitem {prunedUndistortedLocals}, \hyperpage{74} + \subitem {pruneFeaturePoints}, \hyperpage{73} + \subitem {radarPolarImg}, \hyperpage{75} + \subitem {updateInfo}, \hyperpage{73} + \subitem {velocity}, \hyperpage{75} + \item {keyframe\_timestamps} + \subitem {trajectoryPlotting}, \hyperpage{61} + \item {keyframes} + \subitem {Map}, \hyperpage{77} + + \indexspace + + \item {LK\_PARAMS} + \subitem {getTransformKLT}, \hyperpage{33} + + \indexspace + + \item {Map}, \hyperpage{75} + \subitem {\_\_init\_\_}, \hyperpage{75} + \subitem {addKeyframe}, \hyperpage{76} + \subitem {estTraj}, \hyperpage{77} + \subitem {filePaths}, \hyperpage{77} + \subitem {imgPathArr}, \hyperpage{77} + \subitem {isGoodKeyframe}, \hyperpage{76} + \subitem {keyframes}, \hyperpage{77} + \subitem {mapPoints}, \hyperpage{77} + \subitem {plot}, \hyperpage{76} + \subitem {sequenceName}, \hyperpage{77} + \subitem {sequenceSize}, \hyperpage{77} + \subitem {updateInternalTraj}, \hyperpage{76} + \item {map} + \subitem {RawROAMSystem}, \hyperpage{90} + \item {Mapping}, \hyperpage{36} + \subitem {RADAR\_CART\_CENTER}, \hyperpage{36} + \subitem {ROT\_THRESHOLD}, \hyperpage{37} + \subitem {TRANS\_THRESHOLD}, \hyperpage{37} + \subitem {TRANS\_THRESHOLD\_SQ}, \hyperpage{37} + \item {mapPoints} + \subitem {Map}, \hyperpage{77} + \item {MAX\_RANGE\_CLIP\_DEFAULT} + \subitem {parseData}, \hyperpage{46} + \item {max\_translation\_m} + \subitem {outlierRejection}, \hyperpage{40} + \item {MDS} + \subitem {testMotionDistortion}, \hyperpage{51} + \item {motionDistortion}, \hyperpage{37} + \subitem {RADAR\_SCAN\_FREQUENCY}, \hyperpage{37} + \subitem {VERBOSE}, \hyperpage{37} + \item {MotionDistortionSolver}, \hyperpage{78} + \subitem {\_\_init\_\_}, \hyperpage{78} + \subitem {compute\_time\_deltas}, \hyperpage{79} + \subitem {debug}, \hyperpage{81} + \subitem {dT}, \hyperpage{81} + \subitem {error}, \hyperpage{79} + \subitem {error\_vector}, \hyperpage{79} + \subitem {expected\_observed\_pts}, \hyperpage{79} + \subitem {infer\_velocity}, \hyperpage{80} + \subitem {info\_vector}, \hyperpage{81} + \subitem {jacobian}, \hyperpage{80} + \subitem {jacobian\_vector}, \hyperpage{80} + \subitem {optimize}, \hyperpage{80} + \subitem {optimize\_library}, \hyperpage{80} + \subitem {p\_jt}, \hyperpage{82} + \subitem {p\_w}, \hyperpage{82} + \subitem {sigma\_p}, \hyperpage{82} + \subitem {sigma\_v}, \hyperpage{82} + \subitem {T\_wj0}, \hyperpage{82} + \subitem {T\_wj0\_inv}, \hyperpage{82} + \subitem {T\_wj\_initial}, \hyperpage{82} + \subitem {total\_scan\_time}, \hyperpage{82} + \subitem {undistort}, \hyperpage{81} + \subitem {update\_problem}, \hyperpage{81} + \subitem {v\_j\_initial}, \hyperpage{83} + + \indexspace + + \item {N} + \subitem {testMotionDistortion}, \hyperpage{52} + \subitem {testTransform}, \hyperpage{57} + \item {N\_FEATURES\_BEFORE\_RETRACK} + \subitem {getFeatures}, \hyperpage{22} + \subitem {getTransformKLT}, \hyperpage{33} + \item {n\_outliers} + \subitem {outlierRejection}, \hyperpage{40} + \item {n\_points} + \subitem {outlierRejection}, \hyperpage{40} + \subitem {testMotionDistortion}, \hyperpage{52} + \subitem {testTransform}, \hyperpage{57} + \item {nBadFeatures} + \subitem {getTransformKLT}, \hyperpage{33} + \item {new\_coord} + \subitem {outlierRejection}, \hyperpage{40} + \item {new\_coord\_perfect} + \subitem {outlierRejection}, \hyperpage{40} + \item {nFeatures} + \subitem {getTransformKLT}, \hyperpage{33} + \item {nGoodFeatures} + \subitem {getTransformKLT}, \hyperpage{34} + \item {nImgs} + \subitem {getFeatures}, \hyperpage{22} + \subitem {getPointCloud}, \hyperpage{26} + \subitem {getTransformKLT}, \hyperpage{34} + \subitem {parseData}, \hyperpage{46} + \item {nIndices} + \subitem {getFeatures}, \hyperpage{22} + \item {nIndicesANMS} + \subitem {getFeatures}, \hyperpage{22} + \item {noise} + \subitem {trajectoryPlotting}, \hyperpage{61} + \item {noiseToAdd} + \subitem {outlierRejection}, \hyperpage{40} + \subitem {testMotionDistortion}, \hyperpage{52} + \subitem {testTransform}, \hyperpage{57} + \item {noisy} + \subitem {testMotionDistortion}, \hyperpage{52} + \subitem {testTransform}, \hyperpage{57} + \item {normalize\_angles} + \subitem {utils}, \hyperpage{63} + + \indexspace + + \item {optimize} + \subitem {BundleAdjustment}, \hyperpage{68} + \subitem {MotionDistortionSolver}, \hyperpage{80} + \subitem {PoseGraphOptimization}, \hyperpage{86} + \item {optimize\_library} + \subitem {MotionDistortionSolver}, \hyperpage{80} + \item {outlier\_ind} + \subitem {outlierRejection}, \hyperpage{40} + \subitem {testMotionDistortion}, \hyperpage{52} + \subitem {testTransform}, \hyperpage{57} + \item {outlier\_rate} + \subitem {testMotionDistortion}, \hyperpage{52} + \subitem {testTransform}, \hyperpage{57} + \item {outlierRejection}, \hyperpage{38} + \subitem {alpha}, \hyperpage{39} + \subitem {DIST\_THRESHOLD\_M}, \hyperpage{39} + \subitem {DIST\_THRESHOLD\_PX}, \hyperpage{39} + \subitem {DISTSQ\_THRESHOLD\_PX}, \hyperpage{39} + \subitem {FORCE\_OUTLIERS}, \hyperpage{39} + \subitem {max\_translation\_m}, \hyperpage{40} + \subitem {n\_outliers}, \hyperpage{40} + \subitem {n\_points}, \hyperpage{40} + \subitem {new\_coord}, \hyperpage{40} + \subitem {new\_coord\_perfect}, \hyperpage{40} + \subitem {noiseToAdd}, \hyperpage{40} + \subitem {outlier\_ind}, \hyperpage{40} + \subitem {prev\_coord}, \hyperpage{40} + \subitem {pruned\_new\_coord}, \hyperpage{41} + \subitem {pruned\_prev\_coord}, \hyperpage{41} + \subitem {rejectOutliers}, \hyperpage{38} + \subitem {show}, \hyperpage{41} + \subitem {theta\_deg}, \hyperpage{41} + \subitem {theta\_max\_deg}, \hyperpage{41} + \subitem {title\_append}, \hyperpage{41} + \subitem {trans\_vec}, \hyperpage{41} + + \indexspace + + \item {p\_jt} + \subitem {MotionDistortionSolver}, \hyperpage{82} + \subitem {testMotionDistortion}, \hyperpage{52} + \item {p\_w} + \subitem {MotionDistortionSolver}, \hyperpage{82} + \subitem {testMotionDistortion}, \hyperpage{52} + \item {paramFlags} + \subitem {RawROAMSystem}, \hyperpage{48}, \hyperpage{90} + \subitem {Tracker}, \hyperpage{93} + \item {params} + \subitem {testMotionDistortion}, \hyperpage{53} + \item {parseData}, \hyperpage{42} + \subitem {c}, \hyperpage{45} + \subitem {convertCartesianImageToPolar}, \hyperpage{42} + \subitem {convertPolarImageToCartesian}, \hyperpage{42} + \subitem {convertPolarImgToLogPolar}, \hyperpage{43} + \subitem {dataPath}, \hyperpage{45} + \subitem {datasetName}, \hyperpage{45} + \subitem {DOWNSAMPLE\_FACTOR}, \hyperpage{45} + \subitem {drawCVPoint}, \hyperpage{43} + \subitem {extractDataFromRadarImage}, \hyperpage{43} + \subitem {getCartImageFromImgPaths}, \hyperpage{43} + \subitem {getDataFromImgPathsByIndex}, \hyperpage{44} + \subitem {getPolarImageFromImgPaths}, \hyperpage{44} + \subitem {getRadarImgPaths}, \hyperpage{44} + \subitem {getRadarStreamPolar}, \hyperpage{45} + \subitem {imgCart}, \hyperpage{46} + \subitem {imgPolar}, \hyperpage{46} + \subitem {MAX\_RANGE\_CLIP\_DEFAULT}, \hyperpage{46} + \subitem {nImgs}, \hyperpage{46} + \subitem {RANGE\_RESOLUTION\_CART\_M}, \hyperpage{46} + \subitem {RANGE\_RESOLUTION\_M}, \hyperpage{46} + \subitem {streamArr}, \hyperpage{46} + \subitem {timestampPath}, \hyperpage{46} + \item {PERCENT\_FEATURE\_LOSS\_THRESHOLD} + \subitem {getFeatures}, \hyperpage{22} + \item {period} + \subitem {testMotionDistortion}, \hyperpage{53} + \item {plot} + \subitem {Map}, \hyperpage{76} + \subitem {RawROAMSystem}, \hyperpage{87} + \subitem {Tracker}, \hyperpage{92} + \subitem {Trajectory}, \hyperpage{95} + \item {PLOT\_BAD\_FEATURES} + \subitem {getTransformKLT}, \hyperpage{34} + \item {plotCartPolar} + \subitem {FMT}, \hyperpage{11} + \item {plotCartPolarWithRotation} + \subitem {FMT}, \hyperpage{11} + \item {plotDisplace} + \subitem {testMotionDistortion}, \hyperpage{53} + \item {plotFakeFeatures} + \subitem {genFakeData}, \hyperpage{17} + \item {plotGtAndEstTrajectory} + \subitem {trajectoryPlotting}, \hyperpage{60} + \item {plotTraj} + \subitem {RawROAMSystem}, \hyperpage{87} + \item {plt\_full\_extent} + \subitem {utils}, \hyperpage{64} + \item {plt\_savefig\_by\_axis} + \subitem {utils}, \hyperpage{64} + \item {pointCloud} + \subitem {Keyframe}, \hyperpage{74} + \item {PolarCoord}, \hyperpage{83} + \subitem {\_\_init\_\_}, \hyperpage{83} + \subitem {\_\_str\_\_}, \hyperpage{84} + \subitem {asTuple}, \hyperpage{84} + \subitem {getR}, \hyperpage{84} + \subitem {getTheta}, \hyperpage{84} + \subitem {r}, \hyperpage{85} + \subitem {scaleR}, \hyperpage{84} + \subitem {theta}, \hyperpage{85} + \subitem {toCart}, \hyperpage{84} + \item {pose} + \subitem {Keyframe}, \hyperpage{74} + \item {pose\_transform} + \subitem {Trajectory}, \hyperpage{96} + \item {PoseGraphLib}, \hyperpage{47} + \item {PoseGraphOptimization}, \hyperpage{85} + \subitem {\_\_init\_\_}, \hyperpage{85} + \subitem {add\_edge}, \hyperpage{85} + \subitem {add\_vertex}, \hyperpage{85} + \subitem {get\_pose}, \hyperpage{86} + \subitem {optimize}, \hyperpage{86} + \item {poses} + \subitem {Trajectory}, \hyperpage{96} + \item {prev\_coord} + \subitem {outlierRejection}, \hyperpage{40} + \item {prev\_good\_old} + \subitem {getTransformKLT}, \hyperpage{34} + \item {prevImg} + \subitem {getTransformKLT}, \hyperpage{34} + \item {prevImgCart} + \subitem {FMT}, \hyperpage{13} + \item {prevImgPolar} + \subitem {FMT}, \hyperpage{13} + \item {pruned\_new\_coord} + \subitem {outlierRejection}, \hyperpage{41} + \item {pruned\_prev\_coord} + \subitem {outlierRejection}, \hyperpage{41} + \item {prunedFeaturePoints} + \subitem {Keyframe}, \hyperpage{74} + \item {prunedUndistortedLocals} + \subitem {Keyframe}, \hyperpage{74} + \item {pruneFeaturePoints} + \subitem {Keyframe}, \hyperpage{73} + + \indexspace + + \item {quiver} + \subitem {utils}, \hyperpage{64} + + \indexspace + + \item {R} + \subitem {getTransformKLT}, \hyperpage{34} + \item {r} + \subitem {PolarCoord}, \hyperpage{85} + \item {R\_fit} + \subitem {testMotionDistortion}, \hyperpage{53} + \subitem {testTransform}, \hyperpage{57} + \item {RADAR\_CART\_CENTER} + \subitem {Mapping}, \hyperpage{36} + \subitem {RawROAMSystem}, \hyperpage{48} + \item {RADAR\_SCAN\_FREQUENCY} + \subitem {motionDistortion}, \hyperpage{37} + \item {radarImgPathToTimestamp} + \subitem {utils}, \hyperpage{64} + \item {radarPolarImg} + \subitem {Keyframe}, \hyperpage{75} + \item {RANGE\_RESOLUTION\_CART\_M} + \subitem {parseData}, \hyperpage{46} + \item {RANGE\_RESOLUTION\_M} + \subitem {parseData}, \hyperpage{46} + \item {RawROAMSystem}, \hyperpage{47}, \hyperpage{86} + \subitem {\_\_init\_\_}, \hyperpage{87} + \subitem {datasetName}, \hyperpage{47} + \subitem {endSeqInd}, \hyperpage{47} + \subitem {estTraj}, \hyperpage{89} + \subitem {fig}, \hyperpage{89} + \subitem {filePaths}, \hyperpage{89} + \subitem {gtTraj}, \hyperpage{89} + \subitem {hasGroundTruth}, \hyperpage{89} + \subitem {imgPathArr}, \hyperpage{90} + \subitem {imgSavePath}, \hyperpage{47} + \subitem {map}, \hyperpage{90} + \subitem {paramFlags}, \hyperpage{48}, \hyperpage{90} + \subitem {plot}, \hyperpage{87} + \subitem {plotTraj}, \hyperpage{87} + \subitem {RADAR\_CART\_CENTER}, \hyperpage{48} + \subitem {REMOVE\_OLD\_RESULTS}, \hyperpage{48} + \subitem {run}, \hyperpage{88} + \subitem {sequenceName}, \hyperpage{90} + \subitem {sequenceSize}, \hyperpage{90} + \subitem {startSeqInd}, \hyperpage{48} + \subitem {system}, \hyperpage{48} + \subitem {tracker}, \hyperpage{90} + \subitem {trajSavePath}, \hyperpage{48} + \subitem {updateTrajectory}, \hyperpage{88} + \subitem {updateTrajectoryAbsolute}, \hyperpage{88} + \subitem {updateTrajFromTracker}, \hyperpage{89} + \subitem {wantToPlot}, \hyperpage{49} + \item {rejectOutliers} + \subitem {outlierRejection}, \hyperpage{38} + \item {REMOVE\_OLD\_RESULTS} + \subitem {FMT}, \hyperpage{13} + \subitem {getTransformKLT}, \hyperpage{34} + \subitem {RawROAMSystem}, \hyperpage{48} + \item {response} + \subitem {FMT}, \hyperpage{13} + \item {ROT\_THRESHOLD} + \subitem {Mapping}, \hyperpage{37} + \item {rotateImg} + \subitem {FMT}, \hyperpage{11} + \item {rotRad} + \subitem {FMT}, \hyperpage{14} + \item {run} + \subitem {RawROAMSystem}, \hyperpage{88} + + \indexspace + + \item {s\_blobIndices} + \subitem {getFeatures}, \hyperpage{23} + \item {saveFeaturePath} + \subitem {getTransformKLT}, \hyperpage{34} + \item {savePath} + \subitem {getTransformKLT}, \hyperpage{35} + \item {scale} + \subitem {CartCoord}, \hyperpage{71} + \subitem {FMT}, \hyperpage{14} + \item {scaleR} + \subitem {PolarCoord}, \hyperpage{84} + \item {scaleX} + \subitem {CartCoord}, \hyperpage{71} + \item {scaleY} + \subitem {CartCoord}, \hyperpage{71} + \item {sequenceName} + \subitem {FMT}, \hyperpage{14} + \subitem {Map}, \hyperpage{77} + \subitem {RawROAMSystem}, \hyperpage{90} + \subitem {Tracker}, \hyperpage{93} + \item {sequenceSize} + \subitem {FMT}, \hyperpage{14} + \subitem {Map}, \hyperpage{77} + \subitem {RawROAMSystem}, \hyperpage{90} + \subitem {Tracker}, \hyperpage{93} + \item {show} + \subitem {getTransformKLT}, \hyperpage{35} + \subitem {outlierRejection}, \hyperpage{41} + \subitem {testMotionDistortion}, \hyperpage{53} + \subitem {testTransform}, \hyperpage{57} + \item {sigma\_p} + \subitem {MotionDistortionSolver}, \hyperpage{82} + \item {sigma\_v} + \subitem {MotionDistortionSolver}, \hyperpage{82} + \item {solution} + \subitem {testMotionDistortion}, \hyperpage{53} + \item {srcCoord} + \subitem {testTransform}, \hyperpage{58} + \item {srcCoord2} + \subitem {testMotionDistortion}, \hyperpage{53} + \subitem {testTransform}, \hyperpage{58} + \item {srcCoord3} + \subitem {testMotionDistortion}, \hyperpage{53} + \item {ssc} + \subitem {ANMS}, \hyperpage{9} + \item {start} + \subitem {getTransformKLT}, \hyperpage{35} + \item {startImgInd} + \subitem {getTransformKLT}, \hyperpage{35} + \item {startSeqInd} + \subitem {FMT}, \hyperpage{14} + \subitem {RawROAMSystem}, \hyperpage{48} + \item {stepSize} + \subitem {FMT}, \hyperpage{14} + \item {streamArr} + \subitem {getFeatures}, \hyperpage{23} + \subitem {getPointCloud}, \hyperpage{26} + \subitem {parseData}, \hyperpage{46} + \item {sub} + \subitem {CartCoord}, \hyperpage{71} + \item {system} + \subitem {RawROAMSystem}, \hyperpage{48} + + \indexspace + + \item {T\_wj} + \subitem {testMotionDistortion}, \hyperpage{54} + \item {T\_wj0} + \subitem {MotionDistortionSolver}, \hyperpage{82} + \subitem {testMotionDistortion}, \hyperpage{54} + \item {T\_wj0\_inv} + \subitem {MotionDistortionSolver}, \hyperpage{82} + \item {T\_wj\_initial} + \subitem {MotionDistortionSolver}, \hyperpage{82} + \item {targetCoord} + \subitem {testTransform}, \hyperpage{58} + \item {testMotionDistortion}, \hyperpage{49} + \subitem {A}, \hyperpage{50} + \subitem {A\_inv}, \hyperpage{50} + \subitem {alpha}, \hyperpage{50} + \subitem {clear}, \hyperpage{50} + \subitem {cov\_p}, \hyperpage{50} + \subitem {cov\_v}, \hyperpage{50} + \subitem {currentFrame}, \hyperpage{50} + \subitem {distorted}, \hyperpage{51} + \subitem {False}, \hyperpage{51} + \subitem {final\_undistorted}, \hyperpage{51} + \subitem {frequency}, \hyperpage{51} + \subitem {groundTruth}, \hyperpage{51} + \subitem {h}, \hyperpage{51} + \subitem {h\_fit}, \hyperpage{51} + \subitem {MDS}, \hyperpage{51} + \subitem {N}, \hyperpage{52} + \subitem {n\_points}, \hyperpage{52} + \subitem {noiseToAdd}, \hyperpage{52} + \subitem {noisy}, \hyperpage{52} + \subitem {outlier\_ind}, \hyperpage{52} + \subitem {outlier\_rate}, \hyperpage{52} + \subitem {p\_jt}, \hyperpage{52} + \subitem {p\_w}, \hyperpage{52} + \subitem {params}, \hyperpage{53} + \subitem {period}, \hyperpage{53} + \subitem {plotDisplace}, \hyperpage{53} + \subitem {R\_fit}, \hyperpage{53} + \subitem {show}, \hyperpage{53} + \subitem {solution}, \hyperpage{53} + \subitem {srcCoord2}, \hyperpage{53} + \subitem {srcCoord3}, \hyperpage{53} + \subitem {T\_wj}, \hyperpage{54} + \subitem {T\_wj0}, \hyperpage{54} + \subitem {theta\_deg}, \hyperpage{54} + \subitem {theta\_fit}, \hyperpage{54} + \subitem {title\_append}, \hyperpage{54} + \subitem {transform}, \hyperpage{54} + \subitem {undistorted}, \hyperpage{54} + \subitem {useOld}, \hyperpage{55} + \subitem {v\_j0}, \hyperpage{55} + \subitem {velocity}, \hyperpage{55} + \item {testTransform}, \hyperpage{55} + \subitem {A}, \hyperpage{56} + \subitem {A\_inv}, \hyperpage{56} + \subitem {alpha}, \hyperpage{56} + \subitem {clear}, \hyperpage{56} + \subitem {False}, \hyperpage{56} + \subitem {h}, \hyperpage{56} + \subitem {h\_fit}, \hyperpage{56} + \subitem {N}, \hyperpage{57} + \subitem {n\_points}, \hyperpage{57} + \subitem {noiseToAdd}, \hyperpage{57} + \subitem {noisy}, \hyperpage{57} + \subitem {outlier\_ind}, \hyperpage{57} + \subitem {outlier\_rate}, \hyperpage{57} + \subitem {R\_fit}, \hyperpage{57} + \subitem {show}, \hyperpage{57} + \subitem {srcCoord}, \hyperpage{58} + \subitem {srcCoord2}, \hyperpage{58} + \subitem {targetCoord}, \hyperpage{58} + \subitem {theta\_deg}, \hyperpage{58} + \subitem {theta\_fit}, \hyperpage{58} + \subitem {title\_append}, \hyperpage{58} + \subitem {useOld}, \hyperpage{58} + \item {theta} + \subitem {PolarCoord}, \hyperpage{85} + \item {theta\_deg} + \subitem {outlierRejection}, \hyperpage{41} + \subitem {testMotionDistortion}, \hyperpage{54} + \subitem {testTransform}, \hyperpage{58} + \item {theta\_fit} + \subitem {testMotionDistortion}, \hyperpage{54} + \subitem {testTransform}, \hyperpage{58} + \item {theta\_max\_deg} + \subitem {outlierRejection}, \hyperpage{41} + \item {tic} + \subitem {utils}, \hyperpage{64} + \item {timestamp} + \subitem {getTransformKLT}, \hyperpage{35} + \item {timestampPath} + \subitem {FMT}, \hyperpage{14} + \subitem {getFeatures}, \hyperpage{23} + \subitem {getPointCloud}, \hyperpage{26} + \subitem {getTransformKLT}, \hyperpage{35} + \subitem {parseData}, \hyperpage{46} + \subitem {trajectoryPlotting}, \hyperpage{61} + \item {timestamps} + \subitem {Trajectory}, \hyperpage{96} + \item {title\_append} + \subitem {outlierRejection}, \hyperpage{41} + \subitem {testMotionDistortion}, \hyperpage{54} + \subitem {testTransform}, \hyperpage{58} + \item {toc} + \subitem {utils}, \hyperpage{65} + \item {toCart} + \subitem {PolarCoord}, \hyperpage{84} + \item {toSaveImgPath} + \subitem {getFeatures}, \hyperpage{23} + \subitem {getTransformKLT}, \hyperpage{35} + \item {toSavePath} + \subitem {getFeatures}, \hyperpage{23} + \item {toSaveTrajPath} + \subitem {getTransformKLT}, \hyperpage{36} + \item {total\_scan\_time} + \subitem {MotionDistortionSolver}, \hyperpage{82} + \item {track} + \subitem {Tracker}, \hyperpage{92} + \item {Tracker}, \hyperpage{59}, \hyperpage{91} + \subitem {\_\_init\_\_}, \hyperpage{91} + \subitem {estTraj}, \hyperpage{92} + \subitem {filePaths}, \hyperpage{93} + \subitem {getTransform}, \hyperpage{91} + \subitem {gtTraj}, \hyperpage{93} + \subitem {imgPathArr}, \hyperpage{93} + \subitem {initTraj}, \hyperpage{91} + \subitem {paramFlags}, \hyperpage{93} + \subitem {plot}, \hyperpage{92} + \subitem {sequenceName}, \hyperpage{93} + \subitem {sequenceSize}, \hyperpage{93} + \subitem {track}, \hyperpage{92} + \item {tracker} + \subitem {RawROAMSystem}, \hyperpage{90} + \item {Trajectory}, \hyperpage{94} + \subitem {\_\_init\_\_}, \hyperpage{94} + \subitem {appendAbsoluteTransform}, \hyperpage{94} + \subitem {appendRelativeDeltas}, \hyperpage{94} + \subitem {appendRelativeTransform}, \hyperpage{95} + \subitem {getGroundTruthDeltasAtTime}, \hyperpage{95} + \subitem {getPoseAtTimes}, \hyperpage{95} + \subitem {plot}, \hyperpage{95} + \subitem {pose\_transform}, \hyperpage{96} + \subitem {poses}, \hyperpage{96} + \subitem {timestamps}, \hyperpage{96} + \item {trajectoryPlotting}, \hyperpage{59} + \subitem {block}, \hyperpage{60} + \subitem {computePosesRMSE}, \hyperpage{59} + \subitem {datasetName}, \hyperpage{60} + \subitem {estPoses}, \hyperpage{61} + \subitem {estTraj}, \hyperpage{61} + \subitem {getGroundTruthTrajectory}, \hyperpage{59} + \subitem {getGroundTruthTrajectoryGPS}, \hyperpage{60} + \subitem {gtPath}, \hyperpage{61} + \subitem {gtTraj}, \hyperpage{61} + \subitem {keyframe\_timestamps}, \hyperpage{61} + \subitem {noise}, \hyperpage{61} + \subitem {plotGtAndEstTrajectory}, \hyperpage{60} + \subitem {timestampPath}, \hyperpage{61} + \item {trajSavePath} + \subitem {getTransformKLT}, \hyperpage{36} + \subitem {RawROAMSystem}, \hyperpage{48} + \item {TRANS\_THRESHOLD} + \subitem {Mapping}, \hyperpage{37} + \item {TRANS\_THRESHOLD\_SQ} + \subitem {Mapping}, \hyperpage{37} + \item {trans\_vec} + \subitem {outlierRejection}, \hyperpage{41} + \item {transform} + \subitem {testMotionDistortion}, \hyperpage{54} + \item {transformCoords} + \subitem {genFakeData}, \hyperpage{17} + \item {transformed\_pts} + \subitem {getTransformKLT}, \hyperpage{36} + + \indexspace + + \item {undistort} + \subitem {MotionDistortionSolver}, \hyperpage{81} + \item {undistorted} + \subitem {testMotionDistortion}, \hyperpage{54} + \item {update\_problem} + \subitem {MotionDistortionSolver}, \hyperpage{81} + \item {updateInfo} + \subitem {Keyframe}, \hyperpage{73} + \item {updateInternalTraj} + \subitem {Map}, \hyperpage{76} + \item {updateTrajectory} + \subitem {RawROAMSystem}, \hyperpage{88} + \item {updateTrajectoryAbsolute} + \subitem {RawROAMSystem}, \hyperpage{88} + \item {updateTrajFromTracker} + \subitem {RawROAMSystem}, \hyperpage{89} + \item {useOld} + \subitem {testMotionDistortion}, \hyperpage{55} + \subitem {testTransform}, \hyperpage{58} + \item {utils}, \hyperpage{62} + \subitem {convertPoseToTransform}, \hyperpage{62} + \subitem {convertRandHtoDeltas}, \hyperpage{62} + \subitem {convertTransformToPose}, \hyperpage{62} + \subitem {f\_arr}, \hyperpage{63} + \subitem {flatten}, \hyperpage{63} + \subitem {getRotationMatrix}, \hyperpage{63} + \subitem {homogenize}, \hyperpage{63} + \subitem {invert\_transform}, \hyperpage{63} + \subitem {normalize\_angles}, \hyperpage{63} + \subitem {plt\_full\_extent}, \hyperpage{64} + \subitem {plt\_savefig\_by\_axis}, \hyperpage{64} + \subitem {quiver}, \hyperpage{64} + \subitem {radarImgPathToTimestamp}, \hyperpage{64} + \subitem {tic}, \hyperpage{64} + \subitem {toc}, \hyperpage{65} + + \indexspace + + \item {v\_j0} + \subitem {testMotionDistortion}, \hyperpage{55} + \item {v\_j\_initial} + \subitem {MotionDistortionSolver}, \hyperpage{83} + \item {velocity} + \subitem {Keyframe}, \hyperpage{75} + \subitem {testMotionDistortion}, \hyperpage{55} + \item {VERBOSE} + \subitem {motionDistortion}, \hyperpage{37} + \item {visualize\_transform} + \subitem {getTransformKLT}, \hyperpage{29} + + \indexspace + + \item {wantToPlot} + \subitem {RawROAMSystem}, \hyperpage{49} + + \indexspace + + \item {x} + \subitem {CartCoord}, \hyperpage{71} + + \indexspace + + \item {y} + \subitem {CartCoord}, \hyperpage{72} + +\end{theindex} diff --git a/doc/latex/refman.out b/doc/latex/refman.out new file mode 100644 index 0000000..b5763ed --- /dev/null +++ b/doc/latex/refman.out @@ -0,0 +1,510 @@ +\BOOKMARK [0][-]{chapter.1}{\376\377\0001\000\040\000R\000A\000W\000-\000R\000O\000A\000M\000:\000\040\000R\000e\000a\000l\000l\000y\000\040\000A\000d\000v\000e\000r\000s\000e\000\040\000W\000e\000a\000t\000h\000e\000r\000-\000R\000a\000d\000a\000r\000\040\000O\000d\000o\000m\000e\000t\000r\000y\000\040\000a\000n\000d\000\040\000M\000a\000p\000p\000i\000n\000g\000\040\000\050\000P\000y\000t\000h\000o\000n\000\040\000r\000e\000i\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000R\000a\000d\000a\000r\000S\000L\000A\000M\000\051}{}% 1 +\BOOKMARK [1][-]{section.1.1}{\376\377\0001\000.\0001\000\040\000R\000e\000s\000u\000l\000t\000s\000\040\000\050\000O\000d\000o\000m\000e\000t\000r\000y\000\051}{chapter.1}% 2 +\BOOKMARK [1][-]{section.1.2}{\376\377\0001\000.\0002\000\040\000R\000u\000n\000n\000i\000n\000g\000\040\000C\000o\000d\000e}{chapter.1}% 3 +\BOOKMARK [2][-]{subsection.1.2.1}{\376\377\0001\000.\0002\000.\0001\000\040\000R\000a\000d\000a\000r\000\040\000S\000e\000q\000u\000e\000n\000c\000e\000s}{section.1.2}% 4 +\BOOKMARK [1][-]{section.1.3}{\376\377\0001\000.\0003\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{chapter.1}% 5 +\BOOKMARK [1][-]{section.1.4}{\376\377\0001\000.\0004\000\040\000R\000e\000l\000e\000v\000a\000n\000t\000\040\000P\000a\000p\000e\000r\000s}{chapter.1}% 6 +\BOOKMARK [0][-]{chapter.2}{\376\377\0002\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000I\000n\000d\000e\000x}{}% 7 +\BOOKMARK [1][-]{section.2.1}{\376\377\0002\000.\0001\000\040\000P\000a\000c\000k\000a\000g\000e\000s}{chapter.2}% 8 +\BOOKMARK [0][-]{chapter.3}{\376\377\0003\000\040\000H\000i\000e\000r\000a\000r\000c\000h\000i\000c\000a\000l\000\040\000I\000n\000d\000e\000x}{}% 9 +\BOOKMARK [1][-]{section.3.1}{\376\377\0003\000.\0001\000\040\000C\000l\000a\000s\000s\000\040\000H\000i\000e\000r\000a\000r\000c\000h\000y}{chapter.3}% 10 +\BOOKMARK [0][-]{chapter.4}{\376\377\0004\000\040\000C\000l\000a\000s\000s\000\040\000I\000n\000d\000e\000x}{}% 11 +\BOOKMARK [1][-]{section.4.1}{\376\377\0004\000.\0001\000\040\000C\000l\000a\000s\000s\000\040\000L\000i\000s\000t}{chapter.4}% 12 +\BOOKMARK [0][-]{chapter.5}{\376\377\0005\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 13 +\BOOKMARK [1][-]{section.5.1}{\376\377\0005\000.\0001\000\040\000A\000N\000M\000S\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 14 +\BOOKMARK [2][-]{subsection.5.1.1}{\376\377\0005\000.\0001\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.1}% 15 +\BOOKMARK [3][-]{subsubsection.5.1.1.1}{\376\377\0005\000.\0001\000.\0001\000.\0001\000\040\000s\000s\000c\000\050\000\051}{subsection.5.1.1}% 16 +\BOOKMARK [1][-]{section.5.2}{\376\377\0005\000.\0002\000\040\000C\000o\000o\000r\000d\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 17 +\BOOKMARK [1][-]{section.5.3}{\376\377\0005\000.\0003\000\040\000F\000M\000T\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 18 +\BOOKMARK [2][-]{subsection.5.3.1}{\376\377\0005\000.\0003\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.3}% 19 +\BOOKMARK [3][-]{subsubsection.5.3.1.1}{\376\377\0005\000.\0003\000.\0001\000.\0001\000\040\000g\000e\000t\000R\000o\000t\000a\000t\000i\000o\000n\000U\000s\000i\000n\000g\000F\000M\000T\000\050\000\051}{subsection.5.3.1}% 20 +\BOOKMARK [3][-]{subsubsection.5.3.1.2}{\376\377\0005\000.\0003\000.\0001\000.\0002\000\040\000g\000e\000t\000T\000r\000a\000n\000s\000l\000a\000t\000i\000o\000n\000U\000s\000i\000n\000g\000P\000h\000a\000s\000e\000C\000o\000r\000r\000e\000l\000a\000t\000i\000o\000n\000\050\000\051}{subsection.5.3.1}% 21 +\BOOKMARK [3][-]{subsubsection.5.3.1.3}{\376\377\0005\000.\0003\000.\0001\000.\0003\000\040\000p\000l\000o\000t\000C\000a\000r\000t\000P\000o\000l\000a\000r\000\050\000\051}{subsection.5.3.1}% 22 +\BOOKMARK [3][-]{subsubsection.5.3.1.4}{\376\377\0005\000.\0003\000.\0001\000.\0004\000\040\000p\000l\000o\000t\000C\000a\000r\000t\000P\000o\000l\000a\000r\000W\000i\000t\000h\000R\000o\000t\000a\000t\000i\000o\000n\000\050\000\051}{subsection.5.3.1}% 23 +\BOOKMARK [3][-]{subsubsection.5.3.1.5}{\376\377\0005\000.\0003\000.\0001\000.\0005\000\040\000r\000o\000t\000a\000t\000e\000I\000m\000g\000\050\000\051}{subsection.5.3.1}% 24 +\BOOKMARK [2][-]{subsection.5.3.2}{\376\377\0005\000.\0003\000.\0002\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.3}% 25 +\BOOKMARK [3][-]{subsubsection.5.3.2.1}{\376\377\0005\000.\0003\000.\0002\000.\0001\000\040\000c\000u\000r\000r\000I\000m\000g\000C\000a\000r\000t}{subsection.5.3.2}% 26 +\BOOKMARK [3][-]{subsubsection.5.3.2.2}{\376\377\0005\000.\0003\000.\0002\000.\0002\000\040\000c\000u\000r\000r\000I\000m\000g\000P\000o\000l\000a\000r}{subsection.5.3.2}% 27 +\BOOKMARK [3][-]{subsubsection.5.3.2.3}{\376\377\0005\000.\0003\000.\0002\000.\0003\000\040\000d\000a\000t\000a\000P\000a\000t\000h}{subsection.5.3.2}% 28 +\BOOKMARK [3][-]{subsubsection.5.3.2.4}{\376\377\0005\000.\0003\000.\0002\000.\0004\000\040\000e\000n\000d\000S\000e\000q\000I\000n\000d}{subsection.5.3.2}% 29 +\BOOKMARK [3][-]{subsubsection.5.3.2.5}{\376\377\0005\000.\0003\000.\0002\000.\0005\000\040\000e\000x\000i\000s\000t\000\137\000o\000k}{subsection.5.3.2}% 30 +\BOOKMARK [3][-]{subsubsection.5.3.2.6}{\376\377\0005\000.\0003\000.\0002\000.\0006\000\040\000F\000M\000T\000\137\000D\000O\000W\000N\000S\000A\000M\000P\000L\000E\000\137\000F\000A\000C\000T\000O\000R}{subsection.5.3.2}% 31 +\BOOKMARK [3][-]{subsubsection.5.3.2.7}{\376\377\0005\000.\0003\000.\0002\000.\0007\000\040\000F\000M\000T\000\137\000R\000A\000N\000G\000E\000\137\000C\000L\000I\000P\000\137\000M}{subsection.5.3.2}% 32 +\BOOKMARK [3][-]{subsubsection.5.3.2.8}{\376\377\0005\000.\0003\000.\0002\000.\0008\000\040\000i\000m\000g\000P\000a\000t\000h\000A\000r\000r}{subsection.5.3.2}% 33 +\BOOKMARK [3][-]{subsubsection.5.3.2.9}{\376\377\0005\000.\0003\000.\0002\000.\0009\000\040\000i\000m\000g\000S\000a\000v\000e\000P\000a\000t\000h}{subsection.5.3.2}% 34 +\BOOKMARK [3][-]{subsubsection.5.3.2.10}{\376\377\0005\000.\0003\000.\0002\000.\0001\0000\000\040\000i\000m\000g\000S\000a\000v\000e\000P\000a\000t\000h\000I\000n\000d}{subsection.5.3.2}% 35 +\BOOKMARK [3][-]{subsubsection.5.3.2.11}{\376\377\0005\000.\0003\000.\0002\000.\0001\0001\000\040\000p\000r\000e\000v\000I\000m\000g\000C\000a\000r\000t}{subsection.5.3.2}% 36 +\BOOKMARK [3][-]{subsubsection.5.3.2.12}{\376\377\0005\000.\0003\000.\0002\000.\0001\0002\000\040\000p\000r\000e\000v\000I\000m\000g\000P\000o\000l\000a\000r}{subsection.5.3.2}% 37 +\BOOKMARK [3][-]{subsubsection.5.3.2.13}{\376\377\0005\000.\0003\000.\0002\000.\0001\0003\000\040\000R\000E\000M\000O\000V\000E\000\137\000O\000L\000D\000\137\000R\000E\000S\000U\000L\000T\000S}{subsection.5.3.2}% 38 +\BOOKMARK [3][-]{subsubsection.5.3.2.14}{\376\377\0005\000.\0003\000.\0002\000.\0001\0004\000\040\000r\000e\000s\000p\000o\000n\000s\000e}{subsection.5.3.2}% 39 +\BOOKMARK [3][-]{subsubsection.5.3.2.15}{\376\377\0005\000.\0003\000.\0002\000.\0001\0005\000\040\000r\000o\000t\000R\000a\000d}{subsection.5.3.2}% 40 +\BOOKMARK [3][-]{subsubsection.5.3.2.16}{\376\377\0005\000.\0003\000.\0002\000.\0001\0006\000\040\000s\000c\000a\000l\000e}{subsection.5.3.2}% 41 +\BOOKMARK [3][-]{subsubsection.5.3.2.17}{\376\377\0005\000.\0003\000.\0002\000.\0001\0007\000\040\000s\000e\000q\000u\000e\000n\000c\000e\000N\000a\000m\000e}{subsection.5.3.2}% 42 +\BOOKMARK [3][-]{subsubsection.5.3.2.18}{\376\377\0005\000.\0003\000.\0002\000.\0001\0008\000\040\000s\000e\000q\000u\000e\000n\000c\000e\000S\000i\000z\000e}{subsection.5.3.2}% 43 +\BOOKMARK [3][-]{subsubsection.5.3.2.19}{\376\377\0005\000.\0003\000.\0002\000.\0001\0009\000\040\000s\000t\000a\000r\000t\000S\000e\000q\000I\000n\000d}{subsection.5.3.2}% 44 +\BOOKMARK [3][-]{subsubsection.5.3.2.20}{\376\377\0005\000.\0003\000.\0002\000.\0002\0000\000\040\000s\000t\000e\000p\000S\000i\000z\000e}{subsection.5.3.2}% 45 +\BOOKMARK [3][-]{subsubsection.5.3.2.21}{\376\377\0005\000.\0003\000.\0002\000.\0002\0001\000\040\000t\000i\000m\000e\000s\000t\000a\000m\000p\000P\000a\000t\000h}{subsection.5.3.2}% 46 +\BOOKMARK [1][-]{section.5.4}{\376\377\0005\000.\0004\000\040\000g\000e\000n\000F\000a\000k\000e\000D\000a\000t\000a\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 47 +\BOOKMARK [2][-]{subsection.5.4.1}{\376\377\0005\000.\0004\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.4}% 48 +\BOOKMARK [3][-]{subsubsection.5.4.1.1}{\376\377\0005\000.\0004\000.\0001\000.\0001\000\040\000a\000d\000d\000N\000o\000i\000s\000e\000\050\000\051}{subsection.5.4.1}% 49 +\BOOKMARK [3][-]{subsubsection.5.4.1.2}{\376\377\0005\000.\0004\000.\0001\000.\0002\000\040\000c\000o\000n\000v\000e\000r\000t\000P\000o\000l\000a\000r\000P\000o\000i\000n\000t\000s\000T\000o\000C\000a\000r\000t\000e\000s\000i\000a\000n\000\050\000\051}{subsection.5.4.1}% 50 +\BOOKMARK [3][-]{subsubsection.5.4.1.3}{\376\377\0005\000.\0004\000.\0001\000.\0003\000\040\000c\000r\000e\000a\000t\000e\000O\000u\000t\000l\000i\000e\000r\000s\000\050\000\051}{subsection.5.4.1}% 51 +\BOOKMARK [3][-]{subsubsection.5.4.1.4}{\376\377\0005\000.\0004\000.\0001\000.\0004\000\040\000d\000i\000s\000t\000o\000r\000t\000\050\000\051}{subsection.5.4.1}% 52 +\BOOKMARK [3][-]{subsubsection.5.4.1.5}{\376\377\0005\000.\0004\000.\0001\000.\0005\000\040\000g\000e\000n\000e\000r\000a\000t\000e\000F\000a\000k\000e\000C\000o\000r\000r\000e\000s\000p\000o\000n\000d\000e\000n\000c\000e\000s\000\050\000\051}{subsection.5.4.1}% 53 +\BOOKMARK [3][-]{subsubsection.5.4.1.6}{\376\377\0005\000.\0004\000.\0001\000.\0006\000\040\000g\000e\000n\000e\000r\000a\000t\000e\000F\000a\000k\000e\000C\000o\000r\000r\000e\000s\000p\000o\000n\000d\000e\000n\000c\000e\000s\000P\000o\000l\000a\000r\000\050\000\051}{subsection.5.4.1}% 54 +\BOOKMARK [3][-]{subsubsection.5.4.1.7}{\376\377\0005\000.\0004\000.\0001\000.\0007\000\040\000g\000e\000n\000e\000r\000a\000t\000e\000F\000a\000k\000e\000F\000e\000a\000t\000u\000r\000e\000s\000\050\000\051}{subsection.5.4.1}% 55 +\BOOKMARK [3][-]{subsubsection.5.4.1.8}{\376\377\0005\000.\0004\000.\0001\000.\0008\000\040\000g\000e\000n\000e\000r\000a\000t\000e\000F\000a\000k\000e\000F\000e\000a\000t\000u\000r\000e\000s\000P\000o\000l\000a\000r\000\050\000\051}{subsection.5.4.1}% 56 +\BOOKMARK [3][-]{subsubsection.5.4.1.9}{\376\377\0005\000.\0004\000.\0001\000.\0009\000\040\000g\000e\000n\000e\000r\000a\000t\000e\000T\000r\000a\000n\000s\000l\000a\000t\000i\000o\000n\000V\000e\000c\000t\000o\000r\000\050\000\051}{subsection.5.4.1}% 57 +\BOOKMARK [3][-]{subsubsection.5.4.1.10}{\376\377\0005\000.\0004\000.\0001\000.\0001\0000\000\040\000p\000l\000o\000t\000F\000a\000k\000e\000F\000e\000a\000t\000u\000r\000e\000s\000\050\000\051}{subsection.5.4.1}% 58 +\BOOKMARK [3][-]{subsubsection.5.4.1.11}{\376\377\0005\000.\0004\000.\0001\000.\0001\0001\000\040\000t\000r\000a\000n\000s\000f\000o\000r\000m\000C\000o\000o\000r\000d\000s\000\050\000\051}{subsection.5.4.1}% 59 +\BOOKMARK [1][-]{section.5.5}{\376\377\0005\000.\0005\000\040\000g\000e\000t\000F\000e\000a\000t\000u\000r\000e\000s\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 60 +\BOOKMARK [2][-]{subsection.5.5.1}{\376\377\0005\000.\0005\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.5}% 61 +\BOOKMARK [3][-]{subsubsection.5.5.1.1}{\376\377\0005\000.\0005\000.\0001\000.\0001\000\040\000a\000d\000a\000p\000t\000i\000v\000e\000N\000M\000S\000\050\000\051}{subsection.5.5.1}% 62 +\BOOKMARK [3][-]{subsubsection.5.5.1.2}{\376\377\0005\000.\0005\000.\0001\000.\0002\000\040\000a\000p\000p\000e\000n\000d\000N\000e\000w\000F\000e\000a\000t\000u\000r\000e\000s\000\050\000\051}{subsection.5.5.1}% 63 +\BOOKMARK [3][-]{subsubsection.5.5.1.3}{\376\377\0005\000.\0005\000.\0001\000.\0003\000\040\000c\000a\000l\000c\000u\000l\000a\000t\000e\000F\000e\000a\000t\000u\000r\000e\000L\000o\000s\000s\000T\000h\000r\000e\000s\000h\000o\000l\000d\000\050\000\051}{subsection.5.5.1}% 64 +\BOOKMARK [3][-]{subsubsection.5.5.1.4}{\376\377\0005\000.\0005\000.\0001\000.\0004\000\040\000g\000e\000t\000B\000l\000o\000b\000s\000F\000r\000o\000m\000C\000a\000r\000t\000\050\000\051}{subsection.5.5.1}% 65 +\BOOKMARK [3][-]{subsubsection.5.5.1.5}{\376\377\0005\000.\0005\000.\0001\000.\0005\000\040\000g\000e\000t\000F\000e\000a\000t\000u\000r\000e\000s\000\050\000\051}{subsection.5.5.1}% 66 +\BOOKMARK [2][-]{subsection.5.5.2}{\376\377\0005\000.\0005\000.\0002\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.5}% 67 +\BOOKMARK [3][-]{subsubsection.5.5.2.1}{\376\377\0005\000.\0005\000.\0002\000.\0001\000\040\000b\000l\000o\000b\000I\000n\000d\000i\000c\000e\000s}{subsection.5.5.2}% 68 +\BOOKMARK [3][-]{subsubsection.5.5.2.2}{\376\377\0005\000.\0005\000.\0002\000.\0002\000\040\000b\000l\000o\000b\000S\000i\000g\000m\000a}{subsection.5.5.2}% 69 +\BOOKMARK [3][-]{subsubsection.5.5.2.3}{\376\377\0005\000.\0005\000.\0002\000.\0003\000\040\000b\000l\000o\000b\000X}{subsection.5.5.2}% 70 +\BOOKMARK [3][-]{subsubsection.5.5.2.4}{\376\377\0005\000.\0005\000.\0002\000.\0004\000\040\000b\000l\000o\000b\000Y}{subsection.5.5.2}% 71 +\BOOKMARK [3][-]{subsubsection.5.5.2.5}{\376\377\0005\000.\0005\000.\0002\000.\0005\000\040\000c\000o\000l\000o\000r}{subsection.5.5.2}% 72 +\BOOKMARK [3][-]{subsubsection.5.5.2.6}{\376\377\0005\000.\0005\000.\0002\000.\0006\000\040\000c\000o\000o\000r\000d}{subsection.5.5.2}% 73 +\BOOKMARK [3][-]{subsubsection.5.5.2.7}{\376\377\0005\000.\0005\000.\0002\000.\0007\000\040\000d\000a\000t\000a\000P\000a\000t\000h}{subsection.5.5.2}% 74 +\BOOKMARK [3][-]{subsubsection.5.5.2.8}{\376\377\0005\000.\0005\000.\0002\000.\0008\000\040\000d\000a\000t\000a\000s\000e\000t\000N\000a\000m\000e}{subsection.5.5.2}% 75 +\BOOKMARK [3][-]{subsubsection.5.5.2.9}{\376\377\0005\000.\0005\000.\0002\000.\0009\000\040\000D\000E\000F\000A\000U\000L\000T\000\137\000F\000E\000A\000T\000U\000R\000E\000\137\000P\000A\000R\000A\000M\000S}{subsection.5.5.2}% 76 +\BOOKMARK [3][-]{subsubsection.5.5.2.10}{\376\377\0005\000.\0005\000.\0002\000.\0001\0000\000\040\000e\000n\000d}{subsection.5.5.2}% 77 +\BOOKMARK [3][-]{subsubsection.5.5.2.11}{\376\377\0005\000.\0005\000.\0002\000.\0001\0001\000\040\000e\000x\000i\000s\000t\000\137\000o\000k}{subsection.5.5.2}% 78 +\BOOKMARK [3][-]{subsubsection.5.5.2.12}{\376\377\0005\000.\0005\000.\0002\000.\0001\0002\000\040\000f\000l\000u\000s\000h}{subsection.5.5.2}% 79 +\BOOKMARK [3][-]{subsubsection.5.5.2.13}{\376\377\0005\000.\0005\000.\0002\000.\0001\0003\000\040\000i\000m\000g\000C\000a\000r\000t}{subsection.5.5.2}% 80 +\BOOKMARK [3][-]{subsubsection.5.5.2.14}{\376\377\0005\000.\0005\000.\0002\000.\0001\0004\000\040\000i\000m\000g\000C\000a\000r\000t\000B\000G\000R}{subsection.5.5.2}% 81 +\BOOKMARK [3][-]{subsubsection.5.5.2.15}{\376\377\0005\000.\0005\000.\0002\000.\0001\0005\000\040\000i\000m\000g\000P\000o\000l\000a\000r}{subsection.5.5.2}% 82 +\BOOKMARK [3][-]{subsubsection.5.5.2.16}{\376\377\0005\000.\0005\000.\0002\000.\0001\0006\000\040\000N\000\137\000F\000E\000A\000T\000U\000R\000E\000S\000\137\000B\000E\000F\000O\000R\000E\000\137\000R\000E\000T\000R\000A\000C\000K}{subsection.5.5.2}% 83 +\BOOKMARK [3][-]{subsubsection.5.5.2.17}{\376\377\0005\000.\0005\000.\0002\000.\0001\0007\000\040\000n\000I\000m\000g\000s}{subsection.5.5.2}% 84 +\BOOKMARK [3][-]{subsubsection.5.5.2.18}{\376\377\0005\000.\0005\000.\0002\000.\0001\0008\000\040\000n\000I\000n\000d\000i\000c\000e\000s}{subsection.5.5.2}% 85 +\BOOKMARK [3][-]{subsubsection.5.5.2.19}{\376\377\0005\000.\0005\000.\0002\000.\0001\0009\000\040\000n\000I\000n\000d\000i\000c\000e\000s\000A\000N\000M\000S}{subsection.5.5.2}% 86 +\BOOKMARK [3][-]{subsubsection.5.5.2.20}{\376\377\0005\000.\0005\000.\0002\000.\0002\0000\000\040\000P\000E\000R\000C\000E\000N\000T\000\137\000F\000E\000A\000T\000U\000R\000E\000\137\000L\000O\000S\000S\000\137\000T\000H\000R\000E\000S\000H\000O\000L\000D}{subsection.5.5.2}% 87 +\BOOKMARK [3][-]{subsubsection.5.5.2.21}{\376\377\0005\000.\0005\000.\0002\000.\0002\0001\000\040\000s\000\137\000b\000l\000o\000b\000I\000n\000d\000i\000c\000e\000s}{subsection.5.5.2}% 88 +\BOOKMARK [3][-]{subsubsection.5.5.2.22}{\376\377\0005\000.\0005\000.\0002\000.\0002\0002\000\040\000s\000t\000r\000e\000a\000m\000A\000r\000r}{subsection.5.5.2}% 89 +\BOOKMARK [3][-]{subsubsection.5.5.2.23}{\376\377\0005\000.\0005\000.\0002\000.\0002\0003\000\040\000t\000i\000m\000e\000s\000t\000a\000m\000p\000P\000a\000t\000h}{subsection.5.5.2}% 90 +\BOOKMARK [3][-]{subsubsection.5.5.2.24}{\376\377\0005\000.\0005\000.\0002\000.\0002\0004\000\040\000t\000o\000S\000a\000v\000e\000I\000m\000g\000P\000a\000t\000h}{subsection.5.5.2}% 91 +\BOOKMARK [3][-]{subsubsection.5.5.2.25}{\376\377\0005\000.\0005\000.\0002\000.\0002\0005\000\040\000t\000o\000S\000a\000v\000e\000P\000a\000t\000h}{subsection.5.5.2}% 92 +\BOOKMARK [1][-]{section.5.6}{\376\377\0005\000.\0006\000\040\000g\000e\000t\000P\000o\000i\000n\000t\000C\000l\000o\000u\000d\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 93 +\BOOKMARK [2][-]{subsection.5.6.1}{\376\377\0005\000.\0006\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.6}% 94 +\BOOKMARK [3][-]{subsubsection.5.6.1.1}{\376\377\0005\000.\0006\000.\0001\000.\0001\000\040\000g\000e\000t\000P\000o\000i\000n\000t\000C\000l\000o\000u\000d\000P\000o\000l\000a\000r\000I\000n\000d\000\050\000\051}{subsection.5.6.1}% 95 +\BOOKMARK [2][-]{subsection.5.6.2}{\376\377\0005\000.\0006\000.\0002\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.6}% 96 +\BOOKMARK [3][-]{subsubsection.5.6.2.1}{\376\377\0005\000.\0006\000.\0002\000.\0001\000\040\000c}{subsection.5.6.2}% 97 +\BOOKMARK [3][-]{subsubsection.5.6.2.2}{\376\377\0005\000.\0006\000.\0002\000.\0002\000\040\000d\000a\000t\000a\000P\000a\000t\000h}{subsection.5.6.2}% 98 +\BOOKMARK [3][-]{subsubsection.5.6.2.3}{\376\377\0005\000.\0006\000.\0002\000.\0003\000\040\000d\000a\000t\000a\000s\000e\000t\000N\000a\000m\000e}{subsection.5.6.2}% 99 +\BOOKMARK [3][-]{subsubsection.5.6.2.4}{\376\377\0005\000.\0006\000.\0002\000.\0004\000\040\000f\000e\000a\000t\000u\000r\000e\000A\000z\000i\000m}{subsection.5.6.2}% 100 +\BOOKMARK [3][-]{subsubsection.5.6.2.5}{\376\377\0005\000.\0006\000.\0002\000.\0005\000\040\000f\000e\000a\000t\000u\000r\000e\000I\000m\000g\000C\000a\000r\000t}{subsection.5.6.2}% 101 +\BOOKMARK [3][-]{subsubsection.5.6.2.6}{\376\377\0005\000.\0006\000.\0002\000.\0006\000\040\000f\000e\000a\000t\000u\000r\000e\000P\000o\000l\000a\000r\000I\000m\000a\000g\000e}{subsection.5.6.2}% 102 +\BOOKMARK [3][-]{subsubsection.5.6.2.7}{\376\377\0005\000.\0006\000.\0002\000.\0007\000\040\000f\000e\000a\000t\000u\000r\000e\000P\000o\000l\000a\000r\000I\000n\000d\000i\000c\000e\000s}{subsection.5.6.2}% 103 +\BOOKMARK [3][-]{subsubsection.5.6.2.8}{\376\377\0005\000.\0006\000.\0002\000.\0008\000\040\000f\000e\000a\000t\000u\000r\000e\000R\000a\000n\000g\000e}{subsection.5.6.2}% 104 +\BOOKMARK [3][-]{subsubsection.5.6.2.9}{\376\377\0005\000.\0006\000.\0002\000.\0009\000\040\000i\000m\000g\000C\000a\000r\000t}{subsection.5.6.2}% 105 +\BOOKMARK [3][-]{subsubsection.5.6.2.10}{\376\377\0005\000.\0006\000.\0002\000.\0001\0000\000\040\000i\000m\000g\000C\000a\000r\000t\000R\000G\000B}{subsection.5.6.2}% 106 +\BOOKMARK [3][-]{subsubsection.5.6.2.11}{\376\377\0005\000.\0006\000.\0002\000.\0001\0001\000\040\000i\000m\000g\000P\000o\000l\000a\000r}{subsection.5.6.2}% 107 +\BOOKMARK [3][-]{subsubsection.5.6.2.12}{\376\377\0005\000.\0006\000.\0002\000.\0001\0002\000\040\000n\000I\000m\000g\000s}{subsection.5.6.2}% 108 +\BOOKMARK [3][-]{subsubsection.5.6.2.13}{\376\377\0005\000.\0006\000.\0002\000.\0001\0003\000\040\000s\000t\000r\000e\000a\000m\000A\000r\000r}{subsection.5.6.2}% 109 +\BOOKMARK [3][-]{subsubsection.5.6.2.14}{\376\377\0005\000.\0006\000.\0002\000.\0001\0004\000\040\000t\000i\000m\000e\000s\000t\000a\000m\000p\000P\000a\000t\000h}{subsection.5.6.2}% 110 +\BOOKMARK [1][-]{section.5.7}{\376\377\0005\000.\0007\000\040\000g\000e\000t\000T\000r\000a\000n\000s\000f\000o\000r\000m\000K\000L\000T\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 111 +\BOOKMARK [2][-]{subsection.5.7.1}{\376\377\0005\000.\0007\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.7}% 112 +\BOOKMARK [3][-]{subsubsection.5.7.1.1}{\376\377\0005\000.\0007\000.\0001\000.\0001\000\040\000c\000a\000l\000c\000u\000l\000a\000t\000e\000T\000r\000a\000n\000s\000f\000o\000r\000m\000\050\000\051}{subsection.5.7.1}% 113 +\BOOKMARK [3][-]{subsubsection.5.7.1.2}{\376\377\0005\000.\0007\000.\0001\000.\0002\000\040\000c\000a\000l\000c\000u\000l\000a\000t\000e\000T\000r\000a\000n\000s\000f\000o\000r\000m\000D\000t\000h\000\050\000\051}{subsection.5.7.1}% 114 +\BOOKMARK [3][-]{subsubsection.5.7.1.3}{\376\377\0005\000.\0007\000.\0001\000.\0003\000\040\000c\000a\000l\000c\000u\000l\000a\000t\000e\000T\000r\000a\000n\000s\000f\000o\000r\000m\000D\000x\000D\000t\000h\000\050\000\051}{subsection.5.7.1}% 115 +\BOOKMARK [3][-]{subsubsection.5.7.1.4}{\376\377\0005\000.\0007\000.\0001\000.\0004\000\040\000c\000a\000l\000c\000u\000l\000a\000t\000e\000T\000r\000a\000n\000s\000f\000o\000r\000m\000S\000V\000D\000\050\000\051}{subsection.5.7.1}% 116 +\BOOKMARK [3][-]{subsubsection.5.7.1.5}{\376\377\0005\000.\0007\000.\0001\000.\0005\000\040\000e\000s\000t\000i\000m\000a\000t\000e\000T\000r\000a\000n\000s\000f\000o\000r\000m\000U\000s\000i\000n\000g\000D\000e\000l\000a\000t\000s\000\050\000\051}{subsection.5.7.1}% 117 +\BOOKMARK [3][-]{subsubsection.5.7.1.6}{\376\377\0005\000.\0007\000.\0001\000.\0006\000\040\000g\000e\000t\000T\000r\000a\000c\000k\000e\000d\000P\000o\000i\000n\000t\000s\000K\000L\000T\000\050\000\051}{subsection.5.7.1}% 118 +\BOOKMARK [3][-]{subsubsection.5.7.1.7}{\376\377\0005\000.\0007\000.\0001\000.\0007\000\040\000v\000i\000s\000u\000a\000l\000i\000z\000e\000\137\000t\000r\000a\000n\000s\000f\000o\000r\000m\000\050\000\051}{subsection.5.7.1}% 119 +\BOOKMARK [2][-]{subsection.5.7.2}{\376\377\0005\000.\0007\000.\0002\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.7}% 120 +\BOOKMARK [3][-]{subsubsection.5.7.2.1}{\376\377\0005\000.\0007\000.\0002\000.\0001\000\040\000a\000l\000p\000h\000a}{subsection.5.7.2}% 121 +\BOOKMARK [3][-]{subsubsection.5.7.2.2}{\376\377\0005\000.\0007\000.\0002\000.\0002\000\040\000b\000a\000d\000\137\000n\000e\000w}{subsection.5.7.2}% 122 +\BOOKMARK [3][-]{subsubsection.5.7.2.3}{\376\377\0005\000.\0007\000.\0002\000.\0003\000\040\000b\000a\000d\000\137\000o\000l\000d}{subsection.5.7.2}% 123 +\BOOKMARK [3][-]{subsubsection.5.7.2.4}{\376\377\0005\000.\0007\000.\0002\000.\0004\000\040\000b\000l\000o\000b\000C\000o\000o\000r\000d}{subsection.5.7.2}% 124 +\BOOKMARK [3][-]{subsubsection.5.7.2.5}{\376\377\0005\000.\0007\000.\0002\000.\0005\000\040\000c\000o\000r\000r\000S\000t\000a\000t\000u\000s}{subsection.5.7.2}% 125 +\BOOKMARK [3][-]{subsubsection.5.7.2.6}{\376\377\0005\000.\0007\000.\0002\000.\0006\000\040\000c\000u\000r\000r\000I\000m\000g}{subsection.5.7.2}% 126 +\BOOKMARK [3][-]{subsubsection.5.7.2.7}{\376\377\0005\000.\0007\000.\0002\000.\0007\000\040\000c\000u\000r\000r\000T\000i\000m\000e\000s\000t\000a\000m\000p}{subsection.5.7.2}% 127 +\BOOKMARK [3][-]{subsubsection.5.7.2.8}{\376\377\0005\000.\0007\000.\0002\000.\0008\000\040\000d\000a\000t\000a\000P\000a\000t\000h}{subsection.5.7.2}% 128 +\BOOKMARK [3][-]{subsubsection.5.7.2.9}{\376\377\0005\000.\0007\000.\0002\000.\0009\000\040\000d\000a\000t\000a\000s\000e\000t\000N\000a\000m\000e}{subsection.5.7.2}% 129 +\BOOKMARK [3][-]{subsubsection.5.7.2.10}{\376\377\0005\000.\0007\000.\0002\000.\0001\0000\000\040\000d\000t\000h}{subsection.5.7.2}% 130 +\BOOKMARK [3][-]{subsubsection.5.7.2.11}{\376\377\0005\000.\0007\000.\0002\000.\0001\0001\000\040\000d\000x}{subsection.5.7.2}% 131 +\BOOKMARK [3][-]{subsubsection.5.7.2.12}{\376\377\0005\000.\0007\000.\0002\000.\0001\0002\000\040\000E\000R\000R\000\137\000T\000H\000R\000E\000S\000H\000O\000L\000D}{subsection.5.7.2}% 132 +\BOOKMARK [3][-]{subsubsection.5.7.2.13}{\376\377\0005\000.\0007\000.\0002\000.\0001\0003\000\040\000e\000s\000t\000\137\000d\000e\000l\000t\000a\000s}{subsection.5.7.2}% 133 +\BOOKMARK [3][-]{subsubsection.5.7.2.14}{\376\377\0005\000.\0007\000.\0002\000.\0001\0004\000\040\000e\000s\000t\000T\000r\000a\000j}{subsection.5.7.2}% 134 +\BOOKMARK [3][-]{subsubsection.5.7.2.15}{\376\377\0005\000.\0007\000.\0002\000.\0001\0005\000\040\000e\000x\000i\000s\000t\000\137\000o\000k}{subsection.5.7.2}% 135 +\BOOKMARK [3][-]{subsubsection.5.7.2.16}{\376\377\0005\000.\0007\000.\0002\000.\0001\0006\000\040\000e\000x\000t\000r\000a\000L\000a\000b\000e\000l}{subsection.5.7.2}% 136 +\BOOKMARK [3][-]{subsubsection.5.7.2.17}{\376\377\0005\000.\0007\000.\0002\000.\0001\0007\000\040\000g\000o\000o\000d\000\137\000n\000e\000w}{subsection.5.7.2}% 137 +\BOOKMARK [3][-]{subsubsection.5.7.2.18}{\376\377\0005\000.\0007\000.\0002\000.\0001\0008\000\040\000g\000o\000o\000d\000\137\000o\000l\000d}{subsection.5.7.2}% 138 +\BOOKMARK [3][-]{subsubsection.5.7.2.19}{\376\377\0005\000.\0007\000.\0002\000.\0001\0009\000\040\000g\000t\000\137\000d\000e\000l\000t\000a\000s}{subsection.5.7.2}% 139 +\BOOKMARK [3][-]{subsubsection.5.7.2.20}{\376\377\0005\000.\0007\000.\0002\000.\0002\0000\000\040\000g\000t\000T\000r\000a\000j}{subsection.5.7.2}% 140 +\BOOKMARK [3][-]{subsubsection.5.7.2.21}{\376\377\0005\000.\0007\000.\0002\000.\0002\0001\000\040\000g\000t\000T\000r\000a\000j\000P\000a\000t\000h}{subsection.5.7.2}% 141 +\BOOKMARK [3][-]{subsubsection.5.7.2.22}{\376\377\0005\000.\0007\000.\0002\000.\0002\0002\000\040\000h}{subsection.5.7.2}% 142 +\BOOKMARK [3][-]{subsubsection.5.7.2.23}{\376\377\0005\000.\0007\000.\0002\000.\0002\0003\000\040\000i\000m\000g\000P\000a\000t\000h\000A\000r\000r}{subsection.5.7.2}% 143 +\BOOKMARK [3][-]{subsubsection.5.7.2.24}{\376\377\0005\000.\0007\000.\0002\000.\0002\0004\000\040\000i\000m\000g\000S\000a\000v\000e\000P\000a\000t\000h}{subsection.5.7.2}% 144 +\BOOKMARK [3][-]{subsubsection.5.7.2.25}{\376\377\0005\000.\0007\000.\0002\000.\0002\0005\000\040\000i\000n\000i\000t\000P\000o\000s\000e}{subsection.5.7.2}% 145 +\BOOKMARK [3][-]{subsubsection.5.7.2.26}{\376\377\0005\000.\0007\000.\0002\000.\0002\0006\000\040\000i\000n\000i\000t\000T\000i\000m\000e\000s\000t\000a\000m\000p}{subsection.5.7.2}% 146 +\BOOKMARK [3][-]{subsubsection.5.7.2.27}{\376\377\0005\000.\0007\000.\0002\000.\0002\0007\000\040\000L\000K\000\137\000P\000A\000R\000A\000M\000S}{subsection.5.7.2}% 147 +\BOOKMARK [3][-]{subsubsection.5.7.2.28}{\376\377\0005\000.\0007\000.\0002\000.\0002\0008\000\040\000N\000\137\000F\000E\000A\000T\000U\000R\000E\000S\000\137\000B\000E\000F\000O\000R\000E\000\137\000R\000E\000T\000R\000A\000C\000K}{subsection.5.7.2}% 148 +\BOOKMARK [3][-]{subsubsection.5.7.2.29}{\376\377\0005\000.\0007\000.\0002\000.\0002\0009\000\040\000n\000B\000a\000d\000F\000e\000a\000t\000u\000r\000e\000s}{subsection.5.7.2}% 149 +\BOOKMARK [3][-]{subsubsection.5.7.2.30}{\376\377\0005\000.\0007\000.\0002\000.\0003\0000\000\040\000n\000F\000e\000a\000t\000u\000r\000e\000s}{subsection.5.7.2}% 150 +\BOOKMARK [3][-]{subsubsection.5.7.2.31}{\376\377\0005\000.\0007\000.\0002\000.\0003\0001\000\040\000n\000G\000o\000o\000d\000F\000e\000a\000t\000u\000r\000e\000s}{subsection.5.7.2}% 151 +\BOOKMARK [3][-]{subsubsection.5.7.2.32}{\376\377\0005\000.\0007\000.\0002\000.\0003\0002\000\040\000n\000I\000m\000g\000s}{subsection.5.7.2}% 152 +\BOOKMARK [3][-]{subsubsection.5.7.2.33}{\376\377\0005\000.\0007\000.\0002\000.\0003\0003\000\040\000P\000L\000O\000T\000\137\000B\000A\000D\000\137\000F\000E\000A\000T\000U\000R\000E\000S}{subsection.5.7.2}% 153 +\BOOKMARK [3][-]{subsubsection.5.7.2.34}{\376\377\0005\000.\0007\000.\0002\000.\0003\0004\000\040\000p\000r\000e\000v\000\137\000g\000o\000o\000d\000\137\000o\000l\000d}{subsection.5.7.2}% 154 +\BOOKMARK [3][-]{subsubsection.5.7.2.35}{\376\377\0005\000.\0007\000.\0002\000.\0003\0005\000\040\000p\000r\000e\000v\000I\000m\000g}{subsection.5.7.2}% 155 +\BOOKMARK [3][-]{subsubsection.5.7.2.36}{\376\377\0005\000.\0007\000.\0002\000.\0003\0006\000\040\000R}{subsection.5.7.2}% 156 +\BOOKMARK [3][-]{subsubsection.5.7.2.37}{\376\377\0005\000.\0007\000.\0002\000.\0003\0007\000\040\000R\000E\000M\000O\000V\000E\000\137\000O\000L\000D\000\137\000R\000E\000S\000U\000L\000T\000S}{subsection.5.7.2}% 157 +\BOOKMARK [3][-]{subsubsection.5.7.2.38}{\376\377\0005\000.\0007\000.\0002\000.\0003\0008\000\040\000s\000a\000v\000e\000F\000e\000a\000t\000u\000r\000e\000P\000a\000t\000h}{subsection.5.7.2}% 158 +\BOOKMARK [3][-]{subsubsection.5.7.2.39}{\376\377\0005\000.\0007\000.\0002\000.\0003\0009\000\040\000s\000a\000v\000e\000P\000a\000t\000h}{subsection.5.7.2}% 159 +\BOOKMARK [3][-]{subsubsection.5.7.2.40}{\376\377\0005\000.\0007\000.\0002\000.\0004\0000\000\040\000s\000h\000o\000w}{subsection.5.7.2}% 160 +\BOOKMARK [3][-]{subsubsection.5.7.2.41}{\376\377\0005\000.\0007\000.\0002\000.\0004\0001\000\040\000s\000t\000a\000r\000t}{subsection.5.7.2}% 161 +\BOOKMARK [3][-]{subsubsection.5.7.2.42}{\376\377\0005\000.\0007\000.\0002\000.\0004\0002\000\040\000s\000t\000a\000r\000t\000I\000m\000g\000I\000n\000d}{subsection.5.7.2}% 162 +\BOOKMARK [3][-]{subsubsection.5.7.2.43}{\376\377\0005\000.\0007\000.\0002\000.\0004\0003\000\040\000t\000i\000m\000e\000s\000t\000a\000m\000p}{subsection.5.7.2}% 163 +\BOOKMARK [3][-]{subsubsection.5.7.2.44}{\376\377\0005\000.\0007\000.\0002\000.\0004\0004\000\040\000t\000i\000m\000e\000s\000t\000a\000m\000p\000P\000a\000t\000h}{subsection.5.7.2}% 164 +\BOOKMARK [3][-]{subsubsection.5.7.2.45}{\376\377\0005\000.\0007\000.\0002\000.\0004\0005\000\040\000t\000o\000S\000a\000v\000e\000I\000m\000g\000P\000a\000t\000h}{subsection.5.7.2}% 165 +\BOOKMARK [3][-]{subsubsection.5.7.2.46}{\376\377\0005\000.\0007\000.\0002\000.\0004\0006\000\040\000t\000o\000S\000a\000v\000e\000T\000r\000a\000j\000P\000a\000t\000h}{subsection.5.7.2}% 166 +\BOOKMARK [3][-]{subsubsection.5.7.2.47}{\376\377\0005\000.\0007\000.\0002\000.\0004\0007\000\040\000t\000r\000a\000j\000S\000a\000v\000e\000P\000a\000t\000h}{subsection.5.7.2}% 167 +\BOOKMARK [3][-]{subsubsection.5.7.2.48}{\376\377\0005\000.\0007\000.\0002\000.\0004\0008\000\040\000t\000r\000a\000n\000s\000f\000o\000r\000m\000e\000d\000\137\000p\000t\000s}{subsection.5.7.2}% 168 +\BOOKMARK [1][-]{section.5.8}{\376\377\0005\000.\0008\000\040\000M\000a\000p\000p\000i\000n\000g\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 169 +\BOOKMARK [2][-]{subsection.5.8.1}{\376\377\0005\000.\0008\000.\0001\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.8}% 170 +\BOOKMARK [3][-]{subsubsection.5.8.1.1}{\376\377\0005\000.\0008\000.\0001\000.\0001\000\040\000R\000A\000D\000A\000R\000\137\000C\000A\000R\000T\000\137\000C\000E\000N\000T\000E\000R}{subsection.5.8.1}% 171 +\BOOKMARK [3][-]{subsubsection.5.8.1.2}{\376\377\0005\000.\0008\000.\0001\000.\0002\000\040\000R\000O\000T\000\137\000T\000H\000R\000E\000S\000H\000O\000L\000D}{subsection.5.8.1}% 172 +\BOOKMARK [3][-]{subsubsection.5.8.1.3}{\376\377\0005\000.\0008\000.\0001\000.\0003\000\040\000T\000R\000A\000N\000S\000\137\000T\000H\000R\000E\000S\000H\000O\000L\000D}{subsection.5.8.1}% 173 +\BOOKMARK [3][-]{subsubsection.5.8.1.4}{\376\377\0005\000.\0008\000.\0001\000.\0004\000\040\000T\000R\000A\000N\000S\000\137\000T\000H\000R\000E\000S\000H\000O\000L\000D\000\137\000S\000Q}{subsection.5.8.1}% 174 +\BOOKMARK [1][-]{section.5.9}{\376\377\0005\000.\0009\000\040\000m\000o\000t\000i\000o\000n\000D\000i\000s\000t\000o\000r\000t\000i\000o\000n\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 175 +\BOOKMARK [2][-]{subsection.5.9.1}{\376\377\0005\000.\0009\000.\0001\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.9}% 176 +\BOOKMARK [3][-]{subsubsection.5.9.1.1}{\376\377\0005\000.\0009\000.\0001\000.\0001\000\040\000R\000A\000D\000A\000R\000\137\000S\000C\000A\000N\000\137\000F\000R\000E\000Q\000U\000E\000N\000C\000Y}{subsection.5.9.1}% 177 +\BOOKMARK [3][-]{subsubsection.5.9.1.2}{\376\377\0005\000.\0009\000.\0001\000.\0002\000\040\000V\000E\000R\000B\000O\000S\000E}{subsection.5.9.1}% 178 +\BOOKMARK [1][-]{section.5.10}{\376\377\0005\000.\0001\0000\000\040\000o\000u\000t\000l\000i\000e\000r\000R\000e\000j\000e\000c\000t\000i\000o\000n\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 179 +\BOOKMARK [2][-]{subsection.5.10.1}{\376\377\0005\000.\0001\0000\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.10}% 180 +\BOOKMARK [3][-]{subsubsection.5.10.1.1}{\376\377\0005\000.\0001\0000\000.\0001\000.\0001\000\040\000r\000e\000j\000e\000c\000t\000O\000u\000t\000l\000i\000e\000r\000s\000\050\000\051}{subsection.5.10.1}% 181 +\BOOKMARK [2][-]{subsection.5.10.2}{\376\377\0005\000.\0001\0000\000.\0002\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.10}% 182 +\BOOKMARK [3][-]{subsubsection.5.10.2.1}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\000\040\000a\000l\000p\000h\000a}{subsection.5.10.2}% 183 +\BOOKMARK [3][-]{subsubsection.5.10.2.2}{\376\377\0005\000.\0001\0000\000.\0002\000.\0002\000\040\000D\000I\000S\000T\000\137\000T\000H\000R\000E\000S\000H\000O\000L\000D\000\137\000M}{subsection.5.10.2}% 184 +\BOOKMARK [3][-]{subsubsection.5.10.2.3}{\376\377\0005\000.\0001\0000\000.\0002\000.\0003\000\040\000D\000I\000S\000T\000\137\000T\000H\000R\000E\000S\000H\000O\000L\000D\000\137\000P\000X}{subsection.5.10.2}% 185 +\BOOKMARK [3][-]{subsubsection.5.10.2.4}{\376\377\0005\000.\0001\0000\000.\0002\000.\0004\000\040\000D\000I\000S\000T\000S\000Q\000\137\000T\000H\000R\000E\000S\000H\000O\000L\000D\000\137\000P\000X}{subsection.5.10.2}% 186 +\BOOKMARK [3][-]{subsubsection.5.10.2.5}{\376\377\0005\000.\0001\0000\000.\0002\000.\0005\000\040\000F\000O\000R\000C\000E\000\137\000O\000U\000T\000L\000I\000E\000R\000S}{subsection.5.10.2}% 187 +\BOOKMARK [3][-]{subsubsection.5.10.2.6}{\376\377\0005\000.\0001\0000\000.\0002\000.\0006\000\040\000m\000a\000x\000\137\000t\000r\000a\000n\000s\000l\000a\000t\000i\000o\000n\000\137\000m}{subsection.5.10.2}% 188 +\BOOKMARK [3][-]{subsubsection.5.10.2.7}{\376\377\0005\000.\0001\0000\000.\0002\000.\0007\000\040\000n\000\137\000o\000u\000t\000l\000i\000e\000r\000s}{subsection.5.10.2}% 189 +\BOOKMARK [3][-]{subsubsection.5.10.2.8}{\376\377\0005\000.\0001\0000\000.\0002\000.\0008\000\040\000n\000\137\000p\000o\000i\000n\000t\000s}{subsection.5.10.2}% 190 +\BOOKMARK [3][-]{subsubsection.5.10.2.9}{\376\377\0005\000.\0001\0000\000.\0002\000.\0009\000\040\000n\000e\000w\000\137\000c\000o\000o\000r\000d}{subsection.5.10.2}% 191 +\BOOKMARK [3][-]{subsubsection.5.10.2.10}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0000\000\040\000n\000e\000w\000\137\000c\000o\000o\000r\000d\000\137\000p\000e\000r\000f\000e\000c\000t}{subsection.5.10.2}% 192 +\BOOKMARK [3][-]{subsubsection.5.10.2.11}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0001\000\040\000n\000o\000i\000s\000e\000T\000o\000A\000d\000d}{subsection.5.10.2}% 193 +\BOOKMARK [3][-]{subsubsection.5.10.2.12}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0002\000\040\000o\000u\000t\000l\000i\000e\000r\000\137\000i\000n\000d}{subsection.5.10.2}% 194 +\BOOKMARK [3][-]{subsubsection.5.10.2.13}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0003\000\040\000p\000r\000e\000v\000\137\000c\000o\000o\000r\000d}{subsection.5.10.2}% 195 +\BOOKMARK [3][-]{subsubsection.5.10.2.14}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0004\000\040\000p\000r\000u\000n\000e\000d\000\137\000n\000e\000w\000\137\000c\000o\000o\000r\000d}{subsection.5.10.2}% 196 +\BOOKMARK [3][-]{subsubsection.5.10.2.15}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0005\000\040\000p\000r\000u\000n\000e\000d\000\137\000p\000r\000e\000v\000\137\000c\000o\000o\000r\000d}{subsection.5.10.2}% 197 +\BOOKMARK [3][-]{subsubsection.5.10.2.16}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0006\000\040\000s\000h\000o\000w}{subsection.5.10.2}% 198 +\BOOKMARK [3][-]{subsubsection.5.10.2.17}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0007\000\040\000t\000h\000e\000t\000a\000\137\000d\000e\000g}{subsection.5.10.2}% 199 +\BOOKMARK [3][-]{subsubsection.5.10.2.18}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0008\000\040\000t\000h\000e\000t\000a\000\137\000m\000a\000x\000\137\000d\000e\000g}{subsection.5.10.2}% 200 +\BOOKMARK [3][-]{subsubsection.5.10.2.19}{\376\377\0005\000.\0001\0000\000.\0002\000.\0001\0009\000\040\000t\000i\000t\000l\000e\000\137\000a\000p\000p\000e\000n\000d}{subsection.5.10.2}% 201 +\BOOKMARK [3][-]{subsubsection.5.10.2.20}{\376\377\0005\000.\0001\0000\000.\0002\000.\0002\0000\000\040\000t\000r\000a\000n\000s\000\137\000v\000e\000c}{subsection.5.10.2}% 202 +\BOOKMARK [1][-]{section.5.11}{\376\377\0005\000.\0001\0001\000\040\000p\000a\000r\000s\000e\000D\000a\000t\000a\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 203 +\BOOKMARK [2][-]{subsection.5.11.1}{\376\377\0005\000.\0001\0001\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.11}% 204 +\BOOKMARK [3][-]{subsubsection.5.11.1.1}{\376\377\0005\000.\0001\0001\000.\0001\000.\0001\000\040\000c\000o\000n\000v\000e\000r\000t\000C\000a\000r\000t\000e\000s\000i\000a\000n\000I\000m\000a\000g\000e\000T\000o\000P\000o\000l\000a\000r\000\050\000\051}{subsection.5.11.1}% 205 +\BOOKMARK [3][-]{subsubsection.5.11.1.2}{\376\377\0005\000.\0001\0001\000.\0001\000.\0002\000\040\000c\000o\000n\000v\000e\000r\000t\000P\000o\000l\000a\000r\000I\000m\000a\000g\000e\000T\000o\000C\000a\000r\000t\000e\000s\000i\000a\000n\000\050\000\051}{subsection.5.11.1}% 206 +\BOOKMARK [3][-]{subsubsection.5.11.1.3}{\376\377\0005\000.\0001\0001\000.\0001\000.\0003\000\040\000c\000o\000n\000v\000e\000r\000t\000P\000o\000l\000a\000r\000I\000m\000g\000T\000o\000L\000o\000g\000P\000o\000l\000a\000r\000\050\000\051}{subsection.5.11.1}% 207 +\BOOKMARK [3][-]{subsubsection.5.11.1.4}{\376\377\0005\000.\0001\0001\000.\0001\000.\0004\000\040\000d\000r\000a\000w\000C\000V\000P\000o\000i\000n\000t\000\050\000\051}{subsection.5.11.1}% 208 +\BOOKMARK [3][-]{subsubsection.5.11.1.5}{\376\377\0005\000.\0001\0001\000.\0001\000.\0005\000\040\000e\000x\000t\000r\000a\000c\000t\000D\000a\000t\000a\000F\000r\000o\000m\000R\000a\000d\000a\000r\000I\000m\000a\000g\000e\000\050\000\051}{subsection.5.11.1}% 209 +\BOOKMARK [3][-]{subsubsection.5.11.1.6}{\376\377\0005\000.\0001\0001\000.\0001\000.\0006\000\040\000g\000e\000t\000C\000a\000r\000t\000I\000m\000a\000g\000e\000F\000r\000o\000m\000I\000m\000g\000P\000a\000t\000h\000s\000\050\000\051}{subsection.5.11.1}% 210 +\BOOKMARK [3][-]{subsubsection.5.11.1.7}{\376\377\0005\000.\0001\0001\000.\0001\000.\0007\000\040\000g\000e\000t\000D\000a\000t\000a\000F\000r\000o\000m\000I\000m\000g\000P\000a\000t\000h\000s\000B\000y\000I\000n\000d\000e\000x\000\050\000\051}{subsection.5.11.1}% 211 +\BOOKMARK [3][-]{subsubsection.5.11.1.8}{\376\377\0005\000.\0001\0001\000.\0001\000.\0008\000\040\000g\000e\000t\000P\000o\000l\000a\000r\000I\000m\000a\000g\000e\000F\000r\000o\000m\000I\000m\000g\000P\000a\000t\000h\000s\000\050\000\051}{subsection.5.11.1}% 212 +\BOOKMARK [3][-]{subsubsection.5.11.1.9}{\376\377\0005\000.\0001\0001\000.\0001\000.\0009\000\040\000g\000e\000t\000R\000a\000d\000a\000r\000I\000m\000g\000P\000a\000t\000h\000s\000\050\000\051}{subsection.5.11.1}% 213 +\BOOKMARK [3][-]{subsubsection.5.11.1.10}{\376\377\0005\000.\0001\0001\000.\0001\000.\0001\0000\000\040\000g\000e\000t\000R\000a\000d\000a\000r\000S\000t\000r\000e\000a\000m\000P\000o\000l\000a\000r\000\050\000\051}{subsection.5.11.1}% 214 +\BOOKMARK [2][-]{subsection.5.11.2}{\376\377\0005\000.\0001\0001\000.\0002\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.11}% 215 +\BOOKMARK [3][-]{subsubsection.5.11.2.1}{\376\377\0005\000.\0001\0001\000.\0002\000.\0001\000\040\000c}{subsection.5.11.2}% 216 +\BOOKMARK [3][-]{subsubsection.5.11.2.2}{\376\377\0005\000.\0001\0001\000.\0002\000.\0002\000\040\000d\000a\000t\000a\000P\000a\000t\000h}{subsection.5.11.2}% 217 +\BOOKMARK [3][-]{subsubsection.5.11.2.3}{\376\377\0005\000.\0001\0001\000.\0002\000.\0003\000\040\000d\000a\000t\000a\000s\000e\000t\000N\000a\000m\000e}{subsection.5.11.2}% 218 +\BOOKMARK [3][-]{subsubsection.5.11.2.4}{\376\377\0005\000.\0001\0001\000.\0002\000.\0004\000\040\000D\000O\000W\000N\000S\000A\000M\000P\000L\000E\000\137\000F\000A\000C\000T\000O\000R}{subsection.5.11.2}% 219 +\BOOKMARK [3][-]{subsubsection.5.11.2.5}{\376\377\0005\000.\0001\0001\000.\0002\000.\0005\000\040\000i\000m\000g\000C\000a\000r\000t}{subsection.5.11.2}% 220 +\BOOKMARK [3][-]{subsubsection.5.11.2.6}{\376\377\0005\000.\0001\0001\000.\0002\000.\0006\000\040\000i\000m\000g\000P\000o\000l\000a\000r}{subsection.5.11.2}% 221 +\BOOKMARK [3][-]{subsubsection.5.11.2.7}{\376\377\0005\000.\0001\0001\000.\0002\000.\0007\000\040\000M\000A\000X\000\137\000R\000A\000N\000G\000E\000\137\000C\000L\000I\000P\000\137\000D\000E\000F\000A\000U\000L\000T}{subsection.5.11.2}% 222 +\BOOKMARK [3][-]{subsubsection.5.11.2.8}{\376\377\0005\000.\0001\0001\000.\0002\000.\0008\000\040\000n\000I\000m\000g\000s}{subsection.5.11.2}% 223 +\BOOKMARK [3][-]{subsubsection.5.11.2.9}{\376\377\0005\000.\0001\0001\000.\0002\000.\0009\000\040\000R\000A\000N\000G\000E\000\137\000R\000E\000S\000O\000L\000U\000T\000I\000O\000N\000\137\000C\000A\000R\000T\000\137\000M}{subsection.5.11.2}% 224 +\BOOKMARK [3][-]{subsubsection.5.11.2.10}{\376\377\0005\000.\0001\0001\000.\0002\000.\0001\0000\000\040\000R\000A\000N\000G\000E\000\137\000R\000E\000S\000O\000L\000U\000T\000I\000O\000N\000\137\000M}{subsection.5.11.2}% 225 +\BOOKMARK [3][-]{subsubsection.5.11.2.11}{\376\377\0005\000.\0001\0001\000.\0002\000.\0001\0001\000\040\000s\000t\000r\000e\000a\000m\000A\000r\000r}{subsection.5.11.2}% 226 +\BOOKMARK [3][-]{subsubsection.5.11.2.12}{\376\377\0005\000.\0001\0001\000.\0002\000.\0001\0002\000\040\000t\000i\000m\000e\000s\000t\000a\000m\000p\000P\000a\000t\000h}{subsection.5.11.2}% 227 +\BOOKMARK [1][-]{section.5.12}{\376\377\0005\000.\0001\0002\000\040\000P\000o\000s\000e\000G\000r\000a\000p\000h\000L\000i\000b\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 228 +\BOOKMARK [1][-]{section.5.13}{\376\377\0005\000.\0001\0003\000\040\000R\000a\000w\000R\000O\000A\000M\000S\000y\000s\000t\000e\000m\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 229 +\BOOKMARK [2][-]{subsection.5.13.1}{\376\377\0005\000.\0001\0003\000.\0001\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.13}% 230 +\BOOKMARK [3][-]{subsubsection.5.13.1.1}{\376\377\0005\000.\0001\0003\000.\0001\000.\0001\000\040\000d\000a\000t\000a\000s\000e\000t\000N\000a\000m\000e}{subsection.5.13.1}% 231 +\BOOKMARK [3][-]{subsubsection.5.13.1.2}{\376\377\0005\000.\0001\0003\000.\0001\000.\0002\000\040\000e\000n\000d\000S\000e\000q\000I\000n\000d}{subsection.5.13.1}% 232 +\BOOKMARK [3][-]{subsubsection.5.13.1.3}{\376\377\0005\000.\0001\0003\000.\0001\000.\0003\000\040\000i\000m\000g\000S\000a\000v\000e\000P\000a\000t\000h}{subsection.5.13.1}% 233 +\BOOKMARK [3][-]{subsubsection.5.13.1.4}{\376\377\0005\000.\0001\0003\000.\0001\000.\0004\000\040\000p\000a\000r\000a\000m\000F\000l\000a\000g\000s}{subsection.5.13.1}% 234 +\BOOKMARK [3][-]{subsubsection.5.13.1.5}{\376\377\0005\000.\0001\0003\000.\0001\000.\0005\000\040\000R\000A\000D\000A\000R\000\137\000C\000A\000R\000T\000\137\000C\000E\000N\000T\000E\000R}{subsection.5.13.1}% 235 +\BOOKMARK [3][-]{subsubsection.5.13.1.6}{\376\377\0005\000.\0001\0003\000.\0001\000.\0006\000\040\000R\000E\000M\000O\000V\000E\000\137\000O\000L\000D\000\137\000R\000E\000S\000U\000L\000T\000S}{subsection.5.13.1}% 236 +\BOOKMARK [3][-]{subsubsection.5.13.1.7}{\376\377\0005\000.\0001\0003\000.\0001\000.\0007\000\040\000s\000t\000a\000r\000t\000S\000e\000q\000I\000n\000d}{subsection.5.13.1}% 237 +\BOOKMARK [3][-]{subsubsection.5.13.1.8}{\376\377\0005\000.\0001\0003\000.\0001\000.\0008\000\040\000s\000y\000s\000t\000e\000m}{subsection.5.13.1}% 238 +\BOOKMARK [3][-]{subsubsection.5.13.1.9}{\376\377\0005\000.\0001\0003\000.\0001\000.\0009\000\040\000t\000r\000a\000j\000S\000a\000v\000e\000P\000a\000t\000h}{subsection.5.13.1}% 239 +\BOOKMARK [3][-]{subsubsection.5.13.1.10}{\376\377\0005\000.\0001\0003\000.\0001\000.\0001\0000\000\040\000w\000a\000n\000t\000T\000o\000P\000l\000o\000t}{subsection.5.13.1}% 240 +\BOOKMARK [1][-]{section.5.14}{\376\377\0005\000.\0001\0004\000\040\000t\000e\000s\000t\000M\000o\000t\000i\000o\000n\000D\000i\000s\000t\000o\000r\000t\000i\000o\000n\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 241 +\BOOKMARK [2][-]{subsection.5.14.1}{\376\377\0005\000.\0001\0004\000.\0001\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.14}% 242 +\BOOKMARK [3][-]{subsubsection.5.14.1.1}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\000\040\000A}{subsection.5.14.1}% 243 +\BOOKMARK [3][-]{subsubsection.5.14.1.2}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\000\040\000A\000\137\000i\000n\000v}{subsection.5.14.1}% 244 +\BOOKMARK [3][-]{subsubsection.5.14.1.3}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\000\040\000a\000l\000p\000h\000a}{subsection.5.14.1}% 245 +\BOOKMARK [3][-]{subsubsection.5.14.1.4}{\376\377\0005\000.\0001\0004\000.\0001\000.\0004\000\040\000c\000l\000e\000a\000r}{subsection.5.14.1}% 246 +\BOOKMARK [3][-]{subsubsection.5.14.1.5}{\376\377\0005\000.\0001\0004\000.\0001\000.\0005\000\040\000c\000o\000v\000\137\000p}{subsection.5.14.1}% 247 +\BOOKMARK [3][-]{subsubsection.5.14.1.6}{\376\377\0005\000.\0001\0004\000.\0001\000.\0006\000\040\000c\000o\000v\000\137\000v}{subsection.5.14.1}% 248 +\BOOKMARK [3][-]{subsubsection.5.14.1.7}{\376\377\0005\000.\0001\0004\000.\0001\000.\0007\000\040\000c\000u\000r\000r\000e\000n\000t\000F\000r\000a\000m\000e}{subsection.5.14.1}% 249 +\BOOKMARK [3][-]{subsubsection.5.14.1.8}{\376\377\0005\000.\0001\0004\000.\0001\000.\0008\000\040\000d\000i\000s\000t\000o\000r\000t\000e\000d}{subsection.5.14.1}% 250 +\BOOKMARK [3][-]{subsubsection.5.14.1.9}{\376\377\0005\000.\0001\0004\000.\0001\000.\0009\000\040\000F\000a\000l\000s\000e}{subsection.5.14.1}% 251 +\BOOKMARK [3][-]{subsubsection.5.14.1.10}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0000\000\040\000f\000i\000n\000a\000l\000\137\000u\000n\000d\000i\000s\000t\000o\000r\000t\000e\000d}{subsection.5.14.1}% 252 +\BOOKMARK [3][-]{subsubsection.5.14.1.11}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0001\000\040\000f\000r\000e\000q\000u\000e\000n\000c\000y}{subsection.5.14.1}% 253 +\BOOKMARK [3][-]{subsubsection.5.14.1.12}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0002\000\040\000g\000r\000o\000u\000n\000d\000T\000r\000u\000t\000h}{subsection.5.14.1}% 254 +\BOOKMARK [3][-]{subsubsection.5.14.1.13}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0003\000\040\000h}{subsection.5.14.1}% 255 +\BOOKMARK [3][-]{subsubsection.5.14.1.14}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0004\000\040\000h\000\137\000f\000i\000t}{subsection.5.14.1}% 256 +\BOOKMARK [3][-]{subsubsection.5.14.1.15}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0005\000\040\000M\000D\000S}{subsection.5.14.1}% 257 +\BOOKMARK [3][-]{subsubsection.5.14.1.16}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0006\000\040\000N}{subsection.5.14.1}% 258 +\BOOKMARK [3][-]{subsubsection.5.14.1.17}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0007\000\040\000n\000\137\000p\000o\000i\000n\000t\000s}{subsection.5.14.1}% 259 +\BOOKMARK [3][-]{subsubsection.5.14.1.18}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0008\000\040\000n\000o\000i\000s\000e\000T\000o\000A\000d\000d}{subsection.5.14.1}% 260 +\BOOKMARK [3][-]{subsubsection.5.14.1.19}{\376\377\0005\000.\0001\0004\000.\0001\000.\0001\0009\000\040\000n\000o\000i\000s\000y}{subsection.5.14.1}% 261 +\BOOKMARK [3][-]{subsubsection.5.14.1.20}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0000\000\040\000o\000u\000t\000l\000i\000e\000r\000\137\000i\000n\000d}{subsection.5.14.1}% 262 +\BOOKMARK [3][-]{subsubsection.5.14.1.21}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0001\000\040\000o\000u\000t\000l\000i\000e\000r\000\137\000r\000a\000t\000e}{subsection.5.14.1}% 263 +\BOOKMARK [3][-]{subsubsection.5.14.1.22}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0002\000\040\000p\000\137\000j\000t}{subsection.5.14.1}% 264 +\BOOKMARK [3][-]{subsubsection.5.14.1.23}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0003\000\040\000p\000\137\000w}{subsection.5.14.1}% 265 +\BOOKMARK [3][-]{subsubsection.5.14.1.24}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0004\000\040\000p\000a\000r\000a\000m\000s}{subsection.5.14.1}% 266 +\BOOKMARK [3][-]{subsubsection.5.14.1.25}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0005\000\040\000p\000e\000r\000i\000o\000d}{subsection.5.14.1}% 267 +\BOOKMARK [3][-]{subsubsection.5.14.1.26}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0006\000\040\000p\000l\000o\000t\000D\000i\000s\000p\000l\000a\000c\000e}{subsection.5.14.1}% 268 +\BOOKMARK [3][-]{subsubsection.5.14.1.27}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0007\000\040\000R\000\137\000f\000i\000t}{subsection.5.14.1}% 269 +\BOOKMARK [3][-]{subsubsection.5.14.1.28}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0008\000\040\000s\000h\000o\000w}{subsection.5.14.1}% 270 +\BOOKMARK [3][-]{subsubsection.5.14.1.29}{\376\377\0005\000.\0001\0004\000.\0001\000.\0002\0009\000\040\000s\000o\000l\000u\000t\000i\000o\000n}{subsection.5.14.1}% 271 +\BOOKMARK [3][-]{subsubsection.5.14.1.30}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0000\000\040\000s\000r\000c\000C\000o\000o\000r\000d\0002}{subsection.5.14.1}% 272 +\BOOKMARK [3][-]{subsubsection.5.14.1.31}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0001\000\040\000s\000r\000c\000C\000o\000o\000r\000d\0003}{subsection.5.14.1}% 273 +\BOOKMARK [3][-]{subsubsection.5.14.1.32}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0002\000\040\000T\000\137\000w\000j}{subsection.5.14.1}% 274 +\BOOKMARK [3][-]{subsubsection.5.14.1.33}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0003\000\040\000T\000\137\000w\000j\0000}{subsection.5.14.1}% 275 +\BOOKMARK [3][-]{subsubsection.5.14.1.34}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0004\000\040\000t\000h\000e\000t\000a\000\137\000d\000e\000g}{subsection.5.14.1}% 276 +\BOOKMARK [3][-]{subsubsection.5.14.1.35}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0005\000\040\000t\000h\000e\000t\000a\000\137\000f\000i\000t}{subsection.5.14.1}% 277 +\BOOKMARK [3][-]{subsubsection.5.14.1.36}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0006\000\040\000t\000i\000t\000l\000e\000\137\000a\000p\000p\000e\000n\000d}{subsection.5.14.1}% 278 +\BOOKMARK [3][-]{subsubsection.5.14.1.37}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0007\000\040\000t\000r\000a\000n\000s\000f\000o\000r\000m}{subsection.5.14.1}% 279 +\BOOKMARK [3][-]{subsubsection.5.14.1.38}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0008\000\040\000u\000n\000d\000i\000s\000t\000o\000r\000t\000e\000d}{subsection.5.14.1}% 280 +\BOOKMARK [3][-]{subsubsection.5.14.1.39}{\376\377\0005\000.\0001\0004\000.\0001\000.\0003\0009\000\040\000u\000s\000e\000O\000l\000d}{subsection.5.14.1}% 281 +\BOOKMARK [3][-]{subsubsection.5.14.1.40}{\376\377\0005\000.\0001\0004\000.\0001\000.\0004\0000\000\040\000v\000\137\000j\0000}{subsection.5.14.1}% 282 +\BOOKMARK [3][-]{subsubsection.5.14.1.41}{\376\377\0005\000.\0001\0004\000.\0001\000.\0004\0001\000\040\000v\000e\000l\000o\000c\000i\000t\000y}{subsection.5.14.1}% 283 +\BOOKMARK [1][-]{section.5.15}{\376\377\0005\000.\0001\0005\000\040\000t\000e\000s\000t\000T\000r\000a\000n\000s\000f\000o\000r\000m\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 284 +\BOOKMARK [2][-]{subsection.5.15.1}{\376\377\0005\000.\0001\0005\000.\0001\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.15}% 285 +\BOOKMARK [3][-]{subsubsection.5.15.1.1}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\000\040\000A}{subsection.5.15.1}% 286 +\BOOKMARK [3][-]{subsubsection.5.15.1.2}{\376\377\0005\000.\0001\0005\000.\0001\000.\0002\000\040\000A\000\137\000i\000n\000v}{subsection.5.15.1}% 287 +\BOOKMARK [3][-]{subsubsection.5.15.1.3}{\376\377\0005\000.\0001\0005\000.\0001\000.\0003\000\040\000a\000l\000p\000h\000a}{subsection.5.15.1}% 288 +\BOOKMARK [3][-]{subsubsection.5.15.1.4}{\376\377\0005\000.\0001\0005\000.\0001\000.\0004\000\040\000c\000l\000e\000a\000r}{subsection.5.15.1}% 289 +\BOOKMARK [3][-]{subsubsection.5.15.1.5}{\376\377\0005\000.\0001\0005\000.\0001\000.\0005\000\040\000F\000a\000l\000s\000e}{subsection.5.15.1}% 290 +\BOOKMARK [3][-]{subsubsection.5.15.1.6}{\376\377\0005\000.\0001\0005\000.\0001\000.\0006\000\040\000h}{subsection.5.15.1}% 291 +\BOOKMARK [3][-]{subsubsection.5.15.1.7}{\376\377\0005\000.\0001\0005\000.\0001\000.\0007\000\040\000h\000\137\000f\000i\000t}{subsection.5.15.1}% 292 +\BOOKMARK [3][-]{subsubsection.5.15.1.8}{\376\377\0005\000.\0001\0005\000.\0001\000.\0008\000\040\000N}{subsection.5.15.1}% 293 +\BOOKMARK [3][-]{subsubsection.5.15.1.9}{\376\377\0005\000.\0001\0005\000.\0001\000.\0009\000\040\000n\000\137\000p\000o\000i\000n\000t\000s}{subsection.5.15.1}% 294 +\BOOKMARK [3][-]{subsubsection.5.15.1.10}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0000\000\040\000n\000o\000i\000s\000e\000T\000o\000A\000d\000d}{subsection.5.15.1}% 295 +\BOOKMARK [3][-]{subsubsection.5.15.1.11}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0001\000\040\000n\000o\000i\000s\000y}{subsection.5.15.1}% 296 +\BOOKMARK [3][-]{subsubsection.5.15.1.12}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0002\000\040\000o\000u\000t\000l\000i\000e\000r\000\137\000i\000n\000d}{subsection.5.15.1}% 297 +\BOOKMARK [3][-]{subsubsection.5.15.1.13}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0003\000\040\000o\000u\000t\000l\000i\000e\000r\000\137\000r\000a\000t\000e}{subsection.5.15.1}% 298 +\BOOKMARK [3][-]{subsubsection.5.15.1.14}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0004\000\040\000R\000\137\000f\000i\000t}{subsection.5.15.1}% 299 +\BOOKMARK [3][-]{subsubsection.5.15.1.15}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0005\000\040\000s\000h\000o\000w}{subsection.5.15.1}% 300 +\BOOKMARK [3][-]{subsubsection.5.15.1.16}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0006\000\040\000s\000r\000c\000C\000o\000o\000r\000d}{subsection.5.15.1}% 301 +\BOOKMARK [3][-]{subsubsection.5.15.1.17}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0007\000\040\000s\000r\000c\000C\000o\000o\000r\000d\0002}{subsection.5.15.1}% 302 +\BOOKMARK [3][-]{subsubsection.5.15.1.18}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0008\000\040\000t\000a\000r\000g\000e\000t\000C\000o\000o\000r\000d}{subsection.5.15.1}% 303 +\BOOKMARK [3][-]{subsubsection.5.15.1.19}{\376\377\0005\000.\0001\0005\000.\0001\000.\0001\0009\000\040\000t\000h\000e\000t\000a\000\137\000d\000e\000g}{subsection.5.15.1}% 304 +\BOOKMARK [3][-]{subsubsection.5.15.1.20}{\376\377\0005\000.\0001\0005\000.\0001\000.\0002\0000\000\040\000t\000h\000e\000t\000a\000\137\000f\000i\000t}{subsection.5.15.1}% 305 +\BOOKMARK [3][-]{subsubsection.5.15.1.21}{\376\377\0005\000.\0001\0005\000.\0001\000.\0002\0001\000\040\000t\000i\000t\000l\000e\000\137\000a\000p\000p\000e\000n\000d}{subsection.5.15.1}% 306 +\BOOKMARK [3][-]{subsubsection.5.15.1.22}{\376\377\0005\000.\0001\0005\000.\0001\000.\0002\0002\000\040\000u\000s\000e\000O\000l\000d}{subsection.5.15.1}% 307 +\BOOKMARK [1][-]{section.5.16}{\376\377\0005\000.\0001\0006\000\040\000T\000r\000a\000c\000k\000e\000r\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 308 +\BOOKMARK [1][-]{section.5.17}{\376\377\0005\000.\0001\0007\000\040\000t\000r\000a\000j\000e\000c\000t\000o\000r\000y\000P\000l\000o\000t\000t\000i\000n\000g\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 309 +\BOOKMARK [2][-]{subsection.5.17.1}{\376\377\0005\000.\0001\0007\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.17}% 310 +\BOOKMARK [3][-]{subsubsection.5.17.1.1}{\376\377\0005\000.\0001\0007\000.\0001\000.\0001\000\040\000c\000o\000m\000p\000u\000t\000e\000P\000o\000s\000e\000s\000R\000M\000S\000E\000\050\000\051}{subsection.5.17.1}% 311 +\BOOKMARK [3][-]{subsubsection.5.17.1.2}{\376\377\0005\000.\0001\0007\000.\0001\000.\0002\000\040\000g\000e\000t\000G\000r\000o\000u\000n\000d\000T\000r\000u\000t\000h\000T\000r\000a\000j\000e\000c\000t\000o\000r\000y\000\050\000\051}{subsection.5.17.1}% 312 +\BOOKMARK [3][-]{subsubsection.5.17.1.3}{\376\377\0005\000.\0001\0007\000.\0001\000.\0003\000\040\000g\000e\000t\000G\000r\000o\000u\000n\000d\000T\000r\000u\000t\000h\000T\000r\000a\000j\000e\000c\000t\000o\000r\000y\000G\000P\000S\000\050\000\051}{subsection.5.17.1}% 313 +\BOOKMARK [3][-]{subsubsection.5.17.1.4}{\376\377\0005\000.\0001\0007\000.\0001\000.\0004\000\040\000p\000l\000o\000t\000G\000t\000A\000n\000d\000E\000s\000t\000T\000r\000a\000j\000e\000c\000t\000o\000r\000y\000\050\000\051}{subsection.5.17.1}% 314 +\BOOKMARK [2][-]{subsection.5.17.2}{\376\377\0005\000.\0001\0007\000.\0002\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.17}% 315 +\BOOKMARK [3][-]{subsubsection.5.17.2.1}{\376\377\0005\000.\0001\0007\000.\0002\000.\0001\000\040\000b\000l\000o\000c\000k}{subsection.5.17.2}% 316 +\BOOKMARK [3][-]{subsubsection.5.17.2.2}{\376\377\0005\000.\0001\0007\000.\0002\000.\0002\000\040\000d\000a\000t\000a\000s\000e\000t\000N\000a\000m\000e}{subsection.5.17.2}% 317 +\BOOKMARK [3][-]{subsubsection.5.17.2.3}{\376\377\0005\000.\0001\0007\000.\0002\000.\0003\000\040\000e\000s\000t\000P\000o\000s\000e\000s}{subsection.5.17.2}% 318 +\BOOKMARK [3][-]{subsubsection.5.17.2.4}{\376\377\0005\000.\0001\0007\000.\0002\000.\0004\000\040\000e\000s\000t\000T\000r\000a\000j}{subsection.5.17.2}% 319 +\BOOKMARK [3][-]{subsubsection.5.17.2.5}{\376\377\0005\000.\0001\0007\000.\0002\000.\0005\000\040\000g\000t\000P\000a\000t\000h}{subsection.5.17.2}% 320 +\BOOKMARK [3][-]{subsubsection.5.17.2.6}{\376\377\0005\000.\0001\0007\000.\0002\000.\0006\000\040\000g\000t\000T\000r\000a\000j}{subsection.5.17.2}% 321 +\BOOKMARK [3][-]{subsubsection.5.17.2.7}{\376\377\0005\000.\0001\0007\000.\0002\000.\0007\000\040\000k\000e\000y\000f\000r\000a\000m\000e\000\137\000t\000i\000m\000e\000s\000t\000a\000m\000p\000s}{subsection.5.17.2}% 322 +\BOOKMARK [3][-]{subsubsection.5.17.2.8}{\376\377\0005\000.\0001\0007\000.\0002\000.\0008\000\040\000n\000o\000i\000s\000e}{subsection.5.17.2}% 323 +\BOOKMARK [3][-]{subsubsection.5.17.2.9}{\376\377\0005\000.\0001\0007\000.\0002\000.\0009\000\040\000t\000i\000m\000e\000s\000t\000a\000m\000p\000P\000a\000t\000h}{subsection.5.17.2}% 324 +\BOOKMARK [1][-]{section.5.18}{\376\377\0005\000.\0001\0008\000\040\000u\000t\000i\000l\000s\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.5}% 325 +\BOOKMARK [2][-]{subsection.5.18.1}{\376\377\0005\000.\0001\0008\000.\0001\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.5.18}% 326 +\BOOKMARK [3][-]{subsubsection.5.18.1.1}{\376\377\0005\000.\0001\0008\000.\0001\000.\0001\000\040\000c\000o\000n\000v\000e\000r\000t\000P\000o\000s\000e\000T\000o\000T\000r\000a\000n\000s\000f\000o\000r\000m\000\050\000\051}{subsection.5.18.1}% 327 +\BOOKMARK [3][-]{subsubsection.5.18.1.2}{\376\377\0005\000.\0001\0008\000.\0001\000.\0002\000\040\000c\000o\000n\000v\000e\000r\000t\000R\000a\000n\000d\000H\000t\000o\000D\000e\000l\000t\000a\000s\000\050\000\051}{subsection.5.18.1}% 328 +\BOOKMARK [3][-]{subsubsection.5.18.1.3}{\376\377\0005\000.\0001\0008\000.\0001\000.\0003\000\040\000c\000o\000n\000v\000e\000r\000t\000T\000r\000a\000n\000s\000f\000o\000r\000m\000T\000o\000P\000o\000s\000e\000\050\000\051}{subsection.5.18.1}% 329 +\BOOKMARK [3][-]{subsubsection.5.18.1.4}{\376\377\0005\000.\0001\0008\000.\0001\000.\0004\000\040\000f\000\137\000a\000r\000r\000\050\000\051}{subsection.5.18.1}% 330 +\BOOKMARK [3][-]{subsubsection.5.18.1.5}{\376\377\0005\000.\0001\0008\000.\0001\000.\0005\000\040\000f\000l\000a\000t\000t\000e\000n\000\050\000\051}{subsection.5.18.1}% 331 +\BOOKMARK [3][-]{subsubsection.5.18.1.6}{\376\377\0005\000.\0001\0008\000.\0001\000.\0006\000\040\000g\000e\000t\000R\000o\000t\000a\000t\000i\000o\000n\000M\000a\000t\000r\000i\000x\000\050\000\051}{subsection.5.18.1}% 332 +\BOOKMARK [3][-]{subsubsection.5.18.1.7}{\376\377\0005\000.\0001\0008\000.\0001\000.\0007\000\040\000h\000o\000m\000o\000g\000e\000n\000i\000z\000e\000\050\000\051}{subsection.5.18.1}% 333 +\BOOKMARK [3][-]{subsubsection.5.18.1.8}{\376\377\0005\000.\0001\0008\000.\0001\000.\0008\000\040\000i\000n\000v\000e\000r\000t\000\137\000t\000r\000a\000n\000s\000f\000o\000r\000m\000\050\000\051}{subsection.5.18.1}% 334 +\BOOKMARK [3][-]{subsubsection.5.18.1.9}{\376\377\0005\000.\0001\0008\000.\0001\000.\0009\000\040\000n\000o\000r\000m\000a\000l\000i\000z\000e\000\137\000a\000n\000g\000l\000e\000s\000\050\000\051}{subsection.5.18.1}% 335 +\BOOKMARK [3][-]{subsubsection.5.18.1.10}{\376\377\0005\000.\0001\0008\000.\0001\000.\0001\0000\000\040\000p\000l\000t\000\137\000f\000u\000l\000l\000\137\000e\000x\000t\000e\000n\000t\000\050\000\051}{subsection.5.18.1}% 336 +\BOOKMARK [3][-]{subsubsection.5.18.1.11}{\376\377\0005\000.\0001\0008\000.\0001\000.\0001\0001\000\040\000p\000l\000t\000\137\000s\000a\000v\000e\000f\000i\000g\000\137\000b\000y\000\137\000a\000x\000i\000s\000\050\000\051}{subsection.5.18.1}% 337 +\BOOKMARK [3][-]{subsubsection.5.18.1.12}{\376\377\0005\000.\0001\0008\000.\0001\000.\0001\0002\000\040\000q\000u\000i\000v\000e\000r\000\050\000\051}{subsection.5.18.1}% 338 +\BOOKMARK [3][-]{subsubsection.5.18.1.13}{\376\377\0005\000.\0001\0008\000.\0001\000.\0001\0003\000\040\000r\000a\000d\000a\000r\000I\000m\000g\000P\000a\000t\000h\000T\000o\000T\000i\000m\000e\000s\000t\000a\000m\000p\000\050\000\051}{subsection.5.18.1}% 339 +\BOOKMARK [3][-]{subsubsection.5.18.1.14}{\376\377\0005\000.\0001\0008\000.\0001\000.\0001\0004\000\040\000t\000i\000c\000\050\000\051}{subsection.5.18.1}% 340 +\BOOKMARK [3][-]{subsubsection.5.18.1.15}{\376\377\0005\000.\0001\0008\000.\0001\000.\0001\0005\000\040\000t\000o\000c\000\050\000\051}{subsection.5.18.1}% 341 +\BOOKMARK [0][-]{chapter.6}{\376\377\0006\000\040\000C\000l\000a\000s\000s\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 342 +\BOOKMARK [1][-]{section.6.1}{\376\377\0006\000.\0001\000\040\000B\000u\000n\000d\000l\000e\000A\000d\000j\000u\000s\000t\000m\000e\000n\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 343 +\BOOKMARK [2][-]{subsection.6.1.1}{\376\377\0006\000.\0001\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.1}% 344 +\BOOKMARK [3][-]{subsubsection.6.1.1.1}{\376\377\0006\000.\0001\000.\0001\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051}{subsection.6.1.1}% 345 +\BOOKMARK [2][-]{subsection.6.1.2}{\376\377\0006\000.\0001\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.1}% 346 +\BOOKMARK [3][-]{subsubsection.6.1.2.1}{\376\377\0006\000.\0001\000.\0002\000.\0001\000\040\000a\000d\000d\000\137\000e\000d\000g\000e\000\050\000\051}{subsection.6.1.2}% 347 +\BOOKMARK [3][-]{subsubsection.6.1.2.2}{\376\377\0006\000.\0001\000.\0002\000.\0002\000\040\000a\000d\000d\000\137\000p\000o\000i\000n\000t\000\050\000\051}{subsection.6.1.2}% 348 +\BOOKMARK [3][-]{subsubsection.6.1.2.3}{\376\377\0006\000.\0001\000.\0002\000.\0003\000\040\000a\000d\000d\000\137\000p\000o\000s\000e\000\050\000\051}{subsection.6.1.2}% 349 +\BOOKMARK [3][-]{subsubsection.6.1.2.4}{\376\377\0006\000.\0001\000.\0002\000.\0004\000\040\000g\000e\000t\000\137\000p\000o\000i\000n\000t\000\050\000\051}{subsection.6.1.2}% 350 +\BOOKMARK [3][-]{subsubsection.6.1.2.5}{\376\377\0006\000.\0001\000.\0002\000.\0005\000\040\000g\000e\000t\000\137\000p\000o\000s\000e\000\050\000\051}{subsection.6.1.2}% 351 +\BOOKMARK [3][-]{subsubsection.6.1.2.6}{\376\377\0006\000.\0001\000.\0002\000.\0006\000\040\000o\000p\000t\000i\000m\000i\000z\000e\000\050\000\051}{subsection.6.1.2}% 352 +\BOOKMARK [1][-]{section.6.2}{\376\377\0006\000.\0002\000\040\000C\000a\000r\000t\000C\000o\000o\000r\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 353 +\BOOKMARK [2][-]{subsection.6.2.1}{\376\377\0006\000.\0002\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.6.2}% 354 +\BOOKMARK [2][-]{subsection.6.2.2}{\376\377\0006\000.\0002\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.2}% 355 +\BOOKMARK [3][-]{subsubsection.6.2.2.1}{\376\377\0006\000.\0002\000.\0002\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051}{subsection.6.2.2}% 356 +\BOOKMARK [2][-]{subsection.6.2.3}{\376\377\0006\000.\0002\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.2}% 357 +\BOOKMARK [3][-]{subsubsection.6.2.3.1}{\376\377\0006\000.\0002\000.\0003\000.\0001\000\040\000\137\000\137\000s\000t\000r\000\137\000\137\000\050\000\051}{subsection.6.2.3}% 358 +\BOOKMARK [3][-]{subsubsection.6.2.3.2}{\376\377\0006\000.\0002\000.\0003\000.\0002\000\040\000a\000d\000d\000\050\000\051}{subsection.6.2.3}% 359 +\BOOKMARK [3][-]{subsubsection.6.2.3.3}{\376\377\0006\000.\0002\000.\0003\000.\0003\000\040\000a\000d\000d\000C\000o\000o\000r\000d\000\050\000\051}{subsection.6.2.3}% 360 +\BOOKMARK [3][-]{subsubsection.6.2.3.4}{\376\377\0006\000.\0002\000.\0003\000.\0004\000\040\000a\000s\000T\000u\000p\000l\000e\000\050\000\051}{subsection.6.2.3}% 361 +\BOOKMARK [3][-]{subsubsection.6.2.3.5}{\376\377\0006\000.\0002\000.\0003\000.\0005\000\040\000g\000e\000t\000A\000n\000g\000l\000e\000\050\000\051}{subsection.6.2.3}% 362 +\BOOKMARK [3][-]{subsubsection.6.2.3.6}{\376\377\0006\000.\0002\000.\0003\000.\0006\000\040\000g\000e\000t\000D\000i\000s\000t\000a\000n\000c\000e\000\050\000\051}{subsection.6.2.3}% 363 +\BOOKMARK [3][-]{subsubsection.6.2.3.7}{\376\377\0006\000.\0002\000.\0003\000.\0007\000\040\000g\000e\000t\000X\000\050\000\051}{subsection.6.2.3}% 364 +\BOOKMARK [3][-]{subsubsection.6.2.3.8}{\376\377\0006\000.\0002\000.\0003\000.\0008\000\040\000g\000e\000t\000Y\000\050\000\051}{subsection.6.2.3}% 365 +\BOOKMARK [3][-]{subsubsection.6.2.3.9}{\376\377\0006\000.\0002\000.\0003\000.\0009\000\040\000s\000c\000a\000l\000e\000\050\000\051}{subsection.6.2.3}% 366 +\BOOKMARK [3][-]{subsubsection.6.2.3.10}{\376\377\0006\000.\0002\000.\0003\000.\0001\0000\000\040\000s\000c\000a\000l\000e\000X\000\050\000\051}{subsection.6.2.3}% 367 +\BOOKMARK [3][-]{subsubsection.6.2.3.11}{\376\377\0006\000.\0002\000.\0003\000.\0001\0001\000\040\000s\000c\000a\000l\000e\000Y\000\050\000\051}{subsection.6.2.3}% 368 +\BOOKMARK [3][-]{subsubsection.6.2.3.12}{\376\377\0006\000.\0002\000.\0003\000.\0001\0002\000\040\000s\000u\000b\000\050\000\051}{subsection.6.2.3}% 369 +\BOOKMARK [2][-]{subsection.6.2.4}{\376\377\0006\000.\0002\000.\0004\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.2}% 370 +\BOOKMARK [3][-]{subsubsection.6.2.4.1}{\376\377\0006\000.\0002\000.\0004\000.\0001\000\040\000x}{subsection.6.2.4}% 371 +\BOOKMARK [3][-]{subsubsection.6.2.4.2}{\376\377\0006\000.\0002\000.\0004\000.\0002\000\040\000y}{subsection.6.2.4}% 372 +\BOOKMARK [1][-]{section.6.3}{\376\377\0006\000.\0003\000\040\000K\000e\000y\000f\000r\000a\000m\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 373 +\BOOKMARK [2][-]{subsection.6.3.1}{\376\377\0006\000.\0003\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.3}% 374 +\BOOKMARK [3][-]{subsubsection.6.3.1.1}{\376\377\0006\000.\0003\000.\0001\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051}{subsection.6.3.1}% 375 +\BOOKMARK [2][-]{subsection.6.3.2}{\376\377\0006\000.\0003\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.3}% 376 +\BOOKMARK [3][-]{subsubsection.6.3.2.1}{\376\377\0006\000.\0003\000.\0002\000.\0001\000\040\000c\000o\000n\000v\000e\000r\000t\000F\000e\000a\000t\000u\000r\000e\000s\000L\000o\000c\000a\000l\000T\000o\000G\000l\000o\000b\000a\000l\000\050\000\051}{subsection.6.3.2}% 377 +\BOOKMARK [3][-]{subsubsection.6.3.2.2}{\376\377\0006\000.\0003\000.\0002\000.\0002\000\040\000c\000o\000p\000y\000F\000r\000o\000m\000O\000t\000h\000e\000r\000K\000e\000y\000f\000r\000a\000m\000e\000\050\000\051}{subsection.6.3.2}% 378 +\BOOKMARK [3][-]{subsubsection.6.3.2.3}{\376\377\0006\000.\0003\000.\0002\000.\0003\000\040\000g\000e\000t\000P\000r\000u\000n\000e\000d\000F\000e\000a\000t\000u\000r\000e\000s\000G\000l\000o\000b\000a\000l\000P\000o\000s\000i\000t\000i\000o\000n\000\050\000\051}{subsection.6.3.2}% 379 +\BOOKMARK [3][-]{subsubsection.6.3.2.4}{\376\377\0006\000.\0003\000.\0002\000.\0004\000\040\000p\000r\000u\000n\000e\000F\000e\000a\000t\000u\000r\000e\000P\000o\000i\000n\000t\000s\000\050\000\051}{subsection.6.3.2}% 380 +\BOOKMARK [3][-]{subsubsection.6.3.2.5}{\376\377\0006\000.\0003\000.\0002\000.\0005\000\040\000u\000p\000d\000a\000t\000e\000I\000n\000f\000o\000\050\000\051}{subsection.6.3.2}% 381 +\BOOKMARK [2][-]{subsection.6.3.3}{\376\377\0006\000.\0003\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.3}% 382 +\BOOKMARK [3][-]{subsubsection.6.3.3.1}{\376\377\0006\000.\0003\000.\0003\000.\0001\000\040\000f\000e\000a\000t\000u\000r\000e\000P\000o\000i\000n\000t\000s\000L\000o\000c\000a\000l}{subsection.6.3.3}% 383 +\BOOKMARK [3][-]{subsubsection.6.3.3.2}{\376\377\0006\000.\0003\000.\0003\000.\0002\000\040\000f\000e\000a\000t\000u\000r\000e\000P\000o\000i\000n\000t\000s\000L\000o\000c\000a\000l\000U\000n\000d\000i\000s\000t\000o\000r\000t\000e\000d}{subsection.6.3.3}% 384 +\BOOKMARK [3][-]{subsubsection.6.3.3.3}{\376\377\0006\000.\0003\000.\0003\000.\0003\000\040\000p\000o\000i\000n\000t\000C\000l\000o\000u\000d}{subsection.6.3.3}% 385 +\BOOKMARK [3][-]{subsubsection.6.3.3.4}{\376\377\0006\000.\0003\000.\0003\000.\0004\000\040\000p\000o\000s\000e}{subsection.6.3.3}% 386 +\BOOKMARK [3][-]{subsubsection.6.3.3.5}{\376\377\0006\000.\0003\000.\0003\000.\0005\000\040\000p\000r\000u\000n\000e\000d\000F\000e\000a\000t\000u\000r\000e\000P\000o\000i\000n\000t\000s}{subsection.6.3.3}% 387 +\BOOKMARK [3][-]{subsubsection.6.3.3.6}{\376\377\0006\000.\0003\000.\0003\000.\0006\000\040\000p\000r\000u\000n\000e\000d\000U\000n\000d\000i\000s\000t\000o\000r\000t\000e\000d\000L\000o\000c\000a\000l\000s}{subsection.6.3.3}% 388 +\BOOKMARK [3][-]{subsubsection.6.3.3.7}{\376\377\0006\000.\0003\000.\0003\000.\0007\000\040\000r\000a\000d\000a\000r\000P\000o\000l\000a\000r\000I\000m\000g}{subsection.6.3.3}% 389 +\BOOKMARK [3][-]{subsubsection.6.3.3.8}{\376\377\0006\000.\0003\000.\0003\000.\0008\000\040\000v\000e\000l\000o\000c\000i\000t\000y}{subsection.6.3.3}% 390 +\BOOKMARK [1][-]{section.6.4}{\376\377\0006\000.\0004\000\040\000M\000a\000p\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 391 +\BOOKMARK [2][-]{subsection.6.4.1}{\376\377\0006\000.\0004\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.4}% 392 +\BOOKMARK [3][-]{subsubsection.6.4.1.1}{\376\377\0006\000.\0004\000.\0001\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051}{subsection.6.4.1}% 393 +\BOOKMARK [2][-]{subsection.6.4.2}{\376\377\0006\000.\0004\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.4}% 394 +\BOOKMARK [3][-]{subsubsection.6.4.2.1}{\376\377\0006\000.\0004\000.\0002\000.\0001\000\040\000a\000d\000d\000K\000e\000y\000f\000r\000a\000m\000e\000\050\000\051}{subsection.6.4.2}% 395 +\BOOKMARK [3][-]{subsubsection.6.4.2.2}{\376\377\0006\000.\0004\000.\0002\000.\0002\000\040\000i\000s\000G\000o\000o\000d\000K\000e\000y\000f\000r\000a\000m\000e\000\050\000\051}{subsection.6.4.2}% 396 +\BOOKMARK [3][-]{subsubsection.6.4.2.3}{\376\377\0006\000.\0004\000.\0002\000.\0003\000\040\000p\000l\000o\000t\000\050\000\051}{subsection.6.4.2}% 397 +\BOOKMARK [3][-]{subsubsection.6.4.2.4}{\376\377\0006\000.\0004\000.\0002\000.\0004\000\040\000u\000p\000d\000a\000t\000e\000I\000n\000t\000e\000r\000n\000a\000l\000T\000r\000a\000j\000\050\000\051}{subsection.6.4.2}% 398 +\BOOKMARK [2][-]{subsection.6.4.3}{\376\377\0006\000.\0004\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.4}% 399 +\BOOKMARK [3][-]{subsubsection.6.4.3.1}{\376\377\0006\000.\0004\000.\0003\000.\0001\000\040\000e\000s\000t\000T\000r\000a\000j}{subsection.6.4.3}% 400 +\BOOKMARK [3][-]{subsubsection.6.4.3.2}{\376\377\0006\000.\0004\000.\0003\000.\0002\000\040\000f\000i\000l\000e\000P\000a\000t\000h\000s}{subsection.6.4.3}% 401 +\BOOKMARK [3][-]{subsubsection.6.4.3.3}{\376\377\0006\000.\0004\000.\0003\000.\0003\000\040\000i\000m\000g\000P\000a\000t\000h\000A\000r\000r}{subsection.6.4.3}% 402 +\BOOKMARK [3][-]{subsubsection.6.4.3.4}{\376\377\0006\000.\0004\000.\0003\000.\0004\000\040\000k\000e\000y\000f\000r\000a\000m\000e\000s}{subsection.6.4.3}% 403 +\BOOKMARK [3][-]{subsubsection.6.4.3.5}{\376\377\0006\000.\0004\000.\0003\000.\0005\000\040\000m\000a\000p\000P\000o\000i\000n\000t\000s}{subsection.6.4.3}% 404 +\BOOKMARK [3][-]{subsubsection.6.4.3.6}{\376\377\0006\000.\0004\000.\0003\000.\0006\000\040\000s\000e\000q\000u\000e\000n\000c\000e\000N\000a\000m\000e}{subsection.6.4.3}% 405 +\BOOKMARK [3][-]{subsubsection.6.4.3.7}{\376\377\0006\000.\0004\000.\0003\000.\0007\000\040\000s\000e\000q\000u\000e\000n\000c\000e\000S\000i\000z\000e}{subsection.6.4.3}% 406 +\BOOKMARK [1][-]{section.6.5}{\376\377\0006\000.\0005\000\040\000M\000o\000t\000i\000o\000n\000D\000i\000s\000t\000o\000r\000t\000i\000o\000n\000S\000o\000l\000v\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 407 +\BOOKMARK [2][-]{subsection.6.5.1}{\376\377\0006\000.\0005\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.5}% 408 +\BOOKMARK [3][-]{subsubsection.6.5.1.1}{\376\377\0006\000.\0005\000.\0001\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051\000\040\000[\0001\000/\0002\000]}{subsection.6.5.1}% 409 +\BOOKMARK [3][-]{subsubsection.6.5.1.2}{\376\377\0006\000.\0005\000.\0001\000.\0002\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051\000\040\000[\0002\000/\0002\000]}{subsection.6.5.1}% 410 +\BOOKMARK [2][-]{subsection.6.5.2}{\376\377\0006\000.\0005\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.5}% 411 +\BOOKMARK [3][-]{subsubsection.6.5.2.1}{\376\377\0006\000.\0005\000.\0002\000.\0001\000\040\000c\000o\000m\000p\000u\000t\000e\000\137\000t\000i\000m\000e\000\137\000d\000e\000l\000t\000a\000s\000\050\000\051}{subsection.6.5.2}% 412 +\BOOKMARK [3][-]{subsubsection.6.5.2.2}{\376\377\0006\000.\0005\000.\0002\000.\0002\000\040\000e\000r\000r\000o\000r\000\050\000\051}{subsection.6.5.2}% 413 +\BOOKMARK [3][-]{subsubsection.6.5.2.3}{\376\377\0006\000.\0005\000.\0002\000.\0003\000\040\000e\000r\000r\000o\000r\000\137\000v\000e\000c\000t\000o\000r\000\050\000\051}{subsection.6.5.2}% 414 +\BOOKMARK [3][-]{subsubsection.6.5.2.4}{\376\377\0006\000.\0005\000.\0002\000.\0004\000\040\000e\000x\000p\000e\000c\000t\000e\000d\000\137\000o\000b\000s\000e\000r\000v\000e\000d\000\137\000p\000t\000s\000\050\000\051}{subsection.6.5.2}% 415 +\BOOKMARK [3][-]{subsubsection.6.5.2.5}{\376\377\0006\000.\0005\000.\0002\000.\0005\000\040\000i\000n\000f\000e\000r\000\137\000v\000e\000l\000o\000c\000i\000t\000y\000\050\000\051}{subsection.6.5.2}% 416 +\BOOKMARK [3][-]{subsubsection.6.5.2.6}{\376\377\0006\000.\0005\000.\0002\000.\0006\000\040\000j\000a\000c\000o\000b\000i\000a\000n\000\050\000\051}{subsection.6.5.2}% 417 +\BOOKMARK [3][-]{subsubsection.6.5.2.7}{\376\377\0006\000.\0005\000.\0002\000.\0007\000\040\000j\000a\000c\000o\000b\000i\000a\000n\000\137\000v\000e\000c\000t\000o\000r\000\050\000\051}{subsection.6.5.2}% 418 +\BOOKMARK [3][-]{subsubsection.6.5.2.8}{\376\377\0006\000.\0005\000.\0002\000.\0008\000\040\000o\000p\000t\000i\000m\000i\000z\000e\000\050\000\051}{subsection.6.5.2}% 419 +\BOOKMARK [3][-]{subsubsection.6.5.2.9}{\376\377\0006\000.\0005\000.\0002\000.\0009\000\040\000o\000p\000t\000i\000m\000i\000z\000e\000\137\000l\000i\000b\000r\000a\000r\000y\000\050\000\051}{subsection.6.5.2}% 420 +\BOOKMARK [3][-]{subsubsection.6.5.2.10}{\376\377\0006\000.\0005\000.\0002\000.\0001\0000\000\040\000u\000n\000d\000i\000s\000t\000o\000r\000t\000\050\000\051}{subsection.6.5.2}% 421 +\BOOKMARK [3][-]{subsubsection.6.5.2.11}{\376\377\0006\000.\0005\000.\0002\000.\0001\0001\000\040\000u\000p\000d\000a\000t\000e\000\137\000p\000r\000o\000b\000l\000e\000m\000\050\000\051}{subsection.6.5.2}% 422 +\BOOKMARK [2][-]{subsection.6.5.3}{\376\377\0006\000.\0005\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.5}% 423 +\BOOKMARK [3][-]{subsubsection.6.5.3.1}{\376\377\0006\000.\0005\000.\0003\000.\0001\000\040\000d\000e\000b\000u\000g}{subsection.6.5.3}% 424 +\BOOKMARK [3][-]{subsubsection.6.5.3.2}{\376\377\0006\000.\0005\000.\0003\000.\0002\000\040\000d\000T}{subsection.6.5.3}% 425 +\BOOKMARK [3][-]{subsubsection.6.5.3.3}{\376\377\0006\000.\0005\000.\0003\000.\0003\000\040\000i\000n\000f\000o\000\137\000v\000e\000c\000t\000o\000r}{subsection.6.5.3}% 426 +\BOOKMARK [3][-]{subsubsection.6.5.3.4}{\376\377\0006\000.\0005\000.\0003\000.\0004\000\040\000p\000\137\000j\000t}{subsection.6.5.3}% 427 +\BOOKMARK [3][-]{subsubsection.6.5.3.5}{\376\377\0006\000.\0005\000.\0003\000.\0005\000\040\000p\000\137\000w}{subsection.6.5.3}% 428 +\BOOKMARK [3][-]{subsubsection.6.5.3.6}{\376\377\0006\000.\0005\000.\0003\000.\0006\000\040\000s\000i\000g\000m\000a\000\137\000p}{subsection.6.5.3}% 429 +\BOOKMARK [3][-]{subsubsection.6.5.3.7}{\376\377\0006\000.\0005\000.\0003\000.\0007\000\040\000s\000i\000g\000m\000a\000\137\000v}{subsection.6.5.3}% 430 +\BOOKMARK [3][-]{subsubsection.6.5.3.8}{\376\377\0006\000.\0005\000.\0003\000.\0008\000\040\000T\000\137\000w\000j\0000}{subsection.6.5.3}% 431 +\BOOKMARK [3][-]{subsubsection.6.5.3.9}{\376\377\0006\000.\0005\000.\0003\000.\0009\000\040\000T\000\137\000w\000j\0000\000\137\000i\000n\000v}{subsection.6.5.3}% 432 +\BOOKMARK [3][-]{subsubsection.6.5.3.10}{\376\377\0006\000.\0005\000.\0003\000.\0001\0000\000\040\000T\000\137\000w\000j\000\137\000i\000n\000i\000t\000i\000a\000l}{subsection.6.5.3}% 433 +\BOOKMARK [3][-]{subsubsection.6.5.3.11}{\376\377\0006\000.\0005\000.\0003\000.\0001\0001\000\040\000t\000o\000t\000a\000l\000\137\000s\000c\000a\000n\000\137\000t\000i\000m\000e}{subsection.6.5.3}% 434 +\BOOKMARK [3][-]{subsubsection.6.5.3.12}{\376\377\0006\000.\0005\000.\0003\000.\0001\0002\000\040\000v\000\137\000j\000\137\000i\000n\000i\000t\000i\000a\000l}{subsection.6.5.3}% 435 +\BOOKMARK [1][-]{section.6.6}{\376\377\0006\000.\0006\000\040\000P\000o\000l\000a\000r\000C\000o\000o\000r\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 436 +\BOOKMARK [2][-]{subsection.6.6.1}{\376\377\0006\000.\0006\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.6.6}% 437 +\BOOKMARK [2][-]{subsection.6.6.2}{\376\377\0006\000.\0006\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.6}% 438 +\BOOKMARK [3][-]{subsubsection.6.6.2.1}{\376\377\0006\000.\0006\000.\0002\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051}{subsection.6.6.2}% 439 +\BOOKMARK [2][-]{subsection.6.6.3}{\376\377\0006\000.\0006\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.6}% 440 +\BOOKMARK [3][-]{subsubsection.6.6.3.1}{\376\377\0006\000.\0006\000.\0003\000.\0001\000\040\000\137\000\137\000s\000t\000r\000\137\000\137\000\050\000\051}{subsection.6.6.3}% 441 +\BOOKMARK [3][-]{subsubsection.6.6.3.2}{\376\377\0006\000.\0006\000.\0003\000.\0002\000\040\000a\000s\000T\000u\000p\000l\000e\000\050\000\051}{subsection.6.6.3}% 442 +\BOOKMARK [3][-]{subsubsection.6.6.3.3}{\376\377\0006\000.\0006\000.\0003\000.\0003\000\040\000g\000e\000t\000R\000\050\000\051}{subsection.6.6.3}% 443 +\BOOKMARK [3][-]{subsubsection.6.6.3.4}{\376\377\0006\000.\0006\000.\0003\000.\0004\000\040\000g\000e\000t\000T\000h\000e\000t\000a\000\050\000\051}{subsection.6.6.3}% 444 +\BOOKMARK [3][-]{subsubsection.6.6.3.5}{\376\377\0006\000.\0006\000.\0003\000.\0005\000\040\000s\000c\000a\000l\000e\000R\000\050\000\051}{subsection.6.6.3}% 445 +\BOOKMARK [3][-]{subsubsection.6.6.3.6}{\376\377\0006\000.\0006\000.\0003\000.\0006\000\040\000t\000o\000C\000a\000r\000t\000\050\000\051}{subsection.6.6.3}% 446 +\BOOKMARK [2][-]{subsection.6.6.4}{\376\377\0006\000.\0006\000.\0004\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.6}% 447 +\BOOKMARK [3][-]{subsubsection.6.6.4.1}{\376\377\0006\000.\0006\000.\0004\000.\0001\000\040\000r}{subsection.6.6.4}% 448 +\BOOKMARK [3][-]{subsubsection.6.6.4.2}{\376\377\0006\000.\0006\000.\0004\000.\0002\000\040\000t\000h\000e\000t\000a}{subsection.6.6.4}% 449 +\BOOKMARK [1][-]{section.6.7}{\376\377\0006\000.\0007\000\040\000P\000o\000s\000e\000G\000r\000a\000p\000h\000O\000p\000t\000i\000m\000i\000z\000a\000t\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 450 +\BOOKMARK [2][-]{subsection.6.7.1}{\376\377\0006\000.\0007\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.7}% 451 +\BOOKMARK [3][-]{subsubsection.6.7.1.1}{\376\377\0006\000.\0007\000.\0001\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051}{subsection.6.7.1}% 452 +\BOOKMARK [2][-]{subsection.6.7.2}{\376\377\0006\000.\0007\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.7}% 453 +\BOOKMARK [3][-]{subsubsection.6.7.2.1}{\376\377\0006\000.\0007\000.\0002\000.\0001\000\040\000a\000d\000d\000\137\000e\000d\000g\000e\000\050\000\051}{subsection.6.7.2}% 454 +\BOOKMARK [3][-]{subsubsection.6.7.2.2}{\376\377\0006\000.\0007\000.\0002\000.\0002\000\040\000a\000d\000d\000\137\000v\000e\000r\000t\000e\000x\000\050\000\051}{subsection.6.7.2}% 455 +\BOOKMARK [3][-]{subsubsection.6.7.2.3}{\376\377\0006\000.\0007\000.\0002\000.\0003\000\040\000g\000e\000t\000\137\000p\000o\000s\000e\000\050\000\051}{subsection.6.7.2}% 456 +\BOOKMARK [3][-]{subsubsection.6.7.2.4}{\376\377\0006\000.\0007\000.\0002\000.\0004\000\040\000o\000p\000t\000i\000m\000i\000z\000e\000\050\000\051}{subsection.6.7.2}% 457 +\BOOKMARK [1][-]{section.6.8}{\376\377\0006\000.\0008\000\040\000R\000a\000w\000R\000O\000A\000M\000S\000y\000s\000t\000e\000m\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 458 +\BOOKMARK [2][-]{subsection.6.8.1}{\376\377\0006\000.\0008\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.8}% 459 +\BOOKMARK [3][-]{subsubsection.6.8.1.1}{\376\377\0006\000.\0008\000.\0001\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051}{subsection.6.8.1}% 460 +\BOOKMARK [2][-]{subsection.6.8.2}{\376\377\0006\000.\0008\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.8}% 461 +\BOOKMARK [3][-]{subsubsection.6.8.2.1}{\376\377\0006\000.\0008\000.\0002\000.\0001\000\040\000p\000l\000o\000t\000\050\000\051}{subsection.6.8.2}% 462 +\BOOKMARK [3][-]{subsubsection.6.8.2.2}{\376\377\0006\000.\0008\000.\0002\000.\0002\000\040\000p\000l\000o\000t\000T\000r\000a\000j\000\050\000\051}{subsection.6.8.2}% 463 +\BOOKMARK [3][-]{subsubsection.6.8.2.3}{\376\377\0006\000.\0008\000.\0002\000.\0003\000\040\000r\000u\000n\000\050\000\051}{subsection.6.8.2}% 464 +\BOOKMARK [3][-]{subsubsection.6.8.2.4}{\376\377\0006\000.\0008\000.\0002\000.\0004\000\040\000u\000p\000d\000a\000t\000e\000T\000r\000a\000j\000e\000c\000t\000o\000r\000y\000\050\000\051}{subsection.6.8.2}% 465 +\BOOKMARK [3][-]{subsubsection.6.8.2.5}{\376\377\0006\000.\0008\000.\0002\000.\0005\000\040\000u\000p\000d\000a\000t\000e\000T\000r\000a\000j\000e\000c\000t\000o\000r\000y\000A\000b\000s\000o\000l\000u\000t\000e\000\050\000\051}{subsection.6.8.2}% 466 +\BOOKMARK [3][-]{subsubsection.6.8.2.6}{\376\377\0006\000.\0008\000.\0002\000.\0006\000\040\000u\000p\000d\000a\000t\000e\000T\000r\000a\000j\000F\000r\000o\000m\000T\000r\000a\000c\000k\000e\000r\000\050\000\051}{subsection.6.8.2}% 467 +\BOOKMARK [2][-]{subsection.6.8.3}{\376\377\0006\000.\0008\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.8}% 468 +\BOOKMARK [3][-]{subsubsection.6.8.3.1}{\376\377\0006\000.\0008\000.\0003\000.\0001\000\040\000e\000s\000t\000T\000r\000a\000j}{subsection.6.8.3}% 469 +\BOOKMARK [3][-]{subsubsection.6.8.3.2}{\376\377\0006\000.\0008\000.\0003\000.\0002\000\040\000f\000i\000g}{subsection.6.8.3}% 470 +\BOOKMARK [3][-]{subsubsection.6.8.3.3}{\376\377\0006\000.\0008\000.\0003\000.\0003\000\040\000f\000i\000l\000e\000P\000a\000t\000h\000s}{subsection.6.8.3}% 471 +\BOOKMARK [3][-]{subsubsection.6.8.3.4}{\376\377\0006\000.\0008\000.\0003\000.\0004\000\040\000g\000t\000T\000r\000a\000j}{subsection.6.8.3}% 472 +\BOOKMARK [3][-]{subsubsection.6.8.3.5}{\376\377\0006\000.\0008\000.\0003\000.\0005\000\040\000h\000a\000s\000G\000r\000o\000u\000n\000d\000T\000r\000u\000t\000h}{subsection.6.8.3}% 473 +\BOOKMARK [3][-]{subsubsection.6.8.3.6}{\376\377\0006\000.\0008\000.\0003\000.\0006\000\040\000i\000m\000g\000P\000a\000t\000h\000A\000r\000r}{subsection.6.8.3}% 474 +\BOOKMARK [3][-]{subsubsection.6.8.3.7}{\376\377\0006\000.\0008\000.\0003\000.\0007\000\040\000m\000a\000p}{subsection.6.8.3}% 475 +\BOOKMARK [3][-]{subsubsection.6.8.3.8}{\376\377\0006\000.\0008\000.\0003\000.\0008\000\040\000p\000a\000r\000a\000m\000F\000l\000a\000g\000s}{subsection.6.8.3}% 476 +\BOOKMARK [3][-]{subsubsection.6.8.3.9}{\376\377\0006\000.\0008\000.\0003\000.\0009\000\040\000s\000e\000q\000u\000e\000n\000c\000e\000N\000a\000m\000e}{subsection.6.8.3}% 477 +\BOOKMARK [3][-]{subsubsection.6.8.3.10}{\376\377\0006\000.\0008\000.\0003\000.\0001\0000\000\040\000s\000e\000q\000u\000e\000n\000c\000e\000S\000i\000z\000e}{subsection.6.8.3}% 478 +\BOOKMARK [3][-]{subsubsection.6.8.3.11}{\376\377\0006\000.\0008\000.\0003\000.\0001\0001\000\040\000t\000r\000a\000c\000k\000e\000r}{subsection.6.8.3}% 479 +\BOOKMARK [1][-]{section.6.9}{\376\377\0006\000.\0009\000\040\000T\000r\000a\000c\000k\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 480 +\BOOKMARK [2][-]{subsection.6.9.1}{\376\377\0006\000.\0009\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.9}% 481 +\BOOKMARK [3][-]{subsubsection.6.9.1.1}{\376\377\0006\000.\0009\000.\0001\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051}{subsection.6.9.1}% 482 +\BOOKMARK [2][-]{subsection.6.9.2}{\376\377\0006\000.\0009\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.9}% 483 +\BOOKMARK [3][-]{subsubsection.6.9.2.1}{\376\377\0006\000.\0009\000.\0002\000.\0001\000\040\000g\000e\000t\000T\000r\000a\000n\000s\000f\000o\000r\000m\000\050\000\051}{subsection.6.9.2}% 484 +\BOOKMARK [3][-]{subsubsection.6.9.2.2}{\376\377\0006\000.\0009\000.\0002\000.\0002\000\040\000i\000n\000i\000t\000T\000r\000a\000j\000\050\000\051}{subsection.6.9.2}% 485 +\BOOKMARK [3][-]{subsubsection.6.9.2.3}{\376\377\0006\000.\0009\000.\0002\000.\0003\000\040\000p\000l\000o\000t\000\050\000\051}{subsection.6.9.2}% 486 +\BOOKMARK [3][-]{subsubsection.6.9.2.4}{\376\377\0006\000.\0009\000.\0002\000.\0004\000\040\000t\000r\000a\000c\000k\000\050\000\051}{subsection.6.9.2}% 487 +\BOOKMARK [2][-]{subsection.6.9.3}{\376\377\0006\000.\0009\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.9}% 488 +\BOOKMARK [3][-]{subsubsection.6.9.3.1}{\376\377\0006\000.\0009\000.\0003\000.\0001\000\040\000e\000s\000t\000T\000r\000a\000j}{subsection.6.9.3}% 489 +\BOOKMARK [3][-]{subsubsection.6.9.3.2}{\376\377\0006\000.\0009\000.\0003\000.\0002\000\040\000f\000i\000l\000e\000P\000a\000t\000h\000s}{subsection.6.9.3}% 490 +\BOOKMARK [3][-]{subsubsection.6.9.3.3}{\376\377\0006\000.\0009\000.\0003\000.\0003\000\040\000g\000t\000T\000r\000a\000j}{subsection.6.9.3}% 491 +\BOOKMARK [3][-]{subsubsection.6.9.3.4}{\376\377\0006\000.\0009\000.\0003\000.\0004\000\040\000i\000m\000g\000P\000a\000t\000h\000A\000r\000r}{subsection.6.9.3}% 492 +\BOOKMARK [3][-]{subsubsection.6.9.3.5}{\376\377\0006\000.\0009\000.\0003\000.\0005\000\040\000p\000a\000r\000a\000m\000F\000l\000a\000g\000s}{subsection.6.9.3}% 493 +\BOOKMARK [3][-]{subsubsection.6.9.3.6}{\376\377\0006\000.\0009\000.\0003\000.\0006\000\040\000s\000e\000q\000u\000e\000n\000c\000e\000N\000a\000m\000e}{subsection.6.9.3}% 494 +\BOOKMARK [3][-]{subsubsection.6.9.3.7}{\376\377\0006\000.\0009\000.\0003\000.\0007\000\040\000s\000e\000q\000u\000e\000n\000c\000e\000S\000i\000z\000e}{subsection.6.9.3}% 495 +\BOOKMARK [1][-]{section.6.10}{\376\377\0006\000.\0001\0000\000\040\000T\000r\000a\000j\000e\000c\000t\000o\000r\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e}{chapter.6}% 496 +\BOOKMARK [2][-]{subsection.6.10.1}{\376\377\0006\000.\0001\0000\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.10}% 497 +\BOOKMARK [3][-]{subsubsection.6.10.1.1}{\376\377\0006\000.\0001\0000\000.\0001\000.\0001\000\040\000\137\000\137\000i\000n\000i\000t\000\137\000\137\000\050\000\051}{subsection.6.10.1}% 498 +\BOOKMARK [2][-]{subsection.6.10.2}{\376\377\0006\000.\0001\0000\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.10}% 499 +\BOOKMARK [3][-]{subsubsection.6.10.2.1}{\376\377\0006\000.\0001\0000\000.\0002\000.\0001\000\040\000a\000p\000p\000e\000n\000d\000A\000b\000s\000o\000l\000u\000t\000e\000T\000r\000a\000n\000s\000f\000o\000r\000m\000\050\000\051}{subsection.6.10.2}% 500 +\BOOKMARK [3][-]{subsubsection.6.10.2.2}{\376\377\0006\000.\0001\0000\000.\0002\000.\0002\000\040\000a\000p\000p\000e\000n\000d\000R\000e\000l\000a\000t\000i\000v\000e\000D\000e\000l\000t\000a\000s\000\050\000\051}{subsection.6.10.2}% 501 +\BOOKMARK [3][-]{subsubsection.6.10.2.3}{\376\377\0006\000.\0001\0000\000.\0002\000.\0003\000\040\000a\000p\000p\000e\000n\000d\000R\000e\000l\000a\000t\000i\000v\000e\000T\000r\000a\000n\000s\000f\000o\000r\000m\000\050\000\051}{subsection.6.10.2}% 502 +\BOOKMARK [3][-]{subsubsection.6.10.2.4}{\376\377\0006\000.\0001\0000\000.\0002\000.\0004\000\040\000g\000e\000t\000G\000r\000o\000u\000n\000d\000T\000r\000u\000t\000h\000D\000e\000l\000t\000a\000s\000A\000t\000T\000i\000m\000e\000\050\000\051}{subsection.6.10.2}% 503 +\BOOKMARK [3][-]{subsubsection.6.10.2.5}{\376\377\0006\000.\0001\0000\000.\0002\000.\0005\000\040\000g\000e\000t\000P\000o\000s\000e\000A\000t\000T\000i\000m\000e\000s\000\050\000\051}{subsection.6.10.2}% 504 +\BOOKMARK [3][-]{subsubsection.6.10.2.6}{\376\377\0006\000.\0001\0000\000.\0002\000.\0006\000\040\000p\000l\000o\000t\000\050\000\051}{subsection.6.10.2}% 505 +\BOOKMARK [2][-]{subsection.6.10.3}{\376\377\0006\000.\0001\0000\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6.10}% 506 +\BOOKMARK [3][-]{subsubsection.6.10.3.1}{\376\377\0006\000.\0001\0000\000.\0003\000.\0001\000\040\000p\000o\000s\000e\000\137\000t\000r\000a\000n\000s\000f\000o\000r\000m}{subsection.6.10.3}% 507 +\BOOKMARK [3][-]{subsubsection.6.10.3.2}{\376\377\0006\000.\0001\0000\000.\0003\000.\0002\000\040\000p\000o\000s\000e\000s}{subsection.6.10.3}% 508 +\BOOKMARK [3][-]{subsubsection.6.10.3.3}{\376\377\0006\000.\0001\0000\000.\0003\000.\0003\000\040\000t\000i\000m\000e\000s\000t\000a\000m\000p\000s}{subsection.6.10.3}% 509 +\BOOKMARK [0][-]{section*.49}{\376\377\000I\000n\000d\000e\000x}{}% 510 diff --git a/doc/latex/refman.pdf b/doc/latex/refman.pdf new file mode 100644 index 0000000..d0c4bac Binary files /dev/null and b/doc/latex/refman.pdf differ diff --git a/doc/latex/refman.tex b/doc/latex/refman.tex new file mode 100644 index 0000000..5b976c5 --- /dev/null +++ b/doc/latex/refman.tex @@ -0,0 +1,227 @@ + % Handle batch mode + % to overcome problems with too many open files + \let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage} + % Set document class depending on configuration + \documentclass[twoside]{book} + %% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package + \usepackage{ifthen} + \ifx\requestedLaTeXdate\undefined + \usepackage{array} + \else + \usepackage{array}[=2016-10-06] + \fi + %% + % Packages required by doxygen + \usepackage{fixltx2e} % for \textsubscript + \usepackage{doxygen} + \usepackage{graphicx} + \usepackage[utf8]{inputenc} + \usepackage{makeidx} + \PassOptionsToPackage{warn}{textcomp} + \usepackage{textcomp} + \usepackage[nointegrals]{wasysym} + \usepackage{ifxetex} + % NLS support packages + % Define default fonts + % Font selection + \usepackage[T1]{fontenc} + % set main and monospaced font + \usepackage[scaled=.90]{helvet} +\usepackage{courier} +\renewcommand{\familydefault}{\sfdefault} + \usepackage{sectsty} + \allsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% + } + \renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% + } + \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + % Arguments of doxygenemoji: + % 1) '::' form of the emoji, already LaTeX-escaped + % 2) file with the name of the emoji without the .png extension + % in case image exist use this otherwise use the '::' form + \newcommand{\doxygenemoji}[2]{% + \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}% + } + % Page & text layout + \usepackage{geometry} + \geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% + } + % Allow a bit of overflow to go unnoticed by other means + \tolerance=750 + \hfuzz=15pt + \hbadness=750 + \setlength{\emergencystretch}{15pt} + \setlength{\parindent}{0cm} + \newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}} + \newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}} + \doxynormalparskip + % Redefine paragraph/subparagraph environments, using sectsty fonts + \makeatletter + \renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% + } + \renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% + } + \makeatother + \makeatletter + \newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@} + \makeatother + % Headers & footers + \usepackage{fancyhdr} + \pagestyle{fancyplain} + \renewcommand{\footrulewidth}{0.4pt} + \fancypagestyle{fancyplain}{ + \fancyhf{} + \fancyhead[LE, RO]{\bfseries\thepage} + \fancyhead[LO]{\bfseries\rightmark} + \fancyhead[RE]{\bfseries\leftmark} + \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen } + } + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen } + \renewcommand{\headrulewidth}{0pt} + } + \pagestyle{fancyplain} + \renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% + } + \renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% + } + % ToC, LoF, LoT, bibliography, and index + % Indices & bibliography + \usepackage{natbib} + \usepackage[titles]{tocloft} + \setcounter{tocdepth}{3} + \setcounter{secnumdepth}{5} + % creating indexes + \makeindex + \usepackage{newunicodechar} + \newunicodechar{⁻}{${}^{-}$}% Superscript minus + \newunicodechar{²}{${}^{2}$}% Superscript two + \newunicodechar{³}{${}^{3}$}% Superscript three + % Hyperlinks + % Hyperlinks (required, but should be loaded last) + \ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} + \else + \ifxetex + \usepackage[pagebackref=true]{hyperref} + \else + \usepackage[ps2pdf,pagebackref=true]{hyperref} + \fi + \fi + \hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=blue,% + unicode,% + pdftitle=RAW-\/\+ROAM,% + pdfsubject=Python Re-\/implementation of Radar\+SLAM\textquotesingle{}s odometry and mapping (\+ROAM) components% + } + % Custom commands used by the header + % Custom commands + \newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% + } + % caption style definition + \usepackage{caption} + \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} + % in page table of contents + \usepackage{etoc} + \etocsettocstyle{\doxytocparskip}{\doxynormalparskip} + % prevent numbers overlap the titles in toc + \renewcommand{\numberline}[1]{#1~} +% End of preamble, now comes the document contents +%===== C O N T E N T S ===== +\begin{document} + \raggedbottom + % Titlepage & ToC + % To avoid duplicate page anchors due to reuse of same numbers for + % the index (be it as roman numbers) + \hypersetup{pageanchor=false, + bookmarksnumbered=true, + pdfencoding=unicode + } + \pagenumbering{alph} + \begin{titlepage} + \vspace*{7cm} + \begin{center}% + {\Large RAW-\/\+ROAM}\\ + \vspace*{1cm} + {\large Generated by Doxygen 1.9.3}\\ + \end{center} + \end{titlepage} + \clearemptydoublepage + \pagenumbering{roman} + \tableofcontents + \clearemptydoublepage + \pagenumbering{arabic} + % re-enable anchors again + \hypersetup{pageanchor=true} +%--- Begin generated contents --- +\chapter{RAW-\/\+ROAM\+: Really Adverse Weather-\/\+Radar Odometry and Mapping (Python reimplementation of Radar\+SLAM)} +\label{md__r_e_a_d_m_e} +\Hypertarget{md__r_e_a_d_m_e} +\input{md__r_e_a_d_m_e} +\chapter{Namespace Index} +\input{namespaces} +\chapter{Hierarchical Index} +\input{hierarchy} +\chapter{Class Index} +\input{annotated} +\chapter{Namespace Documentation} +\input{namespace_a_n_m_s} +\input{namespace_coord} +\input{namespace_f_m_t} +\input{namespacegen_fake_data} +\input{namespaceget_features} +\input{namespaceget_point_cloud} +\input{namespaceget_transform_k_l_t} +\input{namespace_mapping} +\input{namespacemotion_distortion} +\input{namespaceoutlier_rejection} +\input{namespaceparse_data} +\input{namespace_pose_graph_lib} +\input{namespace_raw_r_o_a_m_system} +\input{namespacetest_motion_distortion} +\input{namespacetest_transform} +\input{namespace_tracker} +\input{namespacetrajectory_plotting} +\input{namespaceutils} +\chapter{Class Documentation} +\input{class_pose_graph_lib_1_1_bundle_adjustment} +\input{class_coord_1_1_cart_coord} +\input{class_mapping_1_1_keyframe} +\input{class_mapping_1_1_map} +\input{classmotion_distortion_1_1_motion_distortion_solver} +\input{class_coord_1_1_polar_coord} +\input{class_pose_graph_lib_1_1_pose_graph_optimization} +\input{class_raw_r_o_a_m_system_1_1_raw_r_o_a_m_system} +\input{class_tracker_1_1_tracker} +\input{classtrajectory_plotting_1_1_trajectory} +%--- End generated contents --- +% Index + \backmatter + \newpage + \phantomsection + \clearemptydoublepage + \addcontentsline{toc}{chapter}{\indexname} + \printindex +% Required for some languages (in combination with latexdocumentpre from the header) +\end{document} diff --git a/doc/latex/refman.toc b/doc/latex/refman.toc new file mode 100644 index 0000000..f960465 --- /dev/null +++ b/doc/latex/refman.toc @@ -0,0 +1,511 @@ +\@ifundefined {etoctocstyle}{\let \etoc@startlocaltoc \@gobble \let \etoc@settocdepth \@gobble \let \etoc@depthtag \@gobble \let \etoc@setlocaltop \@gobble }{} +\contentsline {chapter}{\numberline {1}RAW-\/\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}ROAM\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}: Really Adverse Weather-\/\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Radar Odometry and Mapping (Python reimplementation of Radar\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}SLAM)}{1}{chapter.1}% +\contentsline {section}{\numberline {1.1}Results (\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Odometry)}{1}{section.1.1}% +\contentsline {section}{\numberline {1.2}Running Code}{1}{section.1.2}% +\contentsline {subsection}{\numberline {1.2.1}Radar Sequences}{1}{subsection.1.2.1}% +\contentsline {section}{\numberline {1.3}Documentation}{1}{section.1.3}% +\contentsline {section}{\numberline {1.4}Relevant Papers}{1}{section.1.4}% +\contentsline {chapter}{\numberline {2}Namespace Index}{3}{chapter.2}% +\contentsline {section}{\numberline {2.1}Packages}{3}{section.2.1}% +\contentsline {chapter}{\numberline {3}Hierarchical Index}{5}{chapter.3}% +\contentsline {section}{\numberline {3.1}Class Hierarchy}{5}{section.3.1}% +\contentsline {chapter}{\numberline {4}Class Index}{7}{chapter.4}% +\contentsline {section}{\numberline {4.1}Class List}{7}{section.4.1}% +\contentsline {chapter}{\numberline {5}Namespace Documentation}{9}{chapter.5}% +\contentsline {section}{\numberline {5.1}ANMS Namespace Reference}{9}{section.5.1}% +\contentsline {subsection}{\numberline {5.1.1}Function Documentation}{9}{subsection.5.1.1}% +\contentsline {subsubsection}{\numberline {5.1.1.1}ssc()}{9}{subsubsection.5.1.1.1}% +\contentsline {section}{\numberline {5.2}Coord Namespace Reference}{9}{section.5.2}% +\contentsline {section}{\numberline {5.3}FMT Namespace Reference}{10}{section.5.3}% +\contentsline {subsection}{\numberline {5.3.1}Function Documentation}{10}{subsection.5.3.1}% +\contentsline {subsubsection}{\numberline {5.3.1.1}getRotationUsingFMT()}{10}{subsubsection.5.3.1.1}% +\contentsline {subsubsection}{\numberline {5.3.1.2}getTranslationUsingPhaseCorrelation()}{11}{subsubsection.5.3.1.2}% +\contentsline {subsubsection}{\numberline {5.3.1.3}plotCartPolar()}{11}{subsubsection.5.3.1.3}% +\contentsline {subsubsection}{\numberline {5.3.1.4}plotCartPolarWithRotation()}{11}{subsubsection.5.3.1.4}% +\contentsline {subsubsection}{\numberline {5.3.1.5}rotateImg()}{11}{subsubsection.5.3.1.5}% +\contentsline {subsection}{\numberline {5.3.2}Variable Documentation}{12}{subsection.5.3.2}% +\contentsline {subsubsection}{\numberline {5.3.2.1}currImgCart}{12}{subsubsection.5.3.2.1}% +\contentsline {subsubsection}{\numberline {5.3.2.2}currImgPolar}{12}{subsubsection.5.3.2.2}% +\contentsline {subsubsection}{\numberline {5.3.2.3}dataPath}{12}{subsubsection.5.3.2.3}% +\contentsline {subsubsection}{\numberline {5.3.2.4}endSeqInd}{12}{subsubsection.5.3.2.4}% +\contentsline {subsubsection}{\numberline {5.3.2.5}exist\_ok}{12}{subsubsection.5.3.2.5}% +\contentsline {subsubsection}{\numberline {5.3.2.6}FMT\_DOWNSAMPLE\_FACTOR}{12}{subsubsection.5.3.2.6}% +\contentsline {subsubsection}{\numberline {5.3.2.7}FMT\_RANGE\_CLIP\_M}{13}{subsubsection.5.3.2.7}% +\contentsline {subsubsection}{\numberline {5.3.2.8}imgPathArr}{13}{subsubsection.5.3.2.8}% +\contentsline {subsubsection}{\numberline {5.3.2.9}imgSavePath}{13}{subsubsection.5.3.2.9}% +\contentsline {subsubsection}{\numberline {5.3.2.10}imgSavePathInd}{13}{subsubsection.5.3.2.10}% +\contentsline {subsubsection}{\numberline {5.3.2.11}prevImgCart}{13}{subsubsection.5.3.2.11}% +\contentsline {subsubsection}{\numberline {5.3.2.12}prevImgPolar}{13}{subsubsection.5.3.2.12}% +\contentsline {subsubsection}{\numberline {5.3.2.13}REMOVE\_OLD\_RESULTS}{13}{subsubsection.5.3.2.13}% +\contentsline {subsubsection}{\numberline {5.3.2.14}response}{14}{subsubsection.5.3.2.14}% +\contentsline {subsubsection}{\numberline {5.3.2.15}rotRad}{14}{subsubsection.5.3.2.15}% +\contentsline {subsubsection}{\numberline {5.3.2.16}scale}{14}{subsubsection.5.3.2.16}% +\contentsline {subsubsection}{\numberline {5.3.2.17}sequenceName}{14}{subsubsection.5.3.2.17}% +\contentsline {subsubsection}{\numberline {5.3.2.18}sequenceSize}{14}{subsubsection.5.3.2.18}% +\contentsline {subsubsection}{\numberline {5.3.2.19}startSeqInd}{14}{subsubsection.5.3.2.19}% +\contentsline {subsubsection}{\numberline {5.3.2.20}stepSize}{14}{subsubsection.5.3.2.20}% +\contentsline {subsubsection}{\numberline {5.3.2.21}timestampPath}{14}{subsubsection.5.3.2.21}% +\contentsline {section}{\numberline {5.4}gen\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Fake\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Data Namespace Reference}{15}{section.5.4}% +\contentsline {subsection}{\numberline {5.4.1}Function Documentation}{15}{subsection.5.4.1}% +\contentsline {subsubsection}{\numberline {5.4.1.1}addNoise()}{15}{subsubsection.5.4.1.1}% +\contentsline {subsubsection}{\numberline {5.4.1.2}convertPolarPointsToCartesian()}{15}{subsubsection.5.4.1.2}% +\contentsline {subsubsection}{\numberline {5.4.1.3}createOutliers()}{16}{subsubsection.5.4.1.3}% +\contentsline {subsubsection}{\numberline {5.4.1.4}distort()}{16}{subsubsection.5.4.1.4}% +\contentsline {subsubsection}{\numberline {5.4.1.5}generateFakeCorrespondences()}{16}{subsubsection.5.4.1.5}% +\contentsline {subsubsection}{\numberline {5.4.1.6}generateFakeCorrespondencesPolar()}{17}{subsubsection.5.4.1.6}% +\contentsline {subsubsection}{\numberline {5.4.1.7}generateFakeFeatures()}{17}{subsubsection.5.4.1.7}% +\contentsline {subsubsection}{\numberline {5.4.1.8}generateFakeFeaturesPolar()}{17}{subsubsection.5.4.1.8}% +\contentsline {subsubsection}{\numberline {5.4.1.9}generateTranslationVector()}{17}{subsubsection.5.4.1.9}% +\contentsline {subsubsection}{\numberline {5.4.1.10}plotFakeFeatures()}{17}{subsubsection.5.4.1.10}% +\contentsline {subsubsection}{\numberline {5.4.1.11}transformCoords()}{18}{subsubsection.5.4.1.11}% +\contentsline {section}{\numberline {5.5}get\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Features Namespace Reference}{18}{section.5.5}% +\contentsline {subsection}{\numberline {5.5.1}Function Documentation}{19}{subsection.5.5.1}% +\contentsline {subsubsection}{\numberline {5.5.1.1}adaptiveNMS()}{19}{subsubsection.5.5.1.1}% +\contentsline {subsubsection}{\numberline {5.5.1.2}appendNewFeatures()}{19}{subsubsection.5.5.1.2}% +\contentsline {subsubsection}{\numberline {5.5.1.3}calculateFeatureLossThreshold()}{19}{subsubsection.5.5.1.3}% +\contentsline {subsubsection}{\numberline {5.5.1.4}getBlobsFromCart()}{19}{subsubsection.5.5.1.4}% +\contentsline {subsubsection}{\numberline {5.5.1.5}getFeatures()}{20}{subsubsection.5.5.1.5}% +\contentsline {subsection}{\numberline {5.5.2}Variable Documentation}{20}{subsection.5.5.2}% +\contentsline {subsubsection}{\numberline {5.5.2.1}blobIndices}{20}{subsubsection.5.5.2.1}% +\contentsline {subsubsection}{\numberline {5.5.2.2}blobSigma}{20}{subsubsection.5.5.2.2}% +\contentsline {subsubsection}{\numberline {5.5.2.3}blobX}{20}{subsubsection.5.5.2.3}% +\contentsline {subsubsection}{\numberline {5.5.2.4}blobY}{20}{subsubsection.5.5.2.4}% +\contentsline {subsubsection}{\numberline {5.5.2.5}color}{21}{subsubsection.5.5.2.5}% +\contentsline {subsubsection}{\numberline {5.5.2.6}coord}{21}{subsubsection.5.5.2.6}% +\contentsline {subsubsection}{\numberline {5.5.2.7}dataPath}{21}{subsubsection.5.5.2.7}% +\contentsline {subsubsection}{\numberline {5.5.2.8}datasetName}{21}{subsubsection.5.5.2.8}% +\contentsline {subsubsection}{\numberline {5.5.2.9}DEFAULT\_FEATURE\_PARAMS}{21}{subsubsection.5.5.2.9}% +\contentsline {subsubsection}{\numberline {5.5.2.10}end}{21}{subsubsection.5.5.2.10}% +\contentsline {subsubsection}{\numberline {5.5.2.11}exist\_ok}{21}{subsubsection.5.5.2.11}% +\contentsline {subsubsection}{\numberline {5.5.2.12}flush}{22}{subsubsection.5.5.2.12}% +\contentsline {subsubsection}{\numberline {5.5.2.13}imgCart}{22}{subsubsection.5.5.2.13}% +\contentsline {subsubsection}{\numberline {5.5.2.14}imgCartBGR}{22}{subsubsection.5.5.2.14}% +\contentsline {subsubsection}{\numberline {5.5.2.15}imgPolar}{22}{subsubsection.5.5.2.15}% +\contentsline {subsubsection}{\numberline {5.5.2.16}N\_FEATURES\_BEFORE\_RETRACK}{22}{subsubsection.5.5.2.16}% +\contentsline {subsubsection}{\numberline {5.5.2.17}nImgs}{22}{subsubsection.5.5.2.17}% +\contentsline {subsubsection}{\numberline {5.5.2.18}nIndices}{22}{subsubsection.5.5.2.18}% +\contentsline {subsubsection}{\numberline {5.5.2.19}nIndicesANMS}{22}{subsubsection.5.5.2.19}% +\contentsline {subsubsection}{\numberline {5.5.2.20}PERCENT\_FEATURE\_LOSS\_THRESHOLD}{23}{subsubsection.5.5.2.20}% +\contentsline {subsubsection}{\numberline {5.5.2.21}s\_blobIndices}{23}{subsubsection.5.5.2.21}% +\contentsline {subsubsection}{\numberline {5.5.2.22}streamArr}{23}{subsubsection.5.5.2.22}% +\contentsline {subsubsection}{\numberline {5.5.2.23}timestampPath}{23}{subsubsection.5.5.2.23}% +\contentsline {subsubsection}{\numberline {5.5.2.24}toSaveImgPath}{23}{subsubsection.5.5.2.24}% +\contentsline {subsubsection}{\numberline {5.5.2.25}toSavePath}{23}{subsubsection.5.5.2.25}% +\contentsline {section}{\numberline {5.6}get\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Point\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Cloud Namespace Reference}{23}{section.5.6}% +\contentsline {subsection}{\numberline {5.6.1}Function Documentation}{24}{subsection.5.6.1}% +\contentsline {subsubsection}{\numberline {5.6.1.1}getPointCloudPolarInd()}{24}{subsubsection.5.6.1.1}% +\contentsline {subsection}{\numberline {5.6.2}Variable Documentation}{24}{subsection.5.6.2}% +\contentsline {subsubsection}{\numberline {5.6.2.1}c}{24}{subsubsection.5.6.2.1}% +\contentsline {subsubsection}{\numberline {5.6.2.2}dataPath}{24}{subsubsection.5.6.2.2}% +\contentsline {subsubsection}{\numberline {5.6.2.3}datasetName}{25}{subsubsection.5.6.2.3}% +\contentsline {subsubsection}{\numberline {5.6.2.4}featureAzim}{25}{subsubsection.5.6.2.4}% +\contentsline {subsubsection}{\numberline {5.6.2.5}featureImgCart}{25}{subsubsection.5.6.2.5}% +\contentsline {subsubsection}{\numberline {5.6.2.6}featurePolarImage}{25}{subsubsection.5.6.2.6}% +\contentsline {subsubsection}{\numberline {5.6.2.7}featurePolarIndices}{25}{subsubsection.5.6.2.7}% +\contentsline {subsubsection}{\numberline {5.6.2.8}featureRange}{25}{subsubsection.5.6.2.8}% +\contentsline {subsubsection}{\numberline {5.6.2.9}imgCart}{25}{subsubsection.5.6.2.9}% +\contentsline {subsubsection}{\numberline {5.6.2.10}imgCartRGB}{25}{subsubsection.5.6.2.10}% +\contentsline {subsubsection}{\numberline {5.6.2.11}imgPolar}{26}{subsubsection.5.6.2.11}% +\contentsline {subsubsection}{\numberline {5.6.2.12}nImgs}{26}{subsubsection.5.6.2.12}% +\contentsline {subsubsection}{\numberline {5.6.2.13}streamArr}{26}{subsubsection.5.6.2.13}% +\contentsline {subsubsection}{\numberline {5.6.2.14}timestampPath}{26}{subsubsection.5.6.2.14}% +\contentsline {section}{\numberline {5.7}get\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Transform\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}KLT Namespace Reference}{26}{section.5.7}% +\contentsline {subsection}{\numberline {5.7.1}Function Documentation}{27}{subsection.5.7.1}% +\contentsline {subsubsection}{\numberline {5.7.1.1}calculateTransform()}{28}{subsubsection.5.7.1.1}% +\contentsline {subsubsection}{\numberline {5.7.1.2}calculateTransformDth()}{28}{subsubsection.5.7.1.2}% +\contentsline {subsubsection}{\numberline {5.7.1.3}calculateTransformDxDth()}{28}{subsubsection.5.7.1.3}% +\contentsline {subsubsection}{\numberline {5.7.1.4}calculateTransformSVD()}{28}{subsubsection.5.7.1.4}% +\contentsline {subsubsection}{\numberline {5.7.1.5}estimateTransformUsingDelats()}{29}{subsubsection.5.7.1.5}% +\contentsline {subsubsection}{\numberline {5.7.1.6}getTrackedPointsKLT()}{29}{subsubsection.5.7.1.6}% +\contentsline {subsubsection}{\numberline {5.7.1.7}visualize\_transform()}{29}{subsubsection.5.7.1.7}% +\contentsline {subsection}{\numberline {5.7.2}Variable Documentation}{30}{subsection.5.7.2}% +\contentsline {subsubsection}{\numberline {5.7.2.1}alpha}{30}{subsubsection.5.7.2.1}% +\contentsline {subsubsection}{\numberline {5.7.2.2}bad\_new}{30}{subsubsection.5.7.2.2}% +\contentsline {subsubsection}{\numberline {5.7.2.3}bad\_old}{30}{subsubsection.5.7.2.3}% +\contentsline {subsubsection}{\numberline {5.7.2.4}blobCoord}{30}{subsubsection.5.7.2.4}% +\contentsline {subsubsection}{\numberline {5.7.2.5}corrStatus}{30}{subsubsection.5.7.2.5}% +\contentsline {subsubsection}{\numberline {5.7.2.6}currImg}{30}{subsubsection.5.7.2.6}% +\contentsline {subsubsection}{\numberline {5.7.2.7}currTimestamp}{30}{subsubsection.5.7.2.7}% +\contentsline {subsubsection}{\numberline {5.7.2.8}dataPath}{31}{subsubsection.5.7.2.8}% +\contentsline {subsubsection}{\numberline {5.7.2.9}datasetName}{31}{subsubsection.5.7.2.9}% +\contentsline {subsubsection}{\numberline {5.7.2.10}dth}{31}{subsubsection.5.7.2.10}% +\contentsline {subsubsection}{\numberline {5.7.2.11}dx}{31}{subsubsection.5.7.2.11}% +\contentsline {subsubsection}{\numberline {5.7.2.12}ERR\_THRESHOLD}{31}{subsubsection.5.7.2.12}% +\contentsline {subsubsection}{\numberline {5.7.2.13}est\_deltas}{31}{subsubsection.5.7.2.13}% +\contentsline {subsubsection}{\numberline {5.7.2.14}estTraj}{31}{subsubsection.5.7.2.14}% +\contentsline {subsubsection}{\numberline {5.7.2.15}exist\_ok}{31}{subsubsection.5.7.2.15}% +\contentsline {subsubsection}{\numberline {5.7.2.16}extraLabel}{32}{subsubsection.5.7.2.16}% +\contentsline {subsubsection}{\numberline {5.7.2.17}good\_new}{32}{subsubsection.5.7.2.17}% +\contentsline {subsubsection}{\numberline {5.7.2.18}good\_old}{32}{subsubsection.5.7.2.18}% +\contentsline {subsubsection}{\numberline {5.7.2.19}gt\_deltas}{32}{subsubsection.5.7.2.19}% +\contentsline {subsubsection}{\numberline {5.7.2.20}gtTraj}{32}{subsubsection.5.7.2.20}% +\contentsline {subsubsection}{\numberline {5.7.2.21}gtTrajPath}{32}{subsubsection.5.7.2.21}% +\contentsline {subsubsection}{\numberline {5.7.2.22}h}{32}{subsubsection.5.7.2.22}% +\contentsline {subsubsection}{\numberline {5.7.2.23}imgPathArr}{32}{subsubsection.5.7.2.23}% +\contentsline {subsubsection}{\numberline {5.7.2.24}imgSavePath}{33}{subsubsection.5.7.2.24}% +\contentsline {subsubsection}{\numberline {5.7.2.25}initPose}{33}{subsubsection.5.7.2.25}% +\contentsline {subsubsection}{\numberline {5.7.2.26}initTimestamp}{33}{subsubsection.5.7.2.26}% +\contentsline {subsubsection}{\numberline {5.7.2.27}LK\_PARAMS}{33}{subsubsection.5.7.2.27}% +\contentsline {subsubsection}{\numberline {5.7.2.28}N\_FEATURES\_BEFORE\_RETRACK}{33}{subsubsection.5.7.2.28}% +\contentsline {subsubsection}{\numberline {5.7.2.29}nBadFeatures}{33}{subsubsection.5.7.2.29}% +\contentsline {subsubsection}{\numberline {5.7.2.30}nFeatures}{34}{subsubsection.5.7.2.30}% +\contentsline {subsubsection}{\numberline {5.7.2.31}nGoodFeatures}{34}{subsubsection.5.7.2.31}% +\contentsline {subsubsection}{\numberline {5.7.2.32}nImgs}{34}{subsubsection.5.7.2.32}% +\contentsline {subsubsection}{\numberline {5.7.2.33}PLOT\_BAD\_FEATURES}{34}{subsubsection.5.7.2.33}% +\contentsline {subsubsection}{\numberline {5.7.2.34}prev\_good\_old}{34}{subsubsection.5.7.2.34}% +\contentsline {subsubsection}{\numberline {5.7.2.35}prevImg}{34}{subsubsection.5.7.2.35}% +\contentsline {subsubsection}{\numberline {5.7.2.36}R}{34}{subsubsection.5.7.2.36}% +\contentsline {subsubsection}{\numberline {5.7.2.37}REMOVE\_OLD\_RESULTS}{34}{subsubsection.5.7.2.37}% +\contentsline {subsubsection}{\numberline {5.7.2.38}saveFeaturePath}{35}{subsubsection.5.7.2.38}% +\contentsline {subsubsection}{\numberline {5.7.2.39}savePath}{35}{subsubsection.5.7.2.39}% +\contentsline {subsubsection}{\numberline {5.7.2.40}show}{35}{subsubsection.5.7.2.40}% +\contentsline {subsubsection}{\numberline {5.7.2.41}start}{35}{subsubsection.5.7.2.41}% +\contentsline {subsubsection}{\numberline {5.7.2.42}startImgInd}{35}{subsubsection.5.7.2.42}% +\contentsline {subsubsection}{\numberline {5.7.2.43}timestamp}{35}{subsubsection.5.7.2.43}% +\contentsline {subsubsection}{\numberline {5.7.2.44}timestampPath}{35}{subsubsection.5.7.2.44}% +\contentsline {subsubsection}{\numberline {5.7.2.45}toSaveImgPath}{36}{subsubsection.5.7.2.45}% +\contentsline {subsubsection}{\numberline {5.7.2.46}toSaveTrajPath}{36}{subsubsection.5.7.2.46}% +\contentsline {subsubsection}{\numberline {5.7.2.47}trajSavePath}{36}{subsubsection.5.7.2.47}% +\contentsline {subsubsection}{\numberline {5.7.2.48}transformed\_pts}{36}{subsubsection.5.7.2.48}% +\contentsline {section}{\numberline {5.8}Mapping Namespace Reference}{36}{section.5.8}% +\contentsline {subsection}{\numberline {5.8.1}Variable Documentation}{36}{subsection.5.8.1}% +\contentsline {subsubsection}{\numberline {5.8.1.1}RADAR\_CART\_CENTER}{37}{subsubsection.5.8.1.1}% +\contentsline {subsubsection}{\numberline {5.8.1.2}ROT\_THRESHOLD}{37}{subsubsection.5.8.1.2}% +\contentsline {subsubsection}{\numberline {5.8.1.3}TRANS\_THRESHOLD}{37}{subsubsection.5.8.1.3}% +\contentsline {subsubsection}{\numberline {5.8.1.4}TRANS\_THRESHOLD\_SQ}{37}{subsubsection.5.8.1.4}% +\contentsline {section}{\numberline {5.9}motion\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Distortion Namespace Reference}{37}{section.5.9}% +\contentsline {subsection}{\numberline {5.9.1}Variable Documentation}{37}{subsection.5.9.1}% +\contentsline {subsubsection}{\numberline {5.9.1.1}RADAR\_SCAN\_FREQUENCY}{37}{subsubsection.5.9.1.1}% +\contentsline {subsubsection}{\numberline {5.9.1.2}VERBOSE}{38}{subsubsection.5.9.1.2}% +\contentsline {section}{\numberline {5.10}outlier\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Rejection Namespace Reference}{38}{section.5.10}% +\contentsline {subsection}{\numberline {5.10.1}Function Documentation}{38}{subsection.5.10.1}% +\contentsline {subsubsection}{\numberline {5.10.1.1}rejectOutliers()}{39}{subsubsection.5.10.1.1}% +\contentsline {subsection}{\numberline {5.10.2}Variable Documentation}{39}{subsection.5.10.2}% +\contentsline {subsubsection}{\numberline {5.10.2.1}alpha}{39}{subsubsection.5.10.2.1}% +\contentsline {subsubsection}{\numberline {5.10.2.2}DIST\_THRESHOLD\_M}{39}{subsubsection.5.10.2.2}% +\contentsline {subsubsection}{\numberline {5.10.2.3}DIST\_THRESHOLD\_PX}{39}{subsubsection.5.10.2.3}% +\contentsline {subsubsection}{\numberline {5.10.2.4}DISTSQ\_THRESHOLD\_PX}{39}{subsubsection.5.10.2.4}% +\contentsline {subsubsection}{\numberline {5.10.2.5}FORCE\_OUTLIERS}{40}{subsubsection.5.10.2.5}% +\contentsline {subsubsection}{\numberline {5.10.2.6}max\_translation\_m}{40}{subsubsection.5.10.2.6}% +\contentsline {subsubsection}{\numberline {5.10.2.7}n\_outliers}{40}{subsubsection.5.10.2.7}% +\contentsline {subsubsection}{\numberline {5.10.2.8}n\_points}{40}{subsubsection.5.10.2.8}% +\contentsline {subsubsection}{\numberline {5.10.2.9}new\_coord}{40}{subsubsection.5.10.2.9}% +\contentsline {subsubsection}{\numberline {5.10.2.10}new\_coord\_perfect}{40}{subsubsection.5.10.2.10}% +\contentsline {subsubsection}{\numberline {5.10.2.11}noiseToAdd}{40}{subsubsection.5.10.2.11}% +\contentsline {subsubsection}{\numberline {5.10.2.12}outlier\_ind}{40}{subsubsection.5.10.2.12}% +\contentsline {subsubsection}{\numberline {5.10.2.13}prev\_coord}{41}{subsubsection.5.10.2.13}% +\contentsline {subsubsection}{\numberline {5.10.2.14}pruned\_new\_coord}{41}{subsubsection.5.10.2.14}% +\contentsline {subsubsection}{\numberline {5.10.2.15}pruned\_prev\_coord}{41}{subsubsection.5.10.2.15}% +\contentsline {subsubsection}{\numberline {5.10.2.16}show}{41}{subsubsection.5.10.2.16}% +\contentsline {subsubsection}{\numberline {5.10.2.17}theta\_deg}{41}{subsubsection.5.10.2.17}% +\contentsline {subsubsection}{\numberline {5.10.2.18}theta\_max\_deg}{41}{subsubsection.5.10.2.18}% +\contentsline {subsubsection}{\numberline {5.10.2.19}title\_append}{41}{subsubsection.5.10.2.19}% +\contentsline {subsubsection}{\numberline {5.10.2.20}trans\_vec}{41}{subsubsection.5.10.2.20}% +\contentsline {section}{\numberline {5.11}parse\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Data Namespace Reference}{42}{section.5.11}% +\contentsline {subsection}{\numberline {5.11.1}Function Documentation}{42}{subsection.5.11.1}% +\contentsline {subsubsection}{\numberline {5.11.1.1}convertCartesianImageToPolar()}{42}{subsubsection.5.11.1.1}% +\contentsline {subsubsection}{\numberline {5.11.1.2}convertPolarImageToCartesian()}{43}{subsubsection.5.11.1.2}% +\contentsline {subsubsection}{\numberline {5.11.1.3}convertPolarImgToLogPolar()}{43}{subsubsection.5.11.1.3}% +\contentsline {subsubsection}{\numberline {5.11.1.4}drawCVPoint()}{43}{subsubsection.5.11.1.4}% +\contentsline {subsubsection}{\numberline {5.11.1.5}extractDataFromRadarImage()}{43}{subsubsection.5.11.1.5}% +\contentsline {subsubsection}{\numberline {5.11.1.6}getCartImageFromImgPaths()}{44}{subsubsection.5.11.1.6}% +\contentsline {subsubsection}{\numberline {5.11.1.7}getDataFromImgPathsByIndex()}{44}{subsubsection.5.11.1.7}% +\contentsline {subsubsection}{\numberline {5.11.1.8}getPolarImageFromImgPaths()}{44}{subsubsection.5.11.1.8}% +\contentsline {subsubsection}{\numberline {5.11.1.9}getRadarImgPaths()}{45}{subsubsection.5.11.1.9}% +\contentsline {subsubsection}{\numberline {5.11.1.10}getRadarStreamPolar()}{45}{subsubsection.5.11.1.10}% +\contentsline {subsection}{\numberline {5.11.2}Variable Documentation}{45}{subsection.5.11.2}% +\contentsline {subsubsection}{\numberline {5.11.2.1}c}{45}{subsubsection.5.11.2.1}% +\contentsline {subsubsection}{\numberline {5.11.2.2}dataPath}{45}{subsubsection.5.11.2.2}% +\contentsline {subsubsection}{\numberline {5.11.2.3}datasetName}{45}{subsubsection.5.11.2.3}% +\contentsline {subsubsection}{\numberline {5.11.2.4}DOWNSAMPLE\_FACTOR}{46}{subsubsection.5.11.2.4}% +\contentsline {subsubsection}{\numberline {5.11.2.5}imgCart}{46}{subsubsection.5.11.2.5}% +\contentsline {subsubsection}{\numberline {5.11.2.6}imgPolar}{46}{subsubsection.5.11.2.6}% +\contentsline {subsubsection}{\numberline {5.11.2.7}MAX\_RANGE\_CLIP\_DEFAULT}{46}{subsubsection.5.11.2.7}% +\contentsline {subsubsection}{\numberline {5.11.2.8}nImgs}{46}{subsubsection.5.11.2.8}% +\contentsline {subsubsection}{\numberline {5.11.2.9}RANGE\_RESOLUTION\_CART\_M}{46}{subsubsection.5.11.2.9}% +\contentsline {subsubsection}{\numberline {5.11.2.10}RANGE\_RESOLUTION\_M}{46}{subsubsection.5.11.2.10}% +\contentsline {subsubsection}{\numberline {5.11.2.11}streamArr}{46}{subsubsection.5.11.2.11}% +\contentsline {subsubsection}{\numberline {5.11.2.12}timestampPath}{47}{subsubsection.5.11.2.12}% +\contentsline {section}{\numberline {5.12}Pose\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Graph\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Lib Namespace Reference}{47}{section.5.12}% +\contentsline {section}{\numberline {5.13}Raw\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}ROAMSystem Namespace Reference}{47}{section.5.13}% +\contentsline {subsection}{\numberline {5.13.1}Variable Documentation}{47}{subsection.5.13.1}% +\contentsline {subsubsection}{\numberline {5.13.1.1}datasetName}{47}{subsubsection.5.13.1.1}% +\contentsline {subsubsection}{\numberline {5.13.1.2}endSeqInd}{47}{subsubsection.5.13.1.2}% +\contentsline {subsubsection}{\numberline {5.13.1.3}imgSavePath}{48}{subsubsection.5.13.1.3}% +\contentsline {subsubsection}{\numberline {5.13.1.4}paramFlags}{48}{subsubsection.5.13.1.4}% +\contentsline {subsubsection}{\numberline {5.13.1.5}RADAR\_CART\_CENTER}{48}{subsubsection.5.13.1.5}% +\contentsline {subsubsection}{\numberline {5.13.1.6}REMOVE\_OLD\_RESULTS}{48}{subsubsection.5.13.1.6}% +\contentsline {subsubsection}{\numberline {5.13.1.7}startSeqInd}{48}{subsubsection.5.13.1.7}% +\contentsline {subsubsection}{\numberline {5.13.1.8}system}{48}{subsubsection.5.13.1.8}% +\contentsline {subsubsection}{\numberline {5.13.1.9}trajSavePath}{49}{subsubsection.5.13.1.9}% +\contentsline {subsubsection}{\numberline {5.13.1.10}wantToPlot}{49}{subsubsection.5.13.1.10}% +\contentsline {section}{\numberline {5.14}test\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Motion\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Distortion Namespace Reference}{49}{section.5.14}% +\contentsline {subsection}{\numberline {5.14.1}Variable Documentation}{50}{subsection.5.14.1}% +\contentsline {subsubsection}{\numberline {5.14.1.1}A}{50}{subsubsection.5.14.1.1}% +\contentsline {subsubsection}{\numberline {5.14.1.2}A\_inv}{50}{subsubsection.5.14.1.2}% +\contentsline {subsubsection}{\numberline {5.14.1.3}alpha}{50}{subsubsection.5.14.1.3}% +\contentsline {subsubsection}{\numberline {5.14.1.4}clear}{50}{subsubsection.5.14.1.4}% +\contentsline {subsubsection}{\numberline {5.14.1.5}cov\_p}{50}{subsubsection.5.14.1.5}% +\contentsline {subsubsection}{\numberline {5.14.1.6}cov\_v}{50}{subsubsection.5.14.1.6}% +\contentsline {subsubsection}{\numberline {5.14.1.7}currentFrame}{51}{subsubsection.5.14.1.7}% +\contentsline {subsubsection}{\numberline {5.14.1.8}distorted}{51}{subsubsection.5.14.1.8}% +\contentsline {subsubsection}{\numberline {5.14.1.9}False}{51}{subsubsection.5.14.1.9}% +\contentsline {subsubsection}{\numberline {5.14.1.10}final\_undistorted}{51}{subsubsection.5.14.1.10}% +\contentsline {subsubsection}{\numberline {5.14.1.11}frequency}{51}{subsubsection.5.14.1.11}% +\contentsline {subsubsection}{\numberline {5.14.1.12}groundTruth}{51}{subsubsection.5.14.1.12}% +\contentsline {subsubsection}{\numberline {5.14.1.13}h}{51}{subsubsection.5.14.1.13}% +\contentsline {subsubsection}{\numberline {5.14.1.14}h\_fit}{51}{subsubsection.5.14.1.14}% +\contentsline {subsubsection}{\numberline {5.14.1.15}MDS}{52}{subsubsection.5.14.1.15}% +\contentsline {subsubsection}{\numberline {5.14.1.16}N}{52}{subsubsection.5.14.1.16}% +\contentsline {subsubsection}{\numberline {5.14.1.17}n\_points}{52}{subsubsection.5.14.1.17}% +\contentsline {subsubsection}{\numberline {5.14.1.18}noiseToAdd}{52}{subsubsection.5.14.1.18}% +\contentsline {subsubsection}{\numberline {5.14.1.19}noisy}{52}{subsubsection.5.14.1.19}% +\contentsline {subsubsection}{\numberline {5.14.1.20}outlier\_ind}{52}{subsubsection.5.14.1.20}% +\contentsline {subsubsection}{\numberline {5.14.1.21}outlier\_rate}{52}{subsubsection.5.14.1.21}% +\contentsline {subsubsection}{\numberline {5.14.1.22}p\_jt}{52}{subsubsection.5.14.1.22}% +\contentsline {subsubsection}{\numberline {5.14.1.23}p\_w}{53}{subsubsection.5.14.1.23}% +\contentsline {subsubsection}{\numberline {5.14.1.24}params}{53}{subsubsection.5.14.1.24}% +\contentsline {subsubsection}{\numberline {5.14.1.25}period}{53}{subsubsection.5.14.1.25}% +\contentsline {subsubsection}{\numberline {5.14.1.26}plotDisplace}{53}{subsubsection.5.14.1.26}% +\contentsline {subsubsection}{\numberline {5.14.1.27}R\_fit}{53}{subsubsection.5.14.1.27}% +\contentsline {subsubsection}{\numberline {5.14.1.28}show}{53}{subsubsection.5.14.1.28}% +\contentsline {subsubsection}{\numberline {5.14.1.29}solution}{53}{subsubsection.5.14.1.29}% +\contentsline {subsubsection}{\numberline {5.14.1.30}srcCoord2}{53}{subsubsection.5.14.1.30}% +\contentsline {subsubsection}{\numberline {5.14.1.31}srcCoord3}{54}{subsubsection.5.14.1.31}% +\contentsline {subsubsection}{\numberline {5.14.1.32}T\_wj}{54}{subsubsection.5.14.1.32}% +\contentsline {subsubsection}{\numberline {5.14.1.33}T\_wj0}{54}{subsubsection.5.14.1.33}% +\contentsline {subsubsection}{\numberline {5.14.1.34}theta\_deg}{54}{subsubsection.5.14.1.34}% +\contentsline {subsubsection}{\numberline {5.14.1.35}theta\_fit}{54}{subsubsection.5.14.1.35}% +\contentsline {subsubsection}{\numberline {5.14.1.36}title\_append}{54}{subsubsection.5.14.1.36}% +\contentsline {subsubsection}{\numberline {5.14.1.37}transform}{54}{subsubsection.5.14.1.37}% +\contentsline {subsubsection}{\numberline {5.14.1.38}undistorted}{55}{subsubsection.5.14.1.38}% +\contentsline {subsubsection}{\numberline {5.14.1.39}useOld}{55}{subsubsection.5.14.1.39}% +\contentsline {subsubsection}{\numberline {5.14.1.40}v\_j0}{55}{subsubsection.5.14.1.40}% +\contentsline {subsubsection}{\numberline {5.14.1.41}velocity}{55}{subsubsection.5.14.1.41}% +\contentsline {section}{\numberline {5.15}test\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Transform Namespace Reference}{55}{section.5.15}% +\contentsline {subsection}{\numberline {5.15.1}Variable Documentation}{56}{subsection.5.15.1}% +\contentsline {subsubsection}{\numberline {5.15.1.1}A}{56}{subsubsection.5.15.1.1}% +\contentsline {subsubsection}{\numberline {5.15.1.2}A\_inv}{56}{subsubsection.5.15.1.2}% +\contentsline {subsubsection}{\numberline {5.15.1.3}alpha}{56}{subsubsection.5.15.1.3}% +\contentsline {subsubsection}{\numberline {5.15.1.4}clear}{56}{subsubsection.5.15.1.4}% +\contentsline {subsubsection}{\numberline {5.15.1.5}False}{56}{subsubsection.5.15.1.5}% +\contentsline {subsubsection}{\numberline {5.15.1.6}h}{56}{subsubsection.5.15.1.6}% +\contentsline {subsubsection}{\numberline {5.15.1.7}h\_fit}{57}{subsubsection.5.15.1.7}% +\contentsline {subsubsection}{\numberline {5.15.1.8}N}{57}{subsubsection.5.15.1.8}% +\contentsline {subsubsection}{\numberline {5.15.1.9}n\_points}{57}{subsubsection.5.15.1.9}% +\contentsline {subsubsection}{\numberline {5.15.1.10}noiseToAdd}{57}{subsubsection.5.15.1.10}% +\contentsline {subsubsection}{\numberline {5.15.1.11}noisy}{57}{subsubsection.5.15.1.11}% +\contentsline {subsubsection}{\numberline {5.15.1.12}outlier\_ind}{57}{subsubsection.5.15.1.12}% +\contentsline {subsubsection}{\numberline {5.15.1.13}outlier\_rate}{57}{subsubsection.5.15.1.13}% +\contentsline {subsubsection}{\numberline {5.15.1.14}R\_fit}{57}{subsubsection.5.15.1.14}% +\contentsline {subsubsection}{\numberline {5.15.1.15}show}{58}{subsubsection.5.15.1.15}% +\contentsline {subsubsection}{\numberline {5.15.1.16}srcCoord}{58}{subsubsection.5.15.1.16}% +\contentsline {subsubsection}{\numberline {5.15.1.17}srcCoord2}{58}{subsubsection.5.15.1.17}% +\contentsline {subsubsection}{\numberline {5.15.1.18}targetCoord}{58}{subsubsection.5.15.1.18}% +\contentsline {subsubsection}{\numberline {5.15.1.19}theta\_deg}{58}{subsubsection.5.15.1.19}% +\contentsline {subsubsection}{\numberline {5.15.1.20}theta\_fit}{58}{subsubsection.5.15.1.20}% +\contentsline {subsubsection}{\numberline {5.15.1.21}title\_append}{58}{subsubsection.5.15.1.21}% +\contentsline {subsubsection}{\numberline {5.15.1.22}useOld}{58}{subsubsection.5.15.1.22}% +\contentsline {section}{\numberline {5.16}Tracker Namespace Reference}{59}{section.5.16}% +\contentsline {section}{\numberline {5.17}trajectory\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Plotting Namespace Reference}{59}{section.5.17}% +\contentsline {subsection}{\numberline {5.17.1}Function Documentation}{59}{subsection.5.17.1}% +\contentsline {subsubsection}{\numberline {5.17.1.1}computePosesRMSE()}{59}{subsubsection.5.17.1.1}% +\contentsline {subsubsection}{\numberline {5.17.1.2}getGroundTruthTrajectory()}{60}{subsubsection.5.17.1.2}% +\contentsline {subsubsection}{\numberline {5.17.1.3}getGroundTruthTrajectoryGPS()}{60}{subsubsection.5.17.1.3}% +\contentsline {subsubsection}{\numberline {5.17.1.4}plotGtAndEstTrajectory()}{60}{subsubsection.5.17.1.4}% +\contentsline {subsection}{\numberline {5.17.2}Variable Documentation}{60}{subsection.5.17.2}% +\contentsline {subsubsection}{\numberline {5.17.2.1}block}{60}{subsubsection.5.17.2.1}% +\contentsline {subsubsection}{\numberline {5.17.2.2}datasetName}{61}{subsubsection.5.17.2.2}% +\contentsline {subsubsection}{\numberline {5.17.2.3}estPoses}{61}{subsubsection.5.17.2.3}% +\contentsline {subsubsection}{\numberline {5.17.2.4}estTraj}{61}{subsubsection.5.17.2.4}% +\contentsline {subsubsection}{\numberline {5.17.2.5}gtPath}{61}{subsubsection.5.17.2.5}% +\contentsline {subsubsection}{\numberline {5.17.2.6}gtTraj}{61}{subsubsection.5.17.2.6}% +\contentsline {subsubsection}{\numberline {5.17.2.7}keyframe\_timestamps}{61}{subsubsection.5.17.2.7}% +\contentsline {subsubsection}{\numberline {5.17.2.8}noise}{61}{subsubsection.5.17.2.8}% +\contentsline {subsubsection}{\numberline {5.17.2.9}timestampPath}{62}{subsubsection.5.17.2.9}% +\contentsline {section}{\numberline {5.18}utils Namespace Reference}{62}{section.5.18}% +\contentsline {subsection}{\numberline {5.18.1}Function Documentation}{62}{subsection.5.18.1}% +\contentsline {subsubsection}{\numberline {5.18.1.1}convertPoseToTransform()}{62}{subsubsection.5.18.1.1}% +\contentsline {subsubsection}{\numberline {5.18.1.2}convertRandHtoDeltas()}{62}{subsubsection.5.18.1.2}% +\contentsline {subsubsection}{\numberline {5.18.1.3}convertTransformToPose()}{63}{subsubsection.5.18.1.3}% +\contentsline {subsubsection}{\numberline {5.18.1.4}f\_arr()}{63}{subsubsection.5.18.1.4}% +\contentsline {subsubsection}{\numberline {5.18.1.5}flatten()}{63}{subsubsection.5.18.1.5}% +\contentsline {subsubsection}{\numberline {5.18.1.6}getRotationMatrix()}{63}{subsubsection.5.18.1.6}% +\contentsline {subsubsection}{\numberline {5.18.1.7}homogenize()}{63}{subsubsection.5.18.1.7}% +\contentsline {subsubsection}{\numberline {5.18.1.8}invert\_transform()}{63}{subsubsection.5.18.1.8}% +\contentsline {subsubsection}{\numberline {5.18.1.9}normalize\_angles()}{64}{subsubsection.5.18.1.9}% +\contentsline {subsubsection}{\numberline {5.18.1.10}plt\_full\_extent()}{64}{subsubsection.5.18.1.10}% +\contentsline {subsubsection}{\numberline {5.18.1.11}plt\_savefig\_by\_axis()}{64}{subsubsection.5.18.1.11}% +\contentsline {subsubsection}{\numberline {5.18.1.12}quiver()}{64}{subsubsection.5.18.1.12}% +\contentsline {subsubsection}{\numberline {5.18.1.13}radarImgPathToTimestamp()}{64}{subsubsection.5.18.1.13}% +\contentsline {subsubsection}{\numberline {5.18.1.14}tic()}{65}{subsubsection.5.18.1.14}% +\contentsline {subsubsection}{\numberline {5.18.1.15}toc()}{65}{subsubsection.5.18.1.15}% +\contentsline {chapter}{\numberline {6}Class Documentation}{67}{chapter.6}% +\contentsline {section}{\numberline {6.1}Bundle\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Adjustment Class Reference}{67}{section.6.1}% +\contentsline {subsection}{\numberline {6.1.1}Constructor \& Destructor Documentation}{67}{subsection.6.1.1}% +\contentsline {subsubsection}{\numberline {6.1.1.1}\_\_init\_\_()}{67}{subsubsection.6.1.1.1}% +\contentsline {subsection}{\numberline {6.1.2}Member Function Documentation}{67}{subsection.6.1.2}% +\contentsline {subsubsection}{\numberline {6.1.2.1}add\_edge()}{67}{subsubsection.6.1.2.1}% +\contentsline {subsubsection}{\numberline {6.1.2.2}add\_point()}{68}{subsubsection.6.1.2.2}% +\contentsline {subsubsection}{\numberline {6.1.2.3}add\_pose()}{68}{subsubsection.6.1.2.3}% +\contentsline {subsubsection}{\numberline {6.1.2.4}get\_point()}{68}{subsubsection.6.1.2.4}% +\contentsline {subsubsection}{\numberline {6.1.2.5}get\_pose()}{68}{subsubsection.6.1.2.5}% +\contentsline {subsubsection}{\numberline {6.1.2.6}optimize()}{68}{subsubsection.6.1.2.6}% +\contentsline {section}{\numberline {6.2}Cart\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Coord Class Reference}{69}{section.6.2}% +\contentsline {subsection}{\numberline {6.2.1}Detailed Description}{69}{subsection.6.2.1}% +\contentsline {subsection}{\numberline {6.2.2}Constructor \& Destructor Documentation}{69}{subsection.6.2.2}% +\contentsline {subsubsection}{\numberline {6.2.2.1}\_\_init\_\_()}{69}{subsubsection.6.2.2.1}% +\contentsline {subsection}{\numberline {6.2.3}Member Function Documentation}{69}{subsection.6.2.3}% +\contentsline {subsubsection}{\numberline {6.2.3.1}\_\_str\_\_()}{70}{subsubsection.6.2.3.1}% +\contentsline {subsubsection}{\numberline {6.2.3.2}add()}{70}{subsubsection.6.2.3.2}% +\contentsline {subsubsection}{\numberline {6.2.3.3}addCoord()}{70}{subsubsection.6.2.3.3}% +\contentsline {subsubsection}{\numberline {6.2.3.4}asTuple()}{70}{subsubsection.6.2.3.4}% +\contentsline {subsubsection}{\numberline {6.2.3.5}getAngle()}{70}{subsubsection.6.2.3.5}% +\contentsline {subsubsection}{\numberline {6.2.3.6}getDistance()}{70}{subsubsection.6.2.3.6}% +\contentsline {subsubsection}{\numberline {6.2.3.7}getX()}{71}{subsubsection.6.2.3.7}% +\contentsline {subsubsection}{\numberline {6.2.3.8}getY()}{71}{subsubsection.6.2.3.8}% +\contentsline {subsubsection}{\numberline {6.2.3.9}scale()}{71}{subsubsection.6.2.3.9}% +\contentsline {subsubsection}{\numberline {6.2.3.10}scaleX()}{71}{subsubsection.6.2.3.10}% +\contentsline {subsubsection}{\numberline {6.2.3.11}scaleY()}{71}{subsubsection.6.2.3.11}% +\contentsline {subsubsection}{\numberline {6.2.3.12}sub()}{71}{subsubsection.6.2.3.12}% +\contentsline {subsection}{\numberline {6.2.4}Member Data Documentation}{71}{subsection.6.2.4}% +\contentsline {subsubsection}{\numberline {6.2.4.1}x}{72}{subsubsection.6.2.4.1}% +\contentsline {subsubsection}{\numberline {6.2.4.2}y}{72}{subsubsection.6.2.4.2}% +\contentsline {section}{\numberline {6.3}Keyframe Class Reference}{72}{section.6.3}% +\contentsline {subsection}{\numberline {6.3.1}Constructor \& Destructor Documentation}{72}{subsection.6.3.1}% +\contentsline {subsubsection}{\numberline {6.3.1.1}\_\_init\_\_()}{72}{subsubsection.6.3.1.1}% +\contentsline {subsection}{\numberline {6.3.2}Member Function Documentation}{73}{subsection.6.3.2}% +\contentsline {subsubsection}{\numberline {6.3.2.1}convertFeaturesLocalToGlobal()}{73}{subsubsection.6.3.2.1}% +\contentsline {subsubsection}{\numberline {6.3.2.2}copyFromOtherKeyframe()}{73}{subsubsection.6.3.2.2}% +\contentsline {subsubsection}{\numberline {6.3.2.3}getPrunedFeaturesGlobalPosition()}{73}{subsubsection.6.3.2.3}% +\contentsline {subsubsection}{\numberline {6.3.2.4}pruneFeaturePoints()}{73}{subsubsection.6.3.2.4}% +\contentsline {subsubsection}{\numberline {6.3.2.5}updateInfo()}{74}{subsubsection.6.3.2.5}% +\contentsline {subsection}{\numberline {6.3.3}Member Data Documentation}{74}{subsection.6.3.3}% +\contentsline {subsubsection}{\numberline {6.3.3.1}featurePointsLocal}{74}{subsubsection.6.3.3.1}% +\contentsline {subsubsection}{\numberline {6.3.3.2}featurePointsLocalUndistorted}{74}{subsubsection.6.3.3.2}% +\contentsline {subsubsection}{\numberline {6.3.3.3}pointCloud}{74}{subsubsection.6.3.3.3}% +\contentsline {subsubsection}{\numberline {6.3.3.4}pose}{74}{subsubsection.6.3.3.4}% +\contentsline {subsubsection}{\numberline {6.3.3.5}prunedFeaturePoints}{74}{subsubsection.6.3.3.5}% +\contentsline {subsubsection}{\numberline {6.3.3.6}prunedUndistortedLocals}{75}{subsubsection.6.3.3.6}% +\contentsline {subsubsection}{\numberline {6.3.3.7}radarPolarImg}{75}{subsubsection.6.3.3.7}% +\contentsline {subsubsection}{\numberline {6.3.3.8}velocity}{75}{subsubsection.6.3.3.8}% +\contentsline {section}{\numberline {6.4}Map Class Reference}{75}{section.6.4}% +\contentsline {subsection}{\numberline {6.4.1}Constructor \& Destructor Documentation}{75}{subsection.6.4.1}% +\contentsline {subsubsection}{\numberline {6.4.1.1}\_\_init\_\_()}{75}{subsubsection.6.4.1.1}% +\contentsline {subsection}{\numberline {6.4.2}Member Function Documentation}{76}{subsection.6.4.2}% +\contentsline {subsubsection}{\numberline {6.4.2.1}addKeyframe()}{76}{subsubsection.6.4.2.1}% +\contentsline {subsubsection}{\numberline {6.4.2.2}isGoodKeyframe()}{76}{subsubsection.6.4.2.2}% +\contentsline {subsubsection}{\numberline {6.4.2.3}plot()}{76}{subsubsection.6.4.2.3}% +\contentsline {subsubsection}{\numberline {6.4.2.4}updateInternalTraj()}{76}{subsubsection.6.4.2.4}% +\contentsline {subsection}{\numberline {6.4.3}Member Data Documentation}{77}{subsection.6.4.3}% +\contentsline {subsubsection}{\numberline {6.4.3.1}estTraj}{77}{subsubsection.6.4.3.1}% +\contentsline {subsubsection}{\numberline {6.4.3.2}filePaths}{77}{subsubsection.6.4.3.2}% +\contentsline {subsubsection}{\numberline {6.4.3.3}imgPathArr}{77}{subsubsection.6.4.3.3}% +\contentsline {subsubsection}{\numberline {6.4.3.4}keyframes}{77}{subsubsection.6.4.3.4}% +\contentsline {subsubsection}{\numberline {6.4.3.5}mapPoints}{77}{subsubsection.6.4.3.5}% +\contentsline {subsubsection}{\numberline {6.4.3.6}sequenceName}{77}{subsubsection.6.4.3.6}% +\contentsline {subsubsection}{\numberline {6.4.3.7}sequenceSize}{77}{subsubsection.6.4.3.7}% +\contentsline {section}{\numberline {6.5}Motion\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Distortion\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Solver Class Reference}{78}{section.6.5}% +\contentsline {subsection}{\numberline {6.5.1}Constructor \& Destructor Documentation}{78}{subsection.6.5.1}% +\contentsline {subsubsection}{\numberline {6.5.1.1}\_\_init\_\_()\hspace {0.1cm}{\footnotesize \ttfamily [1/2]}}{78}{subsubsection.6.5.1.1}% +\contentsline {subsubsection}{\numberline {6.5.1.2}\_\_init\_\_()\hspace {0.1cm}{\footnotesize \ttfamily [2/2]}}{79}{subsubsection.6.5.1.2}% +\contentsline {subsection}{\numberline {6.5.2}Member Function Documentation}{79}{subsection.6.5.2}% +\contentsline {subsubsection}{\numberline {6.5.2.1}compute\_time\_deltas()}{79}{subsubsection.6.5.2.1}% +\contentsline {subsubsection}{\numberline {6.5.2.2}error()}{79}{subsubsection.6.5.2.2}% +\contentsline {subsubsection}{\numberline {6.5.2.3}error\_vector()}{79}{subsubsection.6.5.2.3}% +\contentsline {subsubsection}{\numberline {6.5.2.4}expected\_observed\_pts()}{80}{subsubsection.6.5.2.4}% +\contentsline {subsubsection}{\numberline {6.5.2.5}infer\_velocity()}{80}{subsubsection.6.5.2.5}% +\contentsline {subsubsection}{\numberline {6.5.2.6}jacobian()}{80}{subsubsection.6.5.2.6}% +\contentsline {subsubsection}{\numberline {6.5.2.7}jacobian\_vector()}{80}{subsubsection.6.5.2.7}% +\contentsline {subsubsection}{\numberline {6.5.2.8}optimize()}{80}{subsubsection.6.5.2.8}% +\contentsline {subsubsection}{\numberline {6.5.2.9}optimize\_library()}{81}{subsubsection.6.5.2.9}% +\contentsline {subsubsection}{\numberline {6.5.2.10}undistort()}{81}{subsubsection.6.5.2.10}% +\contentsline {subsubsection}{\numberline {6.5.2.11}update\_problem()}{81}{subsubsection.6.5.2.11}% +\contentsline {subsection}{\numberline {6.5.3}Member Data Documentation}{81}{subsection.6.5.3}% +\contentsline {subsubsection}{\numberline {6.5.3.1}debug}{81}{subsubsection.6.5.3.1}% +\contentsline {subsubsection}{\numberline {6.5.3.2}dT}{81}{subsubsection.6.5.3.2}% +\contentsline {subsubsection}{\numberline {6.5.3.3}info\_vector}{82}{subsubsection.6.5.3.3}% +\contentsline {subsubsection}{\numberline {6.5.3.4}p\_jt}{82}{subsubsection.6.5.3.4}% +\contentsline {subsubsection}{\numberline {6.5.3.5}p\_w}{82}{subsubsection.6.5.3.5}% +\contentsline {subsubsection}{\numberline {6.5.3.6}sigma\_p}{82}{subsubsection.6.5.3.6}% +\contentsline {subsubsection}{\numberline {6.5.3.7}sigma\_v}{82}{subsubsection.6.5.3.7}% +\contentsline {subsubsection}{\numberline {6.5.3.8}T\_wj0}{82}{subsubsection.6.5.3.8}% +\contentsline {subsubsection}{\numberline {6.5.3.9}T\_wj0\_inv}{82}{subsubsection.6.5.3.9}% +\contentsline {subsubsection}{\numberline {6.5.3.10}T\_wj\_initial}{82}{subsubsection.6.5.3.10}% +\contentsline {subsubsection}{\numberline {6.5.3.11}total\_scan\_time}{83}{subsubsection.6.5.3.11}% +\contentsline {subsubsection}{\numberline {6.5.3.12}v\_j\_initial}{83}{subsubsection.6.5.3.12}% +\contentsline {section}{\numberline {6.6}Polar\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Coord Class Reference}{83}{section.6.6}% +\contentsline {subsection}{\numberline {6.6.1}Detailed Description}{83}{subsection.6.6.1}% +\contentsline {subsection}{\numberline {6.6.2}Constructor \& Destructor Documentation}{83}{subsection.6.6.2}% +\contentsline {subsubsection}{\numberline {6.6.2.1}\_\_init\_\_()}{83}{subsubsection.6.6.2.1}% +\contentsline {subsection}{\numberline {6.6.3}Member Function Documentation}{84}{subsection.6.6.3}% +\contentsline {subsubsection}{\numberline {6.6.3.1}\_\_str\_\_()}{84}{subsubsection.6.6.3.1}% +\contentsline {subsubsection}{\numberline {6.6.3.2}asTuple()}{84}{subsubsection.6.6.3.2}% +\contentsline {subsubsection}{\numberline {6.6.3.3}getR()}{84}{subsubsection.6.6.3.3}% +\contentsline {subsubsection}{\numberline {6.6.3.4}getTheta()}{84}{subsubsection.6.6.3.4}% +\contentsline {subsubsection}{\numberline {6.6.3.5}scaleR()}{84}{subsubsection.6.6.3.5}% +\contentsline {subsubsection}{\numberline {6.6.3.6}toCart()}{84}{subsubsection.6.6.3.6}% +\contentsline {subsection}{\numberline {6.6.4}Member Data Documentation}{85}{subsection.6.6.4}% +\contentsline {subsubsection}{\numberline {6.6.4.1}r}{85}{subsubsection.6.6.4.1}% +\contentsline {subsubsection}{\numberline {6.6.4.2}theta}{85}{subsubsection.6.6.4.2}% +\contentsline {section}{\numberline {6.7}Pose\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Graph\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}Optimization Class Reference}{85}{section.6.7}% +\contentsline {subsection}{\numberline {6.7.1}Constructor \& Destructor Documentation}{85}{subsection.6.7.1}% +\contentsline {subsubsection}{\numberline {6.7.1.1}\_\_init\_\_()}{85}{subsubsection.6.7.1.1}% +\contentsline {subsection}{\numberline {6.7.2}Member Function Documentation}{85}{subsection.6.7.2}% +\contentsline {subsubsection}{\numberline {6.7.2.1}add\_edge()}{85}{subsubsection.6.7.2.1}% +\contentsline {subsubsection}{\numberline {6.7.2.2}add\_vertex()}{86}{subsubsection.6.7.2.2}% +\contentsline {subsubsection}{\numberline {6.7.2.3}get\_pose()}{86}{subsubsection.6.7.2.3}% +\contentsline {subsubsection}{\numberline {6.7.2.4}optimize()}{86}{subsubsection.6.7.2.4}% +\contentsline {section}{\numberline {6.8}Raw\discretionary {\mbox {\scriptsize $\hookleftarrow $}}{}{}ROAMSystem Class Reference}{86}{section.6.8}% +\contentsline {subsection}{\numberline {6.8.1}Constructor \& Destructor Documentation}{87}{subsection.6.8.1}% +\contentsline {subsubsection}{\numberline {6.8.1.1}\_\_init\_\_()}{87}{subsubsection.6.8.1.1}% +\contentsline {subsection}{\numberline {6.8.2}Member Function Documentation}{87}{subsection.6.8.2}% +\contentsline {subsubsection}{\numberline {6.8.2.1}plot()}{87}{subsubsection.6.8.2.1}% +\contentsline {subsubsection}{\numberline {6.8.2.2}plotTraj()}{88}{subsubsection.6.8.2.2}% +\contentsline {subsubsection}{\numberline {6.8.2.3}run()}{88}{subsubsection.6.8.2.3}% +\contentsline {subsubsection}{\numberline {6.8.2.4}updateTrajectory()}{88}{subsubsection.6.8.2.4}% +\contentsline {subsubsection}{\numberline {6.8.2.5}updateTrajectoryAbsolute()}{89}{subsubsection.6.8.2.5}% +\contentsline {subsubsection}{\numberline {6.8.2.6}updateTrajFromTracker()}{89}{subsubsection.6.8.2.6}% +\contentsline {subsection}{\numberline {6.8.3}Member Data Documentation}{89}{subsection.6.8.3}% +\contentsline {subsubsection}{\numberline {6.8.3.1}estTraj}{89}{subsubsection.6.8.3.1}% +\contentsline {subsubsection}{\numberline {6.8.3.2}fig}{89}{subsubsection.6.8.3.2}% +\contentsline {subsubsection}{\numberline {6.8.3.3}filePaths}{89}{subsubsection.6.8.3.3}% +\contentsline {subsubsection}{\numberline {6.8.3.4}gtTraj}{89}{subsubsection.6.8.3.4}% +\contentsline {subsubsection}{\numberline {6.8.3.5}hasGroundTruth}{90}{subsubsection.6.8.3.5}% +\contentsline {subsubsection}{\numberline {6.8.3.6}imgPathArr}{90}{subsubsection.6.8.3.6}% +\contentsline {subsubsection}{\numberline {6.8.3.7}map}{90}{subsubsection.6.8.3.7}% +\contentsline {subsubsection}{\numberline {6.8.3.8}paramFlags}{90}{subsubsection.6.8.3.8}% +\contentsline {subsubsection}{\numberline {6.8.3.9}sequenceName}{90}{subsubsection.6.8.3.9}% +\contentsline {subsubsection}{\numberline {6.8.3.10}sequenceSize}{90}{subsubsection.6.8.3.10}% +\contentsline {subsubsection}{\numberline {6.8.3.11}tracker}{90}{subsubsection.6.8.3.11}% +\contentsline {section}{\numberline {6.9}Tracker Class Reference}{91}{section.6.9}% +\contentsline {subsection}{\numberline {6.9.1}Constructor \& Destructor Documentation}{91}{subsection.6.9.1}% +\contentsline {subsubsection}{\numberline {6.9.1.1}\_\_init\_\_()}{91}{subsubsection.6.9.1.1}% +\contentsline {subsection}{\numberline {6.9.2}Member Function Documentation}{91}{subsection.6.9.2}% +\contentsline {subsubsection}{\numberline {6.9.2.1}getTransform()}{91}{subsubsection.6.9.2.1}% +\contentsline {subsubsection}{\numberline {6.9.2.2}initTraj()}{92}{subsubsection.6.9.2.2}% +\contentsline {subsubsection}{\numberline {6.9.2.3}plot()}{92}{subsubsection.6.9.2.3}% +\contentsline {subsubsection}{\numberline {6.9.2.4}track()}{92}{subsubsection.6.9.2.4}% +\contentsline {subsection}{\numberline {6.9.3}Member Data Documentation}{92}{subsection.6.9.3}% +\contentsline {subsubsection}{\numberline {6.9.3.1}estTraj}{93}{subsubsection.6.9.3.1}% +\contentsline {subsubsection}{\numberline {6.9.3.2}filePaths}{93}{subsubsection.6.9.3.2}% +\contentsline {subsubsection}{\numberline {6.9.3.3}gtTraj}{93}{subsubsection.6.9.3.3}% +\contentsline {subsubsection}{\numberline {6.9.3.4}imgPathArr}{93}{subsubsection.6.9.3.4}% +\contentsline {subsubsection}{\numberline {6.9.3.5}paramFlags}{93}{subsubsection.6.9.3.5}% +\contentsline {subsubsection}{\numberline {6.9.3.6}sequenceName}{93}{subsubsection.6.9.3.6}% +\contentsline {subsubsection}{\numberline {6.9.3.7}sequenceSize}{93}{subsubsection.6.9.3.7}% +\contentsline {section}{\numberline {6.10}Trajectory Class Reference}{94}{section.6.10}% +\contentsline {subsection}{\numberline {6.10.1}Constructor \& Destructor Documentation}{94}{subsection.6.10.1}% +\contentsline {subsubsection}{\numberline {6.10.1.1}\_\_init\_\_()}{94}{subsubsection.6.10.1.1}% +\contentsline {subsection}{\numberline {6.10.2}Member Function Documentation}{94}{subsection.6.10.2}% +\contentsline {subsubsection}{\numberline {6.10.2.1}appendAbsoluteTransform()}{94}{subsubsection.6.10.2.1}% +\contentsline {subsubsection}{\numberline {6.10.2.2}appendRelativeDeltas()}{95}{subsubsection.6.10.2.2}% +\contentsline {subsubsection}{\numberline {6.10.2.3}appendRelativeTransform()}{95}{subsubsection.6.10.2.3}% +\contentsline {subsubsection}{\numberline {6.10.2.4}getGroundTruthDeltasAtTime()}{95}{subsubsection.6.10.2.4}% +\contentsline {subsubsection}{\numberline {6.10.2.5}getPoseAtTimes()}{95}{subsubsection.6.10.2.5}% +\contentsline {subsubsection}{\numberline {6.10.2.6}plot()}{96}{subsubsection.6.10.2.6}% +\contentsline {subsection}{\numberline {6.10.3}Member Data Documentation}{96}{subsection.6.10.3}% +\contentsline {subsubsection}{\numberline {6.10.3.1}pose\_transform}{96}{subsubsection.6.10.3.1}% +\contentsline {subsubsection}{\numberline {6.10.3.2}poses}{96}{subsubsection.6.10.3.2}% +\contentsline {subsubsection}{\numberline {6.10.3.3}timestamps}{96}{subsubsection.6.10.3.3}% +\contentsline {chapter}{Index}{97}{section*.49}% diff --git a/doc/latex/tabu_doxygen.sty b/doc/latex/tabu_doxygen.sty new file mode 100644 index 0000000..3f17d1d --- /dev/null +++ b/doc/latex/tabu_doxygen.sty @@ -0,0 +1,2557 @@ +%% +%% This is file `tabu.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tabu.dtx (with options: `package') +%% +%% This is a generated file. +%% Copyright (FC) 2010-2011 - lppl +%% +%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars +%% +%% ********************************************************************************************** +%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal +%% \begin{tabu} to { preamble } => target specified +%% \begin{tabu} spread { preamble } => target relative to the ``natural width'' +%% +%% tabu works in text and in math modes. +%% +%% X columns: automatic width adjustment + horizontal and vertical alignment +%% \begin{tabu} { X[4c] X[1c] X[-2ml] } +%% +%% Horizontal lines and / or leaders: +%% \hline\hline => double horizontal line +%% \firsthline\hline => for nested tabulars +%% \lasthline\hline => for nested tabulars +%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader) +%% Automatic lines / leaders : +%% \everyrow{\hline\hline} +%% +%% Vertical lines and / or leaders: +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] } +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] } +%% +%% Fixed vertical spacing adjustment: +%% \extrarowheight= \extrarowdepth= +%% or: \extrarowsep= => may be prefixed by \global +%% +%% Dynamic vertical spacing adjustment: +%% \abovetabulinesep= \belowtabulinesep= +%% or: \tabulinesep= => may be prefixed by \global +%% +%% delarray.sty shortcuts: in math and text modes +%% \begin{tabu} .... \({ preamble }\) +%% +%% Algorithms reports: +%% \tracingtabu=1 \tracingtabu=2 +%% +%% ********************************************************************************************** +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% +%% This work consists of the main source file tabu.dtx +%% and the derived files +%% tabu.sty, tabu.pdf, tabu.ins +%% +%% tabu : Flexible LaTeX tabulars +%% lppl copyright 2010-2011 by FC +%% + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen] +\RequirePackage{array}[2008/09/09] +\RequirePackage{varwidth}[2009/03/30] +\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} +\let\tabu@AtEnd\@empty +\def\TMP@EnsureCode#1={% + \edef\tabu@AtEnd{\tabu@AtEnd + \catcode#1 \the\catcode#1}% + \catcode#1=% +}% \TMP@EnsureCode +\TMP@EnsureCode 33 = 12 % ! +\TMP@EnsureCode 58 = 12 % : (for siunitx) +\TMP@EnsureCode124 = 12 % | +\TMP@EnsureCode 36 = 3 % $ = math shift +\TMP@EnsureCode 38 = 4 % & = tab alignment character +\TMP@EnsureCode 32 = 10 % space +\TMP@EnsureCode 94 = 7 % ^ +\TMP@EnsureCode 95 = 8 % _ +%% Constants -------------------------------------------------------- +\newcount \c@taburow \def\thetaburow {\number\c@taburow} +\newcount \tabu@nbcols +\newcount \tabu@cnt +\newcount \tabu@Xcol +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcount \tabu@alloc \tabu@alloc=\m@ne +\newcount \tabu@nested +\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} +\newdimen \tabu@target +\newdimen \tabu@spreadtarget +\newdimen \tabu@naturalX +\newdimen \tabucolX +\let\tabu@DELTA \@tempdimc +\let\tabu@thick \@tempdima +\let\tabu@on \@tempdimb +\let\tabu@off \@tempdimc +\newdimen \tabu@Xsum +\newdimen \extrarowdepth +\newdimen \abovetabulinesep +\newdimen \belowtabulinesep +\newdimen \tabustrutrule \tabustrutrule \z@ +\newtoks \tabu@thebody +\newtoks \tabu@footnotes +\newsavebox \tabu@box +\newsavebox \tabu@arstrutbox +\newsavebox \tabu@hleads +\newsavebox \tabu@vleads +\newif \iftabu@colortbl +\newif \iftabu@siunitx +\newif \iftabu@measuring +\newif \iftabu@spread +\newif \iftabu@negcoef +\newif \iftabu@everyrow +\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} +\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} +\newif \iftabu@long +\newif \iftabuscantokens +\def\tabu@rescan {\tabu@verbatim \scantokens } +%% Utilities (for internal usage) ----------------------------------- +\def\tabu@gobblespace #1 {#1} +\def\tabu@gobbletoken #1#2{#1} +\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} +\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble + \else\ifx \@sptoken\@let@token + \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX + \fi\fi +}% \tabu@gobblex +\def\tabu@X{^^J} +{\obeyspaces +\global\let\tabu@spxiii= % saves an active space (for \ifx) +\gdef\tabu@@spxiii{ }} +\def\tabu@ifenvir {% only for \multicolumn + \expandafter\tabu@if@nvir\csname\@currenvir\endcsname +}% \tabu@ifenvir +\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else + \ifx\longtabu#1first\else + second\fi\fi oftwo\endcsname +}% \tabu@ifenvir +\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} +{\catcode`\&=3 +\gdef\tabu@strtrim #1{% #1 = control sequence to trim + \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi + \let\tabu@c@l@r \@empty \let#1\@empty + \else \expandafter \tabu@trimspaces #1\@nnil + \fi +}% \tabu@strtrim +\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }% +\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} +\gdef\tabu@lastspace #1{\def #3{#1}% + \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi + \tabu@trimspaces #1\@nnil} +}% \catcode +\def\tabu@sanitizearg #1#2{{% + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% + \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% +}% \tabu@sanitizearg +\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% + \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! +}% \tabu@textbar +\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} +\def\tabu@everyrow@egroup{% + \iftabu@everyrow \expandafter \endgroup \the\toks@ + \else \ifnum0=`{\fi}% + \fi +}% \tabu@everyrow@egroup +\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \z@}% +}% \tabu@arstrut +\def\tabu@rearstrut {% + \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax + \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax + \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima + \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi + \tabu@mkarstrut + \fi +}% \tabu@rearstrut +\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} +\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox + \hbox to\z@{\hbox to\z@{\hss + {\tabu@DBG{cyan}\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \z@ + width \tabustrutrule}\kern-\tabustrutrule + {\tabu@DBG{pink}\vrule + height \z@ + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \tabustrutrule}}}% +}% \tabu@DBG@arstrut +\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ + \@nextchar}}% +\def\tabu@savedecl{\ifcat$\d@llarend\else + \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode +}% \tabu@savedecl +\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} +\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } +\let\tabu@trialh@@k \@empty +\def\tabu@nowrite #1#{{\afterassignment}\toks@} +\let\tabu@write\write +\let\tabu@immediate\immediate +\def\tabu@WRITE{\begingroup + \def\immediate\write{\aftergroup\endgroup + \tabu@immediate\tabu@write}% +}% \tabu@WRITE +\expandafter\def\expandafter\tabu@GenericError\expandafter{% + \expandafter\tabu@WRITE\GenericError} +\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} +\def\tabu@noxfootnote [#1]{\@gobble} +\def\tabu@nocolor #1#{\@gobble} +\newcommand*\tabu@norowcolor[2][]{} +\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% + \futurelet\@let@token \tabu@m@ybesiunitx} +\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% + \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi + \tabu@temp}% \tabu@m@ybesiunitx +}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname +\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% +%% Fixed vertical spacing adjustment: \extrarowsep ------------------ +\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% + \iftabu@everyrow \aftergroup\tabu@Gextra + \else \aftergroup\tabu@n@Gextra + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra +}% \extrarowsep +\def\tabu@extra {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setextrasep \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extra +\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} +\def\tabu@extr@ #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extr@ +\def\tabu@setextrasep {\extrarowheight=\extrarowdepth + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth +}% \tabu@setextrasep +\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} +\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} +\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} +\let\tabu@C@extra \z@ +\let\tabu@G@extra \@empty +%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- +\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% + \iftabu@everyrow \aftergroup\tabu@Glinesep + \else \aftergroup\tabu@n@Glinesep + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep +}% \tabulinesep +\def\tabu@linesep {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setlinesep \abovetabulinesep + \fi \tabu@temp}% +}% \tabu@linesep +\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} +\def\tabu@sets@p #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep + \fi \tabu@temp}% +}% \tabu@sets@p +\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep +}% \tabu@setlinesep +\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} +\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} +\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} +\let\tabu@C@linesep \z@ +\let\tabu@G@linesep \@empty +%% \global\extrarowsep and \global\tabulinesep ------------------- +\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% + \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% +}% \tabu@Gsave +\def\tabu@Grestore#1#2{% + \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax + \ifcat$\the\toks\currentgrouplevel$\else + \global\let#1\@empty \global\let#2\z@ + \the\toks\currentgrouplevel + \fi +}% \tabu@Grestore +%% Setting code for every row --------------------------------------- +\newcommand*\everyrow{\tabu@everyrow@bgroup + \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop +}% \everyrow +\def\tabu@evrstartstop {\@ifnextchar^% + {\afterassignment \tabu@evrstartstop \tabu@stop=}% + {\ifx ^\@let@token + \afterassignment\tabu@evrstartstop \tabu@start=% + \else \afterassignment\tabu@everyr@w \toks@ + \fi}% +}% \tabu@evrstartstop +\def\tabu@everyr@w {% + \xdef\tabu@everyrow{% + \noexpand\tabu@everyrowfalse + \let\noalign \relax + \noexpand\tabu@rowfontreset + \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors + \let\noexpand\tabu@docline \noexpand\tabu@docline@evr + \the\toks@ + \noexpand\tabu@evrh@@k + \noexpand\tabu@rearstrut + \global\advance\c@taburow \@ne}% + \iftabu@everyrow \toks@\expandafter + {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% + \else \xdef\tabu@evr@G{\the\toks@}% + \fi + \tabu@everyrow@egroup +}% \tabu@everyr@w +\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only +\tabu@evr{} +%% line style and leaders ------------------------------------------- +\newcommand*\newtabulinestyle [1]{% + {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% +}% \newtabulinestyle +\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% + \tabu@sanitizearg {#1}\@tempa + \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi + \global\expandafter\let + \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi +}% \tabu@newlinestyle +\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% + \iftabu@everyrow + \toks@\expandafter{\expandafter \def \expandafter + \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% + \gdef\tabu@ls@{\tabu@ls@L}% + \else + \global\let\tabu@ls@G \tabu@thestyle + \gdef\tabu@ls@{\tabu@ls@G}% + \fi + \tabu@everyrow@egroup +}% \tabulinestyle +\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} +\def\tabu@rulecolor #1{\toks@{}% + \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% + \tabu@temp + \tabu@rulearc +}% \tabu@rulecolor +\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp + \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% + \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% + \fi + \tabu@temp +}% \tabu@ruledrsc@ +\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} +\def\tabu@rule@drsc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% + \else \toks@{\def\CT@drsc@{\color #1{#2}}}% + \fi + \else + \ifx \\#1#2\\\global\let\CT@drsc@ \relax + \else \gdef\CT@drsc@{\color #1{#2}}% + \fi + \fi + \tabu@rulearc +}% \tabu@rule@drsc@ +\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} +\def\tabu@rule@arc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% + \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% + \fi + \toks@\expandafter{\the\toks@ + \let\tabu@arc@L \CT@arc@ + \let\tabu@drsc@L \CT@drsc@ + \ignorespaces}% + \else + \ifx \\#1#2\\\gdef\CT@arc@{}% + \else \gdef\CT@arc@{\color #1{#2}}% + \fi + \global\let\tabu@arc@G \CT@arc@ + \global\let\tabu@drsc@G \CT@drsc@ + \fi + \tabu@everyrow@egroup +}% \tabu@rule@arc@ +\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} +\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} +\def\tabu@rowc@lors #1#2#3{% + \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil + \@defaultunits \tabu@start =\number0#1\relax \@nnil + \ifnum \count@<\tw@ \count@=\tw@ \fi + \advance\tabu@start \m@ne + \ifnum \tabu@start<\z@ \tabu@start \z@ \fi + \tabu@rowcolorseries #3\in@..\in@ \@nnil +}% \tabu@rowcolors +\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% + \ifx \in@#1\relax + \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% + \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ + \fi + \else + \ifx \\#2\\\tabu@rowcolorserieserror \fi + \tabu@sanitizearg{#1}\tabu@temp + \tabu@sanitizearg{#2}\@tempa + \advance\count@ \m@ne + \iftabu@everyrow + \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% + \ifnum ##2=\c@taburow + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi + \ifnum \c@taburow<##2 \else + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}\fi}% + }\edef\x{\noexpand\tabu@rc@ {\the\count@} + {\the\tabu@start} + {\tabu@temp} + {\@tempa}% + }\x + \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% + \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% + \else % inside \noalign + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% + \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% + \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}}% + }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x + \global\let\tabu@rc@G \tabu@rc@ + \fi + \fi + \tabu@everyrow@egroup +}% \tabu@rowcolorseries +\tabuDisableCommands {\let\tabu@rc@ \@empty } +\def\tabu@rowcolorserieserror {\PackageError{tabu} + {Invalid syntax for \string\taburowcolors + \MessageBreak Please look at the documentation!}\@ehd +}% \tabu@rowcolorserieserror +\newcommand*\tabureset {% + \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ + \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% +}% \tabureset +%% Parsing the line styles ------------------------------------------ +\def\tabu@getline #1{\begingroup + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa + \let\tabu@thestyle \relax + \ifcsname tabu@linestyle@\@tempa \endcsname + \edef\tabu@thestyle{\endgroup + \def\tabu@thestyle{\expandafter\noexpand + \csname tabu@linestyle@\@tempa\endcsname}% + }\tabu@thestyle + \else \expandafter\tabu@definestyle \tabu@temp \@nil + \fi +}% \tabu@getline +\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter + \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen + \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined + \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs + \def\tabu@temp{\tabu@getparam{thick}}% + \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% + \fi + {% + \let\tabu@ \relax + \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) + \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% + \expandafter}\expandafter + \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) + \def\;{\def\:}% + \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) + \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) + \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi + \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi + \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi + \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen + \tabu@on \tabulineon \fi\fi + \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen + \tabu@off \tabulineoff \fi\fi + \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi + \in@true % + \else \in@false % + \fi + \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% + \else \edef\tabu@thick{\the\tabu@thick}% + \fi + \edef \tabu@thestyle ##1##2{\endgroup + \def\tabu@thestyle{% + \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} + {\the\tabu@on}{##1} + {\the\tabu@off}{##2}% + \else \noexpand\tabu@rulesstyle + {##1\vrule width \tabu@thick}% + {##1\leaders \hrule height \tabu@thick \hfil}% + \fi}% + }\expandafter \expandafter + \expandafter \tabu@thestyle \expandafter + \expandafter \expandafter + {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% +}% \tabu@definestyle +{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active + \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} + \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} +}% \catcode +\def\tabu@oxiii #1{% + \ifcase \ifx n#1\z@ \else + \ifx f#1\@ne\else + \tw@ \fi\fi + \expandafter\tabu@onxiii + \or \expandafter\tabu@ofxiii + \else o% + \fi#1}% +\def\tabu@onxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx \tabu@spxiii#2\@ne\else + \tw@ \fi\fi\fi + \tabu@getparam{on}#2\expandafter\@gobble + \or \expandafter\tabu@onxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}}% +\def\tabu@ofxiii #1#2{% + \ifx #2f\expandafter\tabu@offxiii + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@offxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx\tabu@spxiii#2\@ne \else + \tw@ \fi\fi\fi + \tabu@getparam{off}#2\expandafter\@gobble + \or \expandafter\tabu@offxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} +\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef + \ifx \tabu@#1\else % no more spec + \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi +}% \tabu@getcolor +\def\tabu@getc@l@r #1\tabu@ {% + \def\tabu@temp{#1}\tabu@strtrim \tabu@temp + \ifx \tabu@temp\@empty + \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists + \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r + \else \let\tabu@c@lon \tabu@c@l@r + \fi + %\else \tabu@warncolour{\tabu@temp}% + \fi%\fi + \tabu@ % next spec +}% \tabu@getc@l@r +\def\tabu@warncolour #1{\PackageWarning{tabu} + {Color #1 is not defined. Default color used}% +}% \tabu@warncolour +\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% + \ifx \tabu@leaders\tabu@leaders@G \else + \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi +}% \tabu@leadersstyle +\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined + \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% +}% \tabu@rulesstyle +%% The leaders boxes ------------------------------------------------ +\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color + {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor + {% % but the leaders boxes should have colors ! + \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% + \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% + \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thehleaders \tabu@theleaders + }% + {% + \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% + \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% + \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thevleaders \tabu@theleaders + }% + \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% + }% +}% \tabu@LEADERS +\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} +\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color + \global\setbox \tabu@leads=\@box{% + {#3\tabu@therule{#1}{#2}}% + \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi + {#3\tabu@therule{#1}{#2}}}% + \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss + {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% + \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% + {##1\tabu@therule{#1}{#2}}% + \xleaders \copy\tabu@leads \@ss + \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% + }\tabu@theleaders{#3}% +}% \tabu@l@@d@rs +%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- +\newcommand*\tabu {\tabu@longfalse + \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% + \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endtabu*\endcsname{\endtabu}% + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {tabu} +\let\tabu@tabular \tabular % +\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} +\newcommand*\longtabu {\tabu@longtrue + \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi + \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% + \LTchunksize=\@M + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% + \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {longtabu} +\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} +\def\tabu@nolongtabu{\PackageError{tabu} + {longtabu requires the longtable package}\@ehd} +%% Read the target and then : \tabular or \@array ------------------ +\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } +\def\tabu@sett@rget {\tabu@target \z@ + \ifcase \ifx \bgroup\@let@token \z@ \else + \ifx \@sptoken\@let@token \@ne \else + \if t\@let@token \tw@ \else + \if s\@let@token \thr@@\else + \z@\fi\fi\fi\fi + \expandafter\tabu@begin + \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget + \or \expandafter\tabu@to + \or \expandafter\tabu@spread + \fi +}% \tabu@sett@rget +\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} +\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} +\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } +\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } +\def\tabu@linegoalt@rget {% + \ifx \tabu@temp\LNGL@setlinegoal + \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal + \tabu@begin +}% \tabu@linegoalt@rget +\def\tabu@begin #1#{% + \iftabu@measuring \expandafter\tabu@nestedmeasure \fi + \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty + \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% + \fi + \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil +}% \tabu@begin +\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup + \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% + \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% +}% \tabu@tabu@ +\def\tabu@nestedmeasure {% + \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax + \tabu@spreadtrue + \else \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}% + \expandafter\tabu@collectbody\expandafter\tabu@quickrule + \expandafter\endgroup + \fi +}% \tabu@nestedmeasure +\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} +%% \tabu@setup \tabu@init \tabu@indent +\def\tabu@setup{\tabu@alloc@ + \ifcase \tabu@nested + \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ + \let\tabu@afterendpar \par + \fi\fi\fi + \def\tabu@aligndefault{c}\tabu@init \tabu@indent + \else % + \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth + \fi + \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined + \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% + \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... + \let\@endpbox \tabu@endpbox % idem " " " " " " + \let\@tabarray \tabu@tabarray % idem " " " " " " + \tabu@setcleanup \tabu@setreset +}% \tabu@setup +\def\tabu@init{\tabu@starttimer \tabu@measuringfalse + \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% + \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline + \let\firstline \tabu@firstline \let\lastline \tabu@lastline + \let\hline \tabu@hline \let\@xhline \tabu@xhline + \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox + \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi + \tabu@trivlist % + \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext + \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering + \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft + \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering + \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft + \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont + \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x + \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar + \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok + \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn + \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! + \let\tabu@endpbox \@endpbox % idem " " " " " " " + \let\tabu@tabarray \@tabarray % idem " " " " " " " + \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray) + \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi +}% \tabu@init +\def\tabu@indent{% correction for indentation + \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget + \everypar\expandafter{% + \the\everypar\everypar\expandafter{\the\everypar}% + \setbox\z@=\lastbox + \ifdim\wd\z@>\z@ \edef\tabu@thetarget + {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi + \box\z@}% + \fi\fi +}% \tabu@indent +\def\tabu@setcleanup {% saves last global assignments + \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax + \def\tabu@aftergroupcleanup{% + \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% + \else + \def\tabu@aftergroupcleanup{% + \aftergroup\aftergroup\aftergroup\tabu@cleanup + \let\tabu@aftergroupcleanup \relax}% + \fi + \let\tabu@arc@Gsave \tabu@arc@G + \let\tabu@arc@G \tabu@arc@L % + \let\tabu@drsc@Gsave \tabu@drsc@G + \let\tabu@drsc@G \tabu@drsc@L % + \let\tabu@ls@Gsave \tabu@ls@G + \let\tabu@ls@G \tabu@ls@L % + \let\tabu@rc@Gsave \tabu@rc@G + \let\tabu@rc@G \tabu@rc@L % + \let\tabu@evr@Gsave \tabu@evr@G + \let\tabu@evr@G \tabu@evr@L % + \let\tabu@celllalign@save \tabu@celllalign + \let\tabu@cellralign@save \tabu@cellralign + \let\tabu@cellleft@save \tabu@cellleft + \let\tabu@cellright@save \tabu@cellright + \let\tabu@@celllalign@save \tabu@@celllalign + \let\tabu@@cellralign@save \tabu@@cellralign + \let\tabu@@cellleft@save \tabu@@cellleft + \let\tabu@@cellright@save \tabu@@cellright + \let\tabu@rowfontreset@save \tabu@rowfontreset + \let\tabu@@rowfontreset@save\tabu@@rowfontreset + \let\tabu@rowfontreset \@empty + \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset + \edef\c@taburow@save {\the\c@taburow}% + \edef\tabu@naturalX@save {\the\tabu@naturalX}% + \let\tabu@naturalXmin@save \tabu@naturalXmin + \let\tabu@naturalXmax@save \tabu@naturalXmax + \let\tabu@mkarstrut@save \tabu@mkarstrut + \edef\tabu@clarstrut{% + \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax + \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax + \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% +}% \tabu@setcleanup +\def\tabu@cleanup {\begingroup + \globaldefs\@ne \tabu@everyrowtrue + \let\tabu@arc@G \tabu@arc@Gsave + \let\CT@arc@ \tabu@arc@G + \let\tabu@drsc@G \tabu@drsc@Gsave + \let\CT@drsc@ \tabu@drsc@G + \let\tabu@ls@G \tabu@ls@Gsave + \let\tabu@ls@ \tabu@ls@G + \let\tabu@rc@G \tabu@rc@Gsave + \let\tabu@rc@ \tabu@rc@G + \let\CT@do@color \relax + \let\tabu@evr@G \tabu@evr@Gsave + \let\tabu@celllalign \tabu@celllalign@save + \let\tabu@cellralign \tabu@cellralign@save + \let\tabu@cellleft \tabu@cellleft@save + \let\tabu@cellright \tabu@cellright@save + \let\tabu@@celllalign \tabu@@celllalign@save + \let\tabu@@cellralign \tabu@@cellralign@save + \let\tabu@@cellleft \tabu@@cellleft@save + \let\tabu@@cellright \tabu@@cellright@save + \let\tabu@rowfontreset \tabu@rowfontreset@save + \let\tabu@@rowfontreset \tabu@@rowfontreset@save + \tabu@naturalX =\tabu@naturalX@save + \let\tabu@naturalXmax \tabu@naturalXmax@save + \let\tabu@naturalXmin \tabu@naturalXmin@save + \let\tabu@mkarstrut \tabu@mkarstrut@save + \c@taburow =\c@taburow@save + \ifcase \tabu@nested \tabu@alloc \m@ne\fi + \endgroup % + \ifcase \tabu@nested + \the\tabu@footnotes \global\tabu@footnotes{}% + \tabu@afterendpar \tabu@elapsedtime + \fi + \tabu@clarstrut + \everyrow\expandafter {\tabu@evr@G}% +}% \tabu@cleanup +\let\tabu@afterendpar \relax +\def\tabu@setreset {% + \edef\tabu@savedparams {% \relax for \tabu@message@save + \ifmmode \col@sep \the\arraycolsep + \else \col@sep \the\tabcolsep \fi \relax + \arrayrulewidth \the\arrayrulewidth \relax + \doublerulesep \the\doublerulesep \relax + \extratabsurround \the\extratabsurround \relax + \extrarowheight \the\extrarowheight \relax + \extrarowdepth \the\extrarowdepth \relax + \abovetabulinesep \the\abovetabulinesep \relax + \belowtabulinesep \the\belowtabulinesep \relax + \def\noexpand\arraystretch{\arraystretch}% + \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% + \begingroup + \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu + \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi + \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi + \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L + \expandafter \endgroup \expandafter + \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena + \let\tabu@arc@G \tabu@arc@L + \let\tabu@drsc@G \tabu@drsc@L + \let\tabu@ls@G \tabu@ls@L + \let\tabu@rc@G \tabu@rc@L + \let\tabu@evr@G \tabu@evr@L}% + \def\tabu@reset{\tabu@savedparams + \tabu@everyrowtrue \c@taburow \z@ + \let\CT@arc@ \tabu@arc@L + \let\CT@drsc@ \tabu@drsc@L + \let\tabu@ls@ \tabu@ls@L + \let\tabu@rc@ \tabu@rc@L + \global\tabu@alloc \tabu@alloc@save + \everyrow\expandafter{\tabu@evr@L}}% +}% \tabu@reset +\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} +\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} +%% The Rewriting Process ------------------------------------------- +\def\tabu@newcolumntype #1{% + \expandafter\tabu@new@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@newcolumntype +\def\tabu@new@columntype #1#2#3{% + \def#1##1#3{\NC@{##1}}% + \let#2\relax \newcommand*#2% +}% \tabu@new@columntype +\def\tabu@privatecolumntype #1{% + \expandafter\tabu@private@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\expandafter\endcsname + \csname tabu@NC@find@\string#1\expandafter\endcsname + \csname tabu@NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@privatecolumntype +\def\tabu@private@columntype#1#2#3#4{% + \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% + \tabu@new@columntype#3#4% +}% \tabu@private@columntype +\let\tabu@privatecolumns \@empty +\newcommand*\tabucolumn [1]{\expandafter \def \expandafter + \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns + \NC@do #1}}% +\let\tabu@highprioritycolumns \@empty +%% The | ``column'' : rewriting process -------------------------- +\tabu@privatecolumntype |{\tabu@rewritevline} +\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% + \expandafter \NC@find \tabu@rewritten} +\def\tabu@lines #1{% + \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi + \NC@list\expandafter{\the\NC@list \NC@do #1}% +}% \tabu@lines@ +\def\tabu@vlinearg #1{% + \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% + \else\tabu@getline {#1}% + \fi + \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% + }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% + \expandafter \tabu@keepls \tabu@thestyle \@nil +}% \tabu@vlinearg +\def\tabu@keepls #1\@nil{% + \ifcat $\@cdr #1\@nil $% + \ifx \relax#1\else + \ifx \tabu@ls@#1\else + \let#1\relax + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@savels\noexpand#1}\fi\fi\fi +}% \tabu@keepls +\def\tabu@thevline {\begingroup + \ifdefined\tabu@leaders + \setbox\@tempboxa=\vtop to\dimexpr + \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% + \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox + \box\@tempboxa + \else + \tabu@thevrule + \fi \endgroup +}% \tabu@thevline +\def\tabu@savels #1{% + \expandafter\let\csname\string#1\endcsname #1% + \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset + \tabu@resetls#1}}% +\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% +%% \multicolumn inside tabu environment ----------------------------- +\tabu@newcolumntype \tabu@rewritemulticolumn{% + \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \tabu@savedecl + \tabu@privatecolumns + \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% + \let\tabu@savels \relax + \NC@find +}% \tabu@rewritemulticolumn +\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} +\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} +\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup + \tabu@everyrowtrue + \NC@list{\NC@do \tabu@rewritemulticolumn}% + \expandafter\@gobbletwo % gobbles \multispan{#1} + \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% + {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi + {#3}}% +}% \tabu@multic@lumn +%% The X column(s): rewriting process ----------------------------- +\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} +\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } +\def\tabu@siunitx #1{\@ifnextchar \bgroup + {\tabu@rewriteX@Ss{#1}} + {\tabu@nosiunitx{#1}}} +\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% + \@defaultunits \let\tabu@temp =#2\relax\@nnil + \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi + \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% + }\expandafter\NC@find \the\@temptokena \relax + }\expandafter\NC@rewrite@S \@gobble #2\relax + \else \tabu@siunitxerror + \fi + \expandafter \NC@find \tabu@rewritten +}% \tabu@rewriteX@Ss +\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! + \MessageBreak X column can only embed siunitx S or s columns}\@ehd +}% \tabu@siunitxerror +\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% + \iftabu@measuring + \else \tabu@measuringtrue % first X column found in the preamble + \let\@halignto \relax \let\tabu@halignto \relax + \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ + \else \tabu@spreadtarget \z@ \fi + \ifdim \tabu@target=\z@ + \setlength\tabu@target \tabu@thetarget + \tabu@message{\tabu@message@defaulttarget}% + \else \tabu@message{\tabu@message@target}\fi + \fi +}% \tabu@rewriteX +\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax + \def\tabu@rewritten{l}} +\def\tabu@Xarg #1#2#3{% + \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty + \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty + \ifx\\#1\\% + \def\tabu@rewritten{p}\tabucolX \p@ % + \else + \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ + \tabu@Xparse {}#1\relax + \fi + \tabu@Xrewritten{#2}{#3}% +}% \tabu@Xarg +\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} +\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} +\def\tabu@Xtest{% + \ifcase \ifx \relax\@let@token \z@ \else + \if ,\@let@token \m@ne\else + \if p\@let@token 1\else + \if m\@let@token 2\else + \if b\@let@token 3\else + \if l\@let@token 4\else + \if c\@let@token 5\else + \if r\@let@token 6\else + \if j\@let@token 7\else + \if L\@let@token 8\else + \if C\@let@token 9\else + \if R\@let@token 10\else + \if J\@let@token 11\else + \ifx \@sptoken\@let@token 12\else + \if .\@let@token 13\else + \if -\@let@token 13\else + \ifcat $\@let@token 14\else + 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \or \tabu@Xtype {p}% + \or \tabu@Xtype {m}% + \or \tabu@Xtype {b}% + \or \tabu@Xalign \raggedright\relax + \or \tabu@Xalign \centering\relax + \or \tabu@Xalign \raggedleft\relax + \or \tabu@Xalign \tabu@justify\relax + \or \tabu@Xalign \RaggedRight\raggedright + \or \tabu@Xalign \Centering\centering + \or \tabu@Xalign \RaggedLeft\raggedleft + \or \tabu@Xalign \justifying\tabu@justify + \or \expandafter \tabu@Xparsespace + \or \expandafter \tabu@Xcoef + \or \expandafter \tabu@Xm@th + \or \tabu@Xcoef{}% + \else\expandafter \tabu@Xparse + \fi +}% \tabu@Xtest +\def\tabu@Xalign #1#2{% + \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} + {Duplicate horizontal alignment specification}\fi + \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax + \else \def\tabu@Xlcr{#2}\let#2\relax\fi + \expandafter\tabu@Xparse +}% \tabu@Xalign +\def\tabu@Xtype #1{% + \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} + {Duplicate vertical alignment specification}\fi + \def\tabu@rewritten{#1}\expandafter\tabu@Xparse +}% \tabu@Xtype +\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% + \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi +}% \tabu@Xcoef +\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ + \tabu@Xparse{}% +}% \tabu@Xc@ef +\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} +\def\tabu@Xd@sp{\let\tabu@Xmath=$% + \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% + \expandafter\tabu@Xparse + \else \expandafter\tabu@Xparse\expandafter{\expandafter}% + \fi +}% \tabu@Xd@sp +\def\tabu@Xrewritten {% + \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi + \ifdim \tabucolX<\z@ \tabu@negcoeftrue + \else\ifdim \tabucolX=\z@ \tabucolX \p@ + \fi\fi + \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% + \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% + \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% + >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% + \tabu@rewritten {\tabu@hsize \tabu@temp}% + <{##2\ifx$\tabu@Xmath$\fi}}% + }\tabu@rewritten +}% \tabu@Xrewritten +\def\tabu@hsize #1#2{% + \ifdim #2\p@<\z@ + \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else + \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi + \fi + \else #2\tabucolX + \fi +}% \tabu@hsize +%% \usetabu and \preamble: rewriting process --------------------- +\tabu@privatecolumntype \usetabu [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\let\tabu@rewriteX \tabu@rewriteXrestore + \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% + \fi +}% \NC@rewrite@\usetabu +\tabu@privatecolumntype \preamble [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% + \fi +}% \NC@rewrite@\preamble +%% Controlling the rewriting process ------------------------------- +\tabu@newcolumntype \tabu@rewritefirst{% + \iftabu@long \aftergroup \tabu@longpream % + \else \aftergroup \tabu@pream + \fi + \let\tabu@ \relax \let\tabu@hsize \relax + \let\tabu@Xcoefs \@empty \let\tabu@savels \relax + \tabu@Xcol \z@ \tabu@cnt \tw@ + \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse + \global\setbox\@arstrutbox \box\@arstrutbox + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \NC@list\expandafter{\the\NC@list \NC@do X}% + \iftabu@siunitx % + \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi + \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% + \expandafter\def\expandafter\tabu@NC@list\expandafter{% + \the\expandafter\NC@list \tabu@NC@list}% % * | X S + \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu + \expandafter \NC@do \expandafter\preamble + \the\NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \tabu@savedecl + \tabu@privatecolumns + \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle +}% NC@rewrite@\tabu@rewritefirst +\tabu@newcolumntype \tabu@rewritemiddle{% + \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast +}% \NC@rewrite@\tabu@rewritemiddle +\tabu@newcolumntype \tabu@rewritelast{% + \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne + \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \else \let\tabu@prev\tabu@temp + \fi + \ifcase \tabu@cnt \expandafter\tabu@endrewrite + \else \expandafter\NC@find \expandafter\tabu@rewritemiddle + \fi +}% \NC@rewrite@\tabu@rewritelast +%% Choosing the strategy -------------------------------------------- +\def\tabu@endrewrite {% + \let\tabu@temp \NC@find + \ifx \@arrayright\relax \let\@arrayright \@empty \fi + \count@=% + \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print + \iftabu@measuring + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@target \csname tabu@\the\tabu@nested.T\endcsname + \tabucolX \csname tabu@\the\tabu@nested.X\endcsname + \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% + \fi + \else\iftabu@measuring 4 % X columns + \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer + \tabu@target \the\tabu@target + \tabu@spreadtarget \the\tabu@spreadtarget}% + \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% + \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% + \let\tabu@Xcoefs \relax + \else\ifcase\tabu@nested \thr@@ % outer, no X + \global\let\tabu@afterendpar \relax + \else \@ne % inner, no X, outer in mode 1 or 2 + \fi + \ifdefined\tabu@usetabu + \else \ifdim\tabu@target=\z@ + \else \let\tabu@temp \tabu@extracolsep + \fi\fi + \fi + \fi + \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% + \tabu@temp +}% \tabu@endrewrite +\def\tabu@extracolsep{\@defaultunits \expandafter\let + \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil + \ifx \tabu@temp\@sptoken + \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep + \else + \edef\tabu@temp{\noexpand\NC@find + \if |\noexpand\tabu@temp @% + \else\if !\noexpand\tabu@temp @% + \else !% + \fi\fi + {\noexpand\extracolsep\noexpand\@flushglue}}% + \fi + \tabu@temp +}% \tabu@extrac@lsep +%% Implementing the strategy ---------------------------------------- +\long\def\tabu@pream #1\@preamble {% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\tabu@aftergroupcleanup}% + \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody + \@preamble}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@pream +\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@longpream +\def\tabu@select {% + \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi + \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi + \ifcase \count@ + \global\let\tabu@elapsedtime \relax + \tabu@seteverycr + \expandafter \tabuthepreamble % vertical adjustment (inherited from outer) + \or % exit in vertical measure + struts per cell because no X and outer in mode 3 + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \tabu@seteverycr + \expandafter \tabuthepreamble + \or % exit without measure because no X and outer in mode 4 + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@seteverycr + \expandafter \tabuthepreamble + \else % needs trials + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@savecounters + \expandafter \tabu@setstrategy + \fi +}% \tabu@select +\def\tabu@@ {\gdef\tabu@mkpreambuffer} +%% Protections to set up before trials ------------------------------ +\def\tabu@setstrategy {\begingroup % + \tabu@trialh@@k \tabu@cnt \z@ % number of trials + \hbadness \@M \let\hbadness \@tempcnta + \hfuzz \maxdimen \let\hfuzz \@tempdima + \let\write \tabu@nowrite\let\GenericError \tabu@GenericError + \let\savetabu \@gobble \let\tabudefaulttarget \linewidth + \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote + \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor + \let\tabu@aftergroupcleanup \relax % only after the last trial + \tabu@mkpreambuffer + \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init + \def\tabu@lasttry{\m@ne\p@}\fi + \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % + \tabu@collectbody \tabu@strategy % +}% \tabu@setstrategy +\def\tabu@savecounters{% + \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% + \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax +}% \tabu@savecounters +\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) + \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs + \ifdim \dimen@>\z@ + \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \fi +}% \tabucolX@init +\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum + \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ + \else -#2\p@ \tabu@negcoeftrue + \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \tabu@wddef{#1}{0pt}% + \fi +}% \tabu@Xinit +%% Collecting the environment body ---------------------------------- +\long\def\tabu@collectbody #1#2\end #3{% + \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% + \ifx \tabu@stack\@empty + \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% + \def\tabu@end@envir{\end{#3}}% + \iftabuscantokens + \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% + \else \def\tabu@endenvir {\let\endarray \@empty + \end{#3}\tabu@gobbleX}% + \fi + \else \def\tabu@endenvir {\end{#3}}\fi}% + \let\tabu@collectbody \tabu@endofcollect + \else\def\tabu@temp{#3}% + \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% + \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% + \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% + \else \toks@\expandafter{\the\toks@ #2\end{#3}}% + \fi\fi\fi + \fi + \tabu@collectbody{#1}% +}% \tabu@collectbody +\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% +\def\tabu@endofcollect #1{\ifnum0=`{}\fi + \expandafter\endgroup \the\toks@ #1% +}% \tabu@endofcollect +%% The trials: switching between strategies ------------------------- +\def\tabu@strategy {\relax % stops \count@ assignment ! + \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) + \expandafter \tabu@endoftrials + \or % case 1 = exit in vertical measure (outer in mode 3) + \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% + \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% + \expandafter \tabu@endoftrials + \or % case 2 = exit with a rule replacing the table (outer in mode 4) + \expandafter \tabu@quickend + \or % case 3 = outer is in mode 3 because of no X + \begingroup + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \expandafter \tabu@measuring + \else % case 4 = horizontal measure + \begingroup + \global\let\tabu@elapsedtime \tabu@message@etime + \long\def\multicolumn##1##2##3{\multispan{##1}}% + \let\tabu@startpboxORI \@startpbox + \iftabu@spread + \def\tabu@naturalXmax {\z@}% + \let\tabu@naturalXmin \tabu@naturalXmax + \tabu@evr{\global\tabu@naturalX \z@}% + \let\@startpbox \tabu@startpboxmeasure + \else\iftabu@negcoef + \let\@startpbox \tabu@startpboxmeasure + \else \let\@startpbox \tabu@startpboxquick + \fi\fi + \expandafter \tabu@measuring + \fi +}% \tabu@strategy +\def\tabu@measuring{\expandafter \tabu@trial \expandafter + \count@ \the\count@ \tabu@endtrial +}% \tabu@measuring +\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} +\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \csname tabu@adl@endtrial\endcsname + \endarray}$\egroup % got \tabu@box +}% \tabu@shorttrial +\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \tabuendlongtrial}\egroup % got \tabu@box +}% \tabu@longtrial +\def\tabuendlongtrial{% no @ allowed for \scantokens + \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne + \LT@get@widths +}% \tabuendlongtrial +\def\tabu@adl@endtrial{% + \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! +\def\tabu@seteverycr {\tabu@reset + \everycr \expandafter{\the\everycr \tabu@everycr}% + \let\everycr \tabu@noeverycr % +}% \tabu@seteverycr +\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} +\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} +\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} +\def\tabu@endoftrials {% + \iftabuscantokens \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi + {\expandafter \tabu@closetrialsgroup \expandafter + \tabu@rescan \expandafter{% + \expandafter\tabuthepreamble + \the\expandafter\tabu@thebody + \iftabu@long \else \endarray \fi}} + {\expandafter\tabu@closetrialsgroup \expandafter + \tabuthepreamble + \the\tabu@thebody}% + \tabu@endenvir % Finish ! +}% \tabu@endoftrials +\def\tabu@closetrialsgroup {% + \toks@\expandafter{\tabu@endenvir}% + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target + \tabu@cnt \the\tabu@cnt + \def\noexpand\tabu@endenvir{\the\toks@}% + %Quid de \@halignto = \tabu@halignto ?? + }% \tabu@bufferX + \tabu@bufferX + \ifcase\tabu@nested % print out (outer in mode 0) + \global\tabu@cnt \tabu@cnt + \tabu@evr{\tabu@verticaldynamicadjustment}% + \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty + \let\@finalstrut \tabu@finalstrut + \else % vertical measure of nested tabu + \tabu@evr{\tabu@verticalinit}% + \tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \fi + \tabu@clckpt \let\@halignto \tabu@halignto + \let\@halignto \@empty + \tabu@seteverycr + \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ + \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) + \fi\fi +}% \tabu@closetrialsgroup +\def\tabu@quickend {\expandafter \endgroup \expandafter + \tabu@target \the\tabu@target \tabu@quickrule + \let\endarray \relax \tabu@endenvir +}% \tabu@quickend +\def\tabu@endtrial {\relax % stops \count@ assignment ! + \ifcase \count@ \tabu@err % case 0 = impossible here + \or \tabu@err % case 1 = impossible here + \or \tabu@err % case 2 = impossible here + \or % case 3 = outer goes into mode 0 + \def\tabu@bufferX{\endgroup}\count@ \z@ + \else % case 4 = outer goes into mode 3 + \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) + \else \tabu@arith % or 2 (outer in mode 4) + \fi + \count@=% + \ifcase\tabu@nested \thr@@ % outer goes into mode 3 + \else\iftabu@measuring \tw@ % outer is in mode 4 + \else \@ne % outer is in mode 3 + \fi\fi + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% + \fi + \expandafter \tabu@bufferX \expandafter + \count@ \the\count@ \tabu@strategy +}% \tabu@endtrial +\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} +%% The algorithms: compute the widths / stop or go on --------------- +\def\tabu@arithnegcoef {% + \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs +}% \tabu@arithnegcoef +\def\tabu@arith@negcoef #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition + \advance\@tempdima #2\tabucolX + \else + \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated + \advance\dimen@ -#2\p@ + \advance\@tempdima -#2\tabucolX + \else + \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised + \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised + \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) + \fi + \fi + \fi +}% \tabu@arith@negcoef +\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ + \ifdim \@tempdima=\z@ + \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% + \else + \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} + *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% + \fi +}% \tabu@givespace +\def\tabu@arith {\advance\tabu@cnt \@ne + \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi + \tabu@arithnegcoef + \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % + \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax + \tabu@message{\tabu@message@arith}% + \ifdim \tabu@DELTA <\tabu@hfuzz + \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? + \let\tabu@ \tabu@givespace \tabu@Xcoefs + \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message + \else % already converged: nothing to do but nearly impossible... + \fi + \tabucolX \maxdimen + \tabu@measuringfalse + \else % need for narrower X columns + \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax + \tabu@measuringtrue + \@whilesw \iftabu@measuring\fi {% + \advance\tabu@cnt \@ne + \tabu@arithnegcoef + \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here + \tabu@message{\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else + \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ + \fi}% + \ifdim -\tabu@DELTA<\tabu@hfuzz + \advance\@tempdima \@tempdimb % for message + \tabu@measuringfalse + \else + \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax + \fi + }% + \fi + \tabu@message{\tabu@message@reached}% + \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% +}% \tabu@arith +\def\tabu@spreadarith {% + \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs + \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% + \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax + \iftabu@measuring + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% + \else + \tabu@message{\tabu@message@spreadarith}% + \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target + \tabu@message{(tabu) spread + \ifdim \@tempdimc>\tabu@target useless here: default target used% + \else too large: reduced to fit default target\fi.}% + \else + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% + \fi + \begingroup \let\tabu@wddef \@gobbletwo + \@tempdimb \@tempdima + \tabucolX@init + \tabu@arithnegcoef + \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax + \expandafter\endgroup \expandafter\tabucolX \the\tabucolX + \tabu@arith + \fi +}% \tabu@spreadarith +\def\tabu@spread@arith #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ + \else \advance\@tempdima \tabu@wd{#1}\relax + \fi +}% \tabu@spread@arith +%% Reporting in the .log file --------------------------------------- +\def\tabu@message@defaulttarget{% + \ifnum\tabu@nested=\z@^^J(tabu) Default target: + \ifx\tabudefaulttarget\linewidth \string\linewidth + \ifdim \tabu@thetarget=\linewidth \else + -\the\dimexpr\linewidth-\tabu@thetarget\fi = + \else\ifx\tabudefaulttarget\linegoal\string\linegoal= + \fi\fi + \else (tabu) Default target (nested): \fi + \the\tabu@target \on@line + \ifnum\tabu@nested=\z@ , page \the\c@page\fi} +\def\tabu@message@target {^^J(tabu) Target specified: + \the\tabu@target \on@line, page \the\c@page} +\def\tabu@message@arith {\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else + \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ + \fi +}% \tabu@message@arith +\def\tabu@message@spreadarith {\tabu@spreadheader + \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ + \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ + \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ + \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target + \else \@tempdimc+\tabu@spreadtarget \fi + {}{}{}{}{}\@@} +\def\tabu@message@negcoef #1#2{ + \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: + \space width = \tabu@wd {#1} + \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname + \ifdim -\tabu@pt#2\tabucolX<\tabu@target + < \number-\rem@pt#2 X + = \the\dimexpr -\tabu@pt#2\tabucolX \relax + \else + <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} +\def\tabu@message@reached{\tabu@header + ******* Reached Target: + hfuzz = \tabu@hfuzz\on@line\space *******} +\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% + \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: + \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec + \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) + -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax + *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space + cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} +\def\tabu@message@verticalsp {% + \ifdim \@tempdima>\tabu@ht + \ifdim \@tempdimb>\tabu@dp + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% + \else + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% + \fi + \else\ifdim \@tempdimb>\tabu@dp + \tabu@spaces\tabu@spaces\tabu@spaces + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi + \fi +}% \tabu@message@verticalsp +\edef\tabu@spaces{\@spaces} +\def\tabu@strippt{\expandafter\tabu@pt\the} +{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} +\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} +\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} +\def\do #1{% + \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% + \ifnum##1<10 #1 #1\else + \ifnum##1<100 #1 \else + \ifnum##1<\@m #1\fi\fi\fi + ##1.##2##3##4##5##6##7##8#1}% + \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% + \def\tabu@titles{\ifnum \tabu@nested=\z@ + (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target + #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% + \def\tabu@spreadheader{% + (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. + #1 New Target^^J% + (tabu) sprd} + \def\tabu@message@save {\begingroup + \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} + \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt + \dimexpr####1\p@{ }{ }}}% + \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% + \let\CT@arc@ \relax \let\@preamble \@gobble + \let\tabu@savedpream \@firstofone + \let\tabu@savedparams \@firstofone + \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% + \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% + \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% + \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% + \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% + \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% + \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% + \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% + \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% + \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% + \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% + \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% + \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% + \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% + \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% + \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% + \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% + \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% + \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% + \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% + \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo + \tabu@message{% + (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% + \tabu@usetabu \@nil^^J}% + \endgroup} +}\do{ } +%% Measuring the natural width (varwidth) - store the results ------- +\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop + \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% + \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? + \iftabu@spread \else % if spread -> measure + \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure + \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) + \tabu@measuringtrue % for the quick option... + \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi + \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target + \tabu@target=\tabu@temp\tabucolX \fi\fi + \setbox\tabu@box \hbox \bgroup + \begin{varwidth}\tabu@target + \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... + \narrowragged \arraybackslash \parfillskip \@flushglue + \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi + \bgroup \aftergroup\tabu@endpboxmeasure + \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi + \else \expandafter\@gobble + \tabu@startpboxquick{#1}% \@gobble \bgroup + \fi +}% \tabu@startpboxmeasure +\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty + \bgroup\color@begingroup} +\def\tabu@endpboxmeasure {% + \@finalstrut \@arstrutbox + \end{varwidth}\egroup % + \ifdim \tabu@temp\p@ <\z@ % neg coef + \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box + \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% + \tabu@debug{\tabu@message@endpboxmeasure}% + \fi + \else % spread coef>0 + \global\advance \tabu@naturalX \wd\tabu@box + \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax + \ifdim \tabu@naturalXmax <\tabu@naturalX + \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi + \ifdim \tabu@naturalXmin <\@tempdima + \xdef\tabu@naturalXmin {\the\@tempdima}\fi + \fi + \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target +}% \tabu@endpboxmeasure +\def\tabu@wddef #1{\expandafter\xdef + \csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd + \the\tabu@Xcol. X[\tabu@temp]: + target = \the\tabucolX \space + \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol + =\tabu@wd\tabu@Xcol +}% \tabu@message@endpboxmeasure +\def\tabu@startpboxquick {\bgroup + \let\@startpbox \tabu@startpboxORI % restore immediately + \let\tabu \tabu@quick % \begin is expanded before... + \expandafter\@gobble \@startpbox % gobbles \bgroup +}% \tabu@startpboxquick +\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick +}% \tabu@quick +\def\tabu@endquick {% + \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else + \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax + \endgroup + \else \let\endtabu \relax + \tabu@end@envir + \fi +}% \tabu@quick +\def\tabu@endtabu {\end{tabu}} +\def\tabu@endtabus {\end{tabu*}} +%% Measuring the heights and depths - store the results ------------- +\def\tabu@verticalmeasure{\everypar{}% + \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group + \setbox\tabu@box =\hbox\bgroup + \let\tabu@verticalspacing \tabu@verticalsp@lcr + \d@llarbegin % after \hbox ... + \else + \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop + \else\ifnum\currentgrouptype=12\vcenter + \else\vbox\fi\fi}% + \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup + \let\tabu@verticalspacing \tabu@verticalsp@pmb + \fi +}% \tabu@verticalmeasure +\def\tabu@verticalsp@lcr{% + \d@llarend \egroup % + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \noindent\vrule height\@tempdima depth\@tempdimb +}% \tabu@verticalsp@lcr +\def\tabu@verticalsp@pmb{% inserts struts as needed + \par \expandafter\egroup + \expandafter$\expandafter + \egroup \expandafter + \@tempdimc \the\prevdepth + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \let\@finalstrut \@gobble + \hrule height\@tempdima depth\@tempdimb width\hsize +%% \box\tabu@box +}% \tabu@verticalsp@pmb + +\def\tabu@verticalinit{% + \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! + \advance\c@taburow \@ne + \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% + \advance\c@taburow \m@ne +}% \tabu@verticalinit +\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@verticaldynamicadjustment {% + \advance\c@taburow \@ne + \extrarowheight \dimexpr\tabu@ht - \ht\strutbox + \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox + \let\arraystretch \@empty + \advance\c@taburow \m@ne +}% \tabu@verticaldynamicadjustment +\def\tabuphantomline{\crcr \noalign{% + {\globaldefs \@ne + \setbox\@arstrutbox \box\voidb@x + \let\tabu@@celllalign \tabu@celllalign + \let\tabu@@cellralign \tabu@cellralign + \let\tabu@@cellleft \tabu@cellleft + \let\tabu@@cellright \tabu@cellright + \let\tabu@@thevline \tabu@thevline + \let\tabu@celllalign \@empty + \let\tabu@cellralign \@empty + \let\tabu@cellright \@empty + \let\tabu@cellleft \@empty + \let\tabu@thevline \relax}% + \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% + \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr + \noalign{\tabu@rearstrut + {\globaldefs\@ne + \let\tabu@celllalign \tabu@@celllalign + \let\tabu@cellralign \tabu@@cellralign + \let\tabu@cellleft \tabu@@cellleft + \let\tabu@cellright \tabu@@cellright + \let\tabu@thevline \tabu@@thevline}}}% + \expandafter}\the\toks@ +}% \tabuphantomline +%% \firsthline and \lasthline corrections --------------------------- +\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} +\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} +\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} +\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} +\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) + \noalign{\ifnum0=`}\fi + {\CT@arc@\hrule height\arrayrulewidth}% + \futurelet \tabu@temp \tabu@xhline +}% \tabu@hline +\def\tabu@xhline{% + \ifx \tabu@temp \hline + {\ifx \CT@drsc@\relax \vskip + \else\ifx \CT@drsc@\@empty \vskip + \else \CT@drsc@\hrule height + \fi\fi + \doublerulesep}% + \fi + \ifnum0=`{\fi}% +}% \tabu@xhline +\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ + \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% + \tabu@hlineAZsurround +}% \tabu@hlineAZ +\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% + \extratabsurround #1\let\tabucline \tabucline@scan + \let\hline \tabu@hlinescan \let\firsthline \hline + \let\cline \tabu@clinescan \let\lasthline \hline + \expandafter \futurelet \expandafter \tabu@temp + \expandafter \tabu@nexthlineAZ \tabu@temp +}% \tabu@hlineAZsurround +\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} +\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} +\def\tabucline@scan{\@testopt \tabucline@sc@n {}} +\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} +\def\tabu@nexthlineAZ{% + \ifx \tabu@temp\hline \else + \ifx \tabu@temp\cline \else + \ifx \tabu@temp\tabucline \else + \tabu@hlinecorrection + \fi\fi\fi +}% \tabu@nexthlineAZ +\def\tabu@xhlineAZ #1{% + \toks@\expandafter{\the\toks@ #1}% + \@tempdimc \tabu@thick % The last line width + \ifcase\count@ \@tempdimb \tabu@thick % The first line width + \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax + \fi + \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ +}% \tabu@xhlineAZ +\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 + \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ + \edef\firsthline{% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + height \the\dimexpr\@tempdima+\extratabsurround + depth \dp\@arstrutbox + width \tabustrutrule}\hss}\cr + \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb + +\dp\@arstrutbox \relax}% + \the\toks@ + }\ifnum0=`{\fi + \expandafter}\firsthline % we are then ! +}% \tabu@firsthlinecorrection +\def\tabu@lasthlinecorrection{% + \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc + \edef\lasthline{% + \the\toks@ + \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ + +\extratabsurround-\@tempdimc + height \z@ + width \tabustrutrule}\hss}\cr + }\ifnum0=`{\fi + \expandafter}\lasthline % we are then ! +}% \tabu@lasthlinecorrection +\def\tabu@LT@@hline{% + \ifx\LT@next\hline + \global\let\LT@next \@gobble + \ifx \CT@drsc@\relax + \gdef\CT@LT@sep{% + \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% + \else + \gdef\CT@LT@sep{% + \multispan\LT@cols{% + \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% + \fi + \else + \global\let\LT@next\empty + \gdef\CT@LT@sep{% + \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \CT@LT@sep + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \noalign{\penalty\@M}% + \LT@next +}% \tabu@LT@@hline +%% Horizontal lines : \tabucline ------------------------------------ +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} +\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% + \ifnum \tabu@stop<\z@ \toks@{}% + \else \tabu@clinearg{#1}\tabu@thestyle + \edef\tabucline{\toks@{% + \ifnum \tabu@start>\z@ \omit + \tabu@multispan\tabu@start {\span\omit}&\fi + \omit \tabu@multispan\tabu@stop {\span\omit}% + \tabu@thehline\cr + }}\tabucline + \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% + \fi + \futurelet \tabu@temp \tabu@xcline +}% \tabu@cline +\def\tabu@clinearg #1{% + \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ + \else \@defaultunits \expandafter\let\expandafter\@tempa + \romannumeral-`\0#1\relax \@nnil + \ifx \hbox\@tempa \tabu@clinebox{#1}% + \else\ifx \box\@tempa \tabu@clinebox{#1}% + \else\ifx \vbox\@tempa \tabu@clinebox{#1}% + \else\ifx \vtop\@tempa \tabu@clinebox{#1}% + \else\ifx \copy\@tempa \tabu@clinebox{#1}% + \else\ifx \leaders\@tempa \tabu@clineleads{#1}% + \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% + \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% + \else\tabu@getline {#1}% + \fi\fi\fi\fi\fi\fi\fi\fi + \fi +}% \tabu@clinearg +\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} +\def\tabu@clineleads #1{% + \let\tabu@thestyle \relax \let\tabu@leaders \@undefined + \gdef\tabu@thehrule{#1}} +\def\tabu@thehline{\begingroup + \ifdefined\tabu@leaders + \noexpand\tabu@thehleaders + \else \noexpand\tabu@thehrule + \fi \endgroup +}% \tabu@thehline +\def\tabu@xcline{% + \ifx \tabu@temp\tabucline + \toks@\expandafter{\the\toks@ \noalign + {\ifx\CT@drsc@\relax \vskip + \else \CT@drsc@\hrule height + \fi + \doublerulesep}}% + \fi + \tabu@docline +}% \tabu@xcline +\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} +\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% + \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} +\def\tabu@multispan #1#2{% + \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan + \else \expandafter\@gobbletwo + \fi {#1-1}{#2}% +}% \tabu@multispan +\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} +\def\tabu@start@stop #1-#2\@nnil{% + \@defaultunits \tabu@start\number 0#1\relax \@nnil + \@defaultunits \tabu@stop \number 0#2\relax \@nnil + \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne + \else\ifnum \tabu@stop=\z@ \tabu@nbcols + \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols + \else \tabu@stop + \fi\fi\fi + \advance\tabu@start \m@ne + \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi +}% \tabu@start@stop +%% Numbers: siunitx S columns (and \tabudecimal) ------------------- +\def\tabu@tabudecimal #1{% + \def\tabu@decimal{#1}\@temptokena{}% + \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces + \tabu@scandecimal +}% \tabu@tabudecimal +\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} +\def\tabu@skipdecimal#1{#1\tabu@scandecimal} +\def\tabu@getdecimal@ignorespaces{% + \ifcase 0\ifx\tabu@temp\ignorespaces\else + \ifx\tabu@temp\@sptoken1\else + 2\fi\fi\relax + \let\tabu@getdecimal@ \tabu@getdecimal + \expandafter\tabu@skipdecimal + \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal + \else \expandafter\tabu@skipdecimal + \fi +}% \tabu@getdecimal@ignorespaces +\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% + \tabu@scandecimal} +\def\do#1{% + \def\tabu@get@decimalspace#1{% + \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% +}\do{ } +\let\tabu@@tabudecimal \tabu@tabudecimal +\def\tabu@getdecimal{% + \ifcase 0\ifx 0\tabu@temp\else + \ifx 1\tabu@temp\else + \ifx 2\tabu@temp\else + \ifx 3\tabu@temp\else + \ifx 4\tabu@temp\else + \ifx 5\tabu@temp\else + \ifx 6\tabu@temp\else + \ifx 7\tabu@temp\else + \ifx 8\tabu@temp\else + \ifx 9\tabu@temp\else + \ifx .\tabu@temp\else + \ifx ,\tabu@temp\else + \ifx -\tabu@temp\else + \ifx +\tabu@temp\else + \ifx e\tabu@temp\else + \ifx E\tabu@temp\else + \ifx\tabu@cellleft\tabu@temp1\else + \ifx\ignorespaces\tabu@temp1\else + \ifx\@sptoken\tabu@temp2\else + 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \expandafter\tabu@get@decimal + \or \expandafter\tabu@skipdecimal + \or \expandafter\tabu@get@decimalspace + \else\expandafter\tabu@printdecimal + \fi +}% \tabu@getdecimal +\def\tabu@printdecimal{% + \edef\tabu@temp{\the\@temptokena}% + \ifx\tabu@temp\@empty\else + \ifx\tabu@temp\space\else + \expandafter\tabu@decimal\expandafter{\the\@temptokena}% + \fi\fi +}% \tabu@printdecimal +%% Verbatim inside X columns ---------------------------------------- +\def\tabu@verbatim{% + \let\verb \tabu@verb + \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd +}% \tabu@verbatim +\let\tabu@ltx@verb \verb +\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} +\def\tabu@fancyvrb {% + \def\tabu@FV@DefineCheckEnd ##1{% + \def\tabu@FV@DefineCheckEnd{% + ##1% + \let\FV@CheckEnd \tabu@FV@CheckEnd + \let\FV@@CheckEnd \tabu@FV@@CheckEnd + \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd + \edef\FV@EndScanning{% + \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% + \global\let\noexpand\FV@EnvironName\relax + \noexpand\next}% + \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% + }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} +}% \tabu@fancyvrb +\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} +\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} +\begingroup +\catcode`\[1 \catcode`\]2 +\@makeother\{ \@makeother\} + \edef\x[\endgroup + \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% + ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} +\def\tabu@FV@ListProcessLine #1{% + \hbox {%to \hsize{% + \kern\leftmargin + \hbox {%to \linewidth{% + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{#1}\hss +%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) +%% \FV@RightListFrame}% + \FV@RightListFrame + \FV@RightListNumber}% +%% DG/SR modification end + \hss}} +%% \savetabu -------------------------------------------------------- +\newcommand*\savetabu[1]{\noalign{% + \tabu@sanitizearg{#1}\tabu@temp + \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else + \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}% + \ifdefined\tabu@restored \expandafter\let + \csname tabu@saved@\tabu@temp \endcsname \tabu@restored + \else {\tabu@save}% + \fi + \fi}% +}% \savetabu +\def\tabu@save {% + \toks0\expandafter{\tabu@saved@}% + \iftabu@negcoef + \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% + \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi + \toks1\expandafter{\tabu@savedpream}% + \toks2\expandafter{\tabu@savedpreamble}% + \let\@preamble \relax + \let\tabu@savedpream \relax \let\tabu@savedparams \relax + \edef\tabu@preamble{% + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \edef\tabu@usetabu{% + \def\@preamble {\noexpand\the\toks2}% + \tabu@target \the\tabu@target \relax + \tabucolX \the\tabucolX \relax + \tabu@nbcols \the\tabu@nbcols \relax + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \let\tabu@aligndefault \relax \let\@sharp \relax + \edef\@tempa{\noexpand\tabu@s@ved + {\tabu@usetabu} + {\tabu@preamble} + {\the\toks1}}\@tempa + \tabu@message@save +}% \tabu@save +\long\def\tabu@s@ved #1#2#3{% + \def\tabu@usetabu{#1}% + \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% + \ifodd ##1% \usetabu + \tabu@measuringfalse \tabu@spreadfalse % Just in case... + \gdef\tabu@usetabu {% + \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi + \global\let\tabu@usetabu \@undefined + \def\@halignto {to\tabu@target}% + #1% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \else % \preamble + \gdef\tabu@preamble {% + \global\let\tabu@preamble \@undefined + #2% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \fi + #3}% +}% \tabu@s@ved +\def\tabu@aligndefault@text {\tabu@aligndefault}% +\def\tabu@warn@usetabu {\PackageWarning{tabu} + {Specifying a target with \string\usetabu\space is useless + \MessageBreak The target cannot be changed!}} +\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} +\def\tabu@savewarn#1#2{\PackageInfo{tabu} + {User-name `#1' already used for \string\savetabu + \MessageBreak #2}}% +\def\tabu@saveerr#1{\PackageError{tabu} + {User-name `#1' is unknown for \string\usetabu + \MessageBreak I cannot restore an unknown preamble!}\@ehd} +%% \rowfont --------------------------------------------------------- +\newskip \tabu@cellskip +\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi + {\ifnum0=`}\fi \tabu@row@font} +\newcommand*\tabu@row@font[2][]{% + \ifnum7=\currentgrouptype + \global\let\tabu@@cellleft \tabu@cellleft + \global\let\tabu@@cellright \tabu@cellright + \global\let\tabu@@celllalign \tabu@celllalign + \global\let\tabu@@cellralign \tabu@cellralign + \global\let\tabu@@rowfontreset\tabu@rowfontreset + \fi + \global\let\tabu@rowfontreset \tabu@rowfont@reset + \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% + \ifcsname tabu@cell@#1\endcsname % row alignment + \csname tabu@cell@#1\endcsname \fi + \ifnum0=`{\fi}% end of group / noalign group +}% \rowfont +\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% +\def\tabu@rowfont@reset{% + \global\let\tabu@rowfontreset \tabu@@rowfontreset + \global\let\tabu@cellleft \tabu@@cellleft + \global\let\tabu@cellright \tabu@@cellright + \global\let\tabu@cellfont \@empty + \global\let\tabu@celllalign \tabu@@celllalign + \global\let\tabu@cellralign \tabu@@cellralign +}% \tabu@@rowfontreset +\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl +%% \tabu@prepnext@tok ----------------------------------------------- +\newif \iftabu@cellright +\def\tabu@prepnext@tok{% + \ifnum \count@<\z@ % + \@tempcnta \@M % + \tabu@nbcols\z@ + \let\tabu@fornoopORI \@fornoop + \tabu@cellrightfalse + \else + \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left + \advance \tabu@nbcols \@ne + \iftabu@cellright % before-previous token is right and is finished + \tabu@cellrightfalse % + \tabu@righttok + \fi + \tabu@lefttok + \or % (case 1) previous token is right + \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop + \else % special column: do not change the token + \iftabu@cellright % before-previous token is right + \tabu@cellrightfalse + \tabu@righttok + \fi + \fi % \ifcase + \fi + \tabu@prepnext@tokORI +}% \tabu@prepnext@tok +\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} +\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% + \ifx \in@#2\else + \let\@fornoop \tabu@fornoopORI + \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% + \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% + \expandafter\prepnext@tok + \fi +}% \tabu@lastnoop +\def\tabu@righttok{% + \advance \count@ \m@ne + \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% + \advance \count@ \@ne +}% \tabu@righttok +\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign + \the\toks\count@ \tabu@cellleft}% after because of $ +}% \tabu@lefttok +%% Neutralisation of glues ------------------------------------------ +\let\tabu@cellleft \@empty +\let\tabu@cellright \@empty +\tabu@celllalign@def{\tabu@cellleft}% +\let\tabu@cellralign \@empty +\def\tabu@cell@align #1#2#3{% + \let\tabu@maybesiunitx \toks@ \tabu@celllalign + \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% + \toks@\expandafter{\tabu@cellralign #2}% + \xdef\tabu@cellralign{\the\toks@}% + \toks@\expandafter{\tabu@cellleft #3}% + \xdef\tabu@cellleft{\the\toks@}% +}% \tabu@cell@align +\def\tabu@cell@l{% force alignment to left + \tabu@cell@align + {\tabu@removehfil \raggedright \tabu@cellleft}% left + {\tabu@flush1\tabu@ignorehfil}% right + \raggedright +}% \tabu@cell@l +\def\tabu@cell@c{% force alignment to center + \tabu@cell@align + {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \centering +}% \tabu@cell@c +\def\tabu@cell@r{% force alignment to right + \tabu@cell@align + {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} + \tabu@ignorehfil + \raggedleft +}% \tabu@cell@r +\def\tabu@cell@j{% force justification (for p, m, b columns) + \tabu@cell@align + {\tabu@justify\tabu@cellleft} + {} + \tabu@justify +}% \tabu@cell@j +\def\tabu@justify{% + \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip + \parfillskip\@flushglue +}% \tabu@justify +%% ragged2e settings +\def\tabu@cell@L{% force alignment to left (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedRight \tabu@cellleft} + {\tabu@flush 1\tabu@ignorehfil} + \RaggedRight +}% \tabu@cell@L +\def\tabu@cell@C{% force alignment to center (ragged2e) + \tabu@cell@align + {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \Centering +}% \tabu@cell@C +\def\tabu@cell@R{% force alignment to right (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} + \tabu@ignorehfil + \RaggedLeft +}% \tabu@cell@R +\def\tabu@cell@J{% force justification (ragged2e) + \tabu@cell@align + {\justifying \tabu@cellleft} + {} + \justifying +}% \tabu@cell@J +\def\tabu@flush#1{% + \iftabu@colortbl % colortbl uses \hfill rather than \hfil + \hskip \ifnum13<\currentgrouptype \stretch{#1}% + \else \ifdim#1pt<\p@ \tabu@cellskip + \else \stretch{#1} + \fi\fi \relax + \else % array.sty + \ifnum 13<\currentgrouptype + \hfil \hskip1sp \relax \fi + \fi +}% \tabu@flush +\let\tabu@hfil \hfil +\let\tabu@hfill \hfill +\let\tabu@hskip \hskip +\def\tabu@removehfil{% + \iftabu@colortbl + \unkern \tabu@cellskip =\lastskip + \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip + \else \tabu@cellskip \z@skip + \fi + \else + \ifdim\lastskip=1sp\unskip\fi + \ifnum\gluestretchorder\lastskip =\@ne + \hfilneg % \hfilneg for array.sty but not for colortbl... + \fi + \fi +}% \tabu@removehfil +\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} +\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil + \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group +}% \tabu@nohfil +\def\tabu@colortblalignments {% if colortbl + \def\tabu@nohfil{% + \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group + \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... + \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local +}% \tabu@colortblalignments +%% Taking care of footnotes and hyperfootnotes ---------------------- +\long\def\tabu@footnotetext #1{% + \edef\@tempa{\the\tabu@footnotes + \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% + \global\tabu@footnotes\expandafter{\@tempa {#1}}}% +\long\def\tabu@xfootnotetext [#1]#2{% + \global\tabu@footnotes\expandafter{\the\tabu@footnotes + \footnotetext [{#1}]{#2}}} +\let\tabu@xfootnote \@xfootnote +\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} +\long\def\tabu@Hy@xfootnote [#1]{% + \begingroup + \value\@mpfn #1\relax + \protected@xdef \@thefnmark {\thempfn}% + \endgroup + \@footnotemark \tabu@Hy@ftntxt {#1}% +}% \tabu@Hy@xfootnote +\long\def\tabu@Hy@ftntxt #1#2{% + \edef\@tempa{% + \the\tabu@footnotes + \begingroup + \value\@mpfn #1\relax + \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% + \expandafter \noexpand \expandafter + \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% + }% + \global\tabu@footnotes\expandafter{\@tempa {#2}% + \endgroup}% +}% \tabu@Hy@ftntxt +\long\def\tabu@Hy@footnotetext #1#2{% + \H@@footnotetext{% + \ifHy@nesting + \hyper@@anchor {#1}{#2}% + \else + \Hy@raisedlink{% + \hyper@@anchor {#1}{\relax}% + }% + \def\@currentHref {#1}% + \let\@currentlabelname \@empty + #2% + \fi + }% +}% \tabu@Hy@footnotetext +%% No need for \arraybackslash ! ------------------------------------ +\def\tabu@latextwoe {% +\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@centering \centering \arraybackslash +\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash +\tabu@temp \tabu@raggedright \raggedright \arraybackslash +}% \tabu@latextwoe +\def\tabu@raggedtwoe {% +\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@Centering \Centering \arraybackslash +\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash +\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash +\tabu@temp \tabu@justifying \justifying \arraybackslash +}% \tabu@raggedtwoe +\def\tabu@normalcrbackslash{\let\\\@normalcr} +\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% + \expandafter\tabu@normalcrbackslash \@trivlist}} +%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- +\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} +\def\tabu@beginfbox {\bgroup \kern\fboxsep + \bgroup\aftergroup\tabu@endfbox} +\def\tabu@endfbox {\kern\fboxsep\egroup\egroup + \@frameb@x\relax} +\def\tabu@color@b@x #1#2{\leavevmode \bgroup + \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% + \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox +}% \tabu@color@b@x +\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup + \aftergroup\tabu@endcolor@b@x \set@color} +\def\tabu@endcolor@b@x {\kern\fboxsep \egroup + \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ + \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ + \tabu@docolor@b@x \egroup +}% \tabu@endcolor@b@x +%% Corrections (arydshln, delarray, colortbl) ----------------------- +\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray + \iftabu@colortbl + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \def\tabu@endarray{% + \crcr \egroup \egroup % + \@arrayright % + \gdef\@preamble{}\CT@end}% + \fi + \else + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \PackageWarning{tabu} + {\string\@arrayright\space is missing from the + \MessageBreak definition of \string\endarray. + \MessageBreak Compatibility with delarray.sty is broken.}% + \fi\fi +}% \tabu@fix@arrayright +\def\tabu@adl@xarraydashrule #1#2#3{% + \ifnum\@lastchclass=\adl@class@start\else + \ifnum\@lastchclass=\@ne\else + \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) + \adl@leftrulefalse \fi\fi % must be treated the same + \fi + \ifadl@zwvrule\else \ifadl@inactive\else + \@addtopreamble{\vrule\@width\arrayrulewidth + \@height\z@ \@depth\z@}\fi \fi + \ifadl@leftrule + \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% + {\number#1}#3}% + \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% + {\number#2}#3} + \fi +}% \tabu@adl@xarraydashrule +\def\tabu@adl@act@endpbox {% + \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox + \egroup \egroup + \adl@colhtdp \box\adl@box \hfil +}% \tabu@adl@act@endpbox +\def\tabu@adl@fix {% + \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln + \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln + \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln + \let\@preamerror \@preamerr % arydshln +}% \tabu@adl@fix +%% Correction for longtable' \@startbox definition ------------------ +%% => \everypar is ``missing'' : TeX should be in vertical mode +\def\tabu@LT@startpbox #1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% +}% \tabu@LT@startpbox +%% \tracingtabu and the package options ------------------ +\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} +\DeclareOption{linegoal}{% + \AtEndOfPackage{% + \RequirePackage{linegoal}[2010/12/07]% + \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX +}} +\DeclareOption{scantokens}{\tabuscantokenstrue} +\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} +\def\tracingtabu {\begingroup\@ifnextchar=% + {\afterassignment\tabu@tracing\count@} + {\afterassignment\tabu@tracing\count@1\relax}} +\def\tabu@tracing{\expandafter\endgroup + \expandafter\tabu@tr@cing \the\count@ \relax +}% \tabu@tracing +\def\tabu@tr@cing #1\relax {% + \ifnum#1>\thr@@ \let\tabu@tracinglines\message + \else \let\tabu@tracinglines\@gobble + \fi + \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG + \def\tabu@mkarstrut {\tabu@DBG@arstrut}% + \tabustrutrule 1.5\p@ + \else \let\tabu@DBG \@gobble + \def\tabu@mkarstrut {\tabu@arstrut}% + \tabustrutrule \z@ + \fi + \ifnum#1>\@ne \let\tabu@debug \message + \else \let\tabu@debug \@gobble + \fi + \ifnum#1>\z@ + \let\tabu@message \message + \let\tabu@tracing@save \tabu@message@save + \let\tabu@starttimer \tabu@pdftimer + \else + \let\tabu@message \@gobble + \let\tabu@tracing@save \@gobble + \let\tabu@starttimer \relax + \fi +}% \tabu@tr@cing +%% Setup \AtBeginDocument +\AtBeginDocument{\tabu@AtBeginDocument} +\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined + \ifdefined\arrayrulecolor \tabu@colortbltrue % + \tabu@colortblalignments % different glues are used + \else \tabu@colortblfalse \fi + \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi + \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi + \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ + \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % + \expandafter\ifx + \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax + \tabu@siunitxtrue + \else \let\tabu@maybesiunitx \@firstofone % + \let\tabu@siunitx \tabu@nosiunitx + \tabu@siunitxfalse + \fi + \ifdefined\adl@array % + \else \let\tabu@adl@fix \relax + \let\tabu@adl@endtrial \@empty \fi + \ifdefined\longtable % + \else \let\longtabu \tabu@nolongtabu \fi + \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi + \csname\ifcsname ifHy@hyperfootnotes\endcsname % + ifHy@hyperfootnotes\else iffalse\fi\endcsname + \let\tabu@footnotetext \tabu@Hy@ftntext + \let\tabu@xfootnote \tabu@Hy@xfootnote \fi + \ifdefined\FV@DefineCheckEnd% + \tabu@fancyvrb \fi + \ifdefined\color % + \let\tabu@color \color + \def\tabu@leavevmodecolor ##1{% + \def\tabu@leavevmodecolor {\leavevmode ##1}% + }\expandafter\tabu@leavevmodecolor\expandafter{\color}% + \else + \let\tabu@color \tabu@nocolor + \let\tabu@leavevmodecolor \@firstofone \fi + \tabu@latextwoe + \ifdefined\@raggedtwoe@everyselectfont % + \tabu@raggedtwoe + \else + \let\tabu@cell@L \tabu@cell@l + \let\tabu@cell@R \tabu@cell@r + \let\tabu@cell@C \tabu@cell@c + \let\tabu@cell@J \tabu@cell@j \fi + \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% + \ifin@ \let\tabu@endarray \endarray + \else \tabu@fix@arrayright \fi% + \everyrow{}% +}% \tabu@AtBeginDocument +\def\tabu@warn@cellspace{% + \PackageWarning{tabu}{% + Package cellspace has some limitations + \MessageBreak And redefines some macros of array.sty. + \MessageBreak Please use \string\tabulinesep\space to control + \MessageBreak vertical spacing of lines inside tabu environment}% +}% \tabu@warn@cellspace +%% tabu Package initialisation +\tabuscantokensfalse +\let\tabu@arc@G \relax +\let\tabu@drsc@G \relax +\let\tabu@evr@G \@empty +\let\tabu@rc@G \@empty +\def\tabu@ls@G {\tabu@linestyle@}% +\let\tabu@@rowfontreset \@empty % +\let\tabu@@celllalign \@empty +\let\tabu@@cellralign \@empty +\let\tabu@@cellleft \@empty +\let\tabu@@cellright \@empty +\def\tabu@naturalXmin {\z@} +\def\tabu@naturalXmax {\z@} +\let\tabu@rowfontreset \@empty +\def\tabulineon {4pt}\let\tabulineoff \tabulineon +\tabu@everyrowtrue +\ifdefined\pdfelapsedtime % + \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% +\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax +\fi +\tracingtabu=\z@ +\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ +\tabulinestyle{} +\taburowcolors{} +\let\tabudefaulttarget \linewidth +\ProcessOptions* % \ProcessOptions* is quicker ! +\endinput +%% +%% End of file `tabu.sty'.