ardupilot中采用多线程包含有三种模式:信号量,无锁数据模式以及PX4 ORB形式
ardupilot代码的书写风格:
- 对于ardupilot的代码采用的是astyle工具进行排版,当编写完代码之后,可以采用如下指令对代码进行格式统一,
astyle --options=Tools/CodeStyle/astylerc <filename>
, 调用Tools/CodeStyle/astylerc
下面的工具完成,实测有效。 - Ardupilot的代码编写规则,变量和函数的命名采用小写字母和下划线的形式完成,如 throttle_input;
- 首行缩进采用4个空格;
- switch的缩进是允许的,但是break要和case进行对齐;
- 一元操作符之间不要空格;如
i++
- 条件语句和括号之间要有空格,如
if (condition) {
- 函数调用,如
foo(a, 10)
- if-else语句的使用样式:
if (condition) {
fool();
}else {
bar();
}
- 大括号的使用示例:
class My_Class{
....
}
for (int i=0; i<10; i++){
.....
}
- 私有成员变量需要采用首下划线命名 如:
class My_Class{
private:
int _field;
};
- 类的命名,单词首字母需要大小,两个单词之间采用下划线分开,如:
class AP_Compass { };
- 返回单一物理量的函数,或者代表物理量的变量应该以物理量的单位作为后缀,如:
uint16 get_angle_rad(){...}
float distance_m;
- 如果变量和函数名字有相对的坐标系说明,需要先说明坐标系,然后在跟上单位,如:
uint16 get_angle_ned_rad(){...}
float distance_enu_m;
- 参数的命名,从左向右,重要程度依次降低。飞行模式,特性或者传感器应当放在首位;限定词max,min应该放在最后,且max, min应该统一,不能采用 top ,bottom等词代替,参数的总长度要在16个字符以内,如
RTL_ALT , RTL_ALT_MIN
- 在程序中数据类型的结尾修饰,建议加上,提高程序的可读性,尽量采用乘法而非除法,提高程序的运行效率。如:
const float foo_m = foo_cm * 0.01f;
而不是
const float foo_m = foo_cm / 100;