Coding Style Guide

Overview

Please note that if you have a good excuse to either break the rules or modify them, feel free to do it (and update this guide accordingly, if appropriate). Nothing is worse than rule that hurts productivity instead of improving it. In general, the main aim of this style is:

The codebase is coded in snake_case with accessor and getter function for most classes (there are a few exceptions). We leverage the Doxygen documentation system with a post-processing script from m.css. Please see Documentation Guide for details on how our documentation is generated. All functions should be commented both internally and externally with a focus on being as clear to a developer or user that is reading the code or documentation website.

Naming Conventions

We have particular naming style for our orientations and positions that should be consistent throughout the project. In general rotation matrices are the only exception of a variable that starts with a capital letter. Both position and orientation variables should contain the frame of references.

Eigen::Matrix<double,3,3> R_ItoC; //=> SO(3) rotation from IMU to camera frame
Eigen::Matrix<double,4,1> q_ItoC; //=> JPL quaternion rot from IMU to the camera
Eigen::Vector3d p_IinC; //=> 3d position of the IMU frame in the camera frame
Eigen::Vector3d p_FinG; //=> position of feature F in the global frame G

Print Statements

The code uses a simple print statement level logic that allows the user to enable and disable the verbosity. In general the user can specify the following (see ov_core/src/utils/print.h file for details):

To use these, you can specify the following using the printf standard input logic. A user can also specify colors (see ov_core/src/utils/colors.h file for details):

PRINT_ALL("the value is %.2f\n", variable);
PRINT_DEBUG("the value is %.2f\n", variable);
PRINT_INFO("the value is %.2f\n", variable);
PRINT_WARNING("the value is %.2f\n", variable);
PRINT_ERROR(RED "the value is %.2f\n" RESET, variable);


ov_core
Author(s): Patrick Geneva , Kevin Eckenhoff , Guoquan Huang
autogenerated on Wed Jun 21 2023 03:05:36