├── .gitignore
├── .gitmodules
├── README.md
├── assets
├── erl_d455_car_demo.gif
├── erl_d455_car_demo_640x480.gif
└── erl_d455_demo.gif
├── config
├── euroc.yaml
├── object_feat_all.yaml
├── object_feat_erl.yaml
└── rs_d455.yaml
├── doc
└── object_mapping.md
├── licenses
├── LICENCE_VINS_MONO.txt
├── LICENSE_MSCKF_VIO.txt
└── LICENSE_ORB_SLAM2.txt
├── ros_wrapper
├── .catkin_tools
│ ├── README
│ ├── VERSION
│ └── profiles
│ │ └── default
│ │ ├── build.yaml
│ │ ├── devel_collisions.txt
│ │ └── packages
│ │ ├── catkin_tools_prebuild
│ │ ├── devel_manifest.txt
│ │ └── package.xml
│ │ ├── darknet_ros
│ │ ├── devel_manifest.txt
│ │ └── package.xml
│ │ └── darknet_ros_msgs
│ │ ├── devel_manifest.txt
│ │ └── package.xml
├── .gitignore
└── src
│ ├── CMakeLists.txt
│ ├── darknet_ros_bridge
│ ├── CMakeLists.txt
│ ├── package.xml
│ └── scripts
│ │ └── darknet_ros_bridge.py
│ ├── orcvio
│ ├── CMakeLists.txt
│ ├── LICENSE
│ ├── README.md
│ ├── cmake
│ │ └── FindSuiteSparse.cmake
│ ├── config
│ │ ├── camchain-imucam-d455.yaml
│ │ ├── camchain-imucam-erl.yaml
│ │ ├── camchain-imucam-euroc-noextrinsics.yaml
│ │ ├── camchain-imucam-euroc.yaml
│ │ ├── camchain-imucam-fla.yaml
│ │ ├── camchain-imucam-unity-gq.yaml
│ │ └── euroc_config
│ │ │ ├── MH_01_easy.yaml
│ │ │ └── V1_01_easy.yaml
│ ├── include
│ │ ├── initializer
│ │ │ ├── DynamicInitializer.h
│ │ │ ├── FlexibleInitializer.h
│ │ │ ├── ImuPreintegration.h
│ │ │ ├── StaticInitializer.h
│ │ │ ├── feature_manager.h
│ │ │ ├── initial_alignment.h
│ │ │ ├── initial_sfm.h
│ │ │ ├── math_utils.h
│ │ │ └── solve_5pts.h
│ │ └── orcvio
│ │ │ ├── dataset_reader.h
│ │ │ ├── euroc_gt.h
│ │ │ ├── feature.h
│ │ │ ├── feature_ov.h
│ │ │ ├── image_processor.h
│ │ │ ├── image_processor_nodelet.h
│ │ │ ├── orcvio.h
│ │ │ ├── orcvio_nodelet.h
│ │ │ ├── state.h
│ │ │ └── utils.h
│ ├── launch
│ │ ├── image_processor_d455.launch
│ │ ├── image_processor_euroc.launch
│ │ ├── image_processor_fla.launch
│ │ ├── image_processor_unity_gq.launch
│ │ ├── orcvio_d455.launch
│ │ ├── orcvio_euroc.launch
│ │ ├── orcvio_euroc_eval.launch
│ │ ├── orcvio_fla.launch
│ │ ├── orcvio_unity_gq_husky.launch
│ │ └── reset.launch
│ ├── msg
│ │ ├── CameraMeasurement.msg
│ │ ├── FeatureMeasurement.msg
│ │ └── TrackingInfo.msg
│ ├── nodelets.xml
│ ├── package.xml
│ ├── rviz
│ │ ├── rviz_d455.rviz
│ │ ├── rviz_euroc_config.rviz
│ │ ├── rviz_fla_config.rviz
│ │ └── rviz_unity_gq.rviz
│ ├── scripts
│ │ └── batch_run_euroc.py
│ ├── src
│ │ ├── DynamicInitializer.cpp
│ │ ├── FlexibleInitializer.cpp
│ │ ├── StaticInitializer.cpp
│ │ ├── euroc_gt.cpp
│ │ ├── feature_manager.cpp
│ │ ├── feature_ov.cpp
│ │ ├── image_processor.cpp
│ │ ├── image_processor_nodelet.cpp
│ │ ├── initial_alignment.cpp
│ │ ├── initial_sfm.cpp
│ │ ├── orcvio.cpp
│ │ ├── orcvio_nodelet.cpp
│ │ ├── publish_euroc_gt.cpp
│ │ ├── solve_5pts.cpp
│ │ └── utils.cpp
│ └── test
│ │ ├── feature_initialization_test.cpp
│ │ └── math_utils_test.cpp
│ ├── orcvio_mapping
│ ├── CMakeLists.txt
│ ├── LICENSE
│ ├── README.md
│ ├── cmake
│ │ ├── FindEigen3.cmake
│ │ └── FindSuiteSparse.cmake
│ ├── config
│ │ ├── medfield.yaml
│ │ ├── object_feat_all.yaml
│ │ ├── object_feat_erl.yaml
│ │ └── object_feat_unity_gq.yaml
│ ├── include
│ │ ├── ObjectInitNode.h
│ │ └── orcvio
│ │ │ ├── feat
│ │ │ ├── Feature.h
│ │ │ ├── FeatureInitializer.h
│ │ │ ├── FeatureInitializerOptions.h
│ │ │ ├── feature.hpp
│ │ │ ├── feature_msg.h
│ │ │ └── kf.h
│ │ │ ├── imu_state.h
│ │ │ ├── obj
│ │ │ ├── ObjectFeature.h
│ │ │ ├── ObjectFeatureInitializer.h
│ │ │ ├── ObjectLM.h
│ │ │ ├── ObjectLMLite.h
│ │ │ ├── ObjectResJacCam.h
│ │ │ └── ObjectState.h
│ │ │ ├── plot
│ │ │ └── matplotlibcpp.h
│ │ │ └── utils
│ │ │ ├── EigenLevenbergMarquardt.h
│ │ │ ├── EigenLevenbergMarquardt
│ │ │ ├── LMcovar.h
│ │ │ ├── LMonestep.h
│ │ │ ├── LMpar.h
│ │ │ ├── LMqrsolv.h
│ │ │ └── LevenbergMarquardt.h
│ │ │ ├── EigenNumericalDiff.h
│ │ │ ├── math_utils.hpp
│ │ │ └── se3_ops.hpp
│ ├── launch
│ │ ├── om_d455.launch
│ │ ├── om_unity_gq.launch
│ │ ├── standalone_object_mapping_dcist.launch
│ │ └── standalone_object_mapping_erl.launch
│ ├── package.xml
│ └── src
│ │ ├── ObjectInitNode.cpp
│ │ ├── orcvio
│ │ ├── feat
│ │ │ ├── Feature.cpp
│ │ │ ├── FeatureInitializer.cpp
│ │ │ └── kf.cpp
│ │ └── obj
│ │ │ ├── ObjectFeature.cpp
│ │ │ ├── ObjectFeatureInitializer.cpp
│ │ │ ├── ObjectLM.cpp
│ │ │ ├── ObjectLMLite.cpp
│ │ │ ├── ObjectResJacCam.cpp
│ │ │ └── ObjectState.cpp
│ │ └── orcvio_mapping_node.cpp
│ ├── sort_ros
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── include
│ │ └── sort_ros
│ │ │ ├── Hungarian.h
│ │ │ ├── KalmanTracker.h
│ │ │ └── sort_tracking.h
│ ├── launch
│ │ ├── display_dcist.rviz
│ │ ├── sort_ros_test_d455.launch
│ │ ├── sort_ros_test_gdb.launch
│ │ ├── sort_ros_test_kitti.launch
│ │ ├── sort_ros_test_tum.launch
│ │ └── sort_ros_test_visma.launch
│ ├── msg
│ │ ├── TrackedBoundingBox.msg
│ │ └── TrackedBoundingBoxes.msg
│ ├── nodelet_plugins.xml
│ ├── package.xml
│ ├── readme.md
│ └── src
│ │ ├── Hungarian.cpp
│ │ ├── KalmanTracker.cpp
│ │ ├── main.cpp
│ │ ├── sort_ros_node.cpp
│ │ ├── sort_ros_nodelet.cpp
│ │ ├── sort_tracking.cpp
│ │ └── test_kf.cpp
│ └── wm_od_interface_msgs
│ ├── CMakeLists.txt
│ ├── msg
│ ├── KeypointDetection.msg
│ ├── KeypointDetections.msg
│ ├── ObjectDetectionRequest.msg
│ ├── ROI2d.msg
│ ├── ira_det.msg
│ ├── ira_dets.msg
│ └── ira_request.msg
│ └── package.xml
└── scripts
├── convert_csv_to_txt.py
├── process_rosbag
├── add_sim_imu.py
├── bbox_msg_template.msg
├── check_barrier.py
├── check_timestamp.py
├── convert_detection_to_bboxes.py
└── save_zs_from_rosbag.py
├── save_pose_from_tf.py
├── tf_bag.py
└── traj_eval.py
/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 | devel
3 | cache
4 | .vscode
5 |
6 | # Prerequisites
7 | *.d
8 |
9 | # Compiled Object files
10 | *.slo
11 | *.lo
12 | *.o
13 | *.obj
14 |
15 | # Precompiled Headers
16 | *.gch
17 | *.pch
18 |
19 | # Compiled Dynamic libraries
20 | *.so
21 | *.dylib
22 | *.dll
23 |
24 | # Fortran module files
25 | *.mod
26 | *.smod
27 |
28 | # Compiled Static libraries
29 | *.lai
30 | *.la
31 | *.a
32 | *.lib
33 |
34 | # Executables
35 | *.exe
36 | *.out
37 | *.app
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "ros_wrapper/src/catkin_simple"]
2 | path = ros_wrapper/src/catkin_simple
3 | url = https://github.com/catkin/catkin_simple
4 | [submodule "ros_wrapper/src/darknet_ros"]
5 | path = ros_wrapper/src/darknet_ros
6 | url = https://github.com/leggedrobotics/darknet_ros
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## About
2 |
3 | - Object residual constrained Visual-Inertial Odometry (OrcVIO) is a visual-inertial odometry pipeline, which is tightly coupled with tracking and optimization over structured object models. It provides accurate trajectory estimation and large-scale object-level mapping from online **Stereo+IMU** data.
4 |
5 | - OrcVIO-Lite only uses **bounding boxs** and no keypoints. The object mapping module and VIO module are implemented in separate ROS nodelets and are decoupled.
6 |
7 | - [Project website](https://moshan.cf/orcvio_githubpage/)
8 |
9 | ### Citation
10 |
11 | ```
12 | @inproceedings{shan2020orcvio,
13 | title={OrcVIO: Object residual constrained Visual-Inertial Odometry},
14 | author={Shan, Mo and Feng, Qiaojun and Atanasov, Nikolay},
15 | booktitle={2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
16 | pages={5104--5111},
17 | year={2020},
18 | organization={IEEE}
19 | }
20 | ```
21 |
22 | ## 1. Prerequisites
23 |
24 | This repository was tested on Ubuntu 18.04 with [ROS Melodic](http://wiki.ros.org/melodic/Installation).
25 |
26 | The core algorithm depends on `Eigen`, `Boost`, `Suitesparse`, `Ceres`, `OpenCV`, `Sophus`, `GTest`
27 |
28 |
29 | ## 2. Installation
30 |
31 | ### ROS version
32 |
33 | - Environment is `Ubuntu 18.04` with ROS `Melodic`
34 | - The ROS version also depends on [catkin simple](https://github.com/catkin/catkin_simple), please put it in the `ros_wrapper/src` folder
35 |
36 | ```
37 | $ git clone --recursive https://github.com/shanmo/OrcVIO-Stereo-Mapping.git
38 | $ cd OrcVIO-Stereo-Mapping/ros_wrapper
39 | $ catkin_make
40 | $ source ./devel/setup.bash
41 | ```
42 |
43 | ## 3. Demo
44 |
45 | - Download [ERL indoor hand-held dataset (chairs)](https://www.dropbox.com/s/mwmv5ql3ht1i61n/d455_one_way_demo_bboxes.bag?dl=0), which was collected with [Realsense D455](https://www.intelrealsense.com/depth-camera-d455/) in Existential Robotics Lab, University of California San Diego
46 |
47 | - Please refer to [wiki](https://github.com/shanmo/OrcVIO-Stereo-Mapping/wiki) regarding how to setup D455
48 |
49 | - Run `roslaunch orcvio orcvio_d455.launch` generates the result below
50 |
51 | 
52 |
53 | - Download [ERL indoor robotic car dataset](https://www.dropbox.com/s/uzauaeegf8i82kg/d455_car_demo_new_bboxes.bag?dl=0), change the rosbag path, and run `roslaunch orcvio orcvio_d455.launch` to get the demos like below
54 |
55 | 
56 |
57 | 
58 |
59 | ## License
60 |
61 | ```
62 | MIT License
63 | Copyright (c) 2021 ERL at UCSD
64 | ```
65 |
66 | ## Reference
67 |
68 | - [LARVIO](https://github.com/PetWorm/LARVIO)
69 | - [MSCKF](https://github.com/KumarRobotics/msckf_vio)
70 | - [OpenVINS](https://github.com/rpng/open_vins)
71 | - [OpenVINS eval](https://github.com/symao/open_vins)
72 |
--------------------------------------------------------------------------------
/assets/erl_d455_car_demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shanmo/OrcVIO-Stereo-Mapping/e7716dc21cdc00c67e40dee85860a25d57c979ba/assets/erl_d455_car_demo.gif
--------------------------------------------------------------------------------
/assets/erl_d455_car_demo_640x480.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shanmo/OrcVIO-Stereo-Mapping/e7716dc21cdc00c67e40dee85860a25d57c979ba/assets/erl_d455_car_demo_640x480.gif
--------------------------------------------------------------------------------
/assets/erl_d455_demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shanmo/OrcVIO-Stereo-Mapping/e7716dc21cdc00c67e40dee85860a25d57c979ba/assets/erl_d455_demo.gif
--------------------------------------------------------------------------------
/config/euroc.yaml:
--------------------------------------------------------------------------------
1 | %YAML:1.0
2 |
3 | # switches
4 | if_FEJ: 0 # 0(false) or 1(true)
5 | estimate_extrin: 0 # 0(false) or 1(true)
6 | estimate_td: 0 # 0(false) or 1(true)
7 | calib_imu_instrinsic: 0 # 0(false) or 1(true)
8 |
9 | # camera instrinsic
10 | camera_model: "pinhole" # only support "pinhole"
11 | distortion_model: "radtan" # only support "radtan" and "equidistant"
12 | resolution_width: 752
13 | resolution_height: 480
14 | intrinsics:
15 | fx: 458.654
16 | fy: 457.296
17 | cx: 367.215
18 | cy: 248.375
19 | distortion_coeffs:
20 | k1: -0.28340811
21 | k2: 0.07395907
22 | p1: 0.00019359
23 | p2: 1.76187114e-05
24 |
25 | # imu-camera extrinsic, including spacial and temporal parameters
26 | T_cam_imu: !!opencv-matrix
27 | rows: 4
28 | cols: 4
29 | dt: d
30 | data:
31 | [0.014865542981794, 0.999557249008346, -0.025774436697440, 0.065222909535531,
32 | -0.999880929698575, 0.014967213324719, 0.003756188357967, -0.020706385492719,
33 | 0.004140296794224, 0.025715529947966, 0.999660727177902, -0.008054602460030,
34 | 0, 0, 0, 1.000000000000000]
35 | td: 0.0
36 |
37 | # TODO: if calibrate camera instrinsic online
38 |
39 | # visual front-end parameters
40 | pyramid_levels: 2
41 | patch_size: 21
42 | fast_threshold: 30
43 | max_iteration: 30
44 | track_precision: 0.01
45 | ransac_threshold: 1
46 | max_features_num: 200
47 | min_distance: 20
48 | flag_equalize: 1 # 0(false) or 1(true)
49 | pub_frequency: 10
50 |
51 | # window size
52 | sw_size: 20
53 |
54 | # online reset thresholds
55 | position_std_threshold: 8.0
56 | rotation_threshold: 0.2618
57 | translation_threshold: 0.4
58 | tracking_rate_threshold: 0.5
59 |
60 | # feature triangulation parameters
61 | least_observation_number: 3
62 | max_track_len: 6
63 | feature_translation_threshold: -1.0
64 |
65 | # imu and camera measurement noise parameters
66 | noise_gyro: 0.004
67 | noise_acc: 0.08
68 | noise_gyro_bias: 2e-6
69 | noise_acc_bias: 4e-5
70 | noise_feature: 0.008
71 |
72 | # filter intial covariance
73 | initial_covariance_orientation: 4e-4
74 | initial_covariance_velocity: 0.25
75 | initial_covariance_position: 1.0
76 | initial_covariance_gyro_bias: 4e-4
77 | initial_covariance_acc_bias: 0.01
78 | initial_covariance_extrin_rot: 3.0462e-8
79 | initial_covariance_extrin_trans: 9e-8
80 |
81 | # fej settings
82 | reset_fej_threshold: 10.11
83 |
84 | # zupt settings
85 | if_ZUPT_valid: 1 # 0(false) or 1(true)
86 |
87 | if_use_feature_zupt_flag: 0 # 0(false) or 1(true)
88 | zupt_max_feature_dis: 2e-3
89 |
90 | zupt_noise_v: 1e-2 # std
91 | zupt_noise_p: 1e-2
92 | zupt_noise_q: 3.4e-2
93 |
94 | # static initialization setting
95 | static_duration: 1.0
96 |
97 | # measurement rate
98 | imu_rate: 200
99 | img_rate: 20
100 |
101 | # augmented feature state settings
102 | # a positive value is hybrid msckf
103 | max_features_in_one_grid: 1 # pure msckf if set to 0
104 | aug_grid_rows: 5
105 | aug_grid_cols: 6
106 | feature_idp_dim: 1 # 1 or 3
107 |
108 | # if apply Schmidt filter
109 | use_schmidt: 0 # 0(false) or 1(true)
110 | # left or right perturbation
111 | use_left_perturbation_flag: 0 # 0(right) or 1(left)
112 | # use euler method or closed form covariance propagation
113 | use_closed_form_cov_prop_flag: 1 # 0(euler method) or 1(closed form)
114 | # use original larvio
115 | use_larvio_flag: 0 # 0(orcvio) or 1(larvio)
116 |
117 | # the threshold for chi square
118 | chi_square_threshold_feat: 0.95
119 | # the threshold for cost in feature LM
120 | feature_cost_threshold: 4.7673e-04
121 | # the threshold for distance check in feature LM
122 | init_final_dist_threshold: 1e2
123 | # the flag whether we discard large update
124 | discard_large_update_flag: 0
125 |
126 | # whether to use object residual to update camera pose
127 | use_object_residual_update_cam_pose_flag: 0 # 0(not use) or 1(use)
128 |
129 | # whether we skip the update step
130 | prediction_only_flag: 0
131 |
132 | # if using ground-truth for initilization
133 | initial_use_gt: 0
134 |
--------------------------------------------------------------------------------
/config/rs_d455.yaml:
--------------------------------------------------------------------------------
1 | %YAML:1.0
2 |
3 | # switches
4 | if_FEJ: 0 # 0(false) or 1(true)
5 | estimate_extrin: 0 # 0(false) or 1(true)
6 | estimate_td: 0 # 0(false) or 1(true)
7 | calib_imu_instrinsic: 0 # 0(false) or 1(true)
8 |
9 | # camera instrinsic
10 | camera_model: "pinhole" # only support "pinhole"
11 | distortion_model: "radtan" # only support "radtan" and "equidistant"
12 | resolution_width: 640
13 | resolution_height: 480
14 | intrinsics:
15 | fx: 387.47454833984375
16 | fy: 387.47454833984375
17 | cx: 316.1062927246094
18 | cy: 238.7586212158203
19 | distortion_coeffs:
20 | k1: 0.0
21 | k2: 0.0
22 | p1: 0.0
23 | p2: 0.0
24 |
25 | # imu-camera extrinsic, including spacial and temporal parameters
26 | # from IMU to camera, same with Kalibr
27 | T_cam_imu: !!opencv-matrix
28 | rows: 4
29 | cols: 4
30 | dt: d
31 | data:
32 | [0.9999887972997616, 0.004225660403089795, -0.002132854691210053, -0.06510852338269565,
33 | -0.004224561368945015, 0.9999909415437157, 0.0005195303196076303, -0.004589801762755343,
34 | 0.0021350307295388425, -0.0005105141239311359, 0.9999975905066537, -0.01765349149011269,
35 | 0., 0., 0., 1. ]
36 |
37 | td: 0
38 |
39 | # TODO: if calibrate camera instrinsic online
40 |
41 | # visual front-end parameters
42 | pyramid_levels: 2
43 | patch_size: 21
44 | fast_threshold: 30
45 | max_iteration: 30
46 | track_precision: 0.01
47 | ransac_threshold: 1
48 | max_features_num: 200
49 | min_distance: 20
50 | flag_equalize: 1 # 0(false) or 1(true)
51 | pub_frequency: 10
52 |
53 | # window size
54 | sw_size: 20
55 |
56 | # online reset thresholds
57 | position_std_threshold: 8.0
58 | rotation_threshold: 0.2618
59 | translation_threshold: 0.4
60 | tracking_rate_threshold: 0.5
61 |
62 | # feature triangulation parameters
63 | least_observation_number: 3
64 | max_track_len: 6
65 | feature_translation_threshold: -1.0
66 |
67 | # imu and camera measurement noise parameters
68 | noise_gyro: 0.004
69 | noise_acc: 0.08
70 | noise_gyro_bias: 2e-6
71 | noise_acc_bias: 4e-5
72 | noise_feature: 0.008
73 |
74 | # filter intial covariance
75 | initial_covariance_orientation: 4e-4
76 | initial_covariance_velocity: 0.25
77 | initial_covariance_position: 1.0
78 | initial_covariance_gyro_bias: 4e-4
79 | initial_covariance_acc_bias: 0.01
80 | initial_covariance_extrin_rot: 3.0462e-8
81 | initial_covariance_extrin_trans: 9e-8
82 |
83 | # fej settings
84 | reset_fej_threshold: 10.11
85 |
86 | # zupt settings
87 | if_ZUPT_valid: 1 # 0(false) or 1(true)
88 |
89 | if_use_feature_zupt_flag: 0 # 0(false) or 1(true)
90 | zupt_max_feature_dis: 2e-3
91 |
92 | zupt_noise_v: 1e-2 # std
93 | zupt_noise_p: 1e-2
94 | zupt_noise_q: 3.4e-2
95 |
96 | # static initialization setting
97 | static_duration: 1.0
98 |
99 | # measurement rate
100 | imu_rate: 200
101 | img_rate: 30
102 |
103 | # augmented feature state settings
104 | # a positive value is hybrid msckf
105 | max_features_in_one_grid: 0 # pure msckf if set to 0
106 | aug_grid_rows: 5
107 | aug_grid_cols: 6
108 | feature_idp_dim: 1 # 1 or 3
109 |
110 | # if apply Schmidt filter
111 | use_schmidt: 0 # 0(false) or 1(true)
112 | # left or right perturbation
113 | use_left_perturbation_flag: 0 # 0(right) or 1(left)
114 | # use euler method or closed form covariance propagation
115 | use_closed_form_cov_prop_flag: 1 # 0(euler method) or 1(closed form)
116 | # use original larvio
117 | use_larvio_flag: 0 # 0(orcvio) or 1(larvio)
118 |
119 | # the threshold for chi square
120 | chi_square_threshold_feat: 0.95
121 | # the threshold for cost in feature LM
122 | feature_cost_threshold: 4.7673e-04
123 | # the threshold for distance check in feature LM
124 | init_final_dist_threshold: 1e1
125 | # the flag whether we discard large update
126 | discard_large_update_flag: 1
127 |
128 | # whether to use object residual to update camera pose
129 | use_object_residual_update_cam_pose_flag: 0 # 0(not use) or 1(use)
130 |
131 | # whether we skip the update step
132 | prediction_only_flag: 0
133 |
134 | # if using ground-truth for initilization
135 | initial_use_gt: 0
136 |
--------------------------------------------------------------------------------
/doc/object_mapping.md:
--------------------------------------------------------------------------------
1 | ## hyperparameters
2 |
3 | - in `OrcVIO-Object-Mapping/src/orcvio/obj/ObjectFeatureInitializer.cpp`, an initial scale `Eigen::Vector3d empirical_bbox_scale` is defined to accommodate the fact that the bounding box does not enclose the object tightly, this needs to be tuned for each type of object detection
4 |
5 | - in `OrcVIO-Object-Mapping/src/ObjectInitNode.cpp`, object distance thresholds `min_dist_btw_objects` and `max_dist_btw_cam_obj` are used to prune the objects that are too close to each other (possibly duplicates of the same object), and the object that is too far from the camera (possibly wrong object detection)
6 |
7 | - in `orcvio_mapping/launch/om_unity_gq.launch`, there are parameters related with the object tracking thresholds, `max_object_feature_track` and `min_object_feature_track`, which refers to the maximum/minimum number of frames to track an object
8 | * if an object is lost before `min_object_feature_track` is reached, then it is discarded
9 | * if an object is tracked long enough, which exceeds `max_object_feature_track`, then the object will be reconstructed and no longer tracked
--------------------------------------------------------------------------------
/licenses/LICENSE_MSCKF_VIO.txt:
--------------------------------------------------------------------------------
1 | COPYRIGHT AND PERMISSION NOTICE
2 | Penn Software MSCKF_VIO
3 | Copyright (C) 2017 The Trustees of the University of Pennsylvania
4 | All rights reserved.
5 |
6 | The Trustees of the University of Pennsylvania (“Penn”) and Ke Sun, Kartik Mohta, the developer (“Developer”) of Penn Software MSCKF_VIO (“Software”) give recipient (“Recipient”) and Recipient’s Institution (“Institution”) permission to use, copy, and modify the software in source and binary forms, with or without modification for non-profit research purposes only provided that the following conditions are met:
7 |
8 | 1) All copies of Software in binary form and/or source code, related documentation and/or other materials provided with the Software must reproduce and retain the above copyright notice, this list of conditions and the following disclaimer.
9 |
10 |
11 | 2) Recipient shall have the right to create modifications of the Software (“Modifications”) for their internal research and academic purposes only.
12 |
13 |
14 | 3) All copies of Modifications in binary form and/or source code and related documentation must reproduce and retain the above copyright notice, this list of conditions and the following disclaimer.
15 |
16 |
17 | 4) Recipient and Institution shall not distribute Software or Modifications to any third parties without the prior written approval of Penn.
18 |
19 |
20 | 5) Recipient will provide the Developer with feedback on the use of the Software and Modifications, if any, in their research. The Developers and Penn are permitted to use any information Recipient provides in making changes to the Software. All feedback, bug reports and technical questions shall be sent to:
21 | sunke@seas.upenn.edu
22 | kmohta@seas.upenn.edu
23 |
24 |
25 | 6) Recipient acknowledges that the Developers, Penn and its licensees may develop modifications to Software that may be substantially similar to Recipient’s modifications of Software, and that the Developers, Penn and its licensees shall not be constrained in any way by Recipient in Penn’s or its licensees’ use or management of such modifications. Recipient acknowledges the right of the Developers and Penn to prepare and publish modifications to Software that may be substantially similar or functionally equivalent to your modifications and improvements, and if Recipient or Institution obtains patent protection for any modification or improvement to Software, Recipient and Institution agree not to allege or enjoin infringement of their patent by the Developers, Penn or any of Penn’s licensees obtaining modifications or improvements to Software from the Penn or the Developers.
26 |
27 |
28 | 7) Recipient and Developer will acknowledge in their respective publications the contributions made to each other’s research involving or based on the Software. The current citations for Software are:
29 |
30 |
31 | 8) Any party desiring a license to use the Software and/or Modifications for commercial purposes shall contact The Penn Center for Innovation at 215-898-9591.
32 |
33 |
34 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS, CONTRIBUTORS, AND THE TRUSTEES OF THE UNIVERSITY OF PENNSYLVANIA "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE TRUSTEES OF THE UNIVERSITY OF PENNSYLVANIA BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 |
36 |
37 |
--------------------------------------------------------------------------------
/licenses/LICENSE_ORB_SLAM2.txt:
--------------------------------------------------------------------------------
1 | ORB-SLAM2 is released under a GPLv3 license (see License-gpl.txt).
2 | Please see Dependencies.md for a list of all included code and library dependencies which are not property of the authors of ORB-SLAM2.
3 |
4 | For a closed-source version of ORB-SLAM2 for commercial purposes, please contact the authors.
5 |
6 | If you use ORB-SLAM in an academic work, please cite the most relevant publication associated by visiting:
7 | https://github.com/raulmur/ORB_SLAM2
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/ros_wrapper/.catkin_tools/README:
--------------------------------------------------------------------------------
1 | # Catkin Tools Metadata
2 |
3 | This directory was generated by catkin_tools and it contains persistent
4 | configuration information used by the `catkin` command and its sub-commands.
5 |
6 | Each subdirectory of the `profiles` directory contains a set of persistent
7 | configuration options for separate profiles. The default profile is called
8 | `default`. If another profile is desired, it can be described in the
9 | `profiles.yaml` file in this directory.
10 |
11 | Please see the catkin_tools documentation before editing any files in this
12 | directory. Most actions can be performed with the `catkin` command-line
13 | program.
14 |
--------------------------------------------------------------------------------
/ros_wrapper/.catkin_tools/VERSION:
--------------------------------------------------------------------------------
1 | 0.4.5
--------------------------------------------------------------------------------
/ros_wrapper/.catkin_tools/profiles/default/build.yaml:
--------------------------------------------------------------------------------
1 | blacklist: []
2 | build_space: build
3 | catkin_make_args: []
4 | cmake_args:
5 | - -DCMAKE_BUILD_TYPE=Release
6 | devel_layout: linked
7 | devel_space: devel
8 | extend_path: null
9 | install: false
10 | install_space: install
11 | isolate_install: false
12 | jobs_args: []
13 | log_space: logs
14 | make_args: []
15 | source_space: src
16 | use_env_cache: false
17 | use_internal_make_jobserver: true
18 | whitelist: []
19 |
--------------------------------------------------------------------------------
/ros_wrapper/.catkin_tools/profiles/default/devel_collisions.txt:
--------------------------------------------------------------------------------
1 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./cmake.lock 4
2 |
--------------------------------------------------------------------------------
/ros_wrapper/.catkin_tools/profiles/default/packages/catkin_tools_prebuild/devel_manifest.txt:
--------------------------------------------------------------------------------
1 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/build/catkin_tools_prebuild
2 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/_setup_util.py /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./_setup_util.py
3 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/cmake.lock /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./cmake.lock
4 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/setup.zsh /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./setup.zsh
5 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/local_setup.zsh /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./local_setup.zsh
6 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/setup.sh /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./setup.sh
7 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/env.sh /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./env.sh
8 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/local_setup.bash /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./local_setup.bash
9 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/local_setup.sh /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./local_setup.sh
10 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/setup.bash /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./setup.bash
11 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/lib/pkgconfig/catkin_tools_prebuild.pc /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/lib/pkgconfig/catkin_tools_prebuild.pc
12 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/share/catkin_tools_prebuild/cmake/catkin_tools_prebuildConfig-version.cmake /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/share/catkin_tools_prebuild/cmake/catkin_tools_prebuildConfig-version.cmake
13 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/catkin_tools_prebuild/share/catkin_tools_prebuild/cmake/catkin_tools_prebuildConfig.cmake /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/share/catkin_tools_prebuild/cmake/catkin_tools_prebuildConfig.cmake
14 |
--------------------------------------------------------------------------------
/ros_wrapper/.catkin_tools/profiles/default/packages/catkin_tools_prebuild/package.xml:
--------------------------------------------------------------------------------
1 |
2 | catkin_tools_prebuild
3 |
4 | This package is used to generate catkin setup files.
5 |
6 | 0.0.0
7 | BSD
8 | jbohren
9 | catkin
10 |
11 |
--------------------------------------------------------------------------------
/ros_wrapper/.catkin_tools/profiles/default/packages/darknet_ros/devel_manifest.txt:
--------------------------------------------------------------------------------
1 | darknet_ros/darknet_ros
2 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/darknet_ros/cmake.lock /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/./cmake.lock
3 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/darknet_ros/lib/libdarknet_ros_lib.so /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/lib/libdarknet_ros_lib.so
4 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/darknet_ros/lib/libdarknet_ros_nodelet.so /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/lib/libdarknet_ros_nodelet.so
5 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/darknet_ros/lib/pkgconfig/darknet_ros.pc /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/lib/pkgconfig/darknet_ros.pc
6 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/darknet_ros/lib/darknet_ros/darknet_ros /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/lib/darknet_ros/darknet_ros
7 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/darknet_ros/share/darknet_ros/cmake/darknet_rosConfig.cmake /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/share/darknet_ros/cmake/darknet_rosConfig.cmake
8 | /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/.private/darknet_ros/share/darknet_ros/cmake/darknet_rosConfig-version.cmake /home/erl/repos/OrcVIO-Lite/ros_wrapper/devel/share/darknet_ros/cmake/darknet_rosConfig-version.cmake
9 |
--------------------------------------------------------------------------------
/ros_wrapper/.catkin_tools/profiles/default/packages/darknet_ros/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | darknet_ros
4 | 1.1.5
5 | Darknet is an open source neural network framework that runs on CPU and GPU. You only look once (YOLO) is a state-of-the-art, real-time object detection system.
6 | Marko Bjelonic
7 | BSD
8 | https://github.com/leggedrobotics/darknet_ros
9 | Marko Bjelonic
10 |
11 | catkin
12 | boost
13 | libopencv-dev
14 | libx11
15 | libxt-dev
16 | libxext
17 |
18 | roscpp
19 | rospy
20 | std_msgs
21 | image_transport
22 | cv_bridge
23 | sensor_msgs
24 | message_generation
25 | darknet_ros_msgs
26 | actionlib
27 | nodelet
28 |
29 |
30 | rostest
31 | wget
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/ros_wrapper/.catkin_tools/profiles/default/packages/darknet_ros_msgs/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | darknet_ros_msgs
4 | 1.1.5
5 | Darknet is an open source neural network framework that runs on CPU and GPU. You only look once (YOLO) is a state-of-the-art, real-time object detection system.
6 | Marko Bjelonic
7 | BSD
8 | https://github.com/leggedrobotics/darknet_ros
9 | Marko Bjelonic
10 |
11 | catkin
12 |
13 | actionlib_msgs
14 | geometry_msgs
15 | sensor_msgs
16 | message_generation
17 | std_msgs
18 |
19 | actionlib_msgs
20 | geometry_msgs
21 | sensor_msgs
22 | message_runtime
23 | std_msgs
24 |
25 |
--------------------------------------------------------------------------------
/ros_wrapper/.gitignore:
--------------------------------------------------------------------------------
1 | devel/
2 | logs/
3 | build/
4 | bin/
5 | lib/
6 | msg_gen/
7 | srv_gen/
8 | msg/*Action.msg
9 | msg/*ActionFeedback.msg
10 | msg/*ActionGoal.msg
11 | msg/*ActionResult.msg
12 | msg/*Feedback.msg
13 | msg/*Goal.msg
14 | msg/*Result.msg
15 | msg/_*.py
16 | build_isolated/
17 | devel_isolated/
18 |
19 | # Generated by dynamic reconfigure
20 | *.cfgc
21 | /cfg/cpp/
22 | /cfg/*.py
23 |
24 | # Ignore generated docs
25 | *.dox
26 | *.wikidoc
27 |
28 | # eclipse stuff
29 | .project
30 | .cproject
31 |
32 | # qcreator stuff
33 | CMakeLists.txt.user
34 |
35 | srv/_*.py
36 | *.pcd
37 | *.pyc
38 | qtcreator-*
39 | *.user
40 |
41 | /planning/cfg
42 | /planning/docs
43 | /planning/src
44 |
45 | *~
46 |
47 | # Emacs
48 | .#*
49 |
50 | # Catkin custom files
51 | CATKIN_IGNORE
52 |
53 | .catkin_workspace
--------------------------------------------------------------------------------
/ros_wrapper/src/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | /opt/ros/melodic/share/catkin/cmake/toplevel.cmake
--------------------------------------------------------------------------------
/ros_wrapper/src/darknet_ros_bridge/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | darknet_ros_bridge
4 | 0.0.0
5 | The darknet_ros_bridge package
6 |
7 |
8 |
9 |
10 | root
11 |
12 |
13 |
14 |
15 |
16 | TODO
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | catkin
52 | darknet_ros_msgs
53 | geometry_msgs
54 | wm_od_interface_msgs
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Mo Shan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/config/camchain-imucam-d455.yaml:
--------------------------------------------------------------------------------
1 | cam0:
2 | T_cam_imu:
3 | - [0.9999662089030257, -0.006906390871642436, -0.004459015276860498, 0.008708247801839689]
4 | - [0.006874866759746373, 0.9999515383335019, -0.007046785898527633, -0.02174943710377053]
5 | - [0.004507467043353249, 0.007015892643993886, 0.9999652293911333, -0.022785325544131582]
6 | - [0.0, 0.0, 0.0, 1.0]
7 | cam_overlaps: [1]
8 | camera_model: pinhole
9 | distortion_coeffs: [0.009694051100341156, -0.008084564032660335, 0.00022908109336942359,
10 | 0.0023177007244794693]
11 | distortion_model: radtan
12 | intrinsics: [384.17102476497377, 384.3372186440579, 323.7997751702461, 238.91110409779023]
13 | resolution: [640, 480]
14 | rostopic: /camera/infra1/image_rect_raw
15 | timeshift_cam_imu: 0.021933037220846576
16 | cam1:
17 | T_cam_imu:
18 | - [0.9999698968492514, -0.006847293164047317, -0.003649653630584302, -0.041744724619478486]
19 | - [0.006822507941589594, 0.9999538711144581, -0.006760845257577333, -0.02180719301602511]
20 | - [0.0036957787656450997, 0.006735741943954643, 0.9999704850643243, -0.023163825057369577]
21 | - [0.0, 0.0, 0.0, 1.0]
22 | T_cn_cnm1:
23 | - [0.9999996707137908, 5.3416799524852884e-05, 0.0008097647507470238, -0.0504333570150308]
24 | - [-5.3648173678250714e-05, 0.9999999577455292, 0.00028571105951359323, -5.0779630172412783e-05]
25 | - [-0.0008097494547604562, -0.0002857544078328687, 0.9999996313250495, -0.00037767141222754295]
26 | - [0.0, 0.0, 0.0, 1.0]
27 | cam_overlaps: [0]
28 | camera_model: pinhole
29 | distortion_coeffs: [0.008722147503810068, -0.0071965817620313855, 0.00020312551594745345,
30 | 0.002072988775825771]
31 | distortion_model: radtan
32 | intrinsics: [384.31545240848607, 384.4493157119672, 323.8563013205691, 239.01554278327566]
33 | resolution: [640, 480]
34 | rostopic: /camera/infra2/image_rect_raw
35 | timeshift_cam_imu: 0.021948018259291602
36 |
37 | T_imu_body:
38 | [1.0000, 0.0000, 0.0000, 0.0000,
39 | 0.0000, 1.0000, 0.0000, 0.0000,
40 | 0.0000, 0.0000, 1.0000, 0.0000,
41 | 0.0000, 0.0000, 0.0000, 1.0000]
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/config/camchain-imucam-erl.yaml:
--------------------------------------------------------------------------------
1 | cam0:
2 | T_cam_imu:
3 | - [0.9999662089030257, -0.006906390871642436, -0.004459015276860498, 0.008708247801839689]
4 | - [0.006874866759746373, 0.9999515383335019, -0.007046785898527633, -0.02174943710377053]
5 | - [0.004507467043353249, 0.007015892643993886, 0.9999652293911333, -0.022785325544131582]
6 | - [0.0, 0.0, 0.0, 1.0]
7 | cam_overlaps: [1]
8 | camera_model: pinhole
9 | distortion_coeffs: [0.009694051100341156, -0.008084564032660335, 0.00022908109336942359,
10 | 0.0023177007244794693]
11 | distortion_model: radtan
12 | intrinsics: [384.17102476497377, 384.3372186440579, 323.7997751702461, 238.91110409779023]
13 | resolution: [640, 480]
14 | rostopic: /camera/infra1/image_rect_raw
15 | timeshift_cam_imu: 0.021933037220846576
16 | cam1:
17 | T_cam_imu:
18 | - [0.9999698968492514, -0.006847293164047317, -0.003649653630584302, -0.041744724619478486]
19 | - [0.006822507941589594, 0.9999538711144581, -0.006760845257577333, -0.02180719301602511]
20 | - [0.0036957787656450997, 0.006735741943954643, 0.9999704850643243, -0.023163825057369577]
21 | - [0.0, 0.0, 0.0, 1.0]
22 | T_cn_cnm1:
23 | - [0.9999996707137908, 5.3416799524852884e-05, 0.0008097647507470238, -0.0504333570150308]
24 | - [-5.3648173678250714e-05, 0.9999999577455292, 0.00028571105951359323, -5.0779630172412783e-05]
25 | - [-0.0008097494547604562, -0.0002857544078328687, 0.9999996313250495, -0.00037767141222754295]
26 | - [0.0, 0.0, 0.0, 1.0]
27 | cam_overlaps: [0]
28 | camera_model: pinhole
29 | distortion_coeffs: [0.008722147503810068, -0.0071965817620313855, 0.00020312551594745345,
30 | 0.002072988775825771]
31 | distortion_model: radtan
32 | intrinsics: [384.31545240848607, 384.4493157119672, 323.8563013205691, 239.01554278327566]
33 | resolution: [640, 480]
34 | rostopic: /camera/infra2/image_rect_raw
35 | timeshift_cam_imu: 0.021948018259291602
36 |
37 | T_imu_body:
38 | [1.0000, 0.0000, 0.0000, 0.0000,
39 | 0.0000, 1.0000, 0.0000, 0.0000,
40 | 0.0000, 0.0000, 1.0000, 0.0000,
41 | 0.0000, 0.0000, 0.0000, 1.0000]
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/config/camchain-imucam-euroc-noextrinsics.yaml:
--------------------------------------------------------------------------------
1 | # The modifications of the output file from Kalibr:
2 | # 1. For each matrix (e.g. cam0/T_cam_imu), remove the brackets and minus sign for each line. Use one pair of brackets for each matrix.
3 | # 2. Add the T_imu_body at the end of the calibration file (usually set to identity).
4 | cam0:
5 | T_cam_imu:
6 | [0.0, 1.0, 0.0, 0.05,
7 | -1.0, 0.0, 0.0, 0.0,
8 | 0.0, 0.0, 1.0, 0.0,
9 | 0.0, 0.0, 0.0, 1.0]
10 | camera_model: pinhole
11 | distortion_coeffs: [-0.28340811, 0.07395907, 0.00019359, 1.76187114e-05]
12 | distortion_model: radtan
13 | intrinsics: [458.654, 457.296, 367.215, 248.375]
14 | resolution: [752, 480]
15 | timeshift_cam_imu: 0.0
16 | cam1:
17 | T_cam_imu:
18 | [0.012555267089103, 0.999598781151433, -0.025389800891747, -0.044901980682509,
19 | -0.999755099723116, 0.013011905181504, 0.017900583825251, -0.020569771258915,
20 | 0.018223771455443, 0.025158836311552, 0.999517347077547, -0.008638135126028,
21 | 0, 0, 0, 1.000000000000000]
22 | T_cn_cnm1:
23 | [0.999997256477881, 0.002312067192424, 0.000376008102415, -0.110073808127187,
24 | -0.002317135723281, 0.999898048506644, 0.014089835846648, 0.000399121547014,
25 | -0.000343393120525, -0.014090668452714, 0.999900662637729, -0.000853702503357,
26 | 0, 0, 0, 1.000000000000000]
27 | camera_model: pinhole
28 | distortion_coeffs: [-0.28368365, 0.07451284, -0.00010473, -3.55590700e-05]
29 | distortion_model: radtan
30 | intrinsics: [457.587, 456.134, 379.999, 255.238]
31 | resolution: [752, 480]
32 | timeshift_cam_imu: 0.0
33 | T_imu_body:
34 | [1.0000, 0.0000, 0.0000, 0.0000,
35 | 0.0000, 1.0000, 0.0000, 0.0000,
36 | 0.0000, 0.0000, 1.0000, 0.0000,
37 | 0.0000, 0.0000, 0.0000, 1.0000]
38 |
39 |
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/config/camchain-imucam-euroc.yaml:
--------------------------------------------------------------------------------
1 | # The modifications of the output file from Kalibr:
2 | # 1. For each matrix (e.g. cam0/T_cam_imu), remove the brackets and minus sign for each line. Use one pair of brackets for each matrix.
3 | # 2. Add the T_imu_body at the end of the calibration file (usually set to identity).
4 | cam0:
5 | T_cam_imu:
6 | [0.014865542981794, 0.999557249008346, -0.025774436697440, 0.065222909535531,
7 | -0.999880929698575, 0.014967213324719, 0.003756188357967, -0.020706385492719,
8 | 0.004140296794224, 0.025715529947966, 0.999660727177902, -0.008054602460030,
9 | 0, 0, 0, 1.000000000000000]
10 | camera_model: pinhole
11 | distortion_coeffs: [-0.28340811, 0.07395907, 0.00019359, 1.76187114e-05]
12 | distortion_model: radtan
13 | intrinsics: [458.654, 457.296, 367.215, 248.375]
14 | resolution: [752, 480]
15 | timeshift_cam_imu: 0.0
16 | cam1:
17 | T_cam_imu:
18 | [0.012555267089103, 0.999598781151433, -0.025389800891747, -0.044901980682509,
19 | -0.999755099723116, 0.013011905181504, 0.017900583825251, -0.020569771258915,
20 | 0.018223771455443, 0.025158836311552, 0.999517347077547, -0.008638135126028,
21 | 0, 0, 0, 1.000000000000000]
22 | T_cn_cnm1:
23 | [0.999997256477881, 0.002312067192424, 0.000376008102415, -0.110073808127187,
24 | -0.002317135723281, 0.999898048506644, 0.014089835846648, 0.000399121547014,
25 | -0.000343393120525, -0.014090668452714, 0.999900662637729, -0.000853702503357,
26 | 0, 0, 0, 1.000000000000000]
27 | camera_model: pinhole
28 | distortion_coeffs: [-0.28368365, 0.07451284, -0.00010473, -3.55590700e-05]
29 | distortion_model: radtan
30 | intrinsics: [457.587, 456.134, 379.999, 255.238]
31 | resolution: [752, 480]
32 | timeshift_cam_imu: 0.0
33 | T_imu_body:
34 | [1.0000, 0.0000, 0.0000, 0.0000,
35 | 0.0000, 1.0000, 0.0000, 0.0000,
36 | 0.0000, 0.0000, 1.0000, 0.0000,
37 | 0.0000, 0.0000, 0.0000, 1.0000]
38 |
39 |
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/config/camchain-imucam-fla.yaml:
--------------------------------------------------------------------------------
1 | # The modifications of the output file from Kalibr:
2 | # 1. For each matrix (e.g. cam0/T_cam_imu), remove the brackets and minus sign for each line. Use one pair of brackets for each matrix.
3 | # 2. Add the T_imu_body at the end of the calibration file (usually set to identity).
4 | cam0:
5 | T_cam_imu:
6 | [0.9999354187625251, -0.008299416281612066, 0.007763890364879687, 0.1058254769257812,
7 | -0.008323202950480819, -0.9999607512746784, 0.003036478688450292, -0.017679034754829417,
8 | 0.0077383846414136375, -0.0031009030240912025, -0.9999652502980172, -0.008890355463642424,
9 | 0.0, 0.0, 0.0, 1.0]
10 | camera_model: pinhole
11 | distortion_coeffs: [-0.0147, -0.00584, 0.00715, -0.00464]
12 | distortion_model: equidistant
13 | intrinsics: [606.57934, 606.73233, 474.93081, 402.27722]
14 | resolution: [960, 800]
15 | rostopic: /sync/cam0/image_raw
16 | cam1:
17 | T_cam_imu:
18 | [0.9999415499962613, -0.003314180239269491, 0.010291394483555276, -0.09412457355264209,
19 | -0.0029741561536762054, -0.9994548489877669, -0.032880985843089204, -0.016816910884051604,
20 | 0.010394757632964142, 0.03284845573511056, -0.9994062877376598, -0.008908185988981819,
21 | 0.0, 0.0, 0.0, 1.0]
22 | T_cn_cnm1:
23 | [0.9999843700393054, -0.004977416649937181, -0.0025428275521419763, -0.200059,
24 | 0.005065643350062822, 0.9993405242433947, 0.03595604029590122, 0.000634053,
25 | 0.002362182447858024, -0.03596835970409878, 0.9993501279159637, -0.000909473,
26 | 0.0, 0.0, 0.0, 1.0]
27 | camera_model: pinhole
28 | distortion_coeffs: [-0.01565, -0.00026, -0.00454, 0.00311]
29 | distortion_model: equidistant
30 | intrinsics: [605.7278, 605.75661, 481.98865, 417.83476]
31 | resolution: [960, 800]
32 | rostopic: /sync/cam1/image_raw
33 | T_imu_body:
34 | [1.0000, 0.0000, 0.0000, 0.0000,
35 | 0.0000, 1.0000, 0.0000, 0.0000,
36 | 0.0000, 0.0000, 1.0000, 0.0000,
37 | 0.0000, 0.0000, 0.0000, 1.0000]
38 |
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/config/camchain-imucam-unity-gq.yaml:
--------------------------------------------------------------------------------
1 | cam0:
2 | T_cam_imu:
3 | - [0.0, -1.0, 0.0, 0.1]
4 | - [0.0, 0.0, -1.0, 0.0]
5 | - [1.0, 0.0, 0.0, -0.1]
6 | - [0.0, 0.0, 0.0, 1.0]
7 | cam_overlaps: [1]
8 | camera_model: pinhole
9 | distortion_coeffs: [0, 0, 0, 0]
10 | distortion_model: radtan
11 | intrinsics: [260.99805320956386, 260.99805320956386, 320, 240]
12 | resolution: [640, 480]
13 | rostopic: /husky1/camera_left/image
14 | timeshift_cam_imu: 0.0
15 | cam1:
16 | T_cam_imu:
17 | - [0.0, -1.0, 0.0, -0.1]
18 | - [0.0, 0.0, -1.0, 0]
19 | - [1.0, 0.0, 0.0, -0.1]
20 | - [0.0, 0.0, 0.0, 1.0]
21 | T_cn_cnm1:
22 | - [1.0, 0.0, 0.0, -0.2]
23 | - [0.0, 1.0, 0.0, 0.0]
24 | - [0.0, 0.0, 1.0, 0.0]
25 | - [0.0, 0.0, 0.0, 1.0]
26 | cam_overlaps: [0]
27 | camera_model: pinhole
28 | distortion_coeffs: [0, 0, 0, 0]
29 | distortion_model: radtan
30 | intrinsics: [260.99805320956386, 260.99805320956386, 320, 240]
31 | resolution: [640, 480]
32 | rostopic: /husky1/camera_right/image
33 | timeshift_cam_imu: 0.0
34 |
35 | T_imu_body:
36 | [1.0000, 0.0000, 0.0000, 0.0000,
37 | 0.0000, 1.0000, 0.0000, 0.0000,
38 | 0.0000, 0.0000, 1.0000, 0.0000,
39 | 0.0000, 0.0000, 0.0000, 1.0000]
40 |
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/config/euroc_config/MH_01_easy.yaml:
--------------------------------------------------------------------------------
1 | path_gt: "/home/erl/dcist_vio_workspace/stereo_orcvio_ws/src/slam_groundtruth_comparison/data/euroc_mav/MH_01_easy.csv"
2 |
3 | gtTslam:
4 | [0.328175, -0.944612, 0.00311312, 5.02224,
5 | 0.944259, 0.328139, 0.0264596, -1.85008,
6 | -0.0260156, -0.00574378, 0.999645, 0.453058,
7 | 0.0, 0.0, 0.0, 1.0]
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/config/euroc_config/V1_01_easy.yaml:
--------------------------------------------------------------------------------
1 | path_gt: "/home/erl/dcist_vio_workspace/stereo_orcvio_ws/src/slam_groundtruth_comparison/data/euroc_mav/V1_01_easy.csv"
2 |
3 | gtTslam:
4 | [-0.973632, 0.222831, -0.0488523, 0.811762,
5 | -0.223219, -0.974765, 0.00256102, 2.33515,
6 | -0.0470488, 0.0133983, 0.998803, 0.857574,
7 | 0.0, 0.0, 0.0, 1.0]
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/include/initializer/FlexibleInitializer.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 |
6 | #include
7 |
8 | #include "initializer/StaticInitializer.h"
9 | #include "initializer/DynamicInitializer.h"
10 |
11 | namespace orcvio {
12 |
13 | class FlexibleInitializer
14 | {
15 | public:
16 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
17 |
18 | // Constructor
19 | FlexibleInitializer() = delete;
20 | FlexibleInitializer(const double& acc_n_, const double& acc_w_, const double& gyr_n_,
21 | const double& gyr_w_, const Eigen::Matrix3d& R_c2b,
22 | const Eigen::Vector3d& t_bc_b) {
23 |
24 | staticInitPtr.reset(new StaticInitializer());
25 | dynamicInitPtr.reset(new DynamicInitializer(acc_n_, acc_w_, gyr_n_,
26 | gyr_w_, R_c2b, t_bc_b));
27 |
28 | }
29 |
30 | // Destructor
31 | ~FlexibleInitializer(){}
32 |
33 | // Interface for trying to initialize
34 | bool tryIncInit(std::vector& imu_msg_buffer,
35 | CameraMeasurementConstPtr img_msg, IMUState& imu_state);
36 |
37 | private:
38 |
39 | // Inclinometer-initializer
40 | boost::shared_ptr staticInitPtr;
41 | // Dynamic initializer
42 | boost::shared_ptr dynamicInitPtr;
43 |
44 |
45 | };
46 |
47 | }
--------------------------------------------------------------------------------
/ros_wrapper/src/orcvio/include/initializer/StaticInitializer.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include