66 lines
3.1 KiB
Plaintext
66 lines
3.1 KiB
Plaintext
/**
|
|
|
|
|
|
@page dev-coding-style Coding Style Guide
|
|
|
|
|
|
|
|
@section coding-style-overview 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:
|
|
|
|
- Vertical and horizontal compression, fitting more code on a screen while keeping the code readable.
|
|
- Do not need to enforce line wrapping if clarity is impacted (i.e. Jacobians)
|
|
- Consistent indentation and formatting rules to ensure readability (4 space tabbing)
|
|
|
|
|
|
The codebase is coded in [snake_case](https://en.wikipedia.org/wiki/Snake_case) with accessor and getter function for most classes (there are a few exceptions).
|
|
We leverage the [Doxygen](http://www.doxygen.nl/) documentation system with a post-processing script from [m.css](https://mcss.mosra.cz/documentation/doxygen/).
|
|
Please see @ref dev-docs 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.
|
|
|
|
|
|
|
|
|
|
@section coding-style-naming 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.
|
|
|
|
|
|
@code{.cpp}
|
|
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
|
|
@endcode
|
|
|
|
@section coding-style-printing 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](ov_core/src/utils/print.h) file for details):
|
|
|
|
- PrintLevel::ALL : All PRINT_XXXX will output to the console
|
|
- PrintLevel::DEBUG : "DEBUG", "INFO", "WARNING" and "ERROR" will be printed. "ALL" will be silenced
|
|
- PrintLevel::INFO : "INFO", "WARNING" and "ERROR" will be printed. "ALL" and "DEBUG" will be silenced
|
|
- PrintLevel::WARNING : "WARNING" and "ERROR" will be printed. "ALL", "DEBUG" and "INFO" will be silenced
|
|
- PrintLevel::ERROR : Only "ERROR" will be printed. All the rest are silenced
|
|
- PrintLevel::SILENT : All PRINT_XXXX will be silenced.
|
|
|
|
To use these, you can specify the following using the [printf](https://www.cplusplus.com/reference/cstdio/printf/) standard input logic.
|
|
A user can also specify colors (see [ov_core/src/utils/colors.h](ov_core/src/utils/colors.h) file for details):
|
|
|
|
@code{.cpp}
|
|
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);
|
|
@endcode
|
|
|
|
|
|
*/ |