写在前面
px4在1.7.3之后有2个稳定版本:1.8.0和1.8.1,其中1.8.0和1.8.1功能上没有什么不同,只不过是修复了几个bug。现分析1.8.1相比1.7.3的变化。
分析
迁移指南
The EKF2 estimator has been the standard for some time and supports flying with vision positioning systems indoors. Users of the LP estimator are advised to upgrade, as LPE is no longer supported/maintained.
扩展卡尔曼滤波器已经成为了室内定位系统的标配,如果你还在用LP估计器的话,我们建议你进行升级,因为我们以后将不再支持LP估计器。
扩展卡尔曼滤波器介绍:https://dev.px4.io/en/tutorials/tuning_the_ecl_ekf.html
Upgrading is advised to latest stable trough QGC.
我们建议你升级到最新稳定版本的QGC地面站。
升级地址:https://docs.px4.io/en/config/firmware.html
新版本的主要特性和改进
Fusion of Visual Inertial Odometry in EKF2 (video)
在扩展卡尔曼滤波器中融合进了视觉惯性里程计。
视觉惯性里程计介绍,类似SLAM :https://zhuanlan.zhihu.com/p/34995102
Interface for external Obstacle Avoidance systems (video)
(提供了)外部避障系统的借口。
Significantly improved performance on racing drones (users need to reconfigure, link)
显著提高了竞速无人机的表现(用户需要重新配置)。
重新配置的教程:https://docs.px4.io/en/config_mc/racer_setup.html
Improved filtering and reduced control latency
改善了滤波效果并降低了控制延迟。
Added Airmode
增加了air mode,当油门过低不足以控制飞行器时,air mode会暂时地增大油门。
air mode 参考:
https://www.youtube.com/watch?v=d2nRrVENEYM
Improved flight performance on VTOL (Tiltrotors, Tailsitters)
改善了垂直起降无人机的飞行表现
Support for building natively on Windows (link)
支持了在windows下的构建
Significant EKF2 improvements
Hardening of the estimator for situations where GPS accuracy is limited
improved sensor selection logic enabling simultaneous use of optical flow and GPS
Added the EKF2_MAG_TYPE parameter for environments with high magnetic interferences
扩展卡尔曼滤波器的显著提升:
对GPS精度受限的情况下的滤波器做了强化
改进了传感器使用逻辑,支持同时使用光流和GPS
针对强磁环境增加了EKF2_MAG_TYPE参数
Wind Estimator
风力估计
Support for structure scanning
支持环境扫描(应该是3D环境扫描传感器)
High Latency telemetry support (Iridium)
支持高延迟
Precision landing framework (including IRLock driver)
精确地着陆框架(包括IRLock传感器)
IRlock,一种红外摄像头:https://irlock.com/pages/useful-links
新支持的硬件
FMUv5: Pixhawk 4 and Pixhawk 4 mini from Holybro and Pixhack v5 from CUAV
Crazyflie 2.0 with optical flow deck
注:一种带光流的小型四旋翼
Omnibus F4 SD
注:一种为竞速无人机设计的飞控板
Snapdragon 8074 with VIO enabled (video, 820 support coming)
带有VIO的高通晓龙处理器8074(820即将支持)
IRLock sensor for precision landing
可以用于精确着陆的红外传感器IRLock
ST LPS22HB barometer driver
一种气压计
Analog devices IMUs (ADIS16477, ADIS16448)
一种IMU
TeraRanger Evo 600Hz support
一种轻型高性能距离传感器
依赖
QGroundControl v3.3.2
MAVLink (d8ea87b9c6173ad72a032219588e302eb8cb212a) https://github.com/mavlink/c_library_v2
Micro Air Vehicle Link是用于与小型无人驾驶车辆通信的协议。
UAVCAN
一种轻量级总线协议,旨在通过CAN总线在航空航天和机器人应用中实现可靠通信。
重要的改进
Manual flight mode for VTOL
垂直起降的手动模式
Battery estimation fixes and improvements
电池(电量)估计改善
Change Log
从 v1.7.3到 v1.8.1修复的Bug
v1.7.4 Beta Release
对所有的载具进行了性能和稳定性上的提升
v1.7.4beta
- 1.5.5 到 1.6.0rc1之间的版本,无法用pwm应用来测试输出
- 倾旋翼飞行器的特技模式油门没法拉满
- 用intel areo的时候笔记本地面站侦测不到气压计
- 在SITL模拟器中用QGC地面站做auto-takeoff的时候,起飞高度出错
- 用Logger的时候,出现手动控制丢失
- position mode1下,尾坐式垂直起降飞机在飞行过程中推力意外地下降
- 重新启动后,两个Dropix 中连接LSM303D的那个丢失
- 转换到手动模式之后vtol_att_control模块不运行了
- 做以下修改之后,读第二个GPS实例的时候崩溃。
- 在用intel aero的时候,电量估计初始化错误
- 把SDLOG_MODE 设为 2或1,并非所有的参数都被记录了
- 在 Pixhawk 3 pro上运行landing_target_estimator 的时候,Log文件会毁坏。
- px4fmu v2 sensor init (again) and cleanup
- px4fmu-v2 sensor reset
- land detector 只能用非零的 vehicle_status
- air_gnd_angle判定条件错误,永远不会返回大于M_PI_F的值,而且把pi/2写成了pi
- vtol_att update poll fd before poll call,解决「转换到手动模式之后vtol_att_control模块不运行了」
- 修复GPS报告其速度精度被阻止的问题
- 在PR aero上面电量估计初始化出错
- ekf2中的外部视觉旋转矩阵计算错误
- 将基于推力的负载补偿切换回了线性(本来是二次方,但经笔者测试线性更好)
- 用STIL测试的时候,在一些竞速比赛中,GPS会出问题。因此将GPS接收器检查用其他的检查取代。
- 在v1.6.2中用qGroundControl-3.1.3时,运行 fw_pos_control_l1 stop 导致崩溃。
- fix airspeed subscription and validity check修复空速不能很好地获得最新更新,导致时间戳一直为零的问题。
v1.8.0-beta1
- 用PX4FW v1.7.4做实验的时候发生了两次硬件故障,PX4重启了。开发人员最终认为这是由于开发者对代码进行的修改造成的,而不是PX4本身的问题。
- 尾坐式垂直起降飞机任务和position mode有问题,滚转角度没有按期望的那样跑,而是不停地再变号。
- 即使程序有很严重的警告,飞机的电机还是会启动。2
- 到设置点的跟踪效果不好,后来发现是MC_AIRMODE设的不对,应该设30Hz,但设成了0。
- 把子模块nuttx升到了最新版。
- 给fields_updated添加了压力的微分,为啥要加我没看懂。原问题
- 固定翼在着陆之前检查prev是否有效。
- 防止电池过放。
- 修复飞行检查前没有阻止电机启动。
- 将之前被注释掉的一行重新启用,这行没有在其他任何地方被使用。
- 传感器只发布空速,这导致了很多的连续积分错误(Continuous Integration failure)
- 改变了可能会导致不稳定手动飞行的截止频率,恢复d term过滤器。
- 修复代码分析工具coverity
- FW Phantom FPV Flying Wing fix FW_R_RMAX 0
v1.8.0-beta2
- 修复PX4 SITL catkin 构建失败
- 修复使用骁龙处理器崩溃的问题。
- 车辆在地面时,光流EKF2会漂移,且没有流量数据。——这不是Bug,这是小车质量太低导致的。
- fmuv2内置的HMC5883无法启动。
- 修复了工具链Cygwin 的一些字体问题。
- 解决了在服务器Jenkins运行时的栈溢出问题。
- 修复了航电设备能源检查的类型问题(原来是int,会把4.8V截成4V,现在改成了float就不会这样了。)
v1.8.0
- 修复了构建SITL的时候gazebo出现的报错。
- 修复了fmu_v5中NSH口某些命令会导致重启的问题。
- 修复了1.8.0beta无法和最新版本的QGC兼容的问题。
- Mac OS上终端的一些问题。
- 固定翼的EKF错误问题,这似乎是由于加速度计和陀螺仪校准问题导致的。
- 一次没有log的空难,这似乎是由于还没来得及log就坠毁了,开发者建议给自驾仪配备备用电池。
- 为变量设置模块名
- 用Jenkins服务器做测试的时候需要先删掉旧版本。
v1.8.1
- 改了一处弧度角度转换的Bug
- 修复了固定翼一节高度保持的bug。
- 修复看不到参数PWM_MAIN_REV 的问题
- cmake fix BUILD_URI
- tap_esc 增加堆栈大小
- 修复了一个空指针值引用Bug。
注释
什么是position模式?飞机的偏航滚转俯仰都被锁定,只允许操作者通过改变油门来改变高度,飞机的位置由GPS确定。 ↩︎