bash create_data.sh- Creates databash run.sh- Runs data using the option set in the functionget_default()fromsrc/ceres_options.cpp. Change the options in the above function to run under different option settings- The ceres const functions are defined in
src/ba_reproj_error_aa.h
Note: This code is part of a larger rust codebase. The rust codebase creates bindings to this codebase and hence a few idiosynchrnoies here and there
- Camera system with multiple frames
- Fixed cameras (keyframes)
- Variable cameras (keyframes)
- Variable 3d points (landmarks)
We have two kinds of correspondences and they correspond to two cost functions
- Between variable 3d and variable camera -- here both the 3d point position and camera pose are variables
- Between variable 3d and fixed camera -- here only the 3d point position are variables
The camera system as a reference frame and each frame has atransform to the reference frame via t_fl_fx.
Steps to get the reprojection error:
- Transform the 3d point from world frame to camera system reference frame using t_g_ifl (aka global to inertial front left)
- Transform the 3d point from camera system reference frame to the frame in which its keypoint was observed using t_fl_fx (aka front left to front x)
- Project the 3d point to the camera plane and calculate the residue w.r.t to the bearing
test/create_bundle_adjustment_data.cpp- creates a simulated dataset and stores it in data/data.csvtest/bundle_adjust.cpp- loads the data from data/data.csv and constructs the "right" data strcutures and runs bundle adjustmentsrc/bundle_adjustment.cpp- Constructs Ceres::Problem from the "right" data structuressrc/ba_reproj_error_aa.h- Defines two cost functions for the local basrc/ceres_optoins.cpp- Used to run solver using different ceres options
src/read_write.handsrc/read_write.cpp- Writes the data generated bytest/create_bundle_adjustment_data.cppand load data fortest/bundle_adjust.cppc_api.h- Defines the main structs and functions for local ba