无人机——px4源码文件结构

文件结构

打开Firmware,里面包含如下文件夹:

无人机——px4源码文件结构_第1张图片

重要的文件夹如下:

cmake:编译此项目的工具

ROMFS:无人机开机启动时执行的代码

src:无人机开机之后飞行时执行的代码

mavlink:无人机与地面站通信的工具的底层代码

msg:无人机内部进程通信的消息的类型及结构定义

platforms:里面包含了其运行的平台,无人机是基于nuttx系统而设计的,nuttx文件夹提供了无人机系统层的代码。里面还有一个可移植操作系统接口posix,可以使用ROS创建节点通过posix部分与无人机交互。

posix-configs:posix的一些配置文件

launch:里面包含使用ros启动节点的文件,使用ros仿真或在与实体无人机交互时,需要用ros创建和无人机交互的节点

Tools:一些仿真调试工具

Src里面的目录如下:

无人机——px4源码文件结构_第2张图片

drivers:无人机的驱动文件,用于硬件之间的数据传输

systemcmds:使用控制台调试时的命令的接口

modules:无人机的上层软件进程

无人机的上层创建了多个进程,分别负责各个部分的计算。包括姿态估计,位置控制,位置估计等。每个模块的运行流程是:

获取其他进程发布的uORB信息,然后进行计算更新,发布新的uORB信息。

例如attitude_estimator_q中,需要获取其他进程提供的信息,包括传感器的数值,无人机的位置等。然后根据这些数据计算无人机的姿态,将其以uORB的形式发送,更新之前的姿态信息。所有的模块都在不断地获取参数,然后更新发布。

协处理器

无人机中包含px4fmu主处理器,和px4io协处理器。其中px4fmu负责上层的计算和部分传感器的交互,px4io与电机和遥控器进行交互。

modules中有一个px4iofirmware文件夹。顾名思义,指px4io的固件,里面的代码包含了px4io的启动及执行的代码。

参考:https://blog.csdn.net/sir_wkp/article/details/80548262

drivers中也包含了px4io文件夹。上面说到drivers中包含的是驱动,也就是硬件之间的交互。协处理器和主处理器都是硬件,之间的数据传输是在这里实现的。因此,主处理器进行一系列的计算得到电机的控制信号,这个信号是在此处发送给px4io的。同样地,px4fmu也是在此处获取px4io提供的电机状态和遥控状态。px4io与电机的交互也属于硬件的交互,在drivers下面我们能够看到pwm这类文件夹,在这里px4io读取电机的状态 或者 运用px4fmu提供的的电机控制信号进而控制电机的。

 

 

你可能感兴趣的:(pixhawk+px4+qgc)