Ros和PX4二次开发

前言


一般而言, 无人机开发其实是一个多学科交叉系统工程,但不同方向所需能力差异很大。我们需要的基础知识:数电和通信、模电和嵌入式开发、系统控制理论和参数估计理论,还需要具有:C/C++软件开发能力,学会使用机器人操作系统ROS、飞控固件PX4等。

但如果你目标是 PX4 二次开发(尤其你前面提到飞控课程),真正占 80% 的是:

1. 控制理论(最核心)

  • PID、LQR、状态空间
  • 卡尔曼滤波(EKF2)

2. 数学基础

  • 线性代数
  • 微分方程
  • 坐标变换(四元数)

3. 软件能力

  • C/C++
  • RTOS 思维(任务调度)
  • PX4 架构(uORB、modules)

本帖的目的在于,构建一个学习成本尽量低而能支撑无人机飞控二次开发的知识和技能体系。其中的内容会随着我们认识的深入而变化。

PID概念


数学基础


理论


速成课程

  • 动态系统建模与分析
    定义系统的状态、输入和输出,实现微分方程建模,即从物理系统到数学模型的转化。

  • 自动控制原理
    学习经典控制理论,包括:传递函数、稳定性、反馈控制、PID控制。

  • 现代控制理论
    学习状态空间表示、可控性和可观性、状态反馈,以及LQR(线性二次调节)。

  • 卡尔曼滤波器
    学习状态估计、线性卡尔曼滤波、扩展卡尔曼滤波、传感器融合。解决实际问题,包括:姿态有噪声、速度不可直接测量、传感器不一致等。

  • 最优控制
    学习性能指标、深入LQR、Pontryagin最小值原理、MPC(模型预测控制)。

经典课程

无人机

技能


工具/资源


python

C++

在ROS2和PX4中,C++版本为11/14/17,有相当部分的语法超出了 C++98版本。我们在学习时可以从C++98开始,然后再了解11/14/17各版本的差异。

ROS2

PX4

QGroundContrl

OS

  • kubuntu 24.04
    • 物联网、无人机、机器人开发的最佳操作系统环境。kubuntu 是 ubuntu 配上桌面系统 KDE Plasma 合体发行版。
    • ROS2 installation中明确了与当前ROS2最新版本 rolling 适配的 Ubuntu 版本为:Noble Numbat (24.04)。
    • ROS通常不会为最新的Ubuntu版本配置相应的版本。如果安装的是26.04,则需要在 docker 中运行 rolling 版本。