转自:新浪@WalkAnt
第七部分 源代码预览与APM:Copter程序库
英文参考:http://dev.ardupilot.com/wiki/apmcopter-code-overview/
本节来源:http://liung.github.io/blog/apm/2014-08-30-APM-Arducopter代码预览.html
APM::Copter代码主要放在ArduCopter文件夹中,并且和ArduPlane和ArduRover使用同样的库文件。
下面这张图展示了从飞行模式到电机输出的调用关系:
APM:Copter程序库
http://dev.ardupilot.com/wiki/apmcopter-programming-libraries/
http://liung.github.io/blog/apm/2014-08-30-APM-Arducopter相关库介绍.html
这些库文件也同样被ArduPlane和ArduRover所使用。下面将列出一系列高层次的库的说明和它们的函数说明。
1 核心库
- AP_AHRS:采用DCM(方向余弦矩阵方法)或EKF(扩展卡尔曼滤波方法)预估飞行器姿态。
- AP_Common:所有执行文件(sketch格式,arduino IDE的文件)和其他库都需要的基础核心库。
- AP_Math:包含了许多数学函数,特别对于矢量运算
- AC_PID:PID控制器库
- AP_InertialNav:扩展带有gps和气压计数据的惯性导航库
- AC_AttitudeControl:姿态控制相关库
- AP_WPNav:航点相关的导航库
- AP_Motors:多旋翼和传统直升机混合的电机库
- RC_Channel:更多的关于从APM_RC的PWM输入/输出数据转换到内部通用单位的库,比如角度
- AP_HAL,AP_HAL_AVR,AP_HAL_PX4:硬件抽象层库,提供给其他高级控制代码一致的接口,而不必担心底层不同的硬件。
2 传感器相关库
- AP_InertialSensor:读取陀螺仪和加速度计数据,并向主程序执行标准程序和提供标准单位数据(deg/s,m/s)。
- AP_RangerFinder:声呐和红外测距传感器的交互库
- AP_Baro:气压计相关库
- AP_GPS:GPS相关库
- AP_Compass:三轴罗盘相关库
- AP_OpticalFlow:光流传感器相关库
3 其他库
- AP_Mount,AP_Camera, AP_Relay:相机安装控制库,相机快门控制库
- AP_Mission: 从eeprom(电可擦只读存储器)存储/读取飞行指令相关库
- AP_Buffer:惯性导航时所用到的一个简单的堆栈(FIFO,先进先出)缓冲区
关于库的导航图,如下: