Merge branch 'vlad_devel' into 'master'
Make names of the buttons consistent. See merge request VladyslavUsenko/basalt!4
|
@ -28,8 +28,8 @@ The buttons in the GUI have the following meaning:
|
||||||
* `show_gt_...` shows ground truth position, velocity and biases.
|
* `show_gt_...` shows ground truth position, velocity and biases.
|
||||||
* `show_est_...` shows VIO estimates of the position, velocity and biases.
|
* `show_est_...` shows VIO estimates of the position, velocity and biases.
|
||||||
* `next_step` proceeds to next frame.
|
* `next_step` proceeds to next frame.
|
||||||
* `continue_btn` plays the sequence.
|
* `continue` plays the sequence.
|
||||||
* `align_button` performs SE(3) alignment with ground-truth trajectory and prints the RMS ATE to the console.
|
* `align_svd` performs SE(3) alignment with ground-truth trajectory and prints the RMS ATE to the console.
|
||||||
|
|
||||||
|
|
||||||
### Visual-inertial mapping simulator
|
### Visual-inertial mapping simulator
|
||||||
|
@ -46,5 +46,6 @@ The system processes the marginalization data and extracts the non-linear factor
|
||||||
* `rand_inc` applies a random increment to all frames of the system. If you run the `optimize` until convergence afterwards, and press `align_svd` the alignment transformation should only contain the rotation around Z axis.
|
* `rand_inc` applies a random increment to all frames of the system. If you run the `optimize` until convergence afterwards, and press `align_svd` the alignment transformation should only contain the rotation around Z axis.
|
||||||
* `rand_yaw` applies an increment in yaw to all poses. This should not change the error of the optimization once is have converged.
|
* `rand_yaw` applies an increment in yaw to all poses. This should not change the error of the optimization once is have converged.
|
||||||
* `setup_points` triangulates the points and adds them to optimization. You should optimize the system again after adding the points.
|
* `setup_points` triangulates the points and adds them to optimization. You should optimize the system again after adding the points.
|
||||||
|
* `align_svd` performs SE(3) alignment with ground-truth trajectory and prints the RMS ATE to the console.
|
||||||
|
|
||||||
For comparison we also provide the `basalt_mapper_sim_naive` executable that has the same parameters. It runs a global bundle-adjustment on keyframe data and inserts pre-integrated IMU measurements between keyframes. This executable is included for comparison only.
|
For comparison we also provide the `basalt_mapper_sim_naive` executable that has the same parameters. It runs a global bundle-adjustment on keyframe data and inserts pre-integrated IMU measurements between keyframes. This executable is included for comparison only.
|
|
@ -40,7 +40,7 @@ The buttons in the GUI have the following meaning:
|
||||||
* `show_est_ba` shows the plot of the estimated accel bias.
|
* `show_est_ba` shows the plot of the estimated accel bias.
|
||||||
* `show_gt` shows ground-truth trajectory in the 3D view.
|
* `show_gt` shows ground-truth trajectory in the 3D view.
|
||||||
|
|
||||||
By default the system starts with `continue_fast` enabled. This option visualizes the latest processed frame until the end of the sequence. Alternatively, the `continue_btn` visualizes every frame without skipping. If both options are disabled the system shows the frame that is selected with the `show_frame` slider and the user can move forward and backward with `next_step` and `prev_step` buttons. The `follow` button changes between the static camera and the camera attached to the current frame.
|
By default the system starts with `continue_fast` enabled. This option visualizes the latest processed frame until the end of the sequence. Alternatively, the `continue` visualizes every frame without skipping. If both options are disabled the system shows the frame that is selected with the `show_frame` slider and the user can move forward and backward with `next_step` and `prev_step` buttons. The `follow` button changes between the static camera and the camera attached to the current frame.
|
||||||
|
|
||||||
For evaluation the button `align_svd` is used. It aligns the GT trajectory with the current estimate using an SE(3) transformation and prints the transformation and the root-mean-squared absolute trajectory error (RMS ATE).
|
For evaluation the button `align_svd` is used. It aligns the GT trajectory with the current estimate using an SE(3) transformation and prints the transformation and the root-mean-squared absolute trajectory error (RMS ATE).
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ The workflow for the mapping is the following:
|
||||||
The `num_opt_iter` slider controls the maximum number of iterations executed when pressing `optimize`.
|
The `num_opt_iter` slider controls the maximum number of iterations executed when pressing `optimize`.
|
||||||
|
|
||||||
|
|
||||||
For more systematic evaluation see the evaluation scripts in the `scripts/eval_full` folder.
|
For more systematic evaluation see the evaluation scripts in the [scripts/eval_full](scripts/eval_full) folder.
|
||||||
|
|
||||||
**NOTE: It appears that only the datasets in ASL Dataset Format (`euroc` dataset type in our notation) contain ground truth that is time-aligned to the IMU and camera images. It is located in the `state_groundtruth_estimate0` folder. Bag files have raw Mocap measurements that are not time aligned and should not be used for evaluations.**
|
**NOTE: It appears that only the datasets in ASL Dataset Format (`euroc` dataset type in our notation) contain ground truth that is time-aligned to the IMU and camera images. It is located in the `state_groundtruth_estimate0` folder. Bag files have raw Mocap measurements that are not time aligned and should not be used for evaluations.**
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 543 KiB After Width: | Height: | Size: 542 KiB |
Before Width: | Height: | Size: 334 KiB After Width: | Height: | Size: 333 KiB |
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 139 KiB |
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 187 KiB |
|
@ -154,9 +154,9 @@ using Button = pangolin::Var<std::function<void(void)>>;
|
||||||
|
|
||||||
Button next_step_btn("ui.next_step", &next_step);
|
Button next_step_btn("ui.next_step", &next_step);
|
||||||
|
|
||||||
pangolin::Var<bool> continue_btn("ui.continue_btn", true, false, true);
|
pangolin::Var<bool> continue_btn("ui.continue", true, false, true);
|
||||||
|
|
||||||
Button align_step_btn("ui.align_button", &alignButton);
|
Button align_step_btn("ui.align_svd", &alignButton);
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
srand(1);
|
srand(1);
|
||||||
|
|
|
@ -74,7 +74,7 @@ pangolin::Var<bool> show_ids("ui.show_ids", false, false, true);
|
||||||
|
|
||||||
using Button = pangolin::Var<std::function<void(void)>>;
|
using Button = pangolin::Var<std::function<void(void)>>;
|
||||||
Button next_step_btn("ui.next_step", &next_step);
|
Button next_step_btn("ui.next_step", &next_step);
|
||||||
pangolin::Var<bool> continue_btn("ui.continue_btn", true, false, true);
|
pangolin::Var<bool> continue_btn("ui.continue", true, false, true);
|
||||||
|
|
||||||
// Opt flow variables
|
// Opt flow variables
|
||||||
basalt::VioDatasetPtr vio_dataset;
|
basalt::VioDatasetPtr vio_dataset;
|
||||||
|
|
|
@ -95,7 +95,7 @@ pangolin::Var<bool> show_gt("ui.show_gt", true, false, true);
|
||||||
Button next_step_btn("ui.next_step", &next_step);
|
Button next_step_btn("ui.next_step", &next_step);
|
||||||
Button prev_step_btn("ui.prev_step", &prev_step);
|
Button prev_step_btn("ui.prev_step", &prev_step);
|
||||||
|
|
||||||
pangolin::Var<bool> continue_btn("ui.continue_btn", false, false, true);
|
pangolin::Var<bool> continue_btn("ui.continue", false, false, true);
|
||||||
pangolin::Var<bool> continue_fast("ui.continue_fast", true, false, true);
|
pangolin::Var<bool> continue_fast("ui.continue_fast", true, false, true);
|
||||||
|
|
||||||
Button align_svd_btn("ui.align_svd", &alignButton);
|
Button align_svd_btn("ui.align_svd", &alignButton);
|
||||||
|
|
|
@ -162,9 +162,9 @@ using Button = pangolin::Var<std::function<void(void)>>;
|
||||||
|
|
||||||
Button next_step_btn("ui.next_step", &next_step);
|
Button next_step_btn("ui.next_step", &next_step);
|
||||||
|
|
||||||
pangolin::Var<bool> continue_btn("ui.continue_btn", true, false, true);
|
pangolin::Var<bool> continue_btn("ui.continue", true, false, true);
|
||||||
|
|
||||||
Button align_step_btn("ui.align_button", &alignButton);
|
Button align_step_btn("ui.align_svd", &alignButton);
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
srand(1);
|
srand(1);
|
||||||
|
|