查看: 1020|回复: 7

PX4-1-开源飞控项目

[复制链接]

39

主题

845

帖子

1686

积分

金牌飞友

Rank: 6Rank: 6

积分
1686
飞币
839
注册时间
2017-8-23
发表于 2022-10-25 05:36:33 | 显示全部楼层 |阅读模式
分享完工具系列,我们开始PX4飞控技术的分享,写分享相对于自己写笔记要难很多,在整理自己笔记的过程中也重新思考很多问题。
飞控技术的分享系列更多分享的是思路和框架。对于PX4这种大型开源项目,源码的学习和思路框架的学习同样重要,专于源码容易迷失在代码之中,找不到方向。
当然个人的水平和编辑能力有限,如果有理解不一样的地方,欢迎私信我讨论,我会在后续的分享中更正。
我们后面主要分享的是PX4这一个开源飞控,当然目前世界上有很多的优秀开源飞控项目,在开始PX4的分享之前,我们先聊一下一些著名的开源飞控项目。他们都有哪些,有什么特点等等。

  • Cleanflight/betaflight/Baseflight/MultiWii
  • crazyflie
  • paparazzi
  • fprime
  • ardupilot
  • PX4
以上是我接触过的主要开源飞控,目前还比较活跃的开源项目,如果大家有了解其它优秀的开源飞控项目,欢迎私信我,我补充进去。
Cleanflight/betaflight/Baseflight/MultiWii

这是一个系列的开源项目,历史非常悠久。
这个系列的飞控在穿越机等小四轴上使用非常广泛。

  • c编写,stm32官方库,代码非常简洁
  • 功能也比较有限,姿态融合算法没有使用ekf,使用的是MahonyAHRS算法
它比较适合飞控入门,学习一些基础知识。
crazyflie

crazyflie也是一款微型四轴飞行器开源项目

  • 同样使用c编写,stm32官方库,
  • 使用了ekf融合算法,代码比较简洁
想要研究基本的ekf算法的可以看看这个代码,入门比较简单
paparazzi

Paparazzi 项目起始于2003年,由法国民航大学发起的一套软硬件开源无人机项目,它提供了一整套完整的无人机软硬件解决方案。

  • 使用c编写,libopencm3开源库
  • 代码规模较大,支持固定翼、多旋翼、小车等
  • 有完善的传感器融合算法和飞行模式控制应用
fprime

fprime是经过飞行验证的多平台开源飞行软件框架(一个组件驱动的框架),可以快速开发和部署太空飞行及其他嵌入式软件应用程序,美国首个火星飞行器即使用该软件框架。
实际上它不属于开源飞控,是一个软件框架,可以应用于无人平台中,也在美国太空设备中得到应用,证明它的可靠性。它本身没有飞行控制相关的代码算法,当然作为一个非常好的软件框架,大家可以往里面填充自己的算法和设备,实现一个飞控软件。
ardupilot(APM)/PX4

把这两个项目放在一起描述,因为它们是目前最为成熟完善的开源飞控项目,非常强大,且充满活力,相信大家都有一定了解了。
它们的共同点:

  • 不同于其它大部分开源飞控使用c开发,他们都主要使用c++开发,代码的封装比较复杂,理解上有一定的难度
  • 支持非常丰富的无人设备:多旋翼、固定翼、VTOL、小车、水下航行器、飞艇等等
  • 支持的硬件非常丰富,基本支持目前主流的开源飞控硬件
  • 都拥有非常丰富的软件包,传感器驱动、导航算法软件包、控制软件栈、仿真环境等等
  • 使用了一些相同的中间件软件:Mavlink、uavcan
它们本身有非常密切的关系,但是由于开源协议的不同(APM使用GPL-3,PX4使用BSD-3协议),两个项目目前处于独立开发状态。它们在源码框架上的一些不同:

  • 使用的RTOS不同:APM目前使用ChibiOS,而PX4使用Nuttx,当然他们都支持linux系统
  • 消息机制不同:PX4使用uORB的微消息代理机制进行任务间的数据传递和消息同步等,任务间耦合校低;APM的模块封装在libraries中的各个类模块中,在应用层(ArduCopter、ArduPlane、Rover等)通过实例化具体的类来完成具体的功能,比如传感器、EKF、位置控制、motor等模块,模块间的数据传递通过类的输入输出接口完成。
  • 任务框架不同:PX4的每个任务均运行在独立的task和工作队列中;APM的应用层自己实现了一个调度器(AP_Scheduler)
  • 代码框架的复杂程度上PX4会比APM复杂一些,模块的封装程度更高,在task、uorb、传感器的驱动封装上更为复杂一些,当然如果仅仅使用的话只要参考demo也能非常快的入门。
当然它们有很多的不同点,我个人认为PX4偏向于学院风格,而APM是应用风格,我更喜欢PX4的代码框架,后面的分享也会围绕PX4展开。
下一期分享将简单分析px4的代码架构。

这个博客转载自我个人的微信公众号,这里会不定期更新一些我整理的无人机相关知识和个人设计,欢迎添加关注。

32

主题

854

帖子

1696

积分

金牌飞友

Rank: 6Rank: 6

积分
1696
飞币
837
注册时间
2017-8-8
发表于 2022-10-25 05:42:39 | 显示全部楼层
PX4兼容性非常好,可以用在各种不同的机、车, 但也因为这个,搞得代码太极其复杂,要看懂代码太难了[捂脸]

37

主题

822

帖子

1624

积分

金牌飞友

Rank: 6Rank: 6

积分
1624
飞币
793
注册时间
2017-8-30
发表于 2022-10-25 05:48:36 | 显示全部楼层
学习一个系统框架完善的开源项目是一个提升自己的很好的方式,不是么[微笑]

38

主题

818

帖子

1612

积分

金牌飞友

Rank: 6Rank: 6

积分
1612
飞币
790
注册时间
2017-9-20
发表于 2022-10-25 05:55:10 | 显示全部楼层
自荐一下我最近开源的飞控系统 FMT, 采用基于模型的开发模式https://github.com/Firmament-Autopilot/FMT-Firmware

52

主题

818

帖子

1652

积分

金牌飞友

Rank: 6Rank: 6

积分
1652
飞币
825
注册时间
2017-9-5
发表于 2022-10-25 06:00:30 | 显示全部楼层
有关注你的项目,不过没有仔细研究过,后面详细阅读后再给大家推荐[大笑]

322

主题

356

帖子

1001

积分

金牌飞友

Rank: 6Rank: 6

积分
1001
飞币
643
注册时间
2017-8-2
发表于 2022-10-25 06:05:31 | 显示全部楼层
做过PX4小车吗,我的驱动需要50%的占空比停,大于50%的占空比前进,小于50%的占空比后退,但是选了小车的机架占空比可调节范围只有2.5%-10%

57

主题

795

帖子

1587

积分

金牌飞友

Rank: 6Rank: 6

积分
1587
飞币
790
注册时间
2017-8-20
发表于 2022-10-25 06:15:53 | 显示全部楼层
px4的pwm输出的是脉宽,不是占空比,你的这个需求需要修改px4的混控部分

365

主题

404

帖子

1134

积分

金牌飞友

Rank: 6Rank: 6

积分
1134
飞币
728
注册时间
2017-7-6
发表于 2022-10-25 06:23:16 | 显示全部楼层
大神,如何根据无人机重量修改它的悬停油门?
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表