Function bodies 2,155 total
LoadImages function · cpp · L264-L296 (33 LOC)Examples_old/Stereo/stereo_tum_vi.cc
void LoadImages(const string &strPathLeft, const string &strPathRight, const string &strPathTimes,
vector<string> &vstrImageLeft, vector<string> &vstrImageRight, vector<double> &vTimeStamps)
{
ifstream fTimes;
cout << strPathLeft << endl;
cout << strPathRight << endl;
cout << strPathTimes << endl;
fTimes.open(strPathTimes.c_str());
vTimeStamps.reserve(5000);
vstrImageLeft.reserve(5000);
vstrImageRight.reserve(5000);
while(!fTimes.eof())
{
string s;
getline(fTimes,s);
if(!s.empty())
{
if (s[0] == '#')
continue;
int pos = s.find(' ');
string item = s.substr(0, pos);
vstrImageLeft.push_back(strPathLeft + "/" + item + ".png");
vstrImageRight.push_back(strPathRight + "/" + item + ".png");
double t = stod(item);
vTimeStamps.push_back(t/1e9);
}
}
}exit_loop_handler function · cpp · L41-L46 (6 LOC)Examples/RGB-D-Inertial/rgbd_inertial_realsense_D435i.cc
void exit_loop_handler(int s){
cout << "Finishing session" << endl;
b_continue_session = false;
}get_sensor_option function · cpp · L58-L99 (42 LOC)Examples/RGB-D-Inertial/rgbd_inertial_realsense_D435i.cc
static rs2_option get_sensor_option(const rs2::sensor& sensor)
{
// Sensors usually have several options to control their properties
// such as Exposure, Brightness etc.
std::cout << "Sensor supports the following options:\n" << std::endl;
// The following loop shows how to iterate over all available options
// Starting from 0 until RS2_OPTION_COUNT (exclusive)
for (int i = 0; i < static_cast<int>(RS2_OPTION_COUNT); i++)
{
rs2_option option_type = static_cast<rs2_option>(i);
//SDK enum types can be streamed to get a string that represents them
std::cout << " " << i << ": " << option_type;
// To control an option, use the following api:
// First, verify that the sensor actually supports this option
if (sensor.supports(option_type))
{
std::cout << std::endl;
// Get a human readable description of the option
const char* description = sensor.get_option_descriptionmain function · cpp · L100-L461 (362 LOC)Examples/RGB-D-Inertial/rgbd_inertial_realsense_D435i.cc
int main(int argc, char **argv) {
if (argc < 3 || argc > 4) {
cerr << endl
<< "Usage: ./mono_inertial_realsense_D435i path_to_vocabulary path_to_settings (trajectory_file_name)"
<< endl;
return 1;
}
string file_name;
if (argc == 4) {
file_name = string(argv[argc - 1]);
}
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = exit_loop_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
b_continue_session = true;
double offset = 0; // ms
rs2::context ctx;
rs2::device_list devices = ctx.query_devices();
rs2::device selected_device;
if (devices.size() == 0)
{
std::cerr << "No device connected, please connect a RealSense device" << std::endl;
return 0;
}
else
selected_device = devices[0];
std::vector<rs2::sensor> sensors = selected_device.query_sensors();
intfind_stream_to_align function · cpp · L462-L497 (36 LOC)Examples/RGB-D-Inertial/rgbd_inertial_realsense_D435i.cc
rs2_stream find_stream_to_align(const std::vector<rs2::stream_profile>& streams)
{
//Given a vector of streams, we try to find a depth stream and another stream to align depth with.
//We prioritize color streams to make the view look better.
//If color is not available, we take another stream that (other than depth)
rs2_stream align_to = RS2_STREAM_ANY;
bool depth_stream_found = false;
bool color_stream_found = false;
for (rs2::stream_profile sp : streams)
{
rs2_stream profile_stream = sp.stream_type();
if (profile_stream != RS2_STREAM_DEPTH)
{
if (!color_stream_found) //Prefer color
align_to = profile_stream;
if (profile_stream == RS2_STREAM_COLOR)
{
color_stream_found = true;
}
}
else
{
depth_stream_found = true;
}
}
if(!depth_stream_found)
throw std::runtime_error("No Depth streaprofile_changed function · cpp · L498-L512 (15 LOC)Examples/RGB-D-Inertial/rgbd_inertial_realsense_D435i.cc
bool profile_changed(const std::vector<rs2::stream_profile>& current, const std::vector<rs2::stream_profile>& prev)
{
for (auto&& sp : prev)
{
//If previous profile is in current (maybe just added another)
auto itr = std::find_if(std::begin(current), std::end(current), [&sp](const rs2::stream_profile& current_sp) { return sp.unique_id() == current_sp.unique_id(); });
if (itr == std::end(current)) //If it previous stream wasn't found in current
{
return true;
}
}
return false;
}interpolateMeasure function · cpp · L513-L551 (39 LOC)Examples/RGB-D-Inertial/rgbd_inertial_realsense_D435i.cc
rs2_vector interpolateMeasure(const double target_time,
const rs2_vector current_data, const double current_time,
const rs2_vector prev_data, const double prev_time)
{
// If there are not previous information, the current data is propagated
if(prev_time == 0)
{
return current_data;
}
rs2_vector increment;
rs2_vector value_interp;
if(target_time > current_time) {
value_interp = current_data;
}
else if(target_time > prev_time)
{
increment.x = current_data.x - prev_data.x;
increment.y = current_data.y - prev_data.y;
increment.z = current_data.z - prev_data.z;
double factor = (target_time - prev_time) / (current_time - prev_time);
value_interp.x = prev_data.x + increment.x * factor;
value_interp.y = prev_data.y + increment.y * factor;
value_interp.z = prev_data.z + increment.z * factor;
// zero interpolatiWant fix-PRs on findings? Install Repobility's GitHub App · github.com/apps/repobility-bot
exit_loop_handler function · cpp · L41-L46 (6 LOC)Examples/RGB-D/rgbd_realsense_D435i.cc
void exit_loop_handler(int s){
cout << "Finishing session" << endl;
b_continue_session = false;
}get_sensor_option function · cpp · L58-L99 (42 LOC)Examples/RGB-D/rgbd_realsense_D435i.cc
static rs2_option get_sensor_option(const rs2::sensor& sensor)
{
// Sensors usually have several options to control their properties
// such as Exposure, Brightness etc.
std::cout << "Sensor supports the following options:\n" << std::endl;
// The following loop shows how to iterate over all available options
// Starting from 0 until RS2_OPTION_COUNT (exclusive)
for (int i = 0; i < static_cast<int>(RS2_OPTION_COUNT); i++)
{
rs2_option option_type = static_cast<rs2_option>(i);
//SDK enum types can be streamed to get a string that represents them
std::cout << " " << i << ": " << option_type;
// To control an option, use the following api:
// First, verify that the sensor actually supports this option
if (sensor.supports(option_type))
{
std::cout << std::endl;
// Get a human readable description of the option
const char* description = sensor.get_option_descriptionmain function · cpp · L100-L405 (306 LOC)Examples/RGB-D/rgbd_realsense_D435i.cc
int main(int argc, char **argv) {
if (argc < 3 || argc > 4) {
cerr << endl
<< "Usage: ./mono_inertial_realsense_D435i path_to_vocabulary path_to_settings (trajectory_file_name)"
<< endl;
return 1;
}
string file_name;
bool bFileName = false;
if (argc == 4) {
file_name = string(argv[argc - 1]);
bFileName = true;
}
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = exit_loop_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
b_continue_session = true;
double offset = 0; // ms
rs2::context ctx;
rs2::device_list devices = ctx.query_devices();
rs2::device selected_device;
if (devices.size() == 0)
{
std::cerr << "No device connected, please connect a RealSense device" << std::endl;
return 0;
}
else
selected_device = devices[0];
std::vector<rs2::sensfind_stream_to_align function · cpp · L406-L441 (36 LOC)Examples/RGB-D/rgbd_realsense_D435i.cc
rs2_stream find_stream_to_align(const std::vector<rs2::stream_profile>& streams)
{
//Given a vector of streams, we try to find a depth stream and another stream to align depth with.
//We prioritize color streams to make the view look better.
//If color is not available, we take another stream that (other than depth)
rs2_stream align_to = RS2_STREAM_ANY;
bool depth_stream_found = false;
bool color_stream_found = false;
for (rs2::stream_profile sp : streams)
{
rs2_stream profile_stream = sp.stream_type();
if (profile_stream != RS2_STREAM_DEPTH)
{
if (!color_stream_found) //Prefer color
align_to = profile_stream;
if (profile_stream == RS2_STREAM_COLOR)
{
color_stream_found = true;
}
}
else
{
depth_stream_found = true;
}
}
if(!depth_stream_found)
throw std::runtime_error("No Depth streaprofile_changed function · cpp · L442-L456 (15 LOC)Examples/RGB-D/rgbd_realsense_D435i.cc
bool profile_changed(const std::vector<rs2::stream_profile>& current, const std::vector<rs2::stream_profile>& prev)
{
for (auto&& sp : prev)
{
//If previous profile is in current (maybe just added another)
auto itr = std::find_if(std::begin(current), std::end(current), [&sp](const rs2::stream_profile& current_sp) { return sp.unique_id() == current_sp.unique_id(); });
if (itr == std::end(current)) //If it previous stream wasn't found in current
{
return true;
}
}
return false;
}main function · cpp · L32-L146 (115 LOC)Examples/RGB-D/rgbd_tum.cc
int main(int argc, char **argv)
{
if(argc != 5)
{
cerr << endl << "Usage: ./rgbd_tum path_to_vocabulary path_to_settings path_to_sequence path_to_association" << endl;
return 1;
}
// Retrieve paths to images
vector<string> vstrImageFilenamesRGB;
vector<string> vstrImageFilenamesD;
vector<double> vTimestamps;
string strAssociationFilename = string(argv[4]);
LoadImages(strAssociationFilename, vstrImageFilenamesRGB, vstrImageFilenamesD, vTimestamps);
// Check consistency in the number of images and depthmaps
int nImages = vstrImageFilenamesRGB.size();
if(vstrImageFilenamesRGB.empty())
{
cerr << endl << "No images found in provided path." << endl;
return 1;
}
else if(vstrImageFilenamesD.size()!=vstrImageFilenamesRGB.size())
{
cerr << endl << "Different number of images for rgb and depth." << endl;
return 1;
}
// Create SLAM system. It initializes all system threads anLoadImages function · cpp · L147-L173 (27 LOC)Examples/RGB-D/rgbd_tum.cc
void LoadImages(const string &strAssociationFilename, vector<string> &vstrImageFilenamesRGB,
vector<string> &vstrImageFilenamesD, vector<double> &vTimestamps)
{
ifstream fAssociation;
fAssociation.open(strAssociationFilename.c_str());
while(!fAssociation.eof())
{
string s;
getline(fAssociation,s);
if(!s.empty())
{
stringstream ss;
ss << s;
double t;
string sRGB, sD;
ss >> t;
vTimestamps.push_back(t);
ss >> sRGB;
vstrImageFilenamesRGB.push_back(sRGB);
ss >> t;
ss >> sD;
vstrImageFilenamesD.push_back(sD);
}
}
}main function · cpp · L40-L241 (202 LOC)Examples/Stereo-Inertial/stereo_inertial_euroc.cc
int main(int argc, char **argv)
{
if(argc < 5)
{
cerr << endl << "Usage: ./stereo_inertial_euroc path_to_vocabulary path_to_settings path_to_sequence_folder_1 path_to_times_file_1 (path_to_image_folder_2 path_to_times_file_2 ... path_to_image_folder_N path_to_times_file_N) " << endl;
return 1;
}
const int num_seq = (argc-3)/2;
cout << "num_seq = " << num_seq << endl;
bool bFileName= (((argc-3) % 2) == 1);
string file_name;
if (bFileName)
{
file_name = string(argv[argc-1]);
cout << "file name: " << file_name << endl;
}
// Load all sequences:
int seq;
vector< vector<string> > vstrImageLeft;
vector< vector<string> > vstrImageRight;
vector< vector<double> > vTimestampsCam;
vector< vector<cv::Point3f> > vAcc, vGyro;
vector< vector<double> > vTimestampsImu;
vector<int> nImages;
vector<int> nImu;
vector<int> first_imu(num_seq,0);
vstrImageLeft.resize(num_seq);
vstrImageMethodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
LoadImages function · cpp · L242-L267 (26 LOC)Examples/Stereo-Inertial/stereo_inertial_euroc.cc
void LoadImages(const string &strPathLeft, const string &strPathRight, const string &strPathTimes,
vector<string> &vstrImageLeft, vector<string> &vstrImageRight, vector<double> &vTimeStamps)
{
ifstream fTimes;
fTimes.open(strPathTimes.c_str());
vTimeStamps.reserve(5000);
vstrImageLeft.reserve(5000);
vstrImageRight.reserve(5000);
while(!fTimes.eof())
{
string s;
getline(fTimes,s);
if(!s.empty())
{
stringstream ss;
ss << s;
vstrImageLeft.push_back(strPathLeft + "/" + ss.str() + ".png");
vstrImageRight.push_back(strPathRight + "/" + ss.str() + ".png");
double t;
ss >> t;
vTimeStamps.push_back(t/1e9);
}
}
}LoadIMU function · cpp · L268-L303 (36 LOC)Examples/Stereo-Inertial/stereo_inertial_euroc.cc
void LoadIMU(const string &strImuPath, vector<double> &vTimeStamps, vector<cv::Point3f> &vAcc, vector<cv::Point3f> &vGyro)
{
ifstream fImu;
fImu.open(strImuPath.c_str());
vTimeStamps.reserve(5000);
vAcc.reserve(5000);
vGyro.reserve(5000);
while(!fImu.eof())
{
string s;
getline(fImu,s);
if (s[0] == '#')
continue;
if(!s.empty())
{
string item;
size_t pos = 0;
double data[7];
int count = 0;
while ((pos = s.find(',')) != string::npos) {
item = s.substr(0, pos);
data[count++] = stod(item);
s.erase(0, pos + 1);
}
item = s.substr(0, pos);
data[6] = stod(item);
vTimeStamps.push_back(data[0]/1e9);
vAcc.push_back(cv::Point3f(data[4],data[5],data[6]));
vGyro.push_back(cv::Point3f(data[1],data[2],data[3]));
}
}
}exit_loop_handler function · cpp · L40-L45 (6 LOC)Examples/Stereo-Inertial/stereo_inertial_realsense_D435i.cc
void exit_loop_handler(int s){
cout << "Finishing session" << endl;
b_continue_session = false;
}get_sensor_option function · cpp · L54-L95 (42 LOC)Examples/Stereo-Inertial/stereo_inertial_realsense_D435i.cc
static rs2_option get_sensor_option(const rs2::sensor& sensor)
{
// Sensors usually have several options to control their properties
// such as Exposure, Brightness etc.
std::cout << "Sensor supports the following options:\n" << std::endl;
// The following loop shows how to iterate over all available options
// Starting from 0 until RS2_OPTION_COUNT (exclusive)
for (int i = 0; i < static_cast<int>(RS2_OPTION_COUNT); i++)
{
rs2_option option_type = static_cast<rs2_option>(i);
//SDK enum types can be streamed to get a string that represents them
std::cout << " " << i << ": " << option_type;
// To control an option, use the following api:
// First, verify that the sensor actually supports this option
if (sensor.supports(option_type))
{
std::cout << std::endl;
// Get a human readable description of the option
const char* description = sensor.get_option_descriptionmain function · cpp · L96-L446 (351 LOC)Examples/Stereo-Inertial/stereo_inertial_realsense_D435i.cc
int main(int argc, char **argv) {
if (argc < 3 || argc > 4) {
cerr << endl
<< "Usage: ./stereo_inertial_realsense_D435i path_to_vocabulary path_to_settings (trajectory_file_name)"
<< endl;
return 1;
}
string file_name;
if (argc == 4) {
file_name = string(argv[argc - 1]);
}
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = exit_loop_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
b_continue_session = true;
double offset = 0; // ms
rs2::context ctx;
rs2::device_list devices = ctx.query_devices();
rs2::device selected_device;
if (devices.size() == 0)
{
std::cerr << "No device connected, please connect a RealSense device" << std::endl;
return 0;
}
else
selected_device = devices[0];
std::vector<rs2::sensor> sensors = selected_device.query_sensors();
iinterpolateMeasure function · cpp · L447-L485 (39 LOC)Examples/Stereo-Inertial/stereo_inertial_realsense_D435i.cc
rs2_vector interpolateMeasure(const double target_time,
const rs2_vector current_data, const double current_time,
const rs2_vector prev_data, const double prev_time)
{
// If there are not previous information, the current data is propagated
if(prev_time == 0)
{
return current_data;
}
rs2_vector increment;
rs2_vector value_interp;
if(target_time > current_time) {
value_interp = current_data;
}
else if(target_time > prev_time)
{
increment.x = current_data.x - prev_data.x;
increment.y = current_data.y - prev_data.y;
increment.z = current_data.z - prev_data.z;
double factor = (target_time - prev_time) / (current_time - prev_time);
value_interp.x = prev_data.x + increment.x * factor;
value_interp.y = prev_data.y + increment.y * factor;
value_interp.z = prev_data.z + increment.z * factor;
// zero interpolatiexit_loop_handler function · cpp · L39-L46 (8 LOC)Examples/Stereo-Inertial/stereo_inertial_realsense_t265.cc
void exit_loop_handler(int s){
cout << "Finishing session" << endl;
b_continue_session = false;
}main function · cpp · L51-L322 (272 LOC)Examples/Stereo-Inertial/stereo_inertial_realsense_t265.cc
int main(int argc, char **argv)
{
if (argc < 3 || argc > 4) {
cerr << endl
<< "Usage: ./stereo_inertial_realsense_t265 path_to_vocabulary path_to_settings (trajectory_file_name)"
<< endl;
return 1;
}
string file_name;
bool bFileName = false;
if (argc == 5) {
file_name = string(argv[argc - 1]);
bFileName = true;
}
ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::IMU_STEREO, true, 0, file_name);
float imageScale = SLAM.GetImageScale();
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = exit_loop_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
b_continue_session = true;
double offset = 0; // ms
// Declare RealSense pipeline, encapsulating the actual device and sensors
rs2::pipeline pipe;
// Create a configuration for configuring the pipeline with a non default profile
Same scanner, your repo: https://repobility.com — Repobility
interpolateMeasure function · cpp · L323-L358 (36 LOC)Examples/Stereo-Inertial/stereo_inertial_realsense_t265.cc
rs2_vector interpolateMeasure(const double target_time,
const rs2_vector current_data, const double current_time,
const rs2_vector prev_data, const double prev_time){
// If there are not previous information, the current data is propagated
if(prev_time == 0){
return current_data;
}
rs2_vector increment;
rs2_vector value_interp;
if(target_time > current_time) {
value_interp = current_data;
}
else if(target_time > prev_time){
increment.x = current_data.x - prev_data.x;
increment.y = current_data.y - prev_data.y;
increment.z = current_data.z - prev_data.z;
double factor = (target_time - prev_time) / (current_time - prev_time);
value_interp.x = prev_data.x + increment.x * factor;
value_interp.y = prev_data.y + increment.y * factor;
value_interp.z = prev_data.z + increment.z * factor;
// zero interpolation
main function · cpp · L39-L284 (246 LOC)Examples/Stereo-Inertial/stereo_inertial_tum_vi.cc
int main(int argc, char **argv)
{
const int num_seq = (argc-3)/4;
cout << "num_seq = " << num_seq << endl;
bool bFileName= (((argc-3) % 4) == 1);
string file_name;
if (bFileName)
file_name = string(argv[argc-1]);
if(argc < 7)
{
cerr << endl << "Usage: ./stereo_inertial_tum_vi path_to_vocabulary path_to_settings path_to_image_folder_1 path_to_image_folder_2 path_to_times_file path_to_imu_data (trajectory_file_name)" << endl;
return 1;
}
// Load all sequences:
int seq;
vector< vector<string> > vstrImageLeftFilenames;
vector< vector<string> > vstrImageRightFilenames;
vector< vector<double> > vTimestampsCam;
vector< vector<cv::Point3f> > vAcc, vGyro;
vector< vector<double> > vTimestampsImu;
vector<int> nImages;
vector<int> nImu;
vector<int> first_imu(num_seq,0);
vstrImageLeftFilenames.resize(num_seq);
vstrImageRightFilenames.resize(num_seq);
vTimestampsCam.resize(num_seq);
vLoadImagesTUMVI function · cpp · L285-L317 (33 LOC)Examples/Stereo-Inertial/stereo_inertial_tum_vi.cc
void LoadImagesTUMVI(const string &strPathLeft, const string &strPathRight, const string &strPathTimes,
vector<string> &vstrImageLeft, vector<string> &vstrImageRight, vector<double> &vTimeStamps)
{
ifstream fTimes;
cout << strPathLeft << endl;
cout << strPathRight << endl;
cout << strPathTimes << endl;
fTimes.open(strPathTimes.c_str());
vTimeStamps.reserve(5000);
vstrImageLeft.reserve(5000);
vstrImageRight.reserve(5000);
while(!fTimes.eof())
{
string s;
getline(fTimes,s);
if(!s.empty())
{
if (s[0] == '#')
continue;
int pos = s.find(' ');
string item = s.substr(0, pos);
vstrImageLeft.push_back(strPathLeft + "/" + item + ".png");
vstrImageRight.push_back(strPathRight + "/" + item + ".png");
double t = stod(item);
vTimeStamps.push_back(t/1e9);
}
}
}LoadIMU function · cpp · L318-L353 (36 LOC)Examples/Stereo-Inertial/stereo_inertial_tum_vi.cc
void LoadIMU(const string &strImuPath, vector<double> &vTimeStamps, vector<cv::Point3f> &vAcc, vector<cv::Point3f> &vGyro)
{
ifstream fImu;
fImu.open(strImuPath.c_str());
vTimeStamps.reserve(5000);
vAcc.reserve(5000);
vGyro.reserve(5000);
while(!fImu.eof())
{
string s;
getline(fImu,s);
if (s[0] == '#')
continue;
if(!s.empty())
{
string item;
size_t pos = 0;
double data[7];
int count = 0;
while ((pos = s.find(',')) != string::npos) {
item = s.substr(0, pos);
data[count++] = stod(item);
s.erase(0, pos + 1);
}
item = s.substr(0, pos);
data[6] = stod(item);
vTimeStamps.push_back(data[0]/1e9);
vAcc.push_back(cv::Point3f(data[4],data[5],data[6]));
vGyro.push_back(cv::Point3f(data[1],data[2],data[3]));
}
}
}main function · cpp · L33-L186 (154 LOC)Examples/Stereo/stereo_euroc.cc
int main(int argc, char **argv)
{
if(argc < 5)
{
cerr << endl << "Usage: ./stereo_euroc path_to_vocabulary path_to_settings path_to_sequence_folder_1 path_to_times_file_1 (path_to_image_folder_2 path_to_times_file_2 ... path_to_image_folder_N path_to_times_file_N) (trajectory_file_name)" << endl;
return 1;
}
const int num_seq = (argc-3)/2;
cout << "num_seq = " << num_seq << endl;
bool bFileName= (((argc-3) % 2) == 1);
string file_name;
if (bFileName)
{
file_name = string(argv[argc-1]);
cout << "file name: " << file_name << endl;
}
// Load all sequences:
int seq;
vector< vector<string> > vstrImageLeft;
vector< vector<string> > vstrImageRight;
vector< vector<double> > vTimestampsCam;
vector<int> nImages;
vstrImageLeft.resize(num_seq);
vstrImageRight.resize(num_seq);
vTimestampsCam.resize(num_seq);
nImages.resize(num_seq);
int tot_images = 0;
for (seq = 0; seq<nuLoadImages function · cpp · L187-L212 (26 LOC)Examples/Stereo/stereo_euroc.cc
void LoadImages(const string &strPathLeft, const string &strPathRight, const string &strPathTimes,
vector<string> &vstrImageLeft, vector<string> &vstrImageRight, vector<double> &vTimeStamps)
{
ifstream fTimes;
fTimes.open(strPathTimes.c_str());
vTimeStamps.reserve(5000);
vstrImageLeft.reserve(5000);
vstrImageRight.reserve(5000);
while(!fTimes.eof())
{
string s;
getline(fTimes,s);
if(!s.empty())
{
stringstream ss;
ss << s;
vstrImageLeft.push_back(strPathLeft + "/" + ss.str() + ".png");
vstrImageRight.push_back(strPathRight + "/" + ss.str() + ".png");
double t;
ss >> t;
vTimeStamps.push_back(t/1e9);
}
}
}main function · cpp · L33-L158 (126 LOC)Examples/Stereo/stereo_kitti.cc
int main(int argc, char **argv)
{
if(argc != 4)
{
cerr << endl << "Usage: ./stereo_kitti path_to_vocabulary path_to_settings path_to_sequence" << endl;
return 1;
}
// Retrieve paths to images
vector<string> vstrImageLeft;
vector<string> vstrImageRight;
vector<double> vTimestamps;
LoadImages(string(argv[3]), vstrImageLeft, vstrImageRight, vTimestamps);
const int nImages = vstrImageLeft.size();
// Create SLAM system. It initializes all system threads and gets ready to process frames.
ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::STEREO,true);
float imageScale = SLAM.GetImageScale();
// Vector for tracking time statistics
vector<float> vTimesTrack;
vTimesTrack.resize(nImages);
cout << endl << "-------" << endl;
cout << "Start processing sequence ..." << endl;
cout << "Images in the sequence: " << nImages << endl << endl;
double t_track = 0.f;
double t_resize = 0.f;
//LoadImages function · cpp · L159-L194 (36 LOC)Examples/Stereo/stereo_kitti.cc
void LoadImages(const string &strPathToSequence, vector<string> &vstrImageLeft,
vector<string> &vstrImageRight, vector<double> &vTimestamps)
{
ifstream fTimes;
string strPathTimeFile = strPathToSequence + "/times.txt";
fTimes.open(strPathTimeFile.c_str());
while(!fTimes.eof())
{
string s;
getline(fTimes,s);
if(!s.empty())
{
stringstream ss;
ss << s;
double t;
ss >> t;
vTimestamps.push_back(t);
}
}
string strPrefixLeft = strPathToSequence + "/image_0/";
string strPrefixRight = strPathToSequence + "/image_1/";
const int nTimes = vTimestamps.size();
vstrImageLeft.resize(nTimes);
vstrImageRight.resize(nTimes);
for(int i=0; i<nTimes; i++)
{
stringstream ss;
ss << setfill('0') << setw(6) << i;
vstrImageLeft[i] = strPrefixLeft + ss.str() + ".png";
vstrImageRight[i] = strPrefixRight + ss.str()Repobility (the analyzer behind this table) · https://repobility.com
exit_loop_handler function · cpp · L40-L45 (6 LOC)Examples/Stereo/stereo_realsense_D435i.cc
void exit_loop_handler(int s){
cout << "Finishing session" << endl;
b_continue_session = false;
}get_sensor_option function · cpp · L50-L91 (42 LOC)Examples/Stereo/stereo_realsense_D435i.cc
static rs2_option get_sensor_option(const rs2::sensor& sensor)
{
// Sensors usually have several options to control their properties
// such as Exposure, Brightness etc.
std::cout << "Sensor supports the following options:\n" << std::endl;
// The following loop shows how to iterate over all available options
// Starting from 0 until RS2_OPTION_COUNT (exclusive)
for (int i = 0; i < static_cast<int>(RS2_OPTION_COUNT); i++)
{
rs2_option option_type = static_cast<rs2_option>(i);
//SDK enum types can be streamed to get a string that represents them
std::cout << " " << i << ": " << option_type;
// To control an option, use the following api:
// First, verify that the sensor actually supports this option
if (sensor.supports(option_type))
{
std::cout << std::endl;
// Get a human readable description of the option
const char* description = sensor.get_option_descriptionmain function · cpp · L92-L324 (233 LOC)Examples/Stereo/stereo_realsense_D435i.cc
int main(int argc, char **argv) {
if (argc < 3 || argc > 4) {
cerr << endl
<< "Usage: ./stereo_realsense_D435i path_to_vocabulary path_to_settings (trajectory_file_name)"
<< endl;
return 1;
}
string file_name;
if (argc == 4) {
file_name = string(argv[argc - 1]);
}
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = exit_loop_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
b_continue_session = true;
double offset = 0; // ms
rs2::context ctx;
rs2::device_list devices = ctx.query_devices();
rs2::device selected_device;
if (devices.size() == 0)
{
std::cerr << "No device connected, please connect a RealSense device" << std::endl;
return 0;
}
else
selected_device = devices[0];
std::vector<rs2::sensor> sensors = selected_device.query_sensors();
int index exit_loop_handler function · cpp · L37-L42 (6 LOC)Examples/Stereo/stereo_realsense_t265.cc
void exit_loop_handler(int s){
cout << "Finishing session" << endl;
b_continue_session = false;
}main function · cpp · L43-L188 (146 LOC)Examples/Stereo/stereo_realsense_t265.cc
int main(int argc, char **argv)
{
if(argc < 3 || argc > 4)
{
cerr << endl << "Usage: ./stereo_realsense_t265 path_to_vocabulary path_to_settings (trajectory_file_name)" << endl;
return 1;
}
string file_name;
bool bFileName = false;
if (argc == 4)
{
file_name = string(argv[argc-1]);
bFileName = true;
}
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = exit_loop_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
b_continue_session = true;
// Declare RealSense pipeline, encapsulating the actual device and sensors
rs2::pipeline pipe;
// Create a configuration for configuring the pipeline with a non default profile
rs2::config cfg;
// Enable both image streams
cfg.enable_stream(RS2_STREAM_FISHEYE, 1, RS2_FORMAT_Y8);
cfg.enable_stream(RS2_STREAM_FISHEYE, 2, RS2_FORMAT_Y8);
rs2::pipeline_promain function · cpp · L36-L234 (199 LOC)Examples/Stereo/stereo_tum_vi.cc
int main(int argc, char **argv)
{
const int num_seq = (argc-3)/3;
cout << "num_seq = " << num_seq << endl;
bool bFileName= (((argc-3) % 3) == 1);
string file_name;
if (bFileName)
file_name = string(argv[argc-1]);
if(argc < 6)
{
cerr << endl << "Usage: ./stereo_tum_vi path_to_vocabulary path_to_settings path_to_image_folder1_1 path_to_image_folder2_1 path_to_times_file_1 (path_to_image_folder1_2 path_to_image_folder2_2 path_to_times_file_2 ... path_to_image_folder1_N path_to_image_folder2_N path_to_times_file_N) (trajectory_file_name)" << endl;
return 1;
}
// Load all sequences:
int seq;
vector< vector<string> > vstrImageLeftFilenames;
vector< vector<string> > vstrImageRightFilenames;
vector< vector<double> > vTimestampsCam;
vector<int> nImages;
vstrImageLeftFilenames.resize(num_seq);
vstrImageRightFilenames.resize(num_seq);
vTimestampsCam.resize(num_seq);
nImages.resize(num_seq);
intLoadImages function · cpp · L263-L295 (33 LOC)Examples/Stereo/stereo_tum_vi.cc
void LoadImages(const string &strPathLeft, const string &strPathRight, const string &strPathTimes,
vector<string> &vstrImageLeft, vector<string> &vstrImageRight, vector<double> &vTimeStamps)
{
ifstream fTimes;
cout << strPathLeft << endl;
cout << strPathRight << endl;
cout << strPathTimes << endl;
fTimes.open(strPathTimes.c_str());
vTimeStamps.reserve(5000);
vstrImageLeft.reserve(5000);
vstrImageRight.reserve(5000);
while(!fTimes.eof())
{
string s;
getline(fTimes,s);
if(!s.empty())
{
if (s[0] == '#')
continue;
int pos = s.find(' ');
string item = s.substr(0, pos);
vstrImageLeft.push_back(strPathLeft + "/" + item + ".png");
vstrImageRight.push_back(strPathRight + "/" + item + ".png");
double t = stod(item);
vTimeStamps.push_back(t/1e9);
}
}
}Atlas class · c · L48-L166 (119 LOC)include/Atlas.h
class Atlas
{
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar.template register_type<Pinhole>();
ar.template register_type<KannalaBrandt8>();
// Save/load a set structure, the set structure is broken in libboost 1.58 for ubuntu 16.04, a vector is serializated
//ar & mspMaps;
ar & mvpBackupMaps;
ar & mvpCameras;
// Need to save/load the static Id from Frame, KeyFrame, MapPoint and Map
ar & Map::nNextId;
ar & Frame::nNextId;
ar & KeyFrame::nNextId;
ar & MapPoint::nNextId;
ar & GeometricCamera::nNextId;
ar & mnLastInitKFidMap;
}
public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Atlas();
Atlas(int initKFid); // When its initialization the first map is created
~Atlas();
void CreateNewMap();
void ChangeMap(Map* pMap);
unsigned long int GetLastInitKFid();
void SeWant fix-PRs on findings? Install Repobility's GitHub App · github.com/apps/repobility-bot
serialize method · c · L52-L70 (19 LOC)include/Atlas.h
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar.template register_type<Pinhole>();
ar.template register_type<KannalaBrandt8>();
// Save/load a set structure, the set structure is broken in libboost 1.58 for ubuntu 16.04, a vector is serializated
//ar & mspMaps;
ar & mvpBackupMaps;
ar & mvpCameras;
// Need to save/load the static Id from Frame, KeyFrame, MapPoint and Map
ar & Map::nNextId;
ar & Frame::nNextId;
ar & KeyFrame::nNextId;
ar & MapPoint::nNextId;
ar & GeometricCamera::nNextId;
ar & mnLastInitKFidMap;
}GeometricCamera class · c · L43-L106 (64 LOC)include/CameraModels/GeometricCamera.h
class GeometricCamera {
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
ar & mnId;
ar & mnType;
ar & mvParameters;
}
public:
GeometricCamera() {}
GeometricCamera(const std::vector<float> &_vParameters) : mvParameters(_vParameters) {}
~GeometricCamera() {}
virtual cv::Point2f project(const cv::Point3f &p3D) = 0;
virtual Eigen::Vector2d project(const Eigen::Vector3d & v3D) = 0;
virtual Eigen::Vector2f project(const Eigen::Vector3f & v3D) = 0;
virtual Eigen::Vector2f projectMat(const cv::Point3f& p3D) = 0;
virtual float uncertainty2(const Eigen::Matrix<double,2,1> &p2D) = 0;
virtual Eigen::Vector3f unprojectEig(const cv::Point2f &p2D) = 0;
virtual cv::Point3f unproject(const cv::Point2f &p2D) = 0;
virtual Eigen::Matrix<double,2,3> projeserialize method · c · L46-L53 (8 LOC)include/CameraModels/GeometricCamera.h
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
ar & mnId;
ar & mnType;
ar & mvParameters;
}GeometricCamera method · c · L54-L57 (4 LOC)include/CameraModels/GeometricCamera.h
public:
GeometricCamera() {}KannalaBrandt8 class · c · L30-L111 (82 LOC)include/CameraModels/KannalaBrandt8.h
class KannalaBrandt8 : public GeometricCamera {
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
ar & boost::serialization::base_object<GeometricCamera>(*this);
ar & const_cast<float&>(precision);
}
public:
KannalaBrandt8() : precision(1e-6) {
mvParameters.resize(8);
mnId=nNextId++;
mnType = CAM_FISHEYE;
}
KannalaBrandt8(const std::vector<float> _vParameters) : GeometricCamera(_vParameters), mvLappingArea(2,0), precision(1e-6) ,tvr(nullptr) {
assert(mvParameters.size() == 8);
mnId=nNextId++;
mnType = CAM_FISHEYE;
}
KannalaBrandt8(const std::vector<float> _vParameters, const float _precision) : GeometricCamera(_vParameters),
mvLappingArea(2,0), precision(_precision) {
serialize method · c · L33-L39 (7 LOC)include/CameraModels/KannalaBrandt8.h
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
ar & boost::serialization::base_object<GeometricCamera>(*this);
ar & const_cast<float&>(precision);
}Pinhole class · c · L29-L96 (68 LOC)include/CameraModels/Pinhole.h
class Pinhole : public GeometricCamera {
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
ar & boost::serialization::base_object<GeometricCamera>(*this);
}
public:
Pinhole() {
mvParameters.resize(4);
mnId=nNextId++;
mnType = CAM_PINHOLE;
}
Pinhole(const std::vector<float> _vParameters) : GeometricCamera(_vParameters), tvr(nullptr) {
assert(mvParameters.size() == 4);
mnId=nNextId++;
mnType = CAM_PINHOLE;
}
Pinhole(Pinhole* pPinhole) : GeometricCamera(pPinhole->mvParameters), tvr(nullptr) {
assert(mvParameters.size() == 4);
mnId=nNextId++;
mnType = CAM_PINHOLE;
}
~Pinhole(){
if(tvr) delete tvr;
}
cv::Point2f project(const cv::Point3f &p3D);
Eigen::Vector2d project(const Eigeserialize method · c · L32-L37 (6 LOC)include/CameraModels/Pinhole.h
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
ar & boost::serialization::base_object<GeometricCamera>(*this);
}Methodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
Pinhole method · c · L38-L44 (7 LOC)include/CameraModels/Pinhole.h
public:
Pinhole() {
mvParameters.resize(4);
mnId=nNextId++;
mnType = CAM_PINHOLE;
}~Pinhole method · c · L56-L60 (5 LOC)include/CameraModels/Pinhole.h
~Pinhole(){
if(tvr) delete tvr;
}matchAndtriangulate method · c · L82-L86 (5 LOC)include/CameraModels/Pinhole.h
bool matchAndtriangulate(const cv::KeyPoint& kp1, const cv::KeyPoint& kp2, GeometricCamera* pOther,
Sophus::SE3f& Tcw1, Sophus::SE3f& Tcw2,
const float sigmaLevel1, const float sigmaLevel2,
Eigen::Vector3f& x3Dtriangulated) { return false;}