├── _config.yml
├── .gitbook
└── assets
│ ├── RUSH+.jpg
│ ├── RUSH.jpg
│ ├── hglrc.png
│ ├── image.png
│ ├── rush+.jpg
│ ├── rush.jpg
│ ├── DIATONE.png
│ ├── QRcode.png
│ ├── bf_logo.png
│ ├── diatone.png
│ ├── qrcode.png
│ ├── 小姜的赞赏码.jpg
│ ├── 真正的工匠精神.png
│ ├── AF-QRcode.jpg
│ ├── Gemfan乾丰模型.png
│ ├── af-qrcode.jpg
│ ├── hglrc-logo.jpg
│ ├── iflight-rc.jpg
│ ├── zadig-dfu.png
│ ├── flash-firmware.png
│ ├── identify_target.png
│ ├── Gemfan乾丰模型-small.png
│ ├── gemfan-qian-feng-mo-xing.png
│ ├── apply_custom_defaults_prompt.png
│ ├── font-uploader-does-not-work.jpg
│ ├── increase-d-min-and-normal-d.png
│ ├── xiao-jiang-de-zan-shang-ma.jpg
│ ├── gemfan-qian-feng-mo-xing-small.png
│ ├── zhen-zheng-de-gong-jiang-jing-shen.png
│ ├── RPMFILTER-dynamic_filter_4.1_settings.png
│ └── rpmfilter-dynamic_filter_4.1_settings.png
├── configuration
├── buzzer-mute-mode.md
├── mass-storage-device-msc-support.md
├── paralyze.md
├── supported-sensors.md
├── unified-targets-and-you.md
├── barometer-configuration-for-3.2.md
├── launch-control.md
├── 3d-setup.md
├── resource-remapping.md
├── gps-rescue-mode.md
└── led-strip-setup.md
├── serial-communication
└── serial-blackbox-logging-for-4.x.md
├── sponsors.md
├── pid-tuning-rates-and-filters
├── rate-calculator.md
├── integrated-yaw.md
├── feedforward-2.0.md
└── d_min.md
├── troubleshooting
├── dfu-hijacking.md
└── osd-font-upload-problem.md
├── receiver-hid
├── acro-trainer.md
└── arming-sequence-and-safety.md
├── motors-and-esc
├── esc-programming-pass-through.md
├── remapping-motors.md
└── bidirectional-dshot-and-rpm-filter.md
├── development
├── hardware-reference.md
└── flight-controller-design-resources.md
├── home.md
├── README.md
├── camera-vtx-and-osd
├── external-osd-mwosd.md
└── vtx-tables.md
├── getting-started
├── flying-tips.md
└── installation.md
├── release-notes
├── betaflight-4.1.md
├── betaflight-4.2.md
└── betaflight-4.0.md
├── SUMMARY.md
├── tuning-notes
├── betaflight-4.1.md
├── betaflight-4.2.md
└── betaflight-4.0.md
└── LICENSE
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-leap-day
--------------------------------------------------------------------------------
/.gitbook/assets/RUSH+.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/RUSH+.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/RUSH.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/RUSH.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/hglrc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/hglrc.png
--------------------------------------------------------------------------------
/.gitbook/assets/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/image.png
--------------------------------------------------------------------------------
/.gitbook/assets/rush+.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/rush+.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/rush.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/rush.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/DIATONE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/DIATONE.png
--------------------------------------------------------------------------------
/.gitbook/assets/QRcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/QRcode.png
--------------------------------------------------------------------------------
/.gitbook/assets/bf_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/bf_logo.png
--------------------------------------------------------------------------------
/.gitbook/assets/diatone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/diatone.png
--------------------------------------------------------------------------------
/.gitbook/assets/qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/qrcode.png
--------------------------------------------------------------------------------
/.gitbook/assets/小姜的赞赏码.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/小姜的赞赏码.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/真正的工匠精神.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/真正的工匠精神.png
--------------------------------------------------------------------------------
/.gitbook/assets/AF-QRcode.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/AF-QRcode.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/Gemfan乾丰模型.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/Gemfan乾丰模型.png
--------------------------------------------------------------------------------
/.gitbook/assets/af-qrcode.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/af-qrcode.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/hglrc-logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/hglrc-logo.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/iflight-rc.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/iflight-rc.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/zadig-dfu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/zadig-dfu.png
--------------------------------------------------------------------------------
/.gitbook/assets/flash-firmware.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/flash-firmware.png
--------------------------------------------------------------------------------
/.gitbook/assets/identify_target.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/identify_target.png
--------------------------------------------------------------------------------
/.gitbook/assets/Gemfan乾丰模型-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/Gemfan乾丰模型-small.png
--------------------------------------------------------------------------------
/.gitbook/assets/gemfan-qian-feng-mo-xing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/gemfan-qian-feng-mo-xing.png
--------------------------------------------------------------------------------
/.gitbook/assets/apply_custom_defaults_prompt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/apply_custom_defaults_prompt.png
--------------------------------------------------------------------------------
/.gitbook/assets/font-uploader-does-not-work.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/font-uploader-does-not-work.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/increase-d-min-and-normal-d.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/increase-d-min-and-normal-d.png
--------------------------------------------------------------------------------
/.gitbook/assets/xiao-jiang-de-zan-shang-ma.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/xiao-jiang-de-zan-shang-ma.jpg
--------------------------------------------------------------------------------
/.gitbook/assets/gemfan-qian-feng-mo-xing-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/gemfan-qian-feng-mo-xing-small.png
--------------------------------------------------------------------------------
/.gitbook/assets/zhen-zheng-de-gong-jiang-jing-shen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/zhen-zheng-de-gong-jiang-jing-shen.png
--------------------------------------------------------------------------------
/.gitbook/assets/RPMFILTER-dynamic_filter_4.1_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/RPMFILTER-dynamic_filter_4.1_settings.png
--------------------------------------------------------------------------------
/.gitbook/assets/rpmfilter-dynamic_filter_4.1_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pitronicteam/BF-wiki-in-Chinese/HEAD/.gitbook/assets/rpmfilter-dynamic_filter_4.1_settings.png
--------------------------------------------------------------------------------
/configuration/buzzer-mute-mode.md:
--------------------------------------------------------------------------------
1 | # 蜂鸣器静音模式
2 |
3 | 使用蜂鸣器静音模式,只要您不需要使用蜂鸣器,您就可以将蜂鸣器静音。
4 |
5 | 设置一个开关以激活蜂鸣器和停用蜂鸣器静音模式。我们可以在配置程序的“模式”选项卡中进行此操作。
6 |
7 | 例如:
8 |
9 | ```
10 | AUX5 < 1500 -> '蜂鸣器静音'激活, '蜂鸣器'被静音.
11 | AUX5 > 1500 -> '蜂鸣器静音'关闭, '蜂鸣器'不再静音.
12 | ```
13 |
--------------------------------------------------------------------------------
/configuration/mass-storage-device-msc-support.md:
--------------------------------------------------------------------------------
1 | # 大容量存储设备(MSC)支持
2 |
3 | 大容量存储设备模式允许将飞控板的Micro SD卡或闪存芯片以外部存储设备安装到您的PC上。这将可以非常轻松地拖动日志文件以将其下载。对于板载闪存芯片,这种下载方式比通过配置程序下载日志文件的“传统“方式要快得多。
4 |
5 | 大容量存储设备模式目前仅在F4/G4/F7/H7飞控板上可用。
6 |
7 | 要启用大容量存储设备模式,必须通过在CLI中输入`msc`,并键入回车键以将飞控板重启,才能进入大容量存储设备模式。在此之后,飞控将停止正常运行,只到它被重新上电并再次启动。
8 |
--------------------------------------------------------------------------------
/serial-communication/serial-blackbox-logging-for-4.x.md:
--------------------------------------------------------------------------------
1 | # 适用于4.x的串行黑盒日志记录
2 |
3 | **OpenLog已经不再是适用于4.0及更高版本的串行黑盒日志记录设备了。**
4 |
5 | 由于对日志记录条目数的无止境需求,以便得到更好、更多样化的飞行特性分析,串行黑盒记录设备所需要的带宽需求最终超过了230.4Kbps。这是OpenLog所支持的最快的输入速率。
6 |
7 | 对于4.0及更高版本,使用外置串行黑盒记录设备的用户必须使用通信速率更快的黑盒日志记录设备(**例如OpenLager**),并将波特率至少配置为1.5Mbps才能稳定记录。
8 |
9 | 请参阅[这里](https://github.com/betaflight/betaflight/issues/9043#issuecomment-544333986)以了解不同日志记录速率下的带宽要求。
10 |
--------------------------------------------------------------------------------
/sponsors.md:
--------------------------------------------------------------------------------
1 | ---
2 | description: BF wiki中文站的赞助商
3 | ---
4 |
5 | # 赞助商
6 |
7 | 下面是本站的赞助商广告、返修地址,感谢以下赞助商的倾情赞助!
8 |
9 | [](https://www.jahoooo.cn)  [](https://hglrc.taobao.com)
10 |
11 | ## 赞助商列表(以赞助起始时间顺序排序)
12 |
13 | * [DIATONE 大通创新](https://www.jahoooo.cn)
14 | * RUSHFPV 亦是科技
15 | * [HGLRC 化骨龙科技](https://hglrc.taobao.com)
16 |
--------------------------------------------------------------------------------
/pid-tuning-rates-and-filters/rate-calculator.md:
--------------------------------------------------------------------------------
1 | # Rate计算器
2 |
3 | Rate 计算器\
4 | [https://apocolipse.github.io/RotorPirates/](https://apocolipse.github.io/RotorPirates/)
5 |
6 | Betaflight Rates Tuner\
7 | [https://erikspen.github.io/betaflightratestuner](https://erikspen.github.io/betaflightratestuner)
8 |
9 | Actual Rates 计算器\
10 | [https://kmitchel.github.io/](https://kmitchel.github.io)
11 |
12 | Quick Rates 计算器\
13 | [https://illusionfpv.github.io/](https://illusionfpv.github.io)
14 |
--------------------------------------------------------------------------------
/configuration/paralyze.md:
--------------------------------------------------------------------------------
1 | # 瘫痪模式
2 |
3 | 在团队接力式竞赛中,由于赛道中一直都在进行比赛,所以要检修坠毁的飞机是不安全的。当主力飞机已坠毁在赛道内,而为了安全地飞行备用飞机时,必须执行以下操作:
4 |
5 | * 禁用解锁功能,以防止坠毁的飞机在备机起飞时意外解锁。当遥控器可以向所有已通电的接收机(例如FrSky ACCST D8/D16等)发送信号时,这尤其是个问题。
6 | * 将图传改为未被竞速所使用的通道,并切换到最低功率,以免干扰备机。
7 |
8 | Betaflight 3.5引入了一种称为瘫痪模式的新模式,该模式禁用了解锁功能。它只能在飞机未解锁时启用。瘫痪模式是一种粘滞模式,因为它一旦开启,就必须待到重新启动飞控后才能关闭。
9 |
10 | 为了调用它,该模式必须至少一次处于未启用状态,以防止在坠机后忘记将辅助开关拨回,从而导致备机也进入瘫痪模式。
11 |
12 | 瘫痪模式本身仅仅能禁用解锁。还需要将图传pitmode链接到该模式下。您可以在配置程序图形页面中实现,也可以通过下列CLI命令来实现:
13 |
14 | `aux 2 39 3 1700 2100 0 45`
15 |
16 | 辅助通道(上例中位2)和范围(上例中位1700-2100)无关紧要,因为命令39(图传pitmode启用命令)已链接到45(瘫痪模式)。每当激活45时,39也会被激活,因此pitmode可以和瘫痪模式一样粘滞。
17 |
18 | 请在配置程序图传表页面中设置pitmode频率,或您可以通过下列CLI命令来实现:
19 |
20 | `set vtx_pit_mode = 5917`
21 |
--------------------------------------------------------------------------------
/configuration/supported-sensors.md:
--------------------------------------------------------------------------------
1 | # 支持的传感器
2 |
3 | ### 简介
4 |
5 | 该页面是betaflight所支持的传感器的不完整列表。为了确保您的传感器是betaflight支持的传感器,请检查`src/main/drivers/drivers/accgyro`,`src/main/drivers/drivers/barometer`,`src/main/drivers/drivers/compass`,`src/main/drivers/drivers/rangeflinder`等目录。
6 |
7 | ### 磁力计
8 |
9 | * AK8975
10 | * AK8963
11 | * HMC5883I
12 | * QMC5883I
13 | * HMC5983
14 |
15 | ### 陀螺仪/加速度计
16 |
17 | * MPU3050
18 | * MPU6050
19 | * MPU6500
20 | * MPU6000
21 | * MPU9250
22 | * BMI160
23 | * BMI270
24 | * ICM20601
25 | * ICM20602
26 | * ICM20689
27 | * ICM40625
28 | * L3GD20
29 | * LSM6DSO(LSM6DSOX)
30 |
31 | ### 气压计
32 |
33 | * BMP085
34 | * BMP280
35 | * BME280
36 | * BMP388
37 | * QMP6988
38 | * MS5611
39 | * DSP310
40 |
41 | ### 测距仪
42 |
43 | * HCSR04
44 | * Benewake LIDAR TF02
45 | * Benewake LIDAR TFmini
46 |
--------------------------------------------------------------------------------
/pid-tuning-rates-and-filters/integrated-yaw.md:
--------------------------------------------------------------------------------
1 | # 整合式偏航控制
2 |
3 | ### 总览
4 |
5 | 整合偏航是一个用来解决四轴飞行器控制的基本问题的功能:Pitch/Roll由推力差来控制,而Yaw则不同。当电机的转速变化时,Yaw的变化主要是由于惯性引起的。在Yaw产生稳定的加速需要对角电机以稳定的速率增加/降低转速。
6 |
7 | 这就意味着在Yaw轴上,I的效果相当于P,而P的效果则相当于D。FF是一个控制元素,它会根据setpoint的移动速增加动力。\
8 | \
9 | 这导致了Yaw轴上的几个问题。通常来说,Yaw最初会以一个非常快的速度对输入信号做出反应,然后随着时间的推移输出信号将回落,并再次开始追赶输入信号。
10 |
11 | 整合偏航功能通过在将Yaw的PID输入到混控器之前对其进行积分以解决这个问题。这将使PID的工作方式正常化。您现在可以使用调整其他轴的经验来调整Yaw。由于整合偏航功能不需要I,它将需要使用绝对控制功能。
12 |
13 | ### 设置
14 |
15 | 以下是启用它的CLI命令:
16 |
17 | ```
18 | set use_integrated_yaw=on
19 | set iterm_rotation=off
20 | set abs_control_gain=10
21 | set p_yaw=30
22 | set d_yaw=20
23 | set i_yaw=0
24 | set f_yaw=60
25 | ```
26 |
27 | \
28 | 上述提供的PID仅供参考,您可能还需要再次调整它。请确保I是0或者是一个非常低的值,因为I将带来严重的震荡。同时可能会需要再次对Pitch和Roll的PIDF进行微调。
29 |
30 | 需要注意的是:
31 |
32 | I再也没有了,或许它不再有意义了,但是在过去,CLI命令`set iterm_relax=RPY`是强制性的。
33 |
--------------------------------------------------------------------------------
/troubleshooting/dfu-hijacking.md:
--------------------------------------------------------------------------------
1 | # DFU劫持
2 |
3 | ### 介绍
4 |
5 | 如果您的飞控板无法进入DFU模式
6 |
7 | * 即使您120%保证已经安装了正确的驱动程序,以及使用了完好的计算机硬件(包括USB线缆),或者
8 | * 即使您可以用您的计算机给其他飞控板刷写固件,或者
9 | * 在某些特殊条件下,飞控板会间歇性地进入DFU模式
10 |
11 | 那么此页面将解释这些现象的原因,并为您提供解决方法。
12 |
13 | ### 什么是DFU劫持?
14 |
15 | STM32系列MCU处于bootloader模式下时,会从多个不同的外设(包括USB VCP和UART)中寻找输入信号。如果有一个闲置设备连接到UART并发送了看起来像那么回事的有效信息,那么bootloader将专注于此UART端口,并尝试从UART端口加载固件。换句话说,闲置设备**劫持**了bootloader。
16 |
17 | ### 可能的解决方法
18 |
19 | 防止健谈的外设劫持DFU的变通方法如下:
20 |
21 | 1. 通过断开外设供电或在刷写时物理断开来关闭此外设。当仅连接USB时,使用USB供电无法触及的电源焊盘供外设使用是另一种替代方法。
22 | 2. 在重新上电之后,许多接收机只有在第一次对频(连接)到遥控器后才会发送有效的输出数据。在给此类接收机供电之前,请先关闭遥控器,以防止劫持。
23 | 3. 使用半双工协议,并使用TX引脚与外设相连。由于bootloader不会打开半双工模式,而是仅仅侦测RX引脚,因此在TX引脚上接受到的数据内容不会引起DFU劫持。
24 | 4. 避免将外设连接到bootloader对其敏感的UART端口上。F4上对bootloader相对敏感的UART端口是PA10、PB11和PC11。CLracingF4(JBF4)的UART1(PA10)和UART3(PB11)属于此类敏感端口。精心设计的飞控应当避免将bootloader敏感的UART端口设置为接收机默认端口。
25 |
--------------------------------------------------------------------------------
/receiver-hid/acro-trainer.md:
--------------------------------------------------------------------------------
1 | # 手动训练模式
2 |
3 | 为正在学习手动模式飞行的飞行员添加了新的角度限制模式。这主要针对正在入门的目视手动飞行员,但也可以在FPV中使用。
4 |
5 | 该功能通过名为“训练模式”的新模式激活。启用该功能后,飞行器将以普通的手动模式飞行,但会限制Pitch/Roll以使其不超过预配置的角度限制。新入门的飞行员可以从较小的角度限制开始练习,并随着熟练度的提高而逐渐增大角度限制。
6 |
7 | **必须启用加速度计才能使用和配置该功能。**
8 |
9 | 此外,此功能仅在手动模式下有效,如果使用自稳或半自稳模式,该功能将禁用。
10 |
11 | 对于大多数用户而言,需要做的只有非常简单地在配置器的“模式”选项卡中将该模式配置为激活状态,然后在CLI中配置所需要的限制角度。
12 |
13 | 配置参数:
14 |
15 | `acro_trainer_angle_limit`: **(范围10-80) 单位为度。**角度限制。
16 |
17 | `acro_trainer_lookahead_ms`: **(范围10-200) 单位为毫秒。**如果以较高角速度接近角度上限,飞控将“提前”调角速度以最小化过冲和反弹。默认值50应该适合大多数用户。对于较弱动力或响应性较差的飞行器(空心杯和小轴距无刷)来说,如果您看到在角度限制附近产生了较大的过冲,那么增大此值可能会帮助飞控抑制过冲。
18 |
19 | `acro_trainer_debug_axis`: **(Pitch, Roll)**。如果已激活调试模式,则此命令用于配置黑盒记录哪一轴的信息。
20 |
21 | `acro_trainer_gain`: **(范围25-255)**。角度限制强度。较高的值可以减少过冲,但也可能导致在角度上限附近产生震荡。默认值75适用于绝大多数情况。
22 |
23 | 若要记录黑盒日志以调试此功能,请输入s`et debug_mode = ACRO_TRAINER`
24 |
25 | * debug(0) -当前角度
26 | * debug(1) -内部逻辑状态
27 | * debug(2) -修改后的setpoint
28 | * debug(3) -基于陀螺仪与超前周期预测的角度
29 |
30 | 请注意,PID控制器中的功能或实际计算没有被更改。此功能仅在Pitch轴和Roll轴上读取飞行员的setpoint,并对其进行调整以防止角度超出配置的角度限制。
31 |
--------------------------------------------------------------------------------
/motors-and-esc/esc-programming-pass-through.md:
--------------------------------------------------------------------------------
1 | # 电调编程透传
2 |
3 | ### Betaflight BLHeli 电调透传
4 |
5 | 1. 将飞控连接到电脑并记下COM端口号
6 | 2. 打开BLHeliSuite,选择通信端口,并单击Connect
7 | 3. 在“Select ATMEL/SILABS Interface”菜单中选择“SILABS BLHeli Botloader(Cleanflight)”
8 | 4. 为电调通电
9 | 5. 单击“Read Settings”
10 |
11 | 现在可以更改电调设置或烧录新的固件了。
12 |
13 | ### Betaflight KISS 电调透传
14 |
15 | Betaflight 3.1中的新功能允许您直接连接到KISS Flash Loader程序来烧写KISS电调。
16 |
17 | 注意:目前并不是所有飞控均支持该功能。
18 |
19 | Flash Loader是一个Chrome应用程序,必须在启用了“开发人员模式”的情况下,在扩展程序中进行安装。
20 |
21 | 您并不能直接在Flash Loader应用程序中直接开启透传,而是需要在CLI中通过命令启用透传协议。
22 |
23 | KISSESC_flashloader可以在[第一篇Dshot线程](https://www.rcgroups.com/forums/showthread.php?2756129-Dshot-testing-a-new-digital-parallel-ESC-throttle-signal)的附件中找到。
24 |
25 | 1号电调的命令:escprog ki 1
26 |
27 | 2号电调的命令:escprog ki 2
28 |
29 | 同时对四个电调进行操作的命令:escprog ki 255
30 |
31 | 操作步骤非常简单:
32 |
33 | * 在CLI中输入上述命令,然后点击“断开连接”按钮
34 | * 转到KISS Flash Loader应用程序,并选择要连接的COM口
35 | * 选择 USB-uart
36 | * 选择Dshot hex文件进行烧写
37 | * 您可以启用快速bootloader开关以加速烧写。有些人报告说快速模式无法工作,所以当遇到这种情况时,则建议关闭快速bootloader
38 | * 给电调上电。在此步之前不要给电调上电
39 | * 按下Flash按钮,然后你将会看到电调上的LED开始闪烁
40 | * 拔下电池和USB线,现在你可以使用Dshot了
41 |
42 | 如果上述命令不起作用,则证明电调透传协议尚未编译进飞控固件。
43 |
44 | ### 当您在工作台插上电池进行测试或烧写电调固件、校准或打开配置程序时,应该始终使用限流保护器!
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/development/hardware-reference.md:
--------------------------------------------------------------------------------
1 | # 硬件参考
2 |
3 | ### 简介
4 |
5 | 该页面为硬件开发者提供了未来的飞控板的细节,以确保与Betaflight的最大兼容性。
6 |
7 | ### 目标维护
8 |
9 | 硬件开发人员负责在Betaflight中开发和维护他们的目标。目标文件应该尽可能地与主代码相互分开,以便于实现易维护性。
10 |
11 | ### 添加新目标
12 |
13 | 如果您要添加新的飞控目标,那么:
14 |
15 | 1. 对`master`分支提交PR
16 | 2. 不要更改`travis.yml`或`fake_travis_build.sh`文件——这些只是用来检查PR并尝试编译固件的一个子集
17 | 3. 向wiki添加一个描述页面,用以描述飞控板并提供至少一个供应商的链接。
18 |
19 | ### 硬件
20 |
21 | #### MPU(SPI和I2C)
22 |
23 | #### MPU中断
24 |
25 | #### 黑盒芯片
26 |
27 | #### 单片机
28 |
29 | 数据手册/参考手册的摘录,涵盖了可能的引脚、定时器、DMA分配:
30 |
31 | * [STM32F3](https://github.com/betaflight/betaflight/wiki/reference/stm/stm32f3\_pins_timers_dma.pdf)
32 | * [STM32F405](https://github.com/betaflight/betaflight/wiki/reference/stm/stm32f405\_pins_timers_dma.pdf)
33 | * [STM32F411](https://github.com/betaflight/betaflight/wiki/reference/stm/stm32f411\_pins_timers_dma.pdf)
34 | * [STM32F722](https://github.com/betaflight/betaflight/wiki/reference/stm/stm32f722\_pins_timers_dma.pdf)
35 | * [STM32F745](https://github.com/betaflight/betaflight/wiki/reference/stm/stm32f745\_pins_timers_dma.pdf)
36 | * [STM32H743](https://github.com/betaflight/betaflight/wiki/reference/stm/stm32h743\_pins.pdf)(仅含引脚)
37 |
38 | ### 协议
39 |
40 | #### 遥测
41 |
42 | [IBus 遥测规范](https://github.com/betaflight/betaflight/wiki/Ibus-telemetry)
43 |
44 | 、
45 |
--------------------------------------------------------------------------------
/home.md:
--------------------------------------------------------------------------------
1 | # 导航
2 |
3 | ### 介绍
4 |
5 | Betaflight是一个开发源代码的飞行控制软件,可向所有用户免费提供。
6 |
7 | Betaflight是由BorisB启动的Cleanflight分支项目。它曾经被用作Cleanflight的beta测试平台,并不断提高性能,但最终它被各种开发人员发展成为完全成熟、稳定且维护良好的固件。实际上,根据2017年1月左右的Google趋势分析,它已是开源多旋翼飞行器固件排行榜的第一名。
8 |
9 | “beta”名称来源于它的目标:不断尝试新事物并快速而优雅地提供简单可用的测试版本。“beta”一直存在,当它从测试转换为稳定版的那一刻起就很强大,因为此时已有非常丰富的周边文档。
10 |
11 | “该项目还有助于为iNav等其他开源项目做出贡献。” - Boris B(首席开发人员)如是说道。
12 |
13 | ### 固件版本
14 |
15 | 可以在[这里](https://github.com/betaflight/betaflight/releases)找到固件发行版,或从配置程序内下载。还应检查右侧的“升级列表”,以获取发行说明和各个版本上的其他详细信息。
16 |
17 | _**警告:这是测试版!**_\
18 | 如果您想为开发做出贡献,可从[Betaflight生成服务器](https://ci.betaflight.tech/job/Betaflight/)直接下载最新的内测版本。
19 |
20 | 您还可以在[此处](https://github.com/betaflight/betaflight/milestones)找到版本发布计划。
21 |
22 | ### 配置工具
23 |
24 | 要配置Betaflight,您可以从[这里](https://github.com/betaflight/betaflight-configurator/releases)下载并安装使用Betaflight配置程序。
25 |
26 | ### 黑盒日志查看器
27 |
28 | 黑盒日志查看器的发布页面在[这里](https://github.com/betaflight/blackbox-log-viewer/releases)。
29 |
30 | 使用黑盒日志查看器的相关说明,请参阅黑盒日志和用法Wiki页面。
31 |
32 | ### 提供反馈并为该项目作出贡献
33 |
34 | 访问[Betaflight RCgroup讨论帖](http://www.rcgroups.com/forums/showthread.php?t=2464844)以参与讨论。
35 |
36 | 如果您觉得Betaflight对您非常有用,请考虑资金资助Betaflight开发团队:
37 |
38 | [](https://paypal.me/betaflight)
39 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # BF wiki 中文站
2 |
3 | ## 欢迎来到Betaflight Wiki中文站!
4 |
5 | 
6 |
7 | 本站全部内容均在GitHub以markdown文本形式,在GPL3.0下开源发布。项目地址[在这里](https://github.com/AirFleetTeam/BF-wiki-in-Chinese),欢迎贡献。
8 |
9 | ### 相关链接
10 |
11 | * Blackbox Mate黑盒伴侣:[https://bbm.pitronic.top](https://bbm.pitronic.top)
12 | * Flowbox文档:[https://pitronic.gitbook.io/flowbox-doc](https://pitronic.gitbook.io/flowbox-doc)
13 |
14 | ### 为什么
15 |
16 | 设立本站的目的是:
17 |
18 | * 破除语言障碍,自由学习并探索Betaflight的内在原理
19 | * 寻找潜在的优质贡献者
20 | * 防止诸位中文玩家迷路
21 |
22 | **强烈建议您收藏本站!**
23 |
24 | ### 使用指南
25 |
26 | 右上角有搜索框,您可以使用搜索框来搜索您感兴趣的内容。
27 |
28 | 如果某个内容在官方wiki上有而在这里没有:
29 |
30 | * 该篇中文wiki正在调整排版马上发布,可以移步Pitronic公众号查看
31 | * 该篇wiki过于陈旧,已不具有任何参考价值
32 | * 该篇wiki尚未翻译完成
33 |
34 | ### 贡献与维护
35 |
36 | 本站由Betaflight翻译团队成员市民姜先生([DusKing1](https://github.com/DusKing1))及Pitronic([PitronicTeam](https://github.com/pitronicteam))维护,并得到了Betaflight核心团队的支持。欢迎关注微信公众号Pitronic,旨在帮助有能力的中文玩家成为“大神”,商业合作请后台留言。
37 |
38 | 
39 |
40 | 本站的大部分内容的初稿都是由市民姜先生独立完成的,如果您很欣赏他的能力,并觉得他的翻译工作对您有帮助,请考虑打赏以支持其工作。
41 |
42 | 
43 |
44 |
45 |
46 | ### 赞助商
47 |
48 | 感谢我们的赞助商为我们提供的工作动力。更多信息请访问[赞助商页面](sponsors.md)。
49 |
50 | [](https://www.jahoooo.cn) [ ](https://hglrc.taobao.com)
51 |
52 | 想成为本站赞助商?微信公众号后台留言即可。
53 |
54 |
--------------------------------------------------------------------------------
/camera-vtx-and-osd/external-osd-mwosd.md:
--------------------------------------------------------------------------------
1 | # 外部OSD / MWOSD
2 |
3 | 本指南适用于没有板载OSD和/或希望使用外挂OSD的用户。
4 |
5 | ### 标准的MWOSD安装和配置
6 |
7 | #### 关于这种模式:
8 |
9 | * MWOSD从FC请求原始数据,处理成人类可读的样式并显示出来
10 | * 屏幕布局和显示羡慕有MWOSD GUI配置程序来配置
11 |
12 | #### MWOSD配置
13 |
14 | * MWOSD安装指南等可从MWOSD的wiki中找到
15 | * 建议从MWOSD GUI 配置程序中安装最新固件
16 | * 1.7及以后的版本中支持betaflight启用CMS菜单
17 | * 如果您正在编译您自己的MWOSD固件,请确保`CANVAS_SUPPORT`已被编译
18 |
19 | #### FC配置
20 |
21 | * Betaflight 3.1及以后的绝大多数F3、F4和F7固件中都启用了CMS
22 | * 应在betaflight 配置程序中禁用OSD
23 | * 必须在与OSD相连接的UART上启用MSP
24 | * 波特率必须与OSD相匹配。通常应为115000
25 |
26 | 如果您正在编译您自己的betaflight飞控固件:
27 |
28 | * 必须启用`CMS`和`USE_MSP_DISPLAYPORT`或其等效选项
29 | * 如果要控制某一功能,应在配置中启用
30 |
31 | #### 激活菜单
32 |
33 | * Betaflight的CMS菜单激活方法是`油门归中+偏航打左+俯仰最大`
34 | * MWOSD的CMS菜单激活方法是`油门归中+偏航打右+俯仰最大`
35 |
36 | ### 非标OSD的DISPLAYPORT安装和配置
37 |
38 | #### 关于这种模式:
39 |
40 | * MWOSD的行为怪异,并将显示由飞控生成的屏幕
41 | * OSD布局需要在Betaflight配置程序中的OSD选项卡中配置
42 |
43 | 限制:
44 |
45 | * 屏幕的更新速率将比标准安装方式慢
46 | * 如果需要此模式,请向MWOSD团队提出请求。需要少量的开发工作以解决屏幕闪烁的问题
47 |
48 | 在DISPLAYPORT方式下使用:
49 |
50 | * 安装最新的MWOSD固件
51 | * 仔细阅读FC fonts文档,并使用MWOSD GUI 配置程序将其安装到OSD上。使用MWOSD原生字库将会导致字符显示怪异
52 | * 应在Betaflight 配置程序中启用OSD
53 |
54 | 如果您正在使用您自己编译的betaflight固件:
55 |
56 | * 编译时使用附加选项。例如`OPTIONS=OSD USE_OSD_OVER_MSPDISPLAYPORT REVOLT`
57 | * 这将启用OSD选项卡和完整的DISPLAYPORT支持
58 |
59 | 另请参阅: [CMS adjustment](https://github.com/betaflight/betaflight/wiki/OSD-and-CMS-Adjusting-Screen)
60 |
--------------------------------------------------------------------------------
/getting-started/flying-tips.md:
--------------------------------------------------------------------------------
1 | # 飞行技巧
2 |
3 | ## 介绍
4 |
5 | 这是分享Betaflight相关飞行技巧或完整教程的中心,对于新手和高级飞行员而言都是无价之宝。
6 |
7 | ## 内容
8 |
9 | 1. [如何在手动模式下以FPV视角操纵多轴飞行器](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/getting-started/fei-hang-ji-qiao#ru-he-zai-shou-dong-mo-shi-xia-yi-fpv-shi-jiao-cao-zong-duo-zhou-fei-hang-qi)
10 | 2. [在手动模式下如何协调转弯](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/getting-started/fei-hang-ji-qiao#zai-shou-dong-mo-shi-xia-xie-tiao-zhuan-wan)
11 | 3. [如何以FPV视角操纵多轴飞行器](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/getting-started/fei-hang-ji-qiao#ru-he-yi-fpv-shi-jiao-cao-zong-duo-zhou-fei-hang-qi)
12 |
13 | ## 如何在手动模式下以FPV视角操纵多轴飞行器
14 |
15 | Joshua·Bardwell的27课系列非常出色,他使用了免费的FPV Freerider模拟器来教一个初学者如何以手动(姿态不会自动调平)模式来以FPV视角操纵多轴飞行器。对于那些希望从自稳/半自稳模式转换为手动模式的人来说,这是一个很好的学习资源。
16 |
17 | [http://www.youtube.com/playlist?list=PLwoDb7WF6c8kjYXam4m3msvRbkORU41GY](http://www.youtube.com/playlist?list=PLwoDb7WF6c8kjYXam4m3msvRbkORU41GY)"
18 |
19 | ## 在手动模式下协调转弯
20 |
21 | 在自稳模式(角度模式或水平模式)下,飞控会尝试维持与摇杆移动位置成比例的固定姿态角。在手动模式下,此辅助功能不存在,飞行员需要自行补偿。该视频说明了如何在飞行中实现这一目标。
22 |
23 | [http://www.youtube.com/watch?v=-qYXVXiHGFA](http://www.youtube.com/watch?v=-qYXVXiHGFA)
24 |
25 | ## 如何以FPV视角操纵多轴飞行器
26 |
27 | JackFPV是一个新手,但他的学习速度很快。请随着他的FPV系列视频,让他来教我们如何在Liftoff模拟器和现实中飞行。
28 |
29 | [http://www.youtube.com/playlist?list=PLXWuhwtHmw1w9G6j3P1Y2ZLRiiLqmFe2B](http://www.youtube.com/playlist?list=PLXWuhwtHmw1w9G6j3P1Y2ZLRiiLqmFe2B)
30 |
--------------------------------------------------------------------------------
/troubleshooting/osd-font-upload-problem.md:
--------------------------------------------------------------------------------
1 | # OSD字体上传问题
2 |
3 | **无法更改OSD字体?**
4 |
5 | ### 描述
6 |
7 | 通过Betaflight配置程序字体上传功能在某些飞控板上似乎不起作用。
8 |
9 | 
10 |
11 | 无论您上传字体多少次,OSD仍显示默认字体。
12 |
13 | ### 解决方案
14 |
15 | 您需要插入电池,以使该功能正常工作(请一定要移除螺旋桨!)。先插入电池,然后连接USB。
16 |
17 | ### 最可能的原因
18 |
19 | 当仅连接USB时,某些飞控板无法为OSD芯片正确供电(或者根本无法供电)。OSD字体存储在OSD芯片内部,因此必须通电,并与飞控板的其余部分通信,这样才能更新字体。
20 |
21 | ### 相关飞控板
22 |
23 | 已知下列飞控存在字体上传问题
24 |
25 |
26 |
27 | | 飞控板名称 | 飞控目标名 | OSD芯片 | 插入电池就能解决这个问题吗? | 产品网址 |
28 | | -------------------------- | ------------- | ----- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
29 | | DAL RC F405 AIO | DALRCF405 | 不适用 | 是 | [dalrc](http://www.dalrc.cn/DALRC/plus/view.php?aid=186) |
30 | | DAL RC F722Dual | DALRCF722DUAL | 不适用 | 是 | |
31 | | Diatone Mamba F405 Mini FC | FURYF4OSD | 不适用 | 是 | [diatone](https://www.diatoneusa.com/store/p574/MAMBA_F405\_Mini_Betaflight_Flight_Controller_F25\_25A\_2\_4S_DSHOT600\_FPV_Racing_Brushless_ESC.html) |
32 |
33 | ### 资源
34 |
35 | [参考链接](https://github.com/betaflight/betaflight-configurator/issues/1301)
36 |
--------------------------------------------------------------------------------
/configuration/unified-targets-and-you.md:
--------------------------------------------------------------------------------
1 | # 统一目标与您
2 |
3 | * 确定要使用的飞控目标。\
4 | 
5 |
6 | CLI获取飞控目标名称的另一种方法。
7 |
8 | ```
9 | # version
10 | # Betaflight / STM32F405 (S405) 4.1.0 Oct 16 2019 / 11:57:16 (c37a7c91a) MSP API: 1.42
11 | # manufacturer_id: HBRO board_name: KAKUTEF4V2 custom defaults: YES
12 | ```
13 |
14 | 是的,芯片说它自己是STM32F405,但这并不意味着整张飞控板也叫这个名字。检查目标名称(target)
15 |
16 | * 选择你的目标
17 |
18 | ```
19 | MATEKF411 (MTKS) <-- 统一目标
20 | MATEKF411 (Legacy)
21 | ```
22 |
23 | 常见问题:这四个字母是什么意思?他们指的是飞控板的制造商,该列表可在[生产制造商列表](https://github.com/betaflight/unified-targets/blob/master/Manufacturers.md)中找到。
24 |
25 | 提示:记得在刷入新版本固件之前保存备份您的配置,比如使用`diff`
26 |
27 | * 点击`从网络加载固件`然后点击`烧写固件`
28 | * 连接到配置程序,在出现下图时点击`应用自定义默认配置`:\
29 | 
30 |
31 | 如果您在使用统一目标时遇到问题,请尝试使用旧版飞控目标,如果统一目标缺少应有的任何内容,请在[这里](https://github.com/betaflight/betaflight/issues)提交报告。
32 |
33 | 待办事项:例如,那个目标?还需要一些图片。
34 |
35 | ### 使用统一目标的提示
36 |
37 | #### 使用固件
38 |
39 | 将统一目标代码仓库副本保存到您的本地计算机上,下面将使用`MTKS-MATEKF411.config`作为样例。
40 |
41 | 在文本编辑器中打开文件,然后查看第一行。
42 |
43 | > \# Betaflight / **STM32F411** (S411) 4.1.0 Jun 25 2019 / 10:27:57 (2a6e94d03) MSP API: 1.42
44 |
45 | 在这种情况下,使用的处理器是`STM32F411`,因此在编译目标时要使用`make TARGET=STM32F411`
46 |
47 | #### 与配置程序搭配使用并烧录
48 |
49 | 首先在配置程序中加载`.config`文件,然后加载`betaflight_4.x.x_STM32F411.hex`,然后烧写固件。在第一次连接时,系统将提示您应用自定义默认配置,就像常规的烧写过程一样。
50 |
51 | #### make_config_hex.sh
52 |
53 | make_config_hex.sh是位于src/utils下的脚本,额可用于将统一目标配置与固件结合在一起。组合后的.hex可与使用同一飞控板的其他用户相互分享。使用组合.hex的用户会像正常烧录一样 ,出现应用自定义默认配置的提示。
54 |
55 | `srec_cat`程序是[srecord](http://srecord.sourceforge.net)的一部分,它可以在ubuntu中的Universe下使用。\
56 | `apt install srecord`
57 |
58 | 似乎无法在Windows下使用这个程序,但确实有适用于windows的使用说明
59 |
60 | 请参阅[这里](https://github.com/betaflight/betaflight/blob/master/src/utils/make_config_hex.sh)以获取更多信息
61 |
--------------------------------------------------------------------------------
/configuration/barometer-configuration-for-3.2.md:
--------------------------------------------------------------------------------
1 | # 气压计配置
2 |
3 | ### 介绍
4 |
5 | 在3.2中,气压计驱动被转换为完全可配置/可重新配置的形式。
6 |
7 | 这样做的副作用便是,target.h中相关宏定义的解释方式发生了很大的变化,我们已经采取了相关措施保证其向后兼容性,但在某些情况下,某些使用气压计的配置可能无法再3.2上正常使用。
8 |
9 | 此页面解释了使气压计恢复到正常工作状态的相关的CLI变量/命令,以及飞控目标维护者所需的默认配置的更改。
10 |
11 | ### 使用CLI配置气压计
12 |
13 | * 与气压计相关的CLI变量
14 |
15 | | 变量 | `范围` | `描述` |
16 | | ----------------- | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
17 | | `baro_bustype` | `NONE`,`I2C`,`SPI` | 指定所选气压计设备的总线类型 |
18 | | `baro_i2c_device` | `0`\~MCU的最大I2C总线地址(起始为`1`,与`target.h`中的`I2Cx`中的`x`定义相同) | 指定该设备在I2C总线上的坐标。仅当`baro_bustype`为`I2C`时有效。`0`表示“无” |
19 | | `_i2c_address` | `0`\~`199`(0x77) | 设备的七位I2C地址值。`0`是一个特殊值,用于指定“_驱动设备默认地址_”。当值为`1`\~`7`时地址无效且行为不可预测。 |
20 | | `baro_spi_device` | `0`\~MCU的最大SPI总线地址(起始为`1`,与`target.h`中的`SPIx`中的`x`定义相同) | 指定该设备在SPI总线上的坐标。仅当`baro_bustype`为`SPI`时有效。`0`表示“无” |
21 | | `baro_hardware` | `NONE`,`AUTO`,`BMP280`,`MS5611`,`BMP055` |
NONE=禁用气压计支持
AUTO=固件将根据预定义的规则来确定气压计设备。
BMP280,MS5611&BMP085=明确使用指定的设备驱动
|
22 |
23 | * 如果设备是通过SPI连接的,则可以使用CLI命令resource来指定CS(片选)引脚
24 |
25 | | 资源名称(resource name) | 描述 |
26 | | ------------------- | ------------------------- |
27 | | `BARO_CS` | 指定用于开启SPI总线上的气压计的CS(片选)引脚 |
28 |
29 | * 请注意,并非所有总线类型和设备的组合都是针对某个特定飞控目标而内置好的
30 | * 如果使用`baro_hardware = AUTO`,`baro_bustype = I2C`和`baro_i2c_address = 0`的组合将会使得飞控在I2C类型气压计设备上按照`BMP280`,`MS5611`和`BMP085`的顺序循环扫描`baro_i2c_device`。
31 |
32 |
--------------------------------------------------------------------------------
/release-notes/betaflight-4.1.md:
--------------------------------------------------------------------------------
1 | # Betaflight 4.1
2 |
3 | **我们已经迟到了,所以让我们长话短说!**
4 |
5 | 如您所料,我们在此版本中添加了许多新的功能、新的改进以及对许多新目标的支持。
6 |
7 | 有关新功能的详细列表请参照下文。
8 |
9 | 为确保您已安装最新版本的固件,请访问[此页面](https://github.com/betaflight/betaflight-configurator/releases)并确保您已安装最新版本的Betaflight配置器,**然后再更新固件**。
10 |
11 | 为了充分发挥飞行性能,得到全部的性能提升,请阅读此[调参技巧](../tuning-notes/betaflight-4.1.md)。
12 |
13 | 如果您从较早版本的Betaflight升级而来,请阅读以下部分,其中包含了您可能需要在配置器中更改的选项列表。
14 |
15 | 我们已尽力使此版本没有错误。如果您仍然发现了一些错误,请在Github代码库内打开一个[issue](https://github.com/betaflight/betaflight/issues)向我们报告。
16 |
17 | **祝您玩的开心**\
18 |
19 |
20 | ### **升级时需要注意的重要信息**
21 |
22 | * Betaflight 4.1对下载和安装固件的方式做出了根本性的变更。而最新版本的[Betaflight配置程序](https://github.com/betaflight/betaflight-configurator/releases)10.6.0中包含了用于支持此功能所需的更改。**因此,重要的事是您必须更新到10.6.0或更高版本(安装说明**[**在这里**](https://github.com/betaflight/betaflight-configurator#installation)**),以获得最新版本固件的安装程序。**
23 | * [黑盒日志查看器](https://github.com/betaflight/blackbox-log-viewer/releases)将更新到3.4.0,以搭配Betaflight4.1固件一起使用(安装说明[在这里](https://github.com/betaflight/blackbox-log-viewer#installation))。
24 | * 适用于遥控器的[Betaflight Lua脚本](https://github.com/betaflight/betaflight-tx-lua-scripts/releases)版本将更新到1.4.0,其中包括了Betaflight 4.1附带的更改(安装说明[在这里](https://github.com/betaflight/betaflight-tx-lua-scripts#installing))。
25 | * 双向Dshot(基于RPM回传的滤波器组)已得到改进,现在可用于BLHeli\_32(32.7+)和BLHeli_S硬件(刷写JESC固件)。请使用《双向Dshot和RPM滤波器》进行设置
26 | * 如您所料,这里有Betaflight详细的[调参技巧](../tuning-notes/betaflight-4.1.md)。请搭配调参技巧,或使用Betaflight配置器10.6.0中新的调参滑块来调整参数。**请不要直接粘贴早期固件中的参数配置。**一些默认参数已经更改,并且某些参数将以不同的方式参与控制,因此旧的参数设置无法在Betaflight 4.1中正常使用。
27 | * 已经引入可以全配置的图传控制组件([图传表](http://mp.weixin.qq.com/s?\__biz=Mzg4OTAzNzM5MA==\&mid=2247484653\&idx=1\&sn=1d0ad0e942dc6c72aa7544623f1832f7\&chksm=cff0b3ccf8873adae06185c0715ed8dea7412f132eb56f2ce7c319aebd21f739b93a685b3ff5\&scene=21#wechat_redirect))。现在在刷新固件之后,若想通过Betaflight来控制图传,您必须加载适用于图传的符合您所在国家/地区法律法规的图传表配置。从10.6.0开始,配置器将支持从文件加载图传表。请检阅Github上的文档(《图传表》)来获取有关如何查找合适的图传表,和安装图传表的说明。
28 | * 我们对OSD字体进行了一些优化,并对一些字符进行了改进。为了在Betaflight 4.1上获得能够正常工作的字体,您需要将OSD的字库升级到最新版本(在10.6.0或更新版本的配置器中可用)。
29 | * 正如之前所宣布的那样,Betaflight 4.1删除了对F3飞控的支持。
30 |
31 | ### **主要功能**
32 |
33 | * 改进了的全新的前馈2.0
34 | * 重写了双向Dshot协议
35 | * 使用RPM回传进行动态怠速管理
36 | * 完全可配置的图传控制功能——图传表\
37 |
38 |
39 | ### **次要功能**
40 |
41 | * 支持Spektrum SRXL2串行协议
42 | * 支持向特定飞控导入自定义默认值
43 | * 支持任意陀螺仪与磁力计对齐
44 |
--------------------------------------------------------------------------------
/motors-and-esc/remapping-motors.md:
--------------------------------------------------------------------------------
1 | ---
2 | description: 使用resource命令重新映射电机(3.1+)
3 | ---
4 |
5 | # 重新映射电机
6 |
7 | 有时我们不得不交换/移动/旋转电机布局。在3.1之前,我们必须在飞控板和电调之间使用长导线以保留原始映射(但这会造成飞机布局混乱),或使用自定义mmix更改每个电机对姿态调整的贡献逻辑。
8 |
9 | 在Betaflight 3.1+版本中,我们可以使用CLI命令resource来轻松映射电机。有关此命令的说明,请参见Betaflight资源重映射。
10 |
11 | 视频:
12 |
13 | Joshua Bardwell视频:[Resource Remapping- No more Custom Motor Mixer](https://www.youtube.com/watch?v=z5aO-3\_n-Hs)
14 |
15 | Project Blue Falcon视频:[Find Bad ESC output Pin and Remap Motors](https://www.youtube.com/watch?v=cEMfs\_4X2VM)
16 |
17 | 另一个Blue Falcon视频:[Remap Motors In Betaflight (damaged pins fix)](https://www.youtube.com/watch?v=cEMfs\_4X2VM\&feature=youtu.be\&t=159)
18 |
19 | ### 使用样例:
20 |
21 | 这里以最常见的“旋转飞控板或旋转分电板”为例。
22 |
23 | 下设您有一块电机编号如下所示的分电板:
24 |
25 | ` FRONT`\
26 | `4 2`\
27 | ``\
28 | `3 1`\
29 | ` BACK`
30 |
31 | 出于某种原因,您想将电路板顺时针旋转90度,让它最后变成下面这个样子
32 |
33 | ` FRONT`\
34 | `3 4`\
35 | ``\
36 | `1 2`\
37 | ` BACK`
38 |
39 | 让我们来一起解决这个问题吧。
40 |
41 | 1. 记录当前的电机映射\
42 | 在CLI中输入resource list以查看原始映射\
43 | `# resource list`\
44 | `...`\
45 | `A06: MOTOR 1`\
46 | `A07: MOTOR 2`\
47 | `A11: MOTOR 3`\
48 | `A12: MOTOR 4`\
49 | `...`
50 | 2. 画一个带有原始引脚到电机的映射关系的图表\
51 | ` FRONT`\
52 | `4(A12) 2(A7)`\
53 | ``\
54 | `3(A11) 1(A6)`\
55 | ` BACK`
56 | 3. 将这个图顺时针旋转90度。\
57 | ` FRONT`\
58 | `3(A11) 4(A12)`\
59 | ``\
60 | `1(A6) 2(A7)`\
61 | ` BACK`
62 | 4. 移除旧的电机标号\
63 | ` FRONT`\
64 | `A11 A12`\
65 | ``\
66 | `A6 A7`\
67 | ` BACK`
68 |
69 | 这是您实际的MCU引脚-电机位置映射关系
70 | 5. 将新的电机位置标号分配给MCU引脚\
71 | ` FRONT`\
72 | `4(A11) 2(A12)`\
73 | ``\
74 | `3(A6) 1(A7)`\
75 | ` BACK`
76 |
77 | 这是您的新映射。
78 | 6. 用于此映射的CLI resource命令为:\
79 | `resource motor 1 a7`\
80 | `resource motor 2 a12`\
81 | `resource motor 3 a6`\
82 | `resource motor 4 a11`\
83 | `save`\
84 | 输入这些命令时,您将看到一些错误提示消息。映射重叠是过渡性的,最终您将得到一份干净的映射表。如果您不喜欢看到这些红色的错误消息,则可以在输入新映射之前,先输入一下命令来清除旧映射:\
85 | `resource motor 1 none`\
86 | `resource motor 2 none`\
87 | `resource motor 3 none`\
88 | `resource motor 4 none`
89 |
90 | 这只是一个简单的例子。请您自行处理您的实际问题,并在飞行之前验证新映射是否正确。
91 |
92 | 祝您玩的开心!!!
93 |
--------------------------------------------------------------------------------
/configuration/launch-control.md:
--------------------------------------------------------------------------------
1 | # 起飞控制
2 |
3 | ###
概述
4 |
5 | 增加一个竞速起飞辅助系统,让飞手前推俯仰并松手后,飞机可以保持前倾角。从BF4.0起可用。
6 |
7 | ### 安全信息
8 |
9 | 当飞机准备弹射起飞时,它看上去可能很安全,但事实上并不是这样。你应该像对待一只会随时扑上来的猛兽一般对待它。永远不要将手从遥控器上挪开并随时准备好上锁。永远不要让自己或他人靠近飞机。遵守正常情况下的所有安全规范。
10 |
11 | ### 弹射步骤:
12 |
13 | * 弹射起飞模式开关拨到开启位置
14 | * 解锁
15 | * 保持油门在最低位
16 | * 前推俯仰到达预定角度
17 | * 摇杆回中
18 | * 推油门,弹射
19 |
20 | 演示视频: [https://youtu.be/\_S0rn3zcN0Q](https://youtu.be/\_S0rn3zcN0Q)
21 |
22 | ### 模式开关配置:
23 |
24 | 若要启用弹射起飞,则必须为其配置一个开关。仅会在解锁时才会检测该模式的状态,所以飞手有多种设置方式。可选项包括:一个专用的开关,在解锁时按住回弹开关,直接与解锁开关绑定,甚至一直保持开启。
25 |
26 | ### 参数设置:
27 |
28 | **`launch_control_mode`**: `NORMAL` (默认), `PITCHONLY`, 和 `FULL`.
29 |
30 | * `NORMAL`: 为下置电池的飞机在地面上弹射所设计。Roll和pitch会保持角度不变,yaw可以控制但飞控不会保持yaw的姿态。
31 | * `PITCHONLY`: 使用起飞台弹射或上置电池的飞机在地面弹射。完全禁用roll和yaw。机头的两个电机将保持怠速以减小飞机从起飞台上滑落的风险。不要在没有起飞台的情况下在下置电池的飞机上使用此模式。因为前电机不会响应,飞机可能会前翻。
32 | * `FULL`: 类似于`NORMAL`但是为yaw也加入了姿态保持。使用该设置时请保持小心,yaw轴可能会随时间推移而发生漂移。
33 |
34 | **`launch_trigger_allow_reset`**: `OFF`和`ON` (默认).
35 |
36 | 该参数决定了弹射功能能否被重置。在弹射过后我们想禁用该功能,这样如果炸机后重新解锁,弹射起飞就不会被激活。
37 |
38 | * `ON`: 允许飞手在锁定时重新拨动开关以重置弹射起飞。如果为该功能分配了独立的开关,则使用该设置,这样就可以选择性地启用它。
39 | * `OFF`: 弹射起飞无法被重置,除非重新上电或重启飞控。当不能单独控制弹射起飞功能,如一直启用或绑定至解锁开关时,则使用该设置。
40 |
41 | 只要弹射未被触发,飞手可以多次解锁/锁定,且该功能仍可使用。所以如果飞机从起飞台上滑落,飞手只需将其归位并重新解锁。
42 |
43 | **`launch_trigger_throttle_percent`**: 0 - 90 (默认是20).
44 |
45 | 在弹射起飞状态中增加一个油门死区。一旦超过这个设定值,弹射就会被触发。更高的值可以提供更暴力的弹射,因为油门输出会直接“跳”到设定值。设置为。可禁用该功能。默认值20是一个比较好的既能防止误触发又能提供较好弹射力的值。当使用较高的值时请小心,因为飞机在弹射时会很暴力。
46 |
47 | **`launch_control_gain`**: 0 - 200 (默认是40).
48 |
49 | I值增益用于保持姿态。如果飞机很难保持姿态,则适当增加该值。小心使用很高的值,因为漂移可能会发生。如果姿态保持时电机在持续加速,那么这个值就太高了。在工作正常的情况下使用尽可能低的值。机身抬起时的些许抖动属于正常现象,这时候飞机很容易受到影响而发生漂移。一般来说一小点抖动不算是个问题,没有必要把它调得太高。
50 |
51 | ### 结合加速度计
52 |
53 | 如果加速度计可用,额外的反馈信息会显示在OSD上,指示当前的前倾角度。飞手可利用该信息调节倾角以提高弹射的一致性。
54 |
55 | **`launch_angle_limit`**: 0 - 80 (默认是0)
56 |
57 | 允许飞手设置最大的前倾角度,为飞手使用习惯的弹射角度提供便利。该设置可防止飞机前倾过度。飞机不会自动到达该倾角。飞手仍可以在低于设置角度的地方进行调节。设置为0以禁用该功能。
58 |
59 | ### 结合OSD
60 |
61 | 如果开启了“警告信息”,那么一个LAUNCH指示会在启用弹射起飞时显示。确认弹射起飞报警选项已开启。如果加速度计可用,则当前前倾角会显示出来,如“LAUNCH 25”。
62 |
63 | **在BF4.2中加入:当油门靠近触发位置10%以内时,OSD信息会闪烁,以提供一个可视化的即将触发弹射的指示。**
64 |
65 | **所有弹射起飞的参数都可以通过OSD设置。它们在:**PROFILE -> MISC PP -> LAUNCH CONTROL 下。
66 |
67 | ### 备注
68 |
69 | 如果满足以下任意一项,弹射起飞就不会被激活。
70 |
71 | * 在非手动模式下解锁
72 | * 开启了“解锁时不要转动电机”选项,解锁时电机不旋转(Airmode关闭)
73 | * 开启了3D模式
74 | * 使用摇杆解锁
75 |
--------------------------------------------------------------------------------
/SUMMARY.md:
--------------------------------------------------------------------------------
1 | # Table of contents
2 |
3 | * [BF wiki 中文站](README.md)
4 | * [导航](home.md)
5 | * [赞助商](sponsors.md)
6 |
7 | ## 新手入门
8 |
9 | * [安装Betaflight](getting-started/installation.md)
10 | * [飞行技巧](getting-started/flying-tips.md)
11 |
12 | ## 发行说明
13 |
14 | * [Betaflight 4.2](release-notes/betaflight-4.2.md)
15 | * [Betaflight 4.1](release-notes/betaflight-4.1.md)
16 | * [Betaflight 4.0](release-notes/betaflight-4.0.md)
17 |
18 | ## 调参技巧
19 |
20 | * [Betaflight 4.2](tuning-notes/betaflight-4.2.md)
21 | * [Betaflight 4.1](tuning-notes/betaflight-4.1.md)
22 | * [Betaflight 4.0](tuning-notes/betaflight-4.0.md)
23 |
24 | ## 设置
25 |
26 | * [3D设置](configuration/3d-setup.md)
27 | * [气压计配置](configuration/barometer-configuration-for-3.2.md)
28 | * [蜂鸣器静音模式](configuration/buzzer-mute-mode.md)
29 | * [GPS救援模式](configuration/gps-rescue-mode.md)
30 | * [起飞控制](configuration/launch-control.md)
31 | * [LED灯带](configuration/led-strip-setup.md)
32 | * [大容量存储设备(MSC)支持](configuration/mass-storage-device-msc-support.md)
33 | * [瘫痪模式](configuration/paralyze.md)
34 | * [资源重新映射](configuration/resource-remapping.md)
35 | * [支持的传感器](configuration/supported-sensors.md)
36 | * [统一目标与您](configuration/unified-targets-and-you.md)
37 |
38 | ## 摄像头、图传和OSD
39 |
40 | * [外部OSD / MWOSD](camera-vtx-and-osd/external-osd-mwosd.md)
41 | * [图传表](camera-vtx-and-osd/vtx-tables.md)
42 |
43 | ## 电机与电调
44 |
45 | * [双向Dshot和RPM滤波器](motors-and-esc/bidirectional-dshot-and-rpm-filter.md)
46 | * [电调编程透传](motors-and-esc/esc-programming-pass-through.md)
47 | * [重新映射电机](motors-and-esc/remapping-motors.md)
48 |
49 | ## PID、Rate和滤波器
50 |
51 | * [D\_MIN](pid-tuning-rates-and-filters/d_min.md)
52 | * [前馈2.0](pid-tuning-rates-and-filters/feedforward-2.0.md)
53 | * [整合式偏航控制](pid-tuning-rates-and-filters/integrated-yaw.md)
54 | * [Rate计算器](pid-tuning-rates-and-filters/rate-calculator.md)
55 |
56 | ## 接收机/HID
57 |
58 | * [手动训练模式](receiver-hid/acro-trainer.md)
59 | * [解锁顺序与安全](receiver-hid/arming-sequence-and-safety.md)
60 |
61 | ## 串行通信
62 |
63 | * [适用于4.x的串行黑盒日志记录](serial-communication/serial-blackbox-logging-for-4.x.md)
64 |
65 | ## 故障排除
66 |
67 | * [OSD字体上传问题](troubleshooting/osd-font-upload-problem.md)
68 | * [DFU劫持](troubleshooting/dfu-hijacking.md)
69 |
70 | ## 开发
71 |
72 | * [飞控板设计资源](development/flight-controller-design-resources.md)
73 | * [硬件参考](development/hardware-reference.md)
74 |
75 |
--------------------------------------------------------------------------------
/development/flight-controller-design-resources.md:
--------------------------------------------------------------------------------
1 | # 飞控板设计资源
2 |
3 | **飞控板设计资源的存档处**
4 |
5 | ### 开源设计
6 |
7 | **AlienFlight**\
8 | ****[https://alienflight.com](https://alienflight.com)
9 |
10 | **AlienFightNG**\
11 | ****[https://www.alienflightng.com](https://www.alienflightng.com)
12 |
13 | **OpenPilot Revo**
14 |
15 | **Fury F3, F4 and F7 by kc10kevin**\
16 | ****[https://www.rcgroups.com/forums/showthread.php?2628430-Kopter-Kontrol-Next-Generation-New-F3-and-F4-Flight-Controllers](https://www.rcgroups.com/forums/showthread.php?2628430-Kopter-Kontrol-Next-Generation-New-F3-and-F4-Flight-Controllers)
17 |
18 | **AnyFC Series by sambas**\
19 | ****[https://github.com/sambas/hw](https://github.com/sambas/hw)
20 |
21 | **FF4Nano by nppc**\
22 | ****[https://github.com/nppc/FF4Nano](https://github.com/nppc/FF4Nano)
23 |
24 | **tinyFish FC by fishpepper**\
25 | ****[https://fishpepper.de/projects/tinyfish/](https://fishpepper.de/projects/tinyfish/)
26 |
27 | **AlienWhoopF7 by brucesdad13**\
28 | ****[https://github.com/brucesdad13/AlienWhoopF7](https://github.com/brucesdad13/AlienWhoopF7)
29 |
30 | **OpenFC Project by DroneMesh**\
31 | ****[http://dronemeshforum.com/viewforum.php?f=33\&sid=c2c2708fe551f2214d6d2290c62a3e91](http://dronemeshforum.com/viewforum.php?f=33\&sid=c2c2708fe551f2214d6d2290c62a3e91)
32 |
33 | ### MCU数据表与参考手册
34 |
35 | **STM32F303CC**\
36 | ****[https://www.st.com/resource/en/datasheet/stm32f303cc.pdf](https://www.st.com/resource/en/datasheet/stm32f303cc.pdf) [https://www.st.com/resource/en/reference_manual/dm00043574.pdf](https://www.st.com/resource/en/reference_manual/dm00043574.pdf)
37 |
38 | **STM32F405RG**\
39 | ****[https://www.st.com/resource/en/datasheet/stm32f405rg.pdf](https://www.st.com/resource/en/datasheet/stm32f405rg.pdf) [https://www.st.com/resource/en/reference_manual/dm00031020.pdf](https://www.st.com/resource/en/reference_manual/dm00031020.pdf)
40 |
41 | **STM32F411CE**\
42 | ****[https://www.st.com/resource/en/datasheet/stm32f411ce.pdf](https://www.st.com/resource/en/datasheet/stm32f411ce.pdf) [https://www.st.com/resource/en/reference_manual/dm00119316.pdf](https://www.st.com/resource/en/reference_manual/dm00119316.pdf)
43 |
44 | **STM32F722RE**\
45 | ****[https://www.st.com/resource/en/datasheet/stm32f722ic.pdf](https://www.st.com/resource/en/datasheet/stm32f722ic.pdf) [https://www.st.com/resource/en/reference_manual/dm00083560.pdf](https://www.st.com/resource/en/reference_manual/dm00083560.pdf)
46 |
47 | **STM32F745**\
48 | ****[https://www.st.com/resource/en/datasheet/DM00166116.pdf](https://www.st.com/resource/en/datasheet/DM00166116.pdf) [https://www.st.com/resource/en/reference_manual/dm00124865.pdf](https://www.st.com/resource/en/reference_manual/dm00124865.pdf)
49 |
50 | **STM32H743/H750**\
51 | ****[https://www.st.com/resource/en/datasheet/stm32h743bi.pdf](https://www.st.com/resource/en/datasheet/stm32h743bi.pdf) [https://www.st.com/resource/en/datasheet/stm32h750ib.pdf](https://www.st.com/resource/en/datasheet/stm32h750ib.pdf) [https://www.stmicroelectronics.com.cn/resource/en/reference_manual/dm00314099.pdf](https://www.stmicroelectronics.com.cn/resource/en/reference_manual/dm00314099.pdf)
52 |
--------------------------------------------------------------------------------
/release-notes/betaflight-4.2.md:
--------------------------------------------------------------------------------
1 | # Betaflight 4.2
2 |
3 | **正好赶上夏天……**
4 |
5 | 对于我们大多数人来说,现在正是世界各地都正在陆续结束COVID-19封锁的时刻。现在我们可以自豪地宣布,Betaflight 4.2.0正式发布!
6 |
7 | 这是自我们切换到使用统一目标来支持不同飞控板之后的第三个大版本,并且我们已经尽力使我们的软件框架可以更容易地支持支持这些“统一目标”,用户使用体验更无缝。我们还努力设法将大多数现有飞控目标转换为新格式。这使得我们开发人员可以无需再为新目标付出额外的精力,就能为新的飞控目标添加支持。因此,Betaflight现在支持的目标比以往任何时间都更多(当前我们支持185种不同的飞控目标和飞控板)。
8 |
9 | 一如既往地,我们的飞行性能优化向导也很忙,并且为Betaflight的飞行性能提供了许多改进。最重要的是,他们改进了默认参数,使得固件调参更容易。
10 |
11 | 新的仍在内测阶段的电池压降补偿功能或许是比较吸引飞手兴趣的一项新功能:它可以在单块电池飞行期间内提供更加一致的“打杆感觉”。
12 |
13 | 最后但并不是最重要的一点,我们还重新设计了陀螺仪控制环路的工作方式,现在它以固定速率运行,此速率与陀螺仪传感器原生数据速率相同。这简化了环路速率的设定,并使得我们能够为许多新型陀螺仪传感器添加驱动支持 - 希望飞控制造商能够对此有所了解,并开始为这些新型陀螺仪设计生产制造令人兴奋的新型飞控。
14 |
15 | 有关新功能的详细列表请参照下文。 为确保您已安装最新版本的固件,请确保您已安装最新版本的Betaflight配置器,**然后再更新固件**。
16 |
17 | 为了充分发挥飞行性能,得到全部的性能提升,请阅读[**《4.2调参指南》**](http://mp.weixin.qq.com/s?\__biz=Mzg4OTAzNzM5MA==\&mid=2247485084\&idx=1\&sn=6d34096ceaba40a1b98cd3b7a6cb40b6\&chksm=cff0b1bdf88738abd0570310d1c30e6ce4e13e89fb595c3af8f14816cd95f032ea58463a1280\&scene=21#wechat_redirect)。 如果您从较早版本的Betaflight升级而来,请阅读以下部分,其中包含了您可能需要在配置器中更改的选项列表。\
18 | 我们已尽力使此版本没有错误。如果您仍然发现了一些错误,请在Github代码库内打开一个issues向我们报告。
19 |
20 | 如果您想讨论betaflight,询问配置问题,或者只是想约其他飞行员一起出去玩,您可以加入我们的Facebook群组。
21 |
22 | Betaflight还有一个Slack频道。大多数开发人员都在那里,这是一个讨论你在Betaflight上收获新知的好地方,或者您可以去那里咨询非常复杂的配置问题以寻求帮助。
23 |
24 | **祝您玩的开心**
25 |
26 | ### **升级时需要注意的重要信息**
27 |
28 | * Betaflight 4.2对下载和安装固件的方式进行了一些更改,Betaflight配置程序10.7.0将支持此功能所需的更改。因此,重要的是,请尽快将您的配置器更新到10.7.0版本(或更高),以获取最新版本固件的安装程序。
29 | * 黑盒日志查看器已更新到3.5.0,以搭配Betaflight 4.2固件一起使用。请尽快更新黑盒日志查看器。
30 | * Betaflight遥控器Lua脚本已更新到1.5.0,以搭配Betaflight 4.2固件一起使用。
31 | * 如您所料,我们已经写好了一篇有关[Betaflight 4.2的详细调参说明。](http://mp.weixin.qq.com/s?\__biz=Mzg4OTAzNzM5MA==\&mid=2247485084\&idx=1\&sn=6d34096ceaba40a1b98cd3b7a6cb40b6\&chksm=cff0b1bdf88738abd0570310d1c30e6ce4e13e89fb595c3af8f14816cd95f032ea58463a1280\&scene=21#wechat_redirect)请遵照调参说明,或使用Betaflight配置程序10.7.0中的已改进的滑块来调整参数。请不要向CLI中直接粘贴早期版本的参数。一些默认设置已更改,并且某些参数将以完全不同的方式来工作,因此旧的Betaflight 4.1中的参数不能很好地工作。
32 | * 刷写新固件或重置当前配置后,将默认禁用电机输出协议。这意味在您尝试解锁之前,必须选择正确的电机协议。但同时,这也解除了早先版本中的预设协议(OneShot125)对PID最大速率的限制,从而预先选择了当前MCU支持的最大PID速率。
33 | * 当启用双向Dshot时,Dshot协议对应的可能最大PID速率将被降低一半,以匹配ESC将RPM数据发送到飞控所花费的时间。特别地,这意味着当您使用Dshot300开启双向Dshot时,最大PID速率将是4k。
34 | * 为偏航旋转恢复功能的阈值添加了一个新模式,此模式会将阈值自动设置为基于当前配置的最大偏航角速度值,并在其顶部添加了一个缓冲区。此新模式将是偏航旋转阈值的默认模式,因为它可供大多数用户安全使用。您仍然可以手动配置偏航旋转阈值。
35 | * 如果您启用了任何需要使用加速度计的功能,现在需要在使用加速度计之前对加速度计进行校准。这是为了防止出现飞控试图使用未经校准的加速度计进行自稳校准的情况出现,因为其或许会导致意外或危险发生。配置程序内将一直显示警告,并禁止解锁,直至您完成加速度计校准。
36 | * 虚拟电流表的计算方式已改为基于混控器中使用的油门值来计算,而不是基于RC信号的油门通道来计算。这意味着该值应用了油门限值和油门增压等功能,从而可以更准确地预测电流和功耗。如果您正在使用虚拟电流表,请在升级固件之后对其再次校准,以确保校准值正确。
37 | * 固件中计算“RSSI dBm”的值已改为使用-130\~0的实际dBm值,而不是以前的130\~0。这意味着,如果您之前使用这个OSD元素,那么必须将osd_rssi_dbm_alarm更改为先前值的负值(例如60改为-60)。
38 | * 由于不建议在多旋翼飞行器上使用摇杆进行解锁与上锁(容易导致意外上锁),因此默认情况下已将其禁用。如果要使用摇杆解锁(后果自负),则必须使用CLI命令 set enable_stick_arming = on 来启用它。
39 | * CLI命令name已被移除,请该用set name = \命令。
40 |
41 | ### **主要功能更新**
42 |
43 | * 完全重写陀螺仪循环,提高了性能,并使其始终按照陀螺仪固有的数据速率运行。
44 | * 增强了对电池压降的补偿算法,从而在整个飞行期间使油门/PID表现更加一致
45 | * 添加了对高级OSD/CMS设备的支持,从而使其具有支持文本或符号高亮显示的能力
46 | * 添加了对FrSkyOSD设备的支持
47 | * 为SPI连线的CC2500芯片(FrSky SPI)添加了对Redpine RC协议的支持
48 |
49 | ### **次要功能更新**
50 |
51 | * 添加了可以在解锁时显示OSD徽标的选项
52 | * 添加了对高级OSD/CMS设备的支持,从而使其具有支持文本或符号高亮显示的能力
53 | * 添加了对FrSkyOSD设备的支持
54 | * 为SPI连线的CC2500芯片(FrSky SPI)添加了对Redpine RC协议的支持
55 |
--------------------------------------------------------------------------------
/release-notes/betaflight-4.0.md:
--------------------------------------------------------------------------------
1 | # Betaflight 4.0
2 |
3 | **它花费了我们很长时间,但它现在已经正式发布了,而且它有很多新东西!**
4 |
5 | 当我们去年8月份发布3.5时,Betaflight支持的目标数量达到了150个,维护它们已成为一项繁重的工作,占用了我们很多时间。很明显,我们必须做点什么。我们一直在努力改变Betaflight的架构,以便在未来可以让不同的飞控板运行着相同的固件,基于这个原因,我们决定在下一个版本发布之前完成这些更改,由于这一根本性改变,下一版本号将变成4.0。
6 |
7 | 当接近Betaflight 4.0原定发布日期时,我们意识到,我们还没有准备好。于是我们决定将发布日期拖延三个月,以便能够完成那些已经开始了的工作。
8 |
9 | 所以现在,这些被称之为“统一目标”的东西,被我们称为新的“一个固件适用于多种飞控”的技术,在Betaflight4.0中已经成为了现实。这其中仍然有一些工作要做,将统一固件的配置文件添加到Betaflight配置器中,但一旦完成,我们将能够允许制造商在配置器中为任意飞控板或者RTF产品直接提供固件。
10 |
11 | 正如您对Betaflight所期望的那样,我们已经对飞行性能进行了一些新的和令人兴奋的改进,例如基于电调RPM的滤波器,使用D_Min对D增益进行动态管理,以及基于油门的动态陀螺仪和Dterm低通滤波器。
12 |
13 | 而且,正如所期望的那样,我们还增加了一些与飞行无关的新功能,例如弹射起飞模式、OSD配置文件切换以及对板载SPI接收机的支持。
14 |
15 | 有关新功能的详细列表请参照下文。
16 |
17 | 为了充分发挥飞行性能,得到全部的性能提升,请阅读[这些调参技巧](../tuning-notes/betaflight-4.0.md)。
18 |
19 | 如果您从较早版本的Betaflight升级而来,请阅读以下部分,其中包含了您可能需要在配置器中更改的选项列表。
20 |
21 | 我们已尽力使此版本没有错误。如果您仍然发现了一些错误,请在Github代码库内打开一个issues向我们报告。
22 |
23 | 哈哈哈哈(保持健康强壮)
24 |
25 | ### **升级时需要注意的重要信息**
26 |
27 | * 此版本中的许多更改和改进都需要更改Betaflight配置程序以匹配功能。这些更改已经添加到betaflight-configurator10.5.0中。请尽快将您的配置器更新到10.5.0版本(或更高)。\
28 |
29 | * 黑盒日志查看器将更新到3.3.0,以搭配Betaflight4.0固件一起使用。请尽快更新黑盒日志查看器。
30 | * Betaflight 4.0中有许多与飞行性能相关的改进。因此,直接将旧版Betaflight的参数备份到Betaflight 4.0中很可能会导致飞行性能不佳!对于大多数穿越机来说,默认配置的性能表现应该相当优秀,但那些想要调整其参数以获得最佳性能体验的用户,应仔细阅读《4.0调参指南》,以了解有关调整Betaflight 4.0所需要的一切。
31 | * 已经对“零油门”的死区配置函数“min_check”进行了修复。 在之前,死区的实际值基本上是将设置值进行了翻倍。所以,为了使零油门的死区保持与原来相同的范围,**你需要将配置过的min_check值翻倍**(偏移值为1000。例如:1035=>1070,1070=>1140)。对于将死区范围设置的非常小的用户来说,若不重新配置min_check,则可能导致在修复后的新版本中,即使遥控器上的油门最低,实际输出的油门值也永远不可能到达“零油门”的死区范围,并且飞控将以“油门未到最小值”的原因禁止解锁。
32 | * **OSD内有了一个新的“摇杆叠层显示”图标元素,用于在OSD内叠层显示当前摇杆位置。**为了能正常使用它,需要将加载到OSD上的字库更新到最新版本(此操作将可以在10.5.0或更高版配置器中实现)。
33 | * **OSD图标“反乌龟箭头”的功能被扩展**:当飞行器没有处于反乌龟模式时也该图标能够被激活。但只有当设置了最小解锁角度,并且由于飞行器当前角度高于最小解锁角度而无法解锁时,反乌龟图标才会显示。**这用于向飞行员展示是由于哪个方向的角度过大而导致无法解锁**,并且允许他们通过激活反乌龟模式来改变当前的角度。
34 | * 作为引入统一目标的一部分工作,现在“resource”有了两个用于资源管理的新子命令:timer和dma。就像resource可用于给引脚分配功能一样,timer可用于给引脚分配定时器,dma可用于将DMA资源分配给子系统和引脚(前提是他们已经被分配了定时器)。重要提示:由于DMA通过定时器连接到引脚,因此必须先为引脚分配timer,然后才能分配dma。
35 | * 作为合并CLI资源管理命令的一部分,resource list命令已被重新命名为 resource show。这将使得它能够与新的dam show和timer show命令格式相统一。
36 | * 将一些函数重命名以使其更匹配函数所代表的实际意义:p_level=>angle_level_strength,i_level=>horizon_level_strength,d_level=>horizon_transition
37 | * 统一目标中的陀螺仪配置适用于所有陀螺仪模型。这意味着对于一些使用多个陀螺仪(这些陀螺仪具有不同的安装方向甚至是不同的型号)的飞控来说,从Betaflight 4.0开始需要手动设置gyro\_1\_sensor_align(双陀螺仪则还需要设置gyro\_2\_sensor_align)以匹配飞控上的陀螺仪方向。这是一个临时的解决方法,统一目标配置中将具有陀螺仪的正确方向。
38 | * 遗憾的是,由于飞控核心功能中的bug修正,导致固件大小超出了F3芯片的可用空间。所以必须从F3飞控固件中删除一些功能,收到影响的飞控有:
39 |
40 | AIORACERF3,BETAFLIGHTF3,CHEBUZZF3,CRAZYBEEF3FR,FURYF3,FURYF3OSD,IMPULSERCF3,LUX_RACE,LUXV2\_RACE,MIDELICF3,OMNIBUS,RACEBASE,RMDO,SIRINFPV,SPRACINGF3,SPRACINGF3MINI,SPRACINGF3NEO,STM32F3DISCOVERY
41 | * 除上述要点外,还需要从F3飞控固件中删除“智能前馈”、“Simonk电调配置支持协议”。
42 | * 为了进一步增加可用空间,LED灯条显示状态的功能也从F3飞控中被移除。使用LED灯条配置文件来代替,可用于将LED灯条配置为固定颜色。F4/F7仍保留完整的LED功能,同时也提供LED配置文件切换功能,以便在OSD中切换不同的LED灯条配置。
43 | * 由于上述三条措施并不足以防止固件在F3飞控上溢出,因此,将F3飞控分为多个级别,逐级进行“功能剔除”。这将使大多数F3飞控具有的功能数量变得更少。
44 |
45 | ### **主要功能更新**
46 |
47 | * 高保真实时电调转速回传(ESC RPM),以及基于电机转速的RPM陷波滤波器(RPM Notch Filter)
48 | * 基于油门的陀螺仪动态低通滤波器(Lowpass Filter)和Dterm动态低通滤波器
49 | * 弹射起飞模式
50 | * 可切换使用的OSD配置文件
51 | * 支持SPI协议的Spektrum接收机
52 | * 添加了统一通用目标
53 |
54 | ### **次要功能更新**
55 |
56 | * 级联动态陷波滤波器
57 | * 推力曲线线性化校正
58 | * 整合式偏航控
59 | * 可切换使用的LED灯条配置文件
60 | * OSD中的摇杆位置叠层显示
61 | * 基于电池芯片数(4s,5s,6s…)的PID自动切换功能
62 | * 支持在使用CC2500芯片的硬件上使用Futaba SFHSS协议
63 | * 支持以STM32F765xx为主芯片的飞控
64 | * 通过HoTT文字回传模式更改配置
65 |
--------------------------------------------------------------------------------
/configuration/3d-setup.md:
--------------------------------------------------------------------------------
1 | # 3D设置
2 |
3 | 此页面仍在建设中,用于概述如何在多旋翼上设置3D模式,并列出重要且容易遗漏的步骤以避免发生事故。
4 |
5 | 有关Dshot的特定信息,请参阅底部部分。
6 |
7 | 本文从[Hwurzburg的issue](https://github.com/cleanflight/cleanflight/issues/1032)及[相关PR](https://github.com/cleanflight/cleanflight/pull/1034)中获取了相关信息
8 |
9 | 第一步:获取多旋翼飞机,并安装具有反向/双向功能的电调
10 |
11 | 第二步:阅读所需的信息和设置,了解正在发生的事情并在装上螺旋桨之前在测试台上测试/验证一切。在3D模式下发生用户设置错误并导致事故的可能性是原来的两倍
12 |
13 | 第三步:练习练习练习!最重要的是,玩的开心!
14 |
15 | 需要的信息:
16 |
17 | 当通过配置程序或CLI命令启用3D模式时,将允许使用双向电调进行操作,通过电机的正反转来产生正推力或负推理来提供倒置和正置操作。您可能需要更改电机线序来使电机旋转方向正确,请查看电调手册进行确认。
18 |
19 | 油门最低对应全速反转,油门最高对应全速正转。油门归中将对应零油门。
20 |
21 | 使用开关来解锁是3D飞行的必备条件,可以在配置程序内的模式选项卡中进行设置。由于显而易见的原因,motor_stop和摇杆解锁在3D模式下无法生效。
22 |
23 | 仅当油门杆居中且解锁开关激活时才会解锁。剪辑将立即以`3d_deadband_low`或`3d_deadband_high`进行旋转,具体取决于油门位置是是否高于或低于`mid_rc`。
24 |
25 | 如果启用了`disarm_kill_switch`,那么使用开关上锁电机将立刻停转,且不受油门杆位的影响。该参数默认启用。
26 |
27 | 强烈建议使用3D螺旋桨来获得合理且相等的正反转推力。
28 |
29 | 如果电调支持,则Oneshot在此模式下可用。
30 |
31 | 设置:
32 |
33 | 在固件中启用3D模式:
34 |
35 | 这可以通过在配置软件中勾选3D模式,或者通过CLick命令来完成。
36 |
37 | 将电调设置为3D模式:
38 |
39 | 请翻阅您的电调说明书以了解如何才能开启双向模式。
40 |
41 | 在校准前先设置最大油门和最低油门。
42 |
43 | * BLHeli电调:\
44 | 使用(BLHeli配置程序中的Norm/reverse/bidirectional滑块)将最大PWM设置接收机油门通道上的最大输出值(通常为2000μs),将最小PWM设置为最小值(通常为1000μs),并将中位值设置为1500μs。如果电调的输入值位于中点死区范围内,则电调将不会驱动电机旋转。
45 | * KISS 24A电调:\
46 | 要校准油门路径,电调/飞控必须连接到接收机或飞控上。先将油门值推到最大。给电调/飞控上电。如果电机发出蜂鸣声则表示已激活编程模式。现在将油门信号降低到最低(通常为1000μs),等待电调重启(声音信号高-低-高)。现在油门行程已校准,电调/飞控已经可以使用。注意:电调3D模式下的负载是正常模式下的3倍!\
47 | 3D模式:当油门行程按上述流程校准完毕后,3D模式就可以按如下步骤激活:断开电源,将遥控器油门推至最大,接通电源,等待电机蜂鸣。将油门调到中位,等待电调重启(声音信号高-低-高)。现在3D模式已激活。重要的是,只有油门归中才能解锁。停用方法:重新校准油门行程。
48 | * SimonK电调:与BLHeli电调不同,SimonK电调必须编译特定固件才能支持3D模式。\
49 | 要使SimonK电调支持3D模式,必须在编译固件使修改配置文件: `RC_PLUS_REVERSE = 1`\
50 | 另外建议禁用摇杆校准功能,因为无法在运行时重新配置油门中点:`RC_CALIBRATION = 0`\
51 | 默认情况下,SimonK将油门中点(`MID_RC_PLUS`)设置为最小值(`STOP_RC_PULSE`,设置为1060)和最大值(`FULL_RC_PULSE`,设置为1860)之间的中间值——因此该值为1460.您可以根据您的需要更改这些值,但默认情况下他们运行良好。\
52 | `MID_RC_PLUS == (STOP_RC_PLUS + FULL_RC_PLUS)/2`\
53 | 配置、编译和刷鞋SimonK电调的最常见方法是使用KKFlash工具或Chrome应用程序“RapidFlash”。两者都简化了了编译Atmel MCU的复杂环境。RapidFlash工具比KKFlash更易用。
54 |
55 | 在CLI中设置以下参数:
56 |
57 | `3d_deadband_high`:这是解锁时飞控输出给电调的正向油门的最小值,解锁时飞控输出给电调的正向油门最大值是`max_throttle`。`3d_deadband_high`和`max_throttle`之间的范围是正向油门的输出范围。
58 |
59 | `3d_deadband_low`:这是解锁时飞控输出给电调的反向油门的最小值,解锁时飞控输出给电调的反向油门最大值是`min_command`。`3d_deadband_low`和`min_command`之间的范围是反向油门的输出范围。
60 |
61 | 注意:若要查看`3d_deadband_high`和`3d_deadband_low`的值,可以使用配置程序中的点击选项卡查找最接近的值,该值可以使所有电机在每个方向上一致旋转。这些数字应该与`mid_rc`有相同的间隔,并应该设置的尽可能接近`mid_rc`。`min_rc`位于`3d_deadband_high`和`3d_deadband_low`之间,以便于在油门居中时以相同的速度在同一方向上旋转电机。
62 |
63 | `3d_netual`:这是飞控在解锁时发送给电调的输出值。它类似于`mid_command`在正常模式下的工作方式。除非您有特定的理由,否则~~`failsafe_throttle`~~也应该设置得与`3d_teutral`相同。
64 |
65 | `failsafe_throttle`:这是在触发失控保护后飞控发送给电调的值。它应该设置的与`3d_neutral`相同,以使得电调可以在飞机失控情况下令电机停转。
66 |
67 | 3d:这是`mid_rc`附近的油门杆范围,解锁后当油门杆处于这个范围内时,飞控将向电调输出`3d_deadband_high`或`3d_deadband_low`。实际输出取决于油门杆是从`mid_rc`的高侧还是低侧进入死区。
68 |
69 | `max_throttle`:飞控输出给电调的最大值。更改`max_throttle`后应重新进行电调行程校准。
70 |
71 | `min_command`:飞控输出给电调的最小值。更改`min_command`后应重新进行电调行程校准。
72 |
73 | Dshot部分:【需要进一步清理】
74 |
75 | 电调调参:
76 |
77 | BLHeli_S调整:
78 |
79 | 不论任何测试,请务必带上护目镜(从第四步开始将装上螺旋桨)手持或锁定在测试台上,务必远离易碎易燃等危险品,禁用AirMode,注意观察电机温度,记录下每个测试结果以进行比较。
80 |
81 | 1. 确保在默认BLHeli_S设置下,电机旋转方向正确、飞控已开启3D模式。
82 | 2. 设置怠速值以使得电机在两个方向上刚好旋转,这与在2D模式下设置怠速值的方式相同,但需要测试3D模式的两个方向。
83 | 3. 开启Brake on Stop
84 | 4. 安装螺旋桨和相关安全设备。使用要用于飞行的螺旋桨,或用于飞行的最终的螺旋桨。
85 | 5. 禁用AIRMODE或任何的类似功能
86 | 6. 更改电机进角并测试电机换向时的平滑度。这可能很微妙,每个选项(低、中/低、中、中/高、高)都应该测试,通过对各个选项进行来回切换最终确认最佳选项。
87 | 7. 改变启动功率以确保换向平滑。这可能也很微妙,但初步测试表明,将启动功率设置得高一些是从失步中快速恢复的最平稳也是最快的方式。
88 | 8. 再次检查怠速值,如果换向仍有一些问题,请降低怠速值。
89 | 9. 调整PID并悬停测试以确保没有电机过热的问题。
90 | 10. 试飞,并确保电机换向情况足够令人满意。如果换向情况并不是很理想,请再次从步骤4开始,并考虑换用较轻的螺旋桨。
91 |
92 | 如果单个电机严重滞后,请考虑更换电机以查看该问题是否真的与电机有关,或是与电调有关,甚至应考虑更换电机转子或更换全部电机以解决该问题。
93 |
94 |
--------------------------------------------------------------------------------
/configuration/resource-remapping.md:
--------------------------------------------------------------------------------
1 | # 资源重新映射
2 |
3 | **注意:此命令仅在3.1及更高版本的Betaflight中可用。**
4 |
5 | IO重映射使您可以配置MCU上的引脚,以将其用于各种功能。这只是一个初始框架 - 它可以完成更多工作。
6 |
7 | 使用CLI命令resource重新映射引脚。
8 |
9 | `resource [function name] [index] [pin] `(例如`resource MOTOR 1 A1`)
10 |
11 | 其中MOTOR是函数名(function name),1是电机标签索引(index)(从1开始,例如,四轴飞行器上的1-4),A1是端口A的引脚(pin)1,或者更常见的叫法是遵循STM数据手册,引脚PA1。
12 |
13 | 要删除映射,请在PIN位置上使用`NONE`来代替,例如`resource MOTOR 5 NONE`
14 |
15 | 如果某个功能不需要使用INDEX(例如它只有唯一一种引脚分配),例如`BEEPER`,`SONAR_ECHO`或者`SONAR_TRIGGER`,那么INDEX**必须**为空(例如resource BEEPER B6)。
16 |
17 | `resource`将列出所有可用的可配置选项及其当前映射。输出结果将添加到dump输出结果中,用于备份和还原配置。注意,此命令将列出所有已配置的资源。
18 |
19 | 例如,resource将显示电机1-8,但如果您的混控器设置为QuadX,则实际上仅会使用电机1-4。如果您将混控器改为Oct,然后重新启动飞控,则将会使用所有8个电机。
20 |
21 | `resource list`将列出所有引脚及其当前映射,包括系统组件正在使用且用户**无法**配置的所有引脚。它还将列出当前实时的DMA使用率。请注意,所做的任何调整都需要保存并重新启动,以便在此处看到这些更改。应将此命令视为当前活动状态的输出情况。
22 |
23 | 请注意,通过CLI更改引脚映射后,必须使用`save`命令保存并重启。
24 |
25 | 
26 |
27 | ### 可用功能、值及对应约束条件
28 |
29 | | 功能 | 值 | 描述 | 约束条件 |
30 | | -------------- | --- | ------------ | ------------------------------------------------------------------ |
31 | | ADC_BATT | -- | 电池电压传感器 | 只能映射到其他ADC引脚 |
32 | | ADC_CURR | -- | 电池电流传感器 | 只能映射到其他ADC引脚 |
33 | | ADC_RSSI | -- | 接收机的模拟RSSI输入 | 只能映射到其他ADC引脚 |
34 | | BEEPER | -- | 信号蜂鸣器 | 通常直接接至蜂鸣器晶体管的基极 |
35 | | CAMERA_CONTROL | -- | FPV摄像头由OSD控制 | 由摇杆模拟按钮。直接接线并需要外接电容/电阻,因此现有的CAMERA_CONTROL尽可用于某些低频应用中,例如SmartAudio |
36 | | ESCSERIAL | ? | ? | ? |
37 | | I2C_SCL | 1-n | | |
38 | | I2C_SDA | 1-n | | |
39 | | INVERTER | | | |
40 | | LED | 1-3 | LED指示灯 | 请勿与LED_STRIP混淆 |
41 | | LED_STRIP | -- | WS2812 LED数据 | 如果未连接/未使用WS2812,LED是很好的替代选项 |
42 | | MOTOR | 1-n | 电机信号 | 电机引脚之间的映射交换应正常工作。使用其他引脚则可能不起作用(DMA与Dshot冲突)。 |
43 | | PPM | -- | 接收机PPM输入 | 是可选功能的良好选项 |
44 | | PWM | 1-n | 接收机PWM输入 | ? |
45 | | SERIAL_RX | 1-n | 串行接收引脚 | 无法重映射到其他引脚,但可以指定不同的功能(参阅软件串行端口) |
46 | | SERIAL_TX | 1-n | 串行发送引脚 | SERIAL_RX/SERIAL_TX 11-12 是软串口#1和#2 |
47 | | SERVO | 1-n | 舵机信号 | ? |
48 | | SONAR_ECHO | -- | | |
49 | | SONAR_TRIGGER | -- | | |
50 | | SPI_MISO | 1-n | | |
51 | | SPI_MOSI | 1-n | | |
52 | | SPI_SCK | 1-n | | |
53 |
54 | ### 包含使用resource命令的示例的Wiki页面:
55 |
56 | * 重新映射电机
57 | * 使用舵机&舵机云台
58 | * 使用通道转发
59 | * 固定翼飞机的设置
60 |
--------------------------------------------------------------------------------
/pid-tuning-rates-and-filters/feedforward-2.0.md:
--------------------------------------------------------------------------------
1 | # 前馈2.0
2 |
3 | Betaflight 4.1为我们带来了一项有关前馈的全面更新——前馈2.0。
4 |
5 | 请注意,开发版本中的`ff_spread`现已更改为`set ff_interpolate_sp = AVERAGED`。不再需要设置时间间隔。
6 |
7 | ### **什么是前馈?**
8 |
9 | 前馈(FF)是一个能够提高穿越机对于摇杆指令的动态响应性能的驱动因子。它与摇杆运动时的瞬时速度,也就是“变化率”成正比。摇杆移动的越快,我们就能获得越多的FF。在过弯时,FF可以协助P来使穿越机更快转弯。但与P不同的是,无论增加多少FF,前馈机制都不会引起自激震荡。
10 |
11 | 有了前馈的帮助,我们可以在避免将P推得过高而导致产生摆动的前提下,提高穿越机对摇杆指令的瞬态响应性。它还减少了输入与相应之间的延迟。延迟越低意味着误差越小,而误差越小越好。它非常适合竞速飞手、目视飞手和激进的花式飞行。这对于电影感飞法来说并不是很好。
12 |
13 | 前馈太高会导致:
14 |
15 | * 翻滚开始时便发生超调,特别是当你打满姿态杆时
16 | * 对遥控信号(RC)数据帧的夸张响应
17 | * 当飞手感到寒冷或紧张时,摇晃会被放大
18 | * 当遥控信号数据帧差异过大时电机信号出现尖峰,飞机发生短暂的震动
19 | * 陀螺仪轨迹超越setpoint轨迹
20 |
21 | 由于遥控信号数据以“数据包”的形式输入飞控,我们实际上会得到一系列突兀的阶跃信号。由于阶跃信号的导数是数值无限高的冲激信号,这基本上是无用的。回望3.4.0,我们引入了“滤波器模式”来平滑RC信号,其对“输入信号”进行低通滤波便“圆滑”掉了阶跃信号的“棱角”;导数现在可以变成一个更宽分布的峰值值以供我们使用。然后,我们在这些值上使用了一个“导数式”低通来过滤掉峰值,将其“平滑”成每个输入信号帧的“块状”FF。将RC滤波设置为自动可使其能主动适应相对较明显的遥控信号的帧速率;设置为手动,可以根据需要微调其平滑度,但代价是产生了输入信号延迟。
22 |
23 | 目前,不稳定的RC数据帧速率是一个主要问题。对于FrSky用户来说,OpenTX 2.3可能会有所改善;而TBS正在引入一种“锁定150Hz”的模式来改善这一点。
24 |
25 | 4.1引入了几种`ff_2.0`技术来改进这些限制。
26 |
27 | ### **ff_boost**
28 |
29 | 这是一项出色的新功能,可显著减少快速移动杆位时的延迟。
30 |
31 | 大多数电机需要一定的时间来加速/减速。他们需要在姿态开始改变时更加努力旋转。FF和P都在姿态开始改变时缓慢上升,这是因为最初我们的手指移动缓慢,并且大多数飞手在他们的Rate中使用了很多的Expo。因此,直到现在,除非使用了非常高的FF增益(250+),否则电机将不会被立刻推动。但是随着FF的增益逐渐调大,超调将变得越来越难以控制,尤其是SuperRate在摇杆行程末端被大量应用的情况下,FF在摇杆行程末端迅速变大,而我们却需要穿越机赶紧减速以避免过冲。
32 |
33 | “ff_boost”是一个与摇杆加速度成比例关系的PID参数。从技术上来说,它是setpoint信号的二阶导数。
34 |
35 | 作为二阶导数,`ff_boost`将在开始移动的早期阶段,即摇杆移动的瞬间,迅速达到峰值。当杆位处于行程中间部分时他会减小到0,因为在恒定的摇杆移动速率下,我们虽然会有很多FF但并不会有二阶加速度。当摇杆减速时,ff_boost将最终变为负值。
36 |
37 | 其中的加速度组件正是我们所需要的部分,它有助于克服电机响应延迟:提前推动运动,减轻中间移动,并在最后主动减速电机。使用适当数量的FF和ff_boost,响应敏捷的穿越机可以几乎完全无滞后地追踪遥控信号输入而不会出现过冲。
38 |
39 | 对于大多数穿越机来说,`set ff_boost = 15`是非常合适的。较大的值可以用于弱动力穿越机或者电机响应迟缓的穿越机。很少将此值提高到40以上。
40 |
41 | 增强的强度与PID中的FF量直接相关。可将ff_boost视为调整FF应用于电机的“时间因子”。更多的ff_boost将使FF更早增强。
42 |
43 | 能够记录黑盒日志的高级用户应该进行快速抽搐摇杆、快速左右冲刺的测试飞行,以查找FF信号的时间与数量。在理想情况下,当boost/FF搭配正确时,P应该只进行了很少的工作。
44 |
45 | ff_boost可以在未激活其他前馈2.0的功能的情况下独立使用。
46 |
47 | ### **ff_interpolate_sp**
48 |
49 | 这是从每个新RC信号数据帧中计算FF的“数字化”方式。与旧的“滤波器”方法相比,它提供了更清晰的前馈跟踪能力,并且延迟更少。
50 |
51 | `set ff_interpolate_sp = ON`将在接收到新的RC信号数据帧时对其进行分析,计算其setpoint的变化,并立即生成一个FF步进信号。每个步进信号将在接收到下一帧数据前保持不变。
52 |
53 | 可以调整RC平滑导数或低通滤波器的截止频率来平滑掉FF在每个步进信号中产生的锐角。在默认情况下,它将在自动模式下自动调整其值,但如果需要,可以手动指定其值。对于稳定的50hz信号来说,50hz是一个比较合适的平滑值,但是50hz的信号并不是常见的信号;20hz可以充分平滑掉大部分轨迹;对于远航和电影式飞行来说这可能需要将其设置为10hz,因为在这种情况下你的连接质量会较低,会得到步长较大的的RC信号包,并且不太关心延迟。
54 |
55 | 被丢弃的RC数据包通常会导致FF突然降低至0。`set ff_interpolate_sp - AVERAGE`旨在帮助解决此特定问题。或者,降低RC平滑导数可以使输出更平滑一些,但代价是延迟增大。
56 |
57 | ### **ff_max_rate_limit**
58 |
59 | ff_max_rate_limit用于衰减/防止FF在刚开始翻滚时引起的过冲。
60 |
61 | 当进行快速翻滚时,杆在达到其物理行程极限时将突然停止。随着Expo和SuperRate逐步应用于rate,Setpoint的增长率将在摇杆停止前达到最大值。在这时,穿越机本身正在进行快速转动,并且具有较大的角动量。Expo/SuperRate效果意味着FF的绝对值非常大。所有这一切,都发生在摇杆突然停止之前。
62 |
63 | 即使是有很多的D,也无法避免显著的超调。在以前的版本中,您可以使用Dmin并将D提高到足以补偿的值,但很难找到这其中的平衡。此外,转换阈值会突然触发,并且相反的一对电机必须使用全油门努力旋转,这反过来将导致其他轴上的摆动,并且使穿越机爬升。使用大量的D来控制它有其自身的危害,例如噪声和其他时候的响应性变差。
64 |
65 | ff_max_rate_limit预测性地来辨识摇杆是否达到其物理极限,并在预计这种将要发生时提前衰减FF。这种“向前看”能够在正确的时间先发制人降低FF,通常会完全消除可能会发生的过冲。
66 |
67 | 一个主要的好处是,它显著减少了对异侧电机的转动需求。快速翻滚将比以前更干净、更准确,并且在目视飞行时爬升的幅度要小很多。
68 |
69 | 默认值100- `set ff_max_rate_limit = 100`足够强大,大多数穿飞机在刚开始翻滚时力量不足;这是故意的,因为这样可以更好地避免在翻滚时再次驱动对侧电机旋转,并且这在FPV眼镜/HD视频中不会出现。将此值设置为115-1220将获得更加经典的“最佳阻尼”过冲/回弹图像,体感延迟稍低。但默认值100应该是最好的,即使是对于竞速飞行也是如此。
70 |
71 | ### **ff_interpolate_sp = AVERAGE**
72 |
73 | 由于FF是针对每个传入的RC数据包计算的,因此当新的数据包未按预期到达时,我们便会遇到一些问题。
74 |
75 | 通常这是由“丢弃数据包”,或者当TBS或R9接收机从150hz切换到较慢的50hz模式时所引起的,在任何时候发生这种情况时,FF通常会突然降至0;当下一个有效数据包进入时,会出现两倍幅值的步进信号。这些0/两倍幅值会导致FF轨迹十分混乱。
76 |
77 | 在AVERAGE模式下,插值算法将对每两个连续的前馈值取平均值,如果突然下降到0而随后又产生了大幅度上升,则会将其更改为一个较缓的下降,一个中位值,然后一个较缓的上升。总体而言,步长更小。
78 |
79 | 有一个小缺点:如果飞手快速打杆,然后突然保持摇杆完全静止,ff_spread将使FF保持在设定时间前的一个高值上,而不是立即降低到0。这可能会导致延长值时间内的持续过冲。当摇杆达到物理极限时,在翻滚开始最容易看到这个现象,但也可能在其他时间发生此现象。
80 |
81 | AVERAGED对于需要大量的RC平滑功能的对于远航/电影式飞法最有帮助。
82 |
83 | 对于竞速飞手和一般用途来说,RC链路的连接质量主要取决于你的天线有多好以及你计划飞行的距离。使用良好天线进行近距离的比赛,尤其是使用Futaba和某些RC步长一致性非常高的Spectrum遥控器,可能不需要使用这个功能。
84 |
85 | 有关技术细节和更多信息,请参阅[原始PR#8623](https://github.com/betaflight/betaflight/pull/8623)。
86 |
--------------------------------------------------------------------------------
/pid-tuning-rates-and-filters/d_min.md:
--------------------------------------------------------------------------------
1 | # D_MIN
2 |
3 | D_Min可以在正常飞行过程中衰减D的有效值。对于可能会使系统产生过冲的快速翻滚和快速打杆行为,它可以将D衰减到正常范围内。它也会在穿越机发生洗桨时提高D的有效值(以对抗洗桨)。D的高值通常只是您的D的系数。D的低值则由`d_min_xxx`控制,此参数可以在CLI或者OSD的CMS菜单中调整。
4 |
5 | 在CLI中,D_Min的相关设置项位于proflie列表的底部。
6 |
7 | 在OSD中,他们位于CMS菜单的MSIC页面下。
8 |
9 | 对比之前的版本来说,开启D_Min将允许更高的D,甚至在某些情况下允许更高的P。而不是始终维持一个较高的D。
10 |
11 | ### **背景和目的**
12 |
13 | 在正常飞行中,拥有一个低于正常量的D具有以下优点:
14 |
15 | * 受噪声影响小,这将导致电机变得更凉
16 | * 全油门下有更干净的电机轨迹
17 | * 提高飞机的瞬态响应能力
18 | * D导致的震荡和其他折磨人的情况将不太可能再发生
19 |
20 | 但是,低D也有缺点:
21 |
22 | * 更剧烈的洗桨
23 | * 更大幅度的超调和反弹
24 | * 当P项变高时,由于缺乏阻尼,导致快速打杆时带来P项震荡
25 |
26 | D_Min的目的是获得两方面的最佳效果:平稳飞行和低速转弯时的低D;需要抑制过冲时和需要应对洗桨时的高D。
27 |
28 | ### **我的穿越机已经飞的很好了,D_Min会提升我的穿越机性能吗?**
29 |
30 | 可能会吧。
31 |
32 | 如果四轴飞的很好并且没有过冲、洗桨震颤或者电机过热的问题,那么启用d_min可能没什么好处。
33 |
34 | 但是,通过启用D_Min,您可以将P略微提升一点,并将峰值D提升一些——这可能会得到更加激进的控制效果。
35 |
36 | ### **如何禁用D_Min?**
37 |
38 | 对于给定的轴,当d_min= 0 或d_min大于D时,则会在该轴上禁用D_Min。这样,D的大小将始终保持不变。
39 |
40 | ### **我想尝试D_Min,应该做哪些初始设置?**
41 |
42 | 当您导入PID时,原有的正常D值(即D的高值)将保留,d_min值将会是Roll 20,Pitch 22,YAW 0。
43 |
44 | 对于启用D_Min后的首次飞行,我建议将正常D值增加约10-20%,并将d_min设置为D值的一半左右。
45 |
46 | ### **默认的D_Min值是多少?**
47 |
48 | 默认值仅供参考,并不适合所有四轴。
49 |
50 | Roll/Pitch上的D为35/38,d_min为20/22。
51 |
52 | ### **启用D_Min会完全抑制住洗桨震颤吗?**
53 |
54 | 不会。D_Min是一种降低平时的D值的功能,较低的D值则通常意味着较弱的洗桨掌控力。
55 |
56 | D_Min算法通过对D进行备份来检测洗桨情况的发生并对其作出响应。但它的响应并没有我们想要的那么强烈。通常,D仅上升到预设D值的一半左右。为了充分利用D_Min,将D值提高15-20%是非常重要的。通常,飞控对于洗桨的处理情况将与旧版本(D_Cut)大致相同。
57 |
58 | 如果洗桨严重影响到了您的正常飞行,成为了您的主要问题,而且电机温度较低的话,请提高d_min值。
59 |
60 | ### **我有严重的洗桨情况,禁用D_Min会有所帮助**
61 |
62 | 根据@spatzengr(YouTube博主UAVTech)的建议,您可以同时提高D_Min的值和普通D值。
63 |
64 | 下面是一个例子:
65 |
66 | 
67 |
68 | ### **启用D_Min会改善过冲吗?**
69 |
70 | **会的。**即使是正常的D值不变, D_Min在时间上的滞后增强效应也会改善过冲。
71 |
72 | 当D_Min启用时,可以增加D的大小而仍使电机保持低温。通过增加D,为飞控改善过冲控制提供了更多的回旋余地。
73 |
74 | D值应该适当调整,直到过冲情况得到了最有效的抑制,同时调整d_min以对电机温度进行控制。
75 |
76 | ### **“d_min_advance”参数是用来干嘛的?**
77 |
78 | D_min_advance加速了增强效果的开始。如果你在反应非常灵敏的四轴飞行器上进行超高频率翻滚,(换句话说,你的Rate全都很高而且你也很享受那种极速翻滚的感觉)这可能会有所帮助。
79 |
80 | Advance参数的工作原理是:将一个由setpoint驱动的增强信号囊括进增强算法中。
81 |
82 | 当d_min_advance为0时,直到移动摇杆使飞机姿态改变后的某个时间点上,D将开始增大。这样将允许FF和P在“更早”地使飞机开始转弯,并且不受D的任何抑制效应,从而最大化地提高转弯的瞬态响应性。但是,对于一些响应非常灵敏的四轴来说(电机响应速度较高),若增强信号由陀螺仪信号来驱动的话,则有可能过于滞后。通过增加d_min_advance参数,飞控将在移动摇杆时就增大D,而不是等到姿态开始改变时再增大。
83 |
84 | d_min_advance的范围是0-200。除非你打杆速度超级快,否则的话默认值20偏少。将此值设为100则将会得到显著的性能提升。除了那些最大角速度超过1000deg/s(高Rate)的四轴之外,此值不应再高于100。
85 |
86 | ### **那么“d_min_gain”参数呢?**
87 |
88 | 这是一个高级调参参数,用于确定在快速打杆期间的D的放大强度。
89 |
90 | 默认值20适用于绝大多数穿越机。对于非常干净(噪声水平很低)的四轴来说,将此值设为25相当合适。如果再把它设置的更高的话,那么四轴将不会在大部分时间内令D以最小值运行,并且D将会很容易地就爬升到最大值。如果你主要考虑的因素是要抑制洗桨,那样的话你确实可以把这个值设置得更高,但如果你想要一个低水平的D来控制电机温度的话,这样做的效果并不理想。
91 |
92 | 如果四轴可以录制黑盒日志的话,在正常飞行中理想的增益值应该是使debug2和debug3中的实际D值始终有增大的趋势(不是精准的维持在最小值上,而是有时会稍稍高于最小值),在快速翻滚中迅速上升到最大D值,在抑制洗桨时D值上升到中位值附近。
93 |
94 | ### **我如何才能知道在飞行中我得到的D的有效值是多少?**
95 |
96 | 1. 使用OSD:CLI中输入`set debug_mode = D_MIN`,并将OSD设置为在屏幕上显示debug2。您看到的数字将是D的10倍。例如:OSD显示数值为350,那么此时D的有效值为35。
97 | 2. 使用黑盒日志:CLI中输入`set debug_mode = D_MIN`。黑盒日志查看器中的debug2将显示Roll上的瞬时D值,debug3将显示Pitch上的瞬时D值。您看到的数字将是D的10倍。
98 |
99 | ### **D_Min是如何工作的?**
100 |
101 | 洗桨的特点是:陀螺仪信号在20-60hz范围内震荡。
102 |
103 | 快速翻滚与10-30hz频率范围内的大幅运动相关联。
104 |
105 | 通过将一个80hz的双二阶低通滤波器应用于陀螺仪信号,飞控便可以检测到这些事件的发生,并且忽略高频噪声对于事件辨识的影响。快速翻滚和洗桨都将增大此增强信号。
106 |
107 | 通过使用一个10hz的一阶低通滤波器来平滑上述信号的绝对值,便提供了一种能够在这些事件发生时平滑轻柔改变D值的方法。10hz低通滤波器的作用是产生相位延迟,用于延迟D_Min的D值增大效果。因此,D将在快速翻滚结束时增大,而不是在开始时就增大。这就意味着D_Min的D值增大效应并不会抑制飞机对于摇杆命令输入的快速响应。
108 |
109 | 增强强度由增益来调整。
110 |
111 | ### **D_Min会增加CPU负载吗?**
112 |
113 | 会,但不会增加很多。仅有一个Biquad滤波器和一个PT1滤波器,以及一些简单的数学运算。要详细了解D_Min占用了多少的CPU负载,请先暂时将所有轴上的d_min设置为0并重新在CLI中检查CPU的负载情况。
114 |
115 | ### **D_Min是否适用于所有F3飞控? **
116 |
117 | 并不适合。有些F3芯片没有足够的闪存空间用于存放D_Min。以这些芯片为主控的飞控将不会在CLI或者OSD中显示d_min相关选项。您可以通过自行编译固件,来构建包含D_Min功能的F3固件,但是需要删除其他功能以腾出空间。
118 |
119 | 另请参阅:
120 |
121 | * [ctzsnooze的D_Cut原始PR](https://github.com/betaflight/betaflight/pull/7373)
122 | * [将D_Cut调整为D_Min 的PR](https://github.com/betaflight/betaflight/pull/7538)
123 | * [D_Min与CMS菜单更改](https://github.com/betaflight/betaflight/pull/7559)
124 |
--------------------------------------------------------------------------------
/receiver-hid/arming-sequence-and-safety.md:
--------------------------------------------------------------------------------
1 | # 解锁顺序与安全
2 |
3 | ## 开关解锁
4 |
5 | 为解锁配置一个AUX通道,它将自动选择一个默认的略微超过解锁有效范围(在配置程序“模式”选项卡内配置)的范围,此范围的上限是有效范围的上限加一“步长”(25us),下限是有效范围的下限减一“步长”。这是一项安全性功能,可以确保通道值在上下限附近时不会导致意外解锁。
6 |
7 | 请注意,此默认值会被接收机的第一个数据值所覆盖,因此接收机初始化失败或某些故障保护功能可能仍会造成意外解锁。
8 |
9 | ## 意外解锁预防
10 |
11 | Betaflight 3.2(及更高版本)提供了在飞行器无法解锁时相关的详细故障排除信息。
12 |
13 | 可以通过以下方式获取此信息:
14 |
15 | * CLI
16 | * Betaflight OSD
17 | * 蜂鸣器
18 | * Betaflight配置程序
19 |
20 | 部分无法解锁的情形是为了帮助防止由于接收机系统配置不正确,接收链路不可靠/质量差及因用户错误而导致的意外解锁。
21 |
22 | 这些导致飞行器无法解锁的原因被编码成一组标志(请参见[runtime_config.h](https://github.com/betaflight/betaflight/blob/master/src/main/fc/runtime_config.h))。
23 |
24 | ### CLI
25 |
26 | 可以通过status命令查看标志。
27 |
28 | 某些闪存空间有限的飞控目标将仅展示这些标志的16进制数字。在这种情况下,当前激活的禁止解锁标志必须从`runtime_config.h`中的`armingDisableFlags_e`枚举中派生出来(请确保所查看的文件的版本与固件版本相匹配)。
29 |
30 | ### 蜂鸣器
31 |
32 | 当尝试解锁失败时,如果飞控板连有蜂鸣器,那么它将发出警告信号,以指示当前无法解锁的最重要(最低标志编号)原因。
33 |
34 | 警告信号如下:
35 |
36 | * 五声短促的“注意”音;
37 | * 若干次(也有可能为0次)长哔音;
38 | * 间隔很长的若干次(也有可能为0次)的短哔音。
39 |
40 | 禁止解锁标志的标号可以通过下列公式计算:(5 \* <长哔音次数>) + <短哔音次数>
41 |
42 | 例如:
43 |
44 | * 1声长 2声短 = 7
45 | * 2声长 = 10
46 |
47 | ### 禁止解锁标志说明
48 |
49 | 每个标志的含义和您应该采取的(可能)解决问题的措施。
50 |
51 | 本列表应该与`master`分支中的代码(`src/main/FC/runtime_config.h`中的`armingDisableFlags_e`)保持一致,因此可用于根据数字查找对应标志,但如果运行的是旧版本固件,您将需要根据上述描述,自行检查禁止解锁标志。
52 |
53 |
54 |
55 | | 名称 | 描述 | 提示音 | 提示音 | 提示音 | 提示音 | 提示音 | 提示音 | 应采取的措施 |
56 | | -------------- | ---------------------------------- | --- | --- | ------- | --- | --- | ---- | ------------------------------------- |
57 | | | | 3.2 | 3.3 | 3.4/3.5 | 4.0 | 4.1 | 4.2+ | |
58 | | `NOGYRO` | 未检测到陀螺仪 | 1 | 1 | 1 | 1 | 1 | 1 | 您可能有硬件故障,如果以前的版本的固件可以工作,则可能是固件问题 |
59 | | `FAILSAFE` | 已触发失控保护 | 2 | 2 | 2 | 2 | 2 | 2 | 纠正故障状况,然后重试 |
60 | | `RXLOSS`(1) | 未检测到有效的接收器信号 | 3 | 3 | 3 | 3 | 3 | 3 | 您的接收器有故障或没有与发射器形成有效链接 |
61 | | `BADRX`(1) | 您的接收器刚刚从接收器失控保护中恢复,但解锁开关仍处于激活状态 | 4 | 4 | 4 | 4 | 4 | 4 | 将解锁开关拨动至锁定档位 |
62 | | `BOXFAILSAFE` | “ 失控保护”开关已激活 | 5 | 5 | 5 | 5 | 5 | 5 | 请查阅`FAILSAFE` |
63 | | `RUNAWAY` | 预防起飞失控 | | 6 | 6 | 6 | 6 | 6 | 上锁以清除此情况 |
64 | | `CRASH` | 发生坠机 | | | | | 7 | 7 | 上锁以清除此情况 |
65 | | `THROTTLE` | 油门通道过高 | 6 | 7 | 7 | 7 | 8 | 8 | 将油门降低至`min_check`以下 |
66 | | `ANGLE` | 飞行器不(足够)水平 | 7 | 8 | 8 | 8 | 9 | 9 | 将飞船水平调整到`small_angle`以下(默认为25) |
67 | | `BOOTGRACE` | 开机后解锁太快 | 8 | 9 | 9 | 10 | 10 | 10 | 等`pwr_on_arm_grace`秒(默认为5秒) |
68 | | `NOPREARM` | 撤防后未激活预备开关或未切换预备 | 9 | 10 | 10 | 10 | 11 | 11 | 拨动预解锁开关 |
69 | | `LOAD` | 系统负载过高,无法安全飞行 | 10 | 11 | 11 | 11 | 12 | 12 | 重新配置并禁用相关功能 |
70 | | `CALIB` | 传感器校准仍在进行中 | 11 | 12 | 12 | 12 | 13 | 13 | 等待传感器校准完成 |
71 | | `CLI` | CLI处于活动状态 | 12 | 13 | 13 | 13 | 14 | 14 | 退出CLI |
72 | | `CMS` | CMS(配置菜单)处于活动状态-通过OSD或其他设备显示 | 13 | 14 | 14 | 14 | 15 | 15 | 退出CMS(或OSD菜单) |
73 | | `OSD` | OSD菜单处于活动状态 | 14 | 15 | 16 | | | | 退出OSD菜单 |
74 | | `BST` | 黑羊遥测设备(例如TBS Core Pro)已上锁并无法解锁 | 15 | 16 | 16 | 15 | 16 | 16 | 请参阅您的硬件手册 |
75 | | `MSP` | MSP连接处于活动状态,可能是已经连接了Betaflight配置程序 | 16 | 17 | 17 | 16 | 17 | 17 | 终止与Betaflight 配置程序的连接(断开连接) |
76 | | `PARALYZE` | 瘫痪模式已激活 | | | 18 | 17 | 18 | 18 | 重新启动/重置飞控板 |
77 | | `GPS` | 已配置GPS救援模式,但尚未定位到所需的卫星数量 | | | 19 | 18 | 19 | 19 | 等待GPS定位成功,或启用无需GPS定位即可解锁功能,或禁用GPS救援模式 |
78 | | `RESCUE_SW` | GPS救援开关处于激活位置 | | | | 19 | 20 | 20 | 关闭GPS救援开关以解锁 |
79 | | `RPMFILTER`(2) | 基于电机RPM的滤波器无法工作 | | | | 21 | 21 | 21 | 一个或多个ESC无法提供有效的RPM遥测 |
80 | | `REBOOT_REQD` | 需要重启 | | | | | 22 | 22 | 重新启动飞行控制器,以使设置更改生效 |
81 | | `DSHOT_BBANG` | DSHOT Bitbang无法正常工作 | | | | | 23 | 23 | (3) |
82 | | `NO_ACC_CAL` | 需要校准加速度计 | | | | | | 24 | 校准加速度计或禁用调用加速度计的功能 |
83 | | `MOTOR_PROTO` | ESC/电机协议未配置 | | | | | | 25 | 在“配置”选项卡上选择要使用的ESC/电机协议。 |
84 | | `ARMSWITCH` | 手臂开关处于不安全位置 | 17 | 18 | 20 | 21 | 24 | 26 | 将解锁开关拨动至解锁档位 |
85 |
86 | (1)这些标志可能会在飞行过程中出现在Betaflight OSD上,以作为提醒您的遥控系统出现故障或正处于失控边缘的警告。请像对待“RSSI信号严重不足”警告一样对待它。
87 |
88 | (2)若启用了基于RPM回传的滤波器,但是有一个或多个ESC无法提供有效的Dshot遥测信息。请检查ESC是否支持双向Dshot并安装对应的固件。
89 |
90 | (3)若Bitbang Dshot无法正常工作,无法控制电机,则可能是由于BitBang计时器与飞控上启用的其他功能发生冲突所致。
91 |
--------------------------------------------------------------------------------
/getting-started/installation.md:
--------------------------------------------------------------------------------
1 | # 安装Betaflight
2 |
3 | ## 如何在飞控上安装Betaflight固件
4 |
5 | 使用Betaflight配置程序,选择“固件烧写工具”选项卡,然后选择以两种不同方式(在线或本地固件)中的一种进行刷新。
6 |
7 | 1. 加载在线固件。 选择左上角的飞控目标和版本。按屏幕右下方的“从网络加载固件”。
8 | 2. 加载本地固件。 按下“从本地电脑加载固件”按钮,您现在可以浏览含有Betaflight固件文件的文件夹。选择与您的飞行控制器匹配的正确固件。\
9 |  \
10 | 不点选任何选项(默认)并按下“烧写固件”。配置程序工具将擦除飞控芯片,并会将所选固件刷写到您的飞控中。以上操作都假定您已安装了正确的驱动程序,请继续阅读以获取详细信息。
11 |
12 | 所有的飞控基本上都使用两种USB设备:
13 |
14 | 1. 使用Silabs CP2103 USB芯片。 需要安装Silabs CP210x驱动程序。用于Bootloader模式下刷写固件和普通配置模式。在BF配置程序中显示为“COMx”设备。 [http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers](http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)
15 | 2. 使用MCU集成的STM32 VCP USB接口。 2.1.在Bootloader模式下需要使用WinUSB驱动进行固件烧录。可以由Zadig或ImpulseRC DFU工具进行安装。在BF配置程序中将显示为“DFU”设备。 2.2.需要STM VCP驱动程序来与BF配置程序进行连接预配置,在BF配置程序中显示为“COMx”设备。
16 | 3. CC3D是一个特例。 它是使用第二种USB设备的飞控,但由于其是基于STM32F1芯片的飞控,因此缺少2.1的DFU接口。所有基于F1的飞控仅具有基于串行UART的Bootloader接口。CC3D需要在UART1上使用外部USB串行适配器来进入Bootloader模式刷写固件和连接配置程序。(或烧录辅助Bootloader,比如OP自己的Bootloader。)
17 |
18 | 基于原生USB接口的飞控
19 |
20 | 请注意,此章节仅针对那些不使用硬件串行适配器的飞控 - 例如FTDI或Silabs CP210x。
21 |
22 | 可以使用这个方便的工具修复驱动程序问题: [https](https://impulserc.blob.core.windows.net/utilities/ImpulseRC_Driver_Fixer.exe) : [//impulserc.blob.core.windows.net/utilities/ImpulseRC_Driver_Fixer.exe](https://impulserc.blob.core.windows.net/utilities/ImpulseRC_Driver_Fixer.exe)
23 |
24 | 它需要使用.NET框架V4.5。可以在这里下载: [https](https://www.microsoft.com/en-au/download/details.aspx?id=30653) : [//www.microsoft.com/zh-cn/download/details.aspx?id=30653](https://www.microsoft.com/en-au/download/details.aspx?id=30653)
25 |
26 | 如果您在连接至飞控时出现问题:\
27 | [](https://www.youtube.com/watch?v=m4ygG6Y5zXI)
28 |
29 | ### Windows下使用DFU模式进行固件烧录 - USB DFU
30 |
31 | 如果您使用Windows系统,并需要使用DFU来启动Bootloader模式,请确保您有Zadig工具。说明如下:
32 |
33 | 1. 下载Zadig:[ http://zadig.akeo.ie/](../)
34 | 2. 将设备置于DFU模式。如果这是第一次烧写Betaflight,则需要在插入USB之前短路BL或Boot(或按住BOOT按钮)。
35 | 3. 打开Zadig。
36 | 4. 选项 -> 列出所有设备。
37 | 5. 单击下拉框,然后单击列出的设备STM32 BOOTLOADER\
38 | 
39 | 6. 在绿色箭头右侧的框中,选择WinUSB(v6.1.7600.16385)
40 | 7. 单击安装驱动程序。
41 | 8. 安装完成后,重新启动计算机(在重启这一点上,您可以作弊,只需要确保浏览器重启,但这样并不能保证其仍能正常工作)。如果重启期间USB电源仍然有输出,飞控应保持在DFU模式下。如果重启导致USB断电,请再次执行步骤2。
42 | 9. 打开Betaflight配置程序。
43 | 10. 转到“固件烧录工具”页面,选择“无重启序列”。
44 | 11. 在F4飞控上,禁用“全盘擦除”。烧录完成后可以在配置器中使用“重置为默认值”。
45 | 12. 点击“从本地电脑加载固件”。
46 | 13. 浏览并选择适当的固件。
47 | 14. 单击“烧录固件”。
48 | 15. 飞控板指示灯应该开始闪烁。配置程序底部进度条首先指示擦除,然后是烧录,最后是验证。
49 | 16. 烧录完成后,您的飞控将重新启动,但是您可能需要安装STM VCP驱动程序(请参见下文)以使Betaflight配置程序与飞控通信。
50 |
51 | ### 在Windows下安装STMicro虚拟串口(VCP)驱动程序
52 |
53 | 许多F7,F4(REVO,ALIENFLIGHTF4,BLUEJAYF4等)和某些F3飞控(SPRacingFEVO,STM32DISCOVERY)都是用STM32虚拟串口(VCP) - CDC 串行方式。这样可以在连接USB的同时,使用飞控板上的UART。这要求安装STM VCP驱动程序,以便电脑将VCP识别为飞控板上的附加通讯端口。**注意**:这与安装USB串行驱动程序,例如FTDI或Silabs CP210x,相类似。
54 |
55 | 可以在这里下载STM32 VCP驱动程序:[http://www.st.com/web/zh/catalog/tools/PF257938](http://www.st.com/web/zh/catalog/tools/PF257938)
56 |
57 | **注意**:下载并安装之后,它并没有安装驱动程序,只是解压缩了所选择的驱动程序。请找到安装目录,然后运行与您系统位数相符的EXE文件。
58 |
59 | 例如`C:\Program Files (x86)\STMicroelectronics\Software\Virtual comport driver\Win8\`这里会显示两个文件。一个用于64位系统`dpinst_amd64.exe`,一个用于32位系统`dpinst_x86.exe`。
60 |
61 | ### Windows 10
62 |
63 | 许多情况下,上述操作可能无效。从Silabs安装虚拟COM端口驱动程序将解决这些问题: [https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)
64 |
65 | ### 特定平台:Linux
66 |
67 | Linux并没有特定于某个产品的“设备驱动程序”的概念,因此不需要安装驱动程序。但是若要使Betaflight配置程序在Linux上工作,需要执行下面几个步骤:
68 |
69 | Linux需要udev规则,以允许用于对USB设备进行写入访问。如果您不熟悉udev规则,请放心,我们将使用命令行(CLI)界面逐步知道您完成该过程。
70 |
71 | **第一步**:
72 |
73 | 由于我们将使用CLI,因此只需将此命令复制并粘贴到您的中断中,它将为您创建所需的文件:
74 |
75 | `(echo '# DFU (Internal bootloader for STM32 MCUs)' `\
76 | `echo 'ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="plugdev"') | sudo tee /etc/udev/rules.d/45-stdfu-permissions.rules > /dev/null`
77 |
78 | 创建的文件是`/etc/udev/rules.d/45-stdfu-permissions.rules`,当飞控处于DFU模式时使用。
79 |
80 | **第二步**:
81 |
82 | 确保您有可以以飞DFU模式访问飞控的权限(请参考:[https://github.com/GoldenCheetah/GoldenCheetah/wiki/Allowing-your-linux-userid-permission-to-use-your-usb-device](https://github.com/GoldenCheetah/GoldenCheetah/wiki/Allowing-your-linux-userid-permission-to-use-your-usb-device))
83 |
84 | 注意:此示例假定您已经知道USB设备的设备名称,且您的用户ID具有sudo权限。
85 |
86 | 在此示例中,我们的Linux用户ID是user,我们在名为machine的服务器上。
87 |
88 | 我们的USB设备叫做/dev/ttyUSB0
89 |
90 | 检查设备的当前权限和所有者/组。
91 |
92 | `[user@machine ~]$ ls -la /dev/ttyUSB0 `\
93 | `crw-rw----. 1 root dialout 188, 0 Apr 3 21:16 /dev/ttyUSB0`
94 |
95 | 对于此配置,所有者为root,组为dialout,并且所有者/组都具有读取/写入权限。
96 |
97 | 您需要做的是是您的登录用户ID称为与USB设备相关联的组的一部分。
98 |
99 | 对于这种情况,我们使用usermod命令将我们的用户ID:user添加到dialout组中。此命令需要root权限才能运行。
100 |
101 | \[user@machine \~]$ sudo usermod -a -G dialout user
102 |
103 | 您将需要注销,然后重新登录。现在您应该可以访问该设备了。
104 |
105 | **解决安装问题**:
106 |
107 | 如果您在连接开发板后看到ttyUSB设备立刻消失,则有可能是ModemManager服务(它为您处理网络连接)认为它是GSM调制解调器。如果发生这种情况,可以使用一下命令来禁用该服务:
108 |
109 | `sudo systemctl stop ModemManager.service`
110 |
111 | 如果您的系统缺少systemctl命令,请使用在您的系统上可用的任何灯效命令来禁用该服务。如果需要进行蜂窝网络连接,则可以将设备ID添加到黑名单配置文件中,以阻止ModemManager接触设备,但这不在Betaflight文档的范围之内。
112 |
113 | 有时,在其他程序(配置脚本,ESC固件上传器)使用了您的飞控端口(和/dev/ttyUSB0或/dev/ttyACM0)之后,更改了端口的模式而不重置它们。即使重新插拔USB线缆,也无法使配置程序连接到飞控。在这种情况下,一下命令会将端口设置重置为默认值:
114 |
115 | `stty sane -F /dev/`
116 |
117 | ## 诊断您的CPU是否已经报废或仅仅是缺少正确的固件(蓝色LED熄灭)
118 |
119 | CPU已烧毁与缺少正确固件的CPU两者之间表现症状几乎相同,不同之处在于无法将固件烧录至已烧毁的CPU上。CPU可能会出厂即烧毁,或者在首次上电时因制造缺陷而烧毁,或者由于因不正确的连接电路板(例如,将5V电源连接至UART端口)而烧毁。当CPU烧毁时,您可能会看到MCU升起魔术般的烟雾,也可能不会。
120 |
121 | STM32芯片需要3.3V的电源才能正常运行,因此需要使用板载专用稳压器,才能在飞行期间为CPU提供稳定的电源。通常来说,由于这是板上唯一一个需要3.3V电压的元件,因此可以使用一下两种方法确定CPU是否已烧毁:
122 |
123 | * 使用万用表测量飞控上的3.3V焊盘与任何接地引脚之间的电阻。如果CPU正常共偶作,则电阻应在数千欧姆范围内。如果CPU挂了,电阻将接近0(1-3Ω)。
124 | * 如果没有万用表,请在飞控上找到3.3V稳压器,然后将其连接到电源(即USB)。如果温度仍然很低(约30℃),则CPU可能只是缺少正确的固件。如果温度迅速升高(80 - 150℃),则CPU可能已烧毁。
125 |
126 | 视频教程:
127 |
128 | [](https://www.youtube.com/watch?v=qQ86-GsXVQE)
129 |
130 | ## 其他教程链接
131 |
132 | 下面的视频链接提供了有关Betaflight的非常全面的使用指南以及有关配置的最佳实践指导:
133 |
134 | [http://www.youtube.com/watch?v=xSzO6HP6yzs](http://www.youtube.com/watch?v=xSzO6HP6yzs)
135 |
136 | Joshua Bardwell有关Betaflight配置程序的新视频:
137 |
138 | [https://www.youtube.com/watch?v=VAHUZZXIn9o](https://www.youtube.com/watch?v=VAHUZZXIn9o)
139 |
140 | 此处提供有关如何使用Betaflight刷写飞控的分步指南: [http://quadquestions.com/blog/2015/12/25/betaflight_flashing/](http://quadquestions.com/blog/2015/12/25/betaflight_flashing/)
141 |
142 | 如何在CC3D上刷写Betaflight: [http://www.rcgroups.com/forums/showpost.php?p=34196999\&postcount=21477](http://www.rcgroups.com/forums/showpost.php?p=34196999\&postcount=21477)
143 |
144 | 在常见问题页面上有一个名为“我该下载哪个HEX文件并刷到我的飞控里”的主题,该主题旨在帮助人们正确选择在飞控板上使用的固件。
145 |
146 | 本站还可以从赞助商列表内查看部分飞控设备制造商及其相关信息。
147 |
--------------------------------------------------------------------------------
/configuration/gps-rescue-mode.md:
--------------------------------------------------------------------------------
1 | # GPS救援模式
2 |
3 | ## 这个模式能:
4 |
5 | GPS救援模式用于在紧急情况(如图传链路或遥控链路丢失)时自动将飞机飞回。**此功能唯一的目的是将飞机飞回一定范围内,以便您可以尽快重新控制飞机。**这不是一个可靠的返航功能。请牢记这一点,并且仅在为了避免丢失飞机时才激活此模式(首次测试除外)。为了提高GPS救援的可靠性,请仔细阅读此文档,并依照飞行环境与飞行习惯尽可能好地配置系统。
6 |
7 | ## **这个模式不能:**
8 |
9 | GPS救援不是一个完整的返航功能。这意味着它不能自动将您的飞机飞回家,而且您也不应该尝试这样做。它没有自动降落的功能,并且会在靠近返航点的时候“轻轻地摔在地上”。此功能的唯一目的是在信号丢失的情况下将飞机飞回来一点,以便
**飞手重新取得控制。**
飞手应尽快接管控制权,而不要依赖GPS救援来进行返航。
10 |
11 | ## 需要条件
12 |
13 | * GPS。推荐使用Ublox M8N模块的变体。此功能已在18x18mm的M8N模块和北天BN880和其他类似型号上完成了测试。
14 | * **必须启用并正确校准加速度计。**GPS救援需要使用它以使飞机保持水平。
15 | * 气压计是可选项,但推荐使用。板载气压计和外置气压计(I2C)均已通过我们的测试,可以正常使用。
16 | * 此模式并不需要罗盘,但如果可用则会使用。
17 | * 不支持3D模式。如果开启了3D模式,则GPS救援会被禁用。
18 |
19 | ## 免责声明
20 |
21 | * 这是一个实验性的功能。
22 | * 请小心使用。
23 | * 此文档会经常更改,所以请经常来查看它。
24 | * 除特殊说明外,此文档与最新的稳定版固件相配套。
25 | * 如果想将此模式用于失控保护,则应启用沙盒自检功能。
26 |
27 | ## 必备条件
28 |
29 |
在配置或测试GPS救援之前,您必须校准加速度计,并确认自稳模式可正常工作。如果飞机无法正确保持水平,请重新校准加速度计并再次测试。GPS救援使用自稳模式,因此如果自稳模式无法正常工作,GPS救援将无法控制飞机,并导致其可能按错误的方向飞行。
30 |
31 | ## 设置GPS救援
32 |
33 |
\
34 | 为了在飞机上设置GPS救援,我们强烈推荐从头开始进行完整的设置过程。此步骤旨在受控环境中联系,并充分理解GPS救援的运行逻辑及短板。使用现成的GPS救援设置(复制他人的设置)会降低救援成功的几率。
35 |
36 | #### 在Betaflight“模式”页面为GPS救援模式添加一个控制通道。确认此模式可被正常激活(测试前请卸除螺旋桨)。
37 |
38 | 在CLI中设置如下参数:
39 |
40 | `set gps_rescue_initial_alt=[number] (默认为50)`
41 |
42 | 这是最重要的参数。当GPS救援被激活,飞机将朝向起飞点,并尝试爬升至一个安全高度。这个高度可以在这里设置,也可以是飞行过程中记录到的的最大高度+15米,并取二者中的高者。我个人习惯将其设置为70或80米。
43 |
44 | `set gps_rescue_ground_speed=[number] (默认为2000)`
45 |
46 | 这是飞机返航时的速度,以厘米/秒为单位。我习惯设为1500(约35mph,54km/h),此设置取决于具体的飞行情况。
47 |
48 | `set gps_rescue_angle=[number] (默认为32)`
49 |
50 | 这是返航时的最大倾斜角度。这项设置可以防止飞机到达全速,所以在更改默认设置时最好进行测试。注意,角度越大,飞机就越难保持稳定的高度。由于有可能遇上返航时逆风的情况,我习惯把该参数设置为45。
51 |
52 | `set gps_rescue_descent_dist =[number] (默认为200)`
53 |
54 | 这是飞机距起飞点多远开始下降的距离,以米为单位。
55 |
56 | `set gps_rescue_ascend_rate = [number] (默认为500) `(在BF4.1中加入)
57 |
58 | 这是飞机爬升时的垂直速度,以厘米/秒为单位。
59 |
60 | `set gps_rescue_descend_rate = [number] (默认为150)` (在BF4.1中加入)
61 |
62 | 这是飞机下降的垂直速度,以厘米/秒为单位。
63 |
64 | `gps_rescue_throttle_min` 和 `gps_rescue_throttle_max` 在BF4.1中仅用于限制新PID控制器的干预([https://github.com/betaflight/betaflight/pull/8015](https://github.com/betaflight/betaflight/pull/8015))
65 |
66 | `gps_rescue_alt_mode = [MAX_ALT, FIXED_ALT, CURRENT_ALT]` (在BF4.1中加入)
67 |
68 | 现在我们可以设置GPS救援的高度了。
69 |
70 | **MAX_ALT是默认的设置,高度就是**`gps_rescue_initial_alt,`**或者飞行过程中记录到的最大高度+15米。**
71 |
72 | **FIXED_ALT,**飞机总是尝试保持设置的高度值。(`gps_rescue_initial_alt`)
73 |
74 | **CURRENT_ALT,** 飞机保持触发GPS救援时的高度(不建议使用)。
75 |
76 | #### 现在可以去测试GPS救援了。
77 |
78 | 等待您的GPS模块获得良好的定位。默认情况下,如果卫星数少于`gps_rescue_min_sats` (默认是8),飞机将无法被解锁。
79 |
80 | ### 我们建议按如下步骤进行测试。
81 |
82 | 沿着直线飞到比开始下降距离再远100米的地方。例如,如果开始下降距离设置为150米,那就飞250米。当保持直线飞行时,返航箭头应一直指向返航点。
83 |
84 | #### 非常重要:如果箭头没有指向返航点,请勿激活GPS救援。如果此时激活了GPS救援,飞机将飞向箭头所指的方向。
85 |
86 | 激活GPS救援。
87 |
88 | #### 重要:请做好飞机不向回飞的时候关闭GPS救援,并夺回控制权的准备
89 |
90 | 如果一切顺利,飞机会返回并开始下降。不要让飞机离地面或自己太近,因为目前的程序并不包括降落功能。飞机会直接在附近坠毁。
91 |
92 | 你可能会注意到,飞机很难保持稳定的高度。有时,这会在GPS高度读数不稳定时发生,因为高度控制器的期望值总在不断变化。如果GPS高度读数很稳定,但是飞机仍不能稳定在设定值附近10米的范围内,就需要调整高度油门的PID增益了。以下是这些参数:
93 |
94 | `gps_rescue_throttle_P ` \
95 | `gps_rescue_throttle_I `\
96 | `gps_rescue_throttle_D`
97 |
98 | 我们不希望大多数人都会精调返航速度增益,默认情况下的PID增益是:
99 |
100 | `gps_rescue_velocity_P = 80`\
101 | `gps_rescue_velocity_I = 10`\
102 | `gps_rescue_velocity_D = 20`
103 |
104 | 当飞机可靠地返航一次之后,就可以逐步加大测试的距离和范围。当配置可靠的时候,就可以将GPS救援设置为失控保护。
\
105 | `set failsafe_procedure = GPS-RESCUE`
106 |
107 | 完成上面这个设置后,GPS救援将在失控时被激活。
108 |
109 | v4.0.x备注 - 当遥控信号恢复时,飞手将立即获得控制权。所以在失控时,飞手应手动激活GPS救援模式,这样就可以意外的控制权切换,或者做好在任何时刻接管控制的准备。我们推荐使用前者,这需要在将GPS救援用于失控保护的同时为其分配一个开关。
110 |
111 | v4.1和更高版本 - 当遥控信号恢复后,仅当roll/pitch/yaw三个轴的杆量输入之和超过`failsafe_stick_threshold`的百分比值时,失控保护才会被退出,飞手才将获得控制权。该参数的默认值是30,意味着roll,pitch,yaw需要从中点移动至少30%失控保护才会关闭。如果要减少切换过程的突变性,可以选择降低这个值。
112 |
113 | 另外,可以在配置程序中“失控保护”页面(需开启专家模式)配置失控保护,也可以使用OSD菜单(`FEATURES > FAILSAFE`)来设置。OSD界面也可以很方便的在有限空间(如室内或树林中)飞行时禁用GPS救援功能。请确认在合适的时候将其重新启用。
114 |
115 | ## 处理错误情况/系统自检(非常重要)
116 |
117 |
如果GPS救援是在受控状态下(不用于失控保护)使用,或者在一个周边环境无危险(如不在水面上)的地方使用,那么系统自检就完全是可选项。但如果GPS救援被用于失控保护(一般情况下即使不用于失控保护),则强烈建议开启系统自检。
118 |
119 | `set gps_rescue_sanity_checks = RESCUE_SANITY_ON`
120 |
121 | 如果想让系统自检仅在失控时启用,也可以将其设为`RESCUE_SANITY_FS_ONLY`
122 |
123 | 系统自检可以确保:
124 |
125 | * GPS仍然连接在飞控上
126 | * GPS的位置读数有效
127 | * 飞机并未遭受剧烈冲击(由碰撞造成)
128 | * 卫星数量不少于设定值
129 | * 在到达初始高度之后,飞机开始靠近返航点
130 |
131 | 如果不满足任一条件,那么GPS救援操作将被终止,这意味着飞机将直接坠落。但是,最后两个条件在触发之后有几秒钟的容许时间。同样地,如果飞机没有开始靠近返航点,而且磁力计已被占用,GPS救援则会使用GPS的方向读数来作为第二次尝试。如果仍然检测到了飞机正在飞向错误的方向,GPS救援操作仍将被终止。
132 |
133 | ## 定位成功前解锁
134 |
135 | 默认情况下,如果已经为GPS救援配置了一个拨杆开关或将其作为失控保护程序,那么Betaflight在没有完成GPS定位前不会允许解锁。某些情况下,您可能会希望在没有完成GPS定位的情况下起飞(也许当地的GPS信号覆盖很差,或想在搜星时快速飞一圈),但又不想直接禁用GPS救援,那么可以通过以下命令实现:
136 |
137 | `set gps_rescue_allow_arming_without_fix = ON`
138 |
139 | 开启此选项后,在没有GPS定位的情况下也能起飞,**但是GPS救援会在此次飞行中被临时禁用**。一条警告信息(RESCUE OFF)会显示在OSD上。如果在飞行中搜够了卫星数量,用“降落、锁定,再次解锁”的方法,开启GPS救援。
140 |
141 | ## GPS救援不可用的情况
142 |
143 | 如果为GPS救援配置了一个是拨杆开关或将其用于失控保护,飞控会持续检测一些参数的状态( GPS与飞控的连接情况、有效的GPS定位、最少卫星数量)。如果以上条件有任意一项不满足,一条警告信息(RESCUE OFF)会显示在OSD上。这只是一个警告,如果此时GPS救援被激活,仍会正常进行系统自检。这条警告并不影响系统自检以及后续的动作。
144 |
145 | ## 常见问题
146 |
147 | * 在测试GPS救援前,确保已飞出最小距离(默认是100米)的范围,这个最小距离可以在CLI中使用`set gps_rescue_min_dth = `设置。在最小距离之内,GPS救援将导致飞机坠毁。
148 | * 在一些特殊情况下加速度计会逐渐发生偏离,导致GPS救援无法正常工作。检查方法是飞行一段较长的时间,然后切换至自稳模式。如果飞机无法稳定的保持水平,请勿在这架飞机上使用GPS救援功能。
149 | * 一些GPS模块需要对U-Center进行配置才能工作。参考这个由Painless360制作的[视频](https://www.youtube.com/watch?v=8FIi_xuH4Vo)进行设置。
150 | * GPS救援功能仍在持续开发,所以如果不在使用最新的稳定版BF固件,有几率会遇到一些故障情况。请确保使用的是最新的稳定版固件。
151 | * GPS救援不是也不会是完全可靠的。在OSD上显示GPS经纬度并用DVR录制飞行过程,在遥控器上记录遥测数据(包括GPS坐标),或者使用自动启动的蜂鸣器,这些是应该在测试GPS救援之前就使用的方法。
152 |
153 | ### 老版本的常见问题
154 |
155 | * 对于早于BF4.0的版本,非常推荐启用Air Mode,选择性的精调一阶失控保护,作为GPS救援后的碰撞检测的应对方法。至少要确保飞机不会在进入二阶失控保护时直接自由落体。当使用等于或低于10.4版本的地面站更改失控保护设置时,失控保护的方式会被重置。在“失控保护”页面保存更改后,再去CLI手动设置失控保护的方式。
156 | * 每次解锁时,返航点都会刷新。但在早于BF4.0的版本中,返航点是在锁定时刷新的,快速拨动解锁开关可能会导致刷新失败。在所有版本中,最好的做法是解锁并等待几秒钟,直到OSD中显示返航点距离为0米,然后再开始飞行。否则,锁定并等待几秒后再重复此操作。从BF4.0开始,可以使用此命令`set gps_set_home_point_once = ON`使返航点仅为上电后首次解锁时的位置
157 | * 如果使用黑羊接收机,请在“CROSSFIRE RX”菜单中设置失控保护行为为“Cut”。
158 |
159 | ## 版本历史
160 |
161 | **Betaflight 4.1**
162 |
163 | * 当GPS救援作为失控保护被激活时,使用摇杆以恢复控制。([https://github.com/betaflight/betaflight/pull/7936](https://github.com/betaflight/betaflight/pull/7936))
164 |
165 | **Betaflight 4.0**
166 |
167 | * 防止在进入GPS救援模式时立即触发碰撞检测。([https://github.com/betaflight/betaflight/pull/7034](https://github.com/betaflight/betaflight/pull/7034))
168 | * 允许更改与返航点的最小距离。([https://github.com/betaflight/betaflight/pull/6404](https://github.com/betaflight/betaflight/pull/6404))
169 | * 修复在初始阶段系统自检误报STALLED/FLYAWAY
170 | * ([https://github.com/betaflight/betaflight/pull/7254](https://github.com/betaflight/betaflight/pull/7254))
171 | * 增加了用于标明GPS救援功能不可靠的标识。([https://github.com/betaflight/betaflight/pull/7256](https://github.com/betaflight/betaflight/pull/7256))
172 | * 增加了在没有GPS定位或卫星数量不足时允许解锁的明确设置项:gps_rescue_allow_arming_without_fix ([https://github.com/betaflight/betaflight/pull/7320](https://github.com/betaflight/betaflight/pull/7320))
173 |
174 | **Betaflight 3.5.5**
175 |
176 | * 修复在初始阶段系统自检误报STALLED。 ([https://github.com/betaflight/betaflight/pull/7254](https://github.com/betaflight/betaflight/pull/7254))
177 |
178 | **Betaflight 3.5.3**
179 |
180 | * 修复当“解锁时不转动电机”开始时在激活GPS救援时自动锁定的现象。([https://github.com/betaflight/betaflight/pull/6979](https://github.com/betaflight/betaflight/pull/6979));
181 |
182 | **Betaflight 3.5**
183 |
184 | * 被失控保护激活的GPS救援将检查飞机距返航点是远于100米,无论系统自检是否打开。如果距返航点100米以内,飞机将直接坠落。非失控保护激活的GPS救援仍按3.4版本运作。
185 |
186 | **Betaflight 3.4**
187 |
188 | * 系统自检包括一个在GPS救援激活时,飞机距返航点不少于100米的检查。当系统自检被打开,如果GPS激活(手动或被失控保护)时飞机距返航点100米以内,飞机将直接坠落。
189 |
--------------------------------------------------------------------------------
/tuning-notes/betaflight-4.1.md:
--------------------------------------------------------------------------------
1 | # Betaflight 4.1
2 |
3 | ## Betaflight 4.1带来了
4 |
5 | * [进一步简化的RPM滤波器配置](betaflight-4.1.md#jin-yi-bu-jian-hua-de-rpm-lv-bo-pei-zhi)
6 | * [改进低通滤波器默认设置](betaflight-4.1.md#xin-de-lv-bo-qi-she-zhi)
7 | * [动态陷波滤波器更新](betaflight-4.1.md#dui-dong-tai-xian-bo-lv-bo-qi-de-geng-gai)
8 | * [前馈插值](betaflight-4.1.md#qian-kui-cha-zhi),以削弱前馈信号中的尖峰
9 | * [前馈增压](betaflight-4.1.md#qian-kui-zeng-ya),以提高杆位动作瞬态响应并减少过冲
10 | * [前馈限制](betaflight-4.1.md#qian-kui-xian-zhi),用以防止高角速率旋转时产生的过冲
11 | * [优化的PID和TPA默认值,在新的配置程序中增加调参滑块](betaflight-4.1.md#you-hua-de-mo-ren-pid-he-tpa)
12 |
13 | Beatflight 4.1显著改善了滤波器默认参数、PID和前馈功能,所有这些改动都有助于令你的飞机表现得比以往更好,并且开箱即用。我们还有一个全新的10.6配置器!
14 |
15 | 默认设置可以在绝大多数飞机上表现得十分优秀,包括那些刷4.0.x固件之后出现问题了的飞机。在小无刷和7寸甚至更大的飞机上,可能需要对默认参数做一些调整,但我们强烈建议绝大多数飞机首先尝试使用默认参数进行飞行。
16 |
17 | #### 注意1:请勿将先前任何版本的diff内容粘贴到4.1的CLI中。4.0.x的diff也不行!这样会带来非常不合适的设置!
18 |
19 | #### 注意2:请先从默认滤波器和PID开始,除非您十分确定您的飞行器确实需要一些并不常见的设置。默认PID真的非常非常优秀!
20 |
21 | 现在,4.1中的低通滤波器类型全部都是PT1。它们已经针对低延迟方向进行了配置优化,并降低起飞暴走的概率。它们非常有效,但对于部分情况较好的飞机来说,滤波强度可能过高了。配置程序10.6.0中提供了一种较为简单的降低滤波延迟的手段。
22 |
23 | 我们强烈建议启用RPM滤波器。现在它比之前更易使用了。RPM滤波几乎完全消除了PID回路中由电机产生的噪声。然后,动态陷波器寻找并去除剩余的任何共振噪声。然后,低通滤波器则只剩下很少的工作了。作为一组截止频率可以移动提升至1.5-2倍于正常截止频率的滤波器,它可以以相同的比例来减少滤波器延迟,从而比以往更好地处理洗桨。新的前馈功能将在后面 做详细介绍,但默认值非常稳定,不需要任何调整。
24 |
25 | 在大多数情况下,4.1应该是一个“刷完就去飞”的版本,默认参数在各种情况下工作十分良好。
26 |
27 | 如果您的图传受飞控控制,那么您需要自行配置一个合适的图传表,以符合当地的法律法规。
28 |
29 | Bitbanged Dshot仍然是一种较新的协议,请在RC阶段到GitHub代码仓库汇报错误。如果你的电调出现了一点小问题,请尝试使用`set dshot_bitbang = OFF` 而不是保持默认设置。更多信息请参阅《双向Dshot和RPM滤波》。
30 |
31 | ### 进一步简化的RPM滤波配置
32 |
33 | 现在,启用基于RPM回传数据的陷波滤波器(组)比以往更容易了。默认情况下`dshot_bitbang= AUTO`,无需再在部分F4和F7飞控上自行修改定时器和DMA资源。当双向Dshot启用后,RPM回传将被自动激活,这可以在10.6配置器中手动完成。旧的电调固件则需要关闭dshot_bitbang`set dshot_bitbang = OFF`。更多相关信息,请参阅最新的《[双向Dshot和RPM滤波](../motors-and-esc/bidirectional-dshot-and-rpm-filter.md)》。
34 |
35 | 我们建议在启用RPM滤波器之后仍启用动态陷波滤波器。有关如何在激活RPM滤波器之后调整其余滤波器,请参阅下一节。
36 |
37 | ### 新的滤波器设置
38 |
39 | Betaflight 4.1重新回归到3.5.x版本时,在陀螺仪和Dterm上全部启用两个PT1滤波器。
40 |
41 | 在陀螺仪上,默认滤波可能相对较轻。陀螺仪低通滤波器1是动态的,范围是200-500Hz。陀螺仪低通滤波器2是静态的,截止频率是250Hz。
42 |
43 | 相比之下,Dterm滤波强度则较高。Dterm低通滤波器1是动态的,范围是70-170Hz。Dterm低通滤波器2是静态的,截止频率是150Hz
44 |
45 | 对低油门段使用较高强度的Dterm滤波的原因,是为了防止在4.0.x中偶尔出现过的,由D相关参数导致的“自旋到月球”(也称“起飞糊脸”)事件再次发生。这是因为飞行器极容易受到Dterm共振的影响。当使用4.1的默认滤波参数时,发生这种情况的概率非常小。
46 |
47 | 即便滤波器默认参数非常强大,能降低各种高共振飞机的电机温度,洗桨抑制也仍然不会有任何问题,特别是如果在转弯时保持油门的话。这是因为PT1滤波器在相同的截止频率下具有比Biquad滤波器更小的延迟,并且随着油门增加,滤波器截止频率也会上升。
48 |
49 | 如果您的飞行器在滤波器默认参数下飞行得很好,电机很凉,则可以通过提高低通滤波器的截止频率来获得更好的洗桨抑制能力。
50 |
51 | 滤波器在10.6版配置器中非常易于调整。只需要向右移动两个过滤器滑块,截止频率就会变得更高,这将降低延迟,并改善洗桨抑制能力。
52 |
53 | #### 注意:我们不建议关闭所有滤波器以降低滤波器延迟。我们强烈建议您使用滑块调整,并始终打开所有四个滤波器。
54 |
55 | 如果没有使用RPM滤波器,则应谨慎地调整低通滤波器。大多数情况良好的飞机应该使用最高至1.5倍的滤波器设定,在这种情况下它们可以飞得很好,电机温凉。除非使用RPM滤波,否则只有非常新的飞机才可以使用2倍的滤波器设定。
56 |
57 | 通过使用RPM滤波器,大多数飞机可以在使用2倍滤波器设定的情况下,保持电机仍然温凉。在2倍时,与正常情况相比,低通滤波器的延迟减半。只要开启动态怠速(见下文),与默认值相比,洗桨情况将明显更轻。一些非常新的飞机可以在同时开启RPM滤波与动态怠速的情况下,容忍3倍的滤波器设定。滑块将停止在2x处,所以要使用更高的数值,您必须手动输入数值。
58 |
59 | 要恢复滤波器默认参数,只需将滤波器滑块放回中心即可。
60 |
61 | ### 对动态陷波滤波器的更改
62 |
63 | 动态陷波滤波器现在默认范围为MEDIUM。
64 |
65 | 启用RPM滤波后,动态陷波滤波器将具有与以往不同的作用。它不再需要跟踪和移除电机噪声峰值——而RPM滤波的工作正在于此。相反,它可以专注于残存于飞机上的其他共振噪声。并非所有的飞机都有共振问题,但共振普遍存在。
66 |
67 | 我们建议在所有的飞机上启用动态陷波滤波器,即便是那些开启了RPM滤波的飞机。
68 |
69 | 当使用RPM滤波器时,动态陷波器可以配置为单个较窄的槽口,而不是RPM滤波未激活之前所使用的较宽双槽口配置。以下片段进行了这些更改,并将动态陷波引起的延迟,降低至正常值的5/7左右。
70 |
71 | ```
72 | set dyn_notch_width_percent = 0
73 | set dyn_notch_q = 250
74 | ```
75 |
76 | 以下片段将恢复至默认值,以便在没有RPM滤波器的情况下使用:
77 |
78 | ```
79 | set dyn_notch_width_percent = 8
80 | set dyn_notch_q = 120
81 | ```
82 |
83 | 如果您正在使用RPM滤波器,并且在较窄槽口的动态滤波下工作良好,电机温凉,则可以尝试完全关闭动态滤波器。但务必进行谨慎的试飞并检查电机温度!如果飞机在后面的飞行中逐渐积累下了碳板弯曲、老化、变软、桨炸弯这些共振情况,那么当动态滤波完全关闭时,您有可能会烧掉电机。除非您对您的飞机的完整性有足够的信心,并确保RPM工作良好,否则不建议您这样做。
84 |
85 | 如果您具有记录黑盒日志的能力,则建议使用RPM滤波开启前后的日志来进行进行对比,以显示它是否对噪声的整体控制起了作用。
86 |
87 | 为了减少延迟或专注于特定的共振频带,动态陷波器可以配置为在有限的频率范围内工作。有三个范围可选:LOW、MEDIUM和HIGH。在4.0.x中,默认范围为AUTO,其中代码根据用户配置的陀螺仪动态低通滤波器最大截止频率来选择工作范围。这个想法是,更高的最大值只能用于高KV飞机。但是,例如向上移动滑块,更高的最大值便可用于普通飞机(KV并没有那么高。例如2400kv@4s)。
88 |
89 | 在4.1中,动态陷波滤波器范围默认为MEDIUM,无论陀螺仪动态低通滤波器最高截止频率如何,它都会保持固定的工作范围。在MEDIUM模式下,它可以处理大约从140Hz至600Hz的共振噪声。这适用于大多数普通飞机。
90 |
91 | 对于大轴距飞机 - 7寸以上 - 由于共振噪声通常低于150Hz,使用LOW可能更合适。
92 |
93 | HIGH在高KV飞机上十分有效,与正常的陀螺仪动态低通滤波器最低截止频率相结合,可以保持动态陷波滤波器跟踪特定切相对较高的共振噪声峰值,并且中心频率不会低于实际所需要的值。这有助于降低延迟。
94 |
95 | ### 前馈插值
96 |
97 | 到目前为止,前馈因子来自于计算设定点的导数。每个新的RC数据帧都会导致设定点急剧上升,从而导致前馈出现更加尖锐的峰。为了衰减这些尖峰,首先对输入的设定点数据进行精调的低通滤波(`rc_smoothing_input_hz`),之后,再在前馈值上进行第二次低通滤波(`rc_smoothing_derivative_hz`)。
98 |
99 | 在4.0.x中,当RC信号平滑为自动模式时(`set rc_smoothing_input_hz = AUTO`,`set rc_smoothing_derivative_hz = 0`),这些滤波器的值将根据RC数据帧之间的步长动态设置截止频率。
100 |
101 | 在4.1中,根据设定值的变化量,我们使用插值的方法来计算前馈,并输出没有尖峰的前馈信号。这并不需要使用很多滤波。
102 |
103 | 新的命令是`ff_interpolate_sp`,它有三个选项:
104 |
105 | * OFF:普通的4.0.x算法,对RC信号进行低通滤波处理。
106 | * ON:对前馈使用4.1的新插值算法,对setpoint使用4.0.x的旧低通滤波算法。
107 | * AVERAGED:与ON相同,但在前馈信号上进行两点移动平均。这是新的默认参数。
108 |
109 | 如果你不使用OpenTx系列遥控器或者使用OpenTx 2.3及更高版本的遥控器,由于它们不会动态更改数据帧速率,那么在4.1中,一个较好的低延迟RC信号前馈插值设置将会是:
110 |
111 | ```
112 | set rc_smoothing_input_hz = 40
113 | set rc_smoothing_derivative_hz = 100
114 | set rc_smoothing_input_type = PT1
115 | set rc_smoothing_derivative_type = PT1
116 | ```
117 |
118 | 当您在OpenTx遥控器上使用TBS Crossfire或Frsky R9(甚至可能使用任何外置高频头模块)时,下面这些设置将能够降低当前在这些系统上存在的混叠效果:
119 |
120 | ```
121 | set rc_smoothing_derivative_hz = 20
122 | set rc_smoothing_derivative_type = PT1
123 | ```
124 |
125 | 以下命令将使用旧的4.0的自动低通滤波设置:
126 |
127 | ```
128 | set rc_smoothing_input_hz = 0
129 | set rc_smoothing_derivative_hz = 0
130 | set rc_smoothing_input_type = BIQUAD
131 | set rc_smoothing_derivative_type = BIQUAD
132 | ```
133 |
134 | 这些更改的原始描述在《前馈2.0》的文档中。在那里我们解释了前馈与前馈增压的基本原理。
135 |
136 | ### 前馈插值平均
137 |
138 | 在不稳定的RC信号轨迹上平滑前馈值的一种有效方法是,在整个前馈信号上使用两点移动平均算法。当单个RC数据帧突然消失时,这对于减少突然的移动非常有效。前馈插值平均默认启用,在别的情况下,要重新启用这个命令,请输入:\
139 | `set ff_interpolate_sp = AVERAGED`
140 |
141 | 虽然平均算法可以将单个尖峰的峰值衰减值一般,并且可以消除丢帧导致的尖峰,但它相当于对FF信号增加了当前RC数据包步长一半的延迟。
142 |
143 | 虽然一些RX系统比其他系统更好,但大多数RX系统都会经常丢失数据包。这些不稳定的RX信号会导致前馈信号抖动量非常大,所以我们建议保持AVERAGED开启。
144 |
145 | 如果你知道你的RX信号是非常稳定的,几乎不会发生数据丢失情况,那么可以通过以下命令来禁用它,以避免平均算法带来的延迟:\
146 | `set ff_interpolate_sp = ON`
147 |
148 | 若要返回到旧的基于滤波器的前馈平滑方式,请输入:`set ff_interpolate_sp = OFF`
149 |
150 | ### 前馈增压
151 |
152 | 这为前馈提供了一个额外的组件,它基于摇杆加速度,当您更改了移动摇杆的速度时,它可以帮助电机更快地旋转。
153 |
154 | 当开始移动摇杆时,摇杆加速度为正。于是它提供正的“增压”,并被添加到前馈信号中,增压大小与加速度成正比。在将要停止移动摇杆时,一旦摇杆减速,我们将主动降低前馈量,从而减小过冲。
155 |
156 | 默认的前馈增压`ff_boost`值是15.这样可以放大整体的正常前馈的强度,特别是在移动的早期,可以降低快速转弯时的延迟。当摇杆减速时,它会反向作用于前馈。总体而言,效果是响应性更强。
157 |
158 | 如果飞机在总体上能够跟随设定点快速移动,但在开始时仍然有一些之后,切RC信号质量非常好,则可使用高达30的ff_boost。
159 |
160 | 限制增压的主要因素是RC数据帧的延迟、丢失或过早接受到下一帧数据。这可能会导致一个非常大的setpoint信号步长间隔。从而导致前馈的增压组件中出现更大的步长。我们有两种方法可以削弱这些尖峰。
161 |
162 | 第一种方法是一种非常有效的、零延迟衰减手段。它抑制增强信号中的尖峰,并让小的、“真实的”摇杆相关的增压值通过。只要增强因子远低于`ff_spike_limit`所指定的阈值,它就基本不会改变传输过的值(增压);但由尖峰造成的较大增强信号就会被强力衰减。
163 |
164 | 在大多数情况下,将`ff_spike_limit`设置为50可以使其很好地工作。
165 |
166 | 如果RX信号轨线基本上是干净的常见的步进信号,那么更高的阈值(例如60-80)将允许更快地响应快速摇杆输入。然而。如果RX信号有很多异常帧,那么更高的阈值将可能造成不可接受的、非常嘈杂的FF信号和/或电机信号。
167 |
168 | 第二种方法是对连续的前馈数据取点求平均值。这已在前面的前馈插值部分中描述过了。它确确实实增加了等同于正常RC数据帧一半的延迟。
169 |
170 | ### 前馈限制
171 |
172 | `ff_max_rate_limit`是一个CLI变量,默认情况下启用,默认值为100,当摇杆可能移动到其行程的物理极限时,它会削弱前馈信号。这可以最大限度地减少我们在翻滚动作开始时经常看到的过冲。
173 |
174 | 默认值100效果很好。
175 |
176 | 但是仍可以将此值调整至完美。首先是正确调整飞机,将前馈和前馈增压调整至最好。然后在黑盒日志查看器中查看暴力翻滚的开始阶段,看看是否有任何过冲现象。如果在`ff_max_rate_limit=100`的情况下,仍然出现了很多过冲,请尝试降低到95。如果过冲抑制地太好,请尝试提升至105-110。调整范围非常狭窄。
177 |
178 | `ff_max_rate_limit`不会处理摇杆回中时的过冲。
179 |
180 | 对于那些Rate超低的竞速飞手来説,由于他们经常使用最大行程来进行转弯,此功能非常有用。
181 |
182 | ### 优化的默认PID和TPA
183 |
184 | 主要的PID参数与4.0.x基本保持不变。**在Pitch轴和Roll轴上,略微提高I和前馈(FF),使摇杆响应性得到改善。**前馈增压`ff_boost`在默认情况下启用,与较高的前馈默认值和降低延迟的前馈插值相结合,可以显著增强摇杆响应性。如果您的飞机飞起来太过抽搐,请使用摇杆响应滑块来降低FF。
185 |
186 | 现在,**Throttle PID Attenuation (TPA)**默认值为0.65,起始点为1250油门。这意味着在满油门时,D将衰减得更多,但D衰减的范围更平滑。结合PT1滤波器的变化,在大多数情况下,与4.0.x相比,这似乎可以改善中油门震荡。
187 |
188 | 最大的变化是,**提供滑块,以简化PID参数的调整**。
189 |
190 | 对于电机动力相对较弱的飞机(4s挂载GoPro的机器或7寸重桨飞机)来说,将PID主乘数滑块稍微向右移动一点,大概至1.5,可能效果会更好。电机动力相对较强的机器,例如超轻型目视四轴,将PID主乘数滑块往左移一些,比如0.7-0.8,可能会更好。
191 |
192 | 使用“摇杆响应增益”滑块可以轻松调整前馈量。电影式高清穿越机可能更偏爱较低的前馈,尤其是他们的RX系统经常丢包。竞速飞手可能更喜欢较高的前馈。
193 |
194 | 要获得更多的阻尼效果,请将“PD平衡”滑块向左移动。如果你在急转时出现了Pterm震荡,你可能会需要这样做。一般来说,除了特殊情况外,我们基本不会改变PD平衡,默认值是最好的。
195 |
196 | 6s竞速机通常需要使用默认的I和FF,唯一需要更改的滑块是将“P和D增益”滑块调至0.7。
197 |
198 | 4s竞速机在主乘数1.2,P和D增益0.7时,工作最佳。
199 |
200 | 滑块大大简化了PID的调整。要返回默认值,请将所有滑块放回中间位置。
201 |
202 | 请不要将所有滑块一直向右推以希求它飞得超级完美,你很有可能会烧毁你的电机!
203 |
204 | ### 致谢:
205 |
206 | 大量提升、修复、建议,和幕后的全部代码:\
207 | mikeller,eTracer,和众多贡献者
208 |
209 | 动态怠速、RPM回传、Bitbanged Dshot、前馈限制:\
210 | JoeLucid
211 |
212 | 配置程序滑块:\
213 | IvoFPV
214 |
215 | 前馈增压、滤波和PID更改:\
216 | ctzsnooze
217 |
--------------------------------------------------------------------------------
/camera-vtx-and-osd/vtx-tables.md:
--------------------------------------------------------------------------------
1 | # 图传表
2 |
3 | ### 在配置内程序内使用的图传表
4 |
5 | 使用说明:
6 |
7 | * 右键单击“另存为”;
8 | * 在配置器中,转到“图传”页面,使用“从文件加载”加载在上一步中保存的文件;
9 | * **单击“保存”**以将图传表保存在飞控上。
10 |
11 | 有关如何快速确定SmartAudio版本的视频,请访问:https://youtu.be/eaSmoOPk9KY?t=65
12 |
13 | SmartAudio的Debug\[0]通道:
14 |
15 | * 100 = SA 1.0
16 | * 116 = SA 1.0 解锁
17 | * 200 = SA 2.0
18 | * 216 = SA 2.0 解锁
19 | * 300 = SA 2.1
20 | * 316 = SA 2.1 解锁
21 |
22 |
23 |
24 | | 制造商/型号配套文件 | 文件 | |
25 | | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | - |
26 | | **IRC Tramp协议:** | | |
27 | | IRC Tramp | [IRC Tramp (USA)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_irc_tramp_us.json) | |
28 | | | [IRC Tramp (EU)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_irc_tramp_eu.json) | |
29 | | [MATEKSYS VTX-MINI](http://www.mateksys.com/?portfolio=vtx-mini#tab-id-6) | [VTX-MINI (INT)](http://www.mateksys.com/Downloads/VTX/MATEK_VTX-mini.json) | |
30 | | [iFlight The Force Long Range](https://www.iflight-rc.com/index.php?route=product/product\&path=24\_75\&product_id=732) | [Force LR (USA)](https://raw.githubusercontent.com/Maizzer/Betaflight-VTX-Tables/master/BTFL_vtxtable_iFlight_Force_Long_Range\_-\_US.json) | |
31 | | [RunCam TX200U](https://shop.runcam.com/runcam-tx200u/) | [IRC Tramp (USA)](https://runcamfcfiles.s3-us-west-2.amazonaws.com/vtxtable/betaflight/TX200U/runcam_tx200u_vtx_table_irc_tramp_us.json) | |
32 | | | [IRC Tramp (EU)](https://runcamfcfiles.s3-us-west-2.amazonaws.com/vtxtable/betaflight/TX200U/runcam_tx200u_vtx_table_irc_tramp_eu.json) | |
33 | | [RunCam TX100](https://shop.runcam.com/runcam-tx100-nano/) | [IRC Tramp (USA)](https://runcamfcfiles.s3-us-west-2.amazonaws.com/vtxtable/betaflight/TX100/runcam_tx100\_vtx_table_irc_tramp_us.json) | |
34 | | | [IRC Tramp (EU)](https://runcamfcfiles.s3-us-west-2.amazonaws.com/vtxtable/betaflight/TX100/runcam_tx100\_vtx_table_irc_tramp_eu.json) | |
35 | | [Speedy Bee TX500](https://www.speedybee.com/tx500/) | [IRC Tramp (USA)](https://speedybee.s3.amazonaws.com/vtxtable/betaflight/TX500/speedybee_tx500\_vtx_table_irc_tramp_us.json) | |
36 | | | [IRC Tramp (EU)](https://speedybee.s3.amazonaws.com/vtxtable/betaflight/TX500/speedybee_tx500\_vtx_table_irc_tramp_eu.json) | |
37 | | | | |
38 | | **TBS SmartAudio协议:** | | |
39 | | TBS(SA 1.0仅适用于第一代TBS图传) | [SmartAudio 1.0 (USA)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_smart_audio\_1\_0\_us.json) | |
40 | | | [SmartAudio 1.0 (EU)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_smart_audio\_1\_0\_eu.json) | |
41 | | TBS(适用于大多数支持SmartAudio的图传) | [SmartAudio 2.0 (USA)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_smart_audio\_2\_0\_us.json) | |
42 | | | [SmartAudio 2.0 (EU)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_smart_audio\_2\_0\_eu.json) | |
43 | | TBS(当前仅适用于最新的TBS图传,例如EVO或Pro32) | [SmartAudio 2.1 (USA)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_smart_audio\_2\_1\_us.json) | |
44 | | | [SmartAudio 2.1 (EU)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_smart_audio\_2\_1\_eu.json) | |
45 | | | | |
46 | | **板载图传:** | | |
47 | | 板载图传的飞控板 | [RTC6705 (USA)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_rtc6705\_us.json) | |
48 | | | [RTC6705 (EU)](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/camera-vtx-and-osd/resources/vtx_tables/vtx_table_rtc6705\_eu.json) | |
49 |
50 | ### 在CLI中设置图传表
51 |
52 | 请查阅[这个](https://github.com/betaflight/betaflight/blob/master/docs/VTX.md#vtx-table)文档。
53 |
54 | ### 图传按钮用法
55 |
56 | 按住图传按钮时,状态2 LED每秒将闪烁N次,用以表示当您释放按钮时将采取的操作。按住按钮后,闪烁开始。例如,您按下按钮,然后您记录闪烁次数,然后根据需要释放。
57 |
58 | ```
59 | | Duration | Function | Flashes |
60 | |---------------|---------------------------|-----------|
61 | ```
62 |
63 | 重启图传的示例:
64 |
65 | ```
66 | | 0 seconds | 1 second | 2 seconds | 3 seconds | 4 seconds | 5 seconds | 6 seconds or more|
67 | [-HOLD BUTTON------------------------------|-RELEASE BUTTON-NOW------------|-RELEASED TO LATE TO CHANGE POWER |
68 | | 4 Flashes | 3 flashes | 3 flashes | 2 flashes | 2 flashes | 1 flash | 1 flash |
69 | | 0 seconds | 1 second | 2 seconds | 3 seconds | 4 seconds | 5 seconds | 6 seconds or more |
70 | |-HOLD BUTTON------------------------------|-RELEASE BUTTON-NOW------------|-RELEASED TOO LATE TO CHANGE POWER|
71 | | 4 Flashes | 3 flashes | 3 flashes | 2 flashes | 2 flashes | 1 flash | 1 flash |
72 | ```
73 |
74 | 图传按钮可以与所有图传系统配合使用,包括板载RTC6705,Tramp和SmartAudio。
75 |
76 | 如果可以关闭图传,那么Power 0将关闭图传,而Power 1将把图传设置为其最低输出功率。如果无法关闭图传,那么Power 0将把图传设置为其最低输出功率。
77 |
78 | 一些图传其自身有一定的使用限制。例如,SmartAudio 1.0和2.0设备只能在初次上电时进入pitmode。Betaflight可以使这些设备退出pitmode,但无法控制其进入。
79 |
--------------------------------------------------------------------------------
/configuration/led-strip-setup.md:
--------------------------------------------------------------------------------
1 | # LED灯带
2 |
3 | Betaflight支持使用可寻址LED灯带。可寻址LED灯带允许灯带中的每个LED被独立编程为互不相同的颜色。这比普通的RGB灯带要先进得多,因为普通RGB灯带中的每个LED都将显示相同的颜色。
4 |
5 | ## LED灯带模式
6 |
7 | LED灯带具有三个子模式:STATUS,RACE和BEACON。分别使用三个独立的与名称对应的LED配置文件来配置。可以从CLI、OSD的LED菜单或拨杆辅助通道(遥控器)更改所选的配置文件。请注意,使用遥控器的辅助通道做出的更改会覆盖其他方式所选择的LED配置文件。
8 |
9 | ### STATUS模式
10 |
11 | 该模式用于显示以下所有信息,即警告、指示、左右扫描等。
12 |
13 | 可寻址的LED的LED灯条可用于显示来自飞控的信息,当前支持以下功能:
14 |
15 | * 最高支持32个LED。(可以支持更多的LED,只是需要进一步开发)
16 | * 灯光指示当前Pitch/Roll摇杆位置
17 | * 方向/指向灯
18 | * 某一飞行模式下使用特定的灯光配色方案
19 | * 电池低电压警告
20 | * 辅助通道控制LED开/关
21 | * GPS状态信息
22 | * RSSI强度显示
23 | * 电池电量显示
24 |
25 | ### RACE模式
26 |
27 | 该模式将会把所有LED灯带都调成相同颜色,以用于竞赛。例如,根据灯带颜色来辨认飞机。LED灯带所有灯珠颜色都将保持相同且不再变化,不会显示其他信息。
28 |
29 | ### BEACON模式
30 |
31 | 该模式用于搜寻坠机的飞机,它每秒使所有LED变白一次。同样,在此模式下,LED灯带上不会显示其他信息。
32 |
33 | ### LED配置文件设置
34 |
35 | #### 选项1:设置一个调整通道,从遥控器来改变LED灯带配置文件
36 |
37 | 1. 开启专家模式 - 点击配置程序右上方“启用专家模式”按钮。
38 | 2. 在“调整”页面内设置一个调整通道,以供切换LED灯带配置文件使用
39 | * 启用“调整”。(“如果激活”)
40 | * 选择用于更改LED配置文件的AUX通道。(“当通道”)
41 | * 设置范围以覆盖所选AUX通道的整个范围。(“在指定范围时”)
42 | * 对于该操作,选择“RC Rate 调整”。(“执行”)\
43 | 这样操作意味着余下的设置将在CLI中进行配置,因为配置程序10.4.0及更早版本不支持在图形页面内开启LED配置文件选择。仅选择“ RC Rate 调整”是为了使接下来在CLI中的配置更容易一些。
44 | * 选择“通过通道”以匹配上面选择的AUX通道。(“当通道”)。
45 | * 保存
46 | 3. 打开CLI并键入`adjrange`然后回车。
47 | 4. 复制上面步骤2中配置的adjrange,并将其粘贴到命令窗口中。然后将通道范围后的“1”改为“30”,然后回车。键入save,并再次回车。现在将保存已配置的adjrange,并且飞控将重启。
48 | 5. 在您的遥控器上配置对应的AUX通道。更改此通道之后,所选的LED灯带配置文件将在STATUS、RACE和BEACON之间切换,这样做时您应该会看到LED功能发生了变化。
49 |
50 | #### 选项2:使用CLI来选择LED配置文件(即不通过遥控器来选择LED配置文件)
51 |
52 | 1. 打开CLI。
53 | 2. 键入`get ledstrip_profile`并回车,以显示当前选择的LED配置文件。
54 | 3. 键入`set ledstrip_profile = x`,其中x是配置文件的名称,可以是STATUS,RACE或BEACON,然后按回车键。
55 | 4. 键入`save`并回车,以保存所选的LED配置文件。
56 |
57 | #### 选项3:使用OSD
58 |
59 | 1. 在遥控器上以偏航向左、俯仰向上的杆位来激活OSD菜单。
60 | 2. 使用俯仰杆移动至LED Strip菜单,然后横滚向右以进入菜单。
61 | 3. 横滚向左可以用来返回上一页来配置STATUS和RACE配置文件,俯仰向上/向下可以用来更改颜色值。
62 | 4. 横滚向左退到顶层菜单,然后选择“Save & Reboot”以完成切换。
63 |
64 | #### RACE模式的颜色:可以使用CLI来配置RACE模式的颜色
65 |
66 | 1. 打开CLI。
67 | 2. 键入`get ledstrip_race_color`并回车,以显示当前RACE模式的颜色编号。
68 | 3. 键入`set ledstrip_race_color = x`,其中X是颜色编号。
69 | 4. 键入`save`并回车,以保存RACE模式的颜色。
70 |
71 | ## 支持的硬件
72 |
73 | 当前仅支持有32个WS2811/WS2812灯珠的LED灯带。若灯珠数量超过32个,则仅会使用前32个LED灯珠。
74 |
75 | 需要使用800KHz信号和精准的时序才能控制WS2812灯珠,因此需要为LED焊盘配置专用的硬件计时器。
76 |
77 | 注意:并非所有WS2812芯片都使用相同的时序,有些批次使用的时序并不一样。
78 |
79 | 如果确实有需要的话,可由用户自定义所需的时序。
80 |
81 | ### WS2811和WS2812
82 |
83 | WS2811是一个连接到RGB灯珠上的LED驱动芯片。可以向其输入红-绿-蓝各8位的数据信号。(红、绿、蓝各8位)
84 |
85 | WS2812则是5050(或3535)灯珠中集成LED驱动芯片,而不是两者各自作为独立设备。可以向其输入绿-红-蓝各8位的数据信号。
86 |
87 | 因此,根据LED灯带使用的芯片不同,需要使用红-绿-蓝或绿-红-蓝数据编码。可以通过下列CLI来修改颜色数据编码序列
88 |
89 | ```
90 | set ledstrip_grb_rgb = RGB
91 | ```
92 |
93 | 或
94 |
95 | ```
96 | set ledstrip_grb_rgb = GRB
97 | ```
98 |
99 | 然后只需将LED设置为绿色,即可确认设置是否正确。如果LED呈红色,则设置错误。
100 |
101 | ## 连线
102 |
103 | WS2812灯带通常需要一根数据线、5V供电线和GND地线。
104 |
105 | WS2812 LED处于全亮状态会消耗大量电流。建议检查电流消耗情况,以确保您的电源足以拖动负载。若多旋翼飞行器的电调均具有BEC,可以尝试用不同的BEC分别为飞控板和LED灯带供电。例如,ESC1/BEC1->FC,ESC2/BEC2->LED灯带。也可以一侧灯带使用一个BEC供电,另一侧使用另一个BEC供电。只需要确保所有的BEC与LED均接有效地即可。
106 |
107 | 如果您的LED有的亮有的不亮、闪烁或显示错误的颜色,那么可以尝试将输入电压降至4.7v以下。例如,可以在5v供电线上串联二极管。这些问题都是由于数据信号与电源信号之间的电压差而引起的。WS2811要求数据信号(Din)高低电平分别0.7xVin以上,0.3xVin以下,才能完成高低信号的辨识。飞控板上的LED焊盘输出电平为0-3.3V,所以供电电压应该为4.7V(3.3V/0.7 = 4.71V)。部分输入信号容受区间较宽的LED则可忽略此要求。
108 |
109 | ## 配置
110 |
111 | 可以在配置程序内的图形界面内配置LED灯带的功能。
112 |
113 | 使用“LED灯带”选项卡来配置LED。首先设置LED的布局,以告知飞控有多少个LED可用,也便于稍后对LED进行可视化配置。
114 |
115 | 有关如何使用配置程序来逐步配置LED的功能,请参阅[这里](http://blog.oscarliang.net/setup-rgb-led-cleanflight/)。该指南由Oscar Liang于2015年初发布,在您阅读本文时部分内容可能已不再具有实用意义。
116 |
117 | 通过CLI命令启用LED灯带功能:
118 |
119 | ```
120 | feature LED_STRIP
121 | ```
122 |
123 | 如果您启用该功能,但在重启之后该功能仍被关闭,那么您需要检查您的配置是否有与LED灯带功能冲突的其他功能,如上文所示。
124 |
125 | 您可以使用CLI命令`led`来配置LED。
126 |
127 | `led`命令有两个参数:从0开始的LED编号、一个控制序列。该控制序列包含一个坐标、方向标志、模式标志和一种颜色。
128 |
129 | 每个LED的控制序列可以使用如下模板进行配置:
130 |
131 | ```
132 | x,y:ddd:mmm:cc
133 | ```
134 |
135 | `x`和`y`是16x16的网格坐标,从零计数,左上角为0,0,右下角为15,15。
136 |
137 | `ddd`用于指定朝向。假定网格为上北下南左西右东,飞机头部在北,尾部在南。因为LED可以面向任何方向,因此有多种方向可供选择:
138 |
139 | * `N`-北
140 | * `E`-东
141 | * `S`-南
142 | * `W`-西
143 | * `U`-上
144 | * `D`-下
145 |
146 | 例如,向下45°面向东南方向的LED可以配置为`SED`。
147 |
148 | 注意:可以将LED配置为全向,但`NESWUD`可能没有任何意义。
149 |
150 | `mmm`用于设定LED的模式。
151 |
152 | 每一个LED都可以设置一个基本功能:
153 |
154 | * `C`-颜色**C**olor
155 | * `F`-模式和方向**F**light mode & Orientation
156 | * `A`-锁定状态**A**rmed state
157 | * `R`-推力环**R**ing thrust state
158 | * `G`-**G**PS
159 | * `S`-RSSI强度R**S**SI level
160 | * `L`-电池电量Battery **L**ever
161 |
162 | 并且每个LED都可以有叠加功能:
163 |
164 | * `W`-警告**W**arnings
165 | * `I`-指示灯**I**ndicator
166 | * `T`-油门状态**T**hrust state
167 | * `B`-闪烁(两次)模式**B**link mode
168 | * `O`-左右扫描Lars**o**n Scanner
169 | * `N`-降落指示灯(油门低于50%闪烁)Blink on la**n**ding
170 |
171 | `cc`用于设置LED颜色编号(编号从0计数)。
172 |
173 | 例如:
174 |
175 | ```
176 | led 0 0,15:SD:AWI:0
177 | led 1 15,0:ND:AWI:0
178 | led 2 0,0:ND:AWI:0
179 | led 3 0,15:SD:AWI:0
180 | led 4 7,7::c:1
181 | led 5 8,8::C:2
182 | led 6 8,9::B:1
183 | ```
184 |
185 | 要擦除LED并标记LED灯带尾端,请将第二个参数设置为`0,0:::`,如下所示:
186 |
187 | ```
188 | led 4 0,0:::
189 | ```
190 |
191 | 最好擦除所有未使用的LED。
192 |
193 | ### 模式
194 |
195 | #### 警告模式
196 |
197 | 当触发警告时,此模式仅会闪烁LED。
198 |
199 | | 警告 | LED闪烁模式 | 注释 |
200 | | -------- | --------- | ----------------------------- |
201 | | 处于无法解锁状态 | 绿灯闪烁 | 在校准期间或当飞行器因倾角过大而无法解锁时出现 |
202 | | 低电量 | 红灯闪烁 | 必须启用电池监视功能。可能会在高油门下因电压下降而暂时触发 |
203 | | 失控保护 | 浅蓝与黄色交替闪烁 | 必须已设置并启用失控保护 |
204 |
205 | 各种模式将按顺序逐次闪烁显示,因此很容易得知到底启用了哪些警告。
206 |
207 | #### GPS状态
208 |
209 | 此模式显示GPS状态和已经搜到的卫星数量。
210 |
211 | * 定位未成功/失败=闪烁红色
212 | * 3D定位成功=闪烁绿色
213 |
214 | LED的闪烁次数指示当前已搜到的卫星数量。闪烁x次后将暂停闪烁,并重新开始(闪烁)。
215 |
216 | #### RSSI级别
217 |
218 | 此模式将使用LED颜色指示RSSI级别。
219 |
220 | | 颜色 | RSSI |
221 | | ---- | ---- |
222 | | 绿色 | 100% |
223 | | 柠檬绿 | 80% |
224 | | 黄色 | 60% |
225 | | 橙子 | 40% |
226 | | 红 | 20% |
227 | | 深粉红色 | 0% |
228 |
229 | 当RSSI低于50%时,LED将缓慢闪烁;低于20%时,LED将快速闪烁。
230 |
231 | #### 电池电量
232 |
233 | 此模式将使用LED颜色指示电池剩余电量。
234 |
235 | | 颜色 | 剩余电量 |
236 | | ---- | ---- |
237 | | 绿色 | 100% |
238 | | 柠檬绿 | 80% |
239 | | 黄色 | 60% |
240 | | 橙子 | 40% |
241 | | 红 | 20% |
242 | | 深粉红色 | 0% |
243 |
244 | 当达到警告电压或临界电压时,LED将缓慢或快速闪烁。注意:此模式需要启用电流传感器。如果您并没有此设备,则可以设置并使用虚拟电流计(请参阅电池章节)。
245 |
246 | #### 纯闪烁(Blink)
247 |
248 | 此模式将使选定的LED闪烁,或从黑色闪烁到当前的设定颜色下。
249 |
250 | #### 着陆时闪烁
251 |
252 | 当油门低于50%且已解锁时,此模式将使选定的LED闪烁,或从黑色闪烁到当前设定颜色下。
253 |
254 | 左右闪烁(拉森扫描仪,Cylon特效,来自《霹雳游侠》)
255 |
256 | 该模式复刻了霹雳游侠中机械Cylons和Kitt的“眼睛”特效。此覆盖层动画会使所有激活此功能的LED在某些时刻变暗,并在某些时刻变亮。不论解锁状态如何,动画都不会静止。
257 |
258 | #### 模式和方向
259 |
260 | 此模式显示飞行模式和方向。
261 |
262 | 当此功能激活时,LED会根据模式、自身所处的网络位置和方向,显示不同的颜色。
263 |
264 | LED的优先级:
265 |
266 | * 标记为朝上或者朝下的LED
267 | * 标记为面向西或东且在网格的西或东
268 | * 标记为面向北或南且在网格的北或南
269 |
270 | 也就是说,朝南的LED优先权最低。
271 |
272 | 目前,LED模式和颜色之间的映射是固定的,无法更改。
273 |
274 | #### 指示符
275 |
276 | 此模式将使与Pitch和Roll摇杆位置相对应的LED闪烁。即,它们指示飞行器的转向。
277 |
278 | | 模式 | 方向 | LED颜色 |
279 | | ----- | -- | ----- |
280 | | 方向 | 北 | 白色 |
281 | | 方向 | 东 | 暗紫 |
282 | | 方向 | 南 | 红 |
283 | | 方向 | 西 | 深粉红色 |
284 | | 方向 | 上 | 蓝色 |
285 | | 方向 | 下 | 橙子 |
286 | | | | |
287 | | 无头模式 | 北 | 柠檬绿 |
288 | | 无头模式 | 东 | 暗紫 |
289 | | 无头模式 | 南 | 橙子 |
290 | | 无头模式 | 西 | 深粉红色 |
291 | | 无头模式 | 上 | 蓝色 |
292 | | 无头模式 | 下 | 橙子 |
293 | | | | |
294 | | 半自稳模式 | 北 | 蓝色 |
295 | | 半自稳模式 | 东 | 暗紫 |
296 | | 半自稳模式 | 南 | 黄色 |
297 | | 半自稳模式 | 西 | 深粉红色 |
298 | | 半自稳模式 | 上 | 蓝色 |
299 | | 半自稳模式 | 下 | 橙子 |
300 | | | | |
301 | | 自稳模式 | 北 | 青色 |
302 | | 自稳模式 | 东 | 暗紫 |
303 | | 自稳模式 | 南 | 黄色 |
304 | | 自稳模式 | 西 | 深粉红色 |
305 | | 自稳模式 | 上 | 蓝色 |
306 | | 自稳模式 | 下 | 橙子 |
307 | | | | |
308 | | 磁力计 | 北 | 薄荷绿 |
309 | | 磁力计 | 东 | 暗紫 |
310 | | 磁力计 | 南 | 橙子 |
311 | | 磁力计 | 西 | 深粉红色 |
312 | | 磁力计 | 上 | 蓝色 |
313 | | 磁力计 | 下 | 橙子 |
314 | | | | |
315 | | 气压计 | 北 | 浅蓝 |
316 | | 气压计 | 东 | 暗紫 |
317 | | 气压计 | 南 | 红 |
318 | | 气压计 | 西 | 深粉红色 |
319 | | 气压计 | 上 | 蓝色 |
320 | | 气压计 | 下 | 橙子 |
321 |
322 | #### 解锁状态
323 |
324 | 此模式将在解锁和上锁时,使LED颜色在绿色和蓝色之间切换。
325 |
326 | 注意:解锁状态不能与飞行模式一起使用。
327 |
328 | #### 推力状态
329 |
330 | 此模式将会根据油门杆的位置将当前LED逐渐淡入HSB色彩空间的上一个/下一个颜色。当位于中油门时,颜色将不受影响,因此可以将其与方向混合使用用来指示方向和油门。通常来说,推力模式应该与“颜色”或“模式/方向”结合使用。
331 |
332 | #### 推力环状态
333 |
334 | 此模式允许您使用一个或多个LED环(例如NeoPixel灯板)来实现跑马/彩虹灯特效。开启此模式的LED将以指定颜色重复发光。将黑色分配给开启推力环状态模式的LED可以防止LED点亮。
335 |
336 | 当LED仅仅设置推力环状态而未开启/设置其他功能时,效果最好。
337 |
338 | LED方向/XY位置与LED的推力环状态无关。LED的顺序决定了LED的闪烁/跑马方式,而油门值则决定了动画速率的快慢。该动画仅在解锁后播放。
339 |
340 | 环上的每一个LED的颜色都可以互不相同,可以设置为最多16种颜色。例如,下列设置将使LED0设置为推力环状态,颜色为13。
341 |
342 | ```
343 | led 0 2,2::R:13
344 | ```
345 |
346 | LED灯带模式和推力环可以组合使用。
347 |
348 | #### 纯色模式
349 |
350 | 该模式将允许你为LED指定特定颜色并永久亮起。
351 |
352 | 使用此模式时,X/Y的位置和方向将会被忽略。
353 |
354 | 其他模式将覆盖此模式或与此模式结合。
355 |
356 | 例如,要将LED0设置为永久亮起,颜色设置为10号,则请使用如下命令:
357 |
358 | ```
359 | led 0 0,0::C:10
360 | ```
361 |
362 | ### 颜色
363 |
364 | 可以使用CLI命令`color`来配置颜色。
365 |
366 | `color`命令具有零或两个参数 - 从零开始的色号和指示色相(Hue)、饱和度(Saturation)及色值(Value)。
367 |
368 | 另请参阅:[http://en.wikipedia.org/wiki/HSL_and_HSV](http://en.wikipedia.org/wiki/HSL_and_HSV)
369 |
370 | 如果调用此命令而不使用任何参数,它将打印出颜色配置,可以将其复制保存以供参考。
371 |
372 | 默认颜色配置如下:
373 |
374 | | 编号 | 颜色 |
375 | | -- | ---- |
376 | | 0 | 黑色 |
377 | | 1 | 白色 |
378 | | 2 | 红色 |
379 | | 3 | 橘色 |
380 | | 4 | 黄色 |
381 | | 5 | 柠檬绿 |
382 | | 6 | 绿色 |
383 | | 7 | 薄荷绿 |
384 | | 8 | 青色 |
385 | | 9 | 浅蓝 |
386 | | 10 | 蓝色 |
387 | | 11 | 深紫色 |
388 | | 12 | 品红 |
389 | | 13 | 深粉红色 |
390 | | 14 | 黑色 |
391 | | 15 | 黑色 |
392 |
393 | ```
394 | color 0 0,0,0
395 | color 1 0,255,255
396 | color 2 0,0,255
397 | color 3 30,0,255
398 | color 4 60,0,255
399 | color 5 90,0,255
400 | color 6 120,0,255
401 | color 7 150,0,255
402 | color 8 180,0,255
403 | color 9 210,0,255
404 | color 10 240,0,255
405 | color 11 270,0,255
406 | color 12 300,0,255
407 | color 13 330,0,255
408 | color 14 0,0,0
409 | color 15 0,0,0
410 | ```
411 |
412 | ### 模式颜色分配
413 |
414 | 可以使用CLI命令`mode_color`来配置模式的颜色。
415 |
416 | * 无参调用时:列出所有模式的颜色
417 | * 参数:`mode`,`function`,`color`
418 |
419 | 前7组模式(`mode`)序号为:
420 |
421 | | 模式 | 名称 |
422 | | -- | ----- |
423 | | 0 | 方向 |
424 | | 1 | 无头 |
425 | | 2 | 半自稳 |
426 | | 3 | 自稳 |
427 | | 4 | 磁力计 |
428 | | 5 | 气压计定高 |
429 | | 6 | 特殊模式 |
430 |
431 | 其中前6个模式的`function`参数表如下:
432 |
433 | | 功能 | 名称 |
434 | | -- | -- |
435 | | 0 | 北 |
436 | | 1 | 东 |
437 | | 2 | 南 |
438 | | 3 | 西 |
439 | | 4 | 向上 |
440 | | 5 | 向下 |
441 |
442 | 特殊模式(Mode 6)的`function`参数表如下:
443 |
444 | | 功能 | 名称 |
445 | | -- | ---------- |
446 | | 0 | 上锁 |
447 | | 1 | 解锁 |
448 | | 2 | 动画 |
449 | | 3 | 背景色 |
450 | | 4 | 闪烁背景色 |
451 | | 5 | GPS:无卫星 |
452 | | 6 | GPS:尚未定位 |
453 | | 7 | GPS:3D定位成功 |
454 |
455 | `color`形参的参数可从颜色数组(“调色板”或GUI中的)中选取。
456 |
457 | 示例(使用默认颜色):
458 |
459 | * 将解锁状态设置为红色:`mode_color 6 1 2`
460 | * 将上锁状态设置为黄色:`mode_color 6 0 4`
461 | * 将无头模式的南设置为青色:`modoe_color 1 2 8`
462 |
463 | ## LED灯珠定位问题
464 |
465 | 按照下图将LED切成小段。切割LED灯带之后,请使用电线将下一灯带的输入与上一灯带的输出相连。例如,5V输出接入到5V输入,GND与GND相连接,数据输出连接到数据输入。
466 |
467 | 默认朝向是飞机的头部(摄像头)背对着您,并且您正在从上方观察。
468 |
469 | ### 12 LED 配置示例
470 |
471 | ```
472 | led 0 15,15:SD:IA:0
473 | led 1 8,8:E:FW:0
474 | led 2 8,7:E:FW:0
475 | led 3 15,0:ND:IA:0
476 | led 4 7,7:N:FW:0
477 | led 5 8,7:N:FW:0
478 | led 6 0,0:ND:IA:0
479 | led 7 7,7:W:FW:0
480 | led 8 7,8:W:FW:0
481 | led 9 0,15:SD:IA:0
482 | led 10 7,8:S:FW:0
483 | led 11 8,8:S:FW:0
484 | led 12 7,7:D:FW:0
485 | led 13 8,7:D:FW:0
486 | led 14 7,7:U:FW:0
487 | led 15 8,7:U:FW:0
488 | ```
489 |
490 | 转换为实际位置:
491 |
492 | ```
493 | 6 3
494 | \ /
495 | \ 5-4 /
496 | \ FRONT /
497 | 7,8 | 12-15 | 1,2
498 | / BACK \
499 | / 10,11 \
500 | / \
501 | 9 0
502 | RING 16-27
503 | ```
504 |
505 | LED0、3、6、9应该朝下放置在飞机下方。\
506 | LED1-2、4-5、7-8和10-11应分别朝向东/北/西/南。\
507 | LED12-13应朝下放置,LED14-15应该朝上放置,均放置在中部。\
508 | 尾部的LED环16-27应该朝南放置。
509 |
510 | 这是默认设置,因此如果您不想将LED上下放置在中间,只需要连接前12个LED。
511 |
512 | ### 16 LED 配置示例
513 |
514 | ```
515 | led 0 15,15:SD:IA:0
516 | led 1 8,8:E:FW:0
517 | led 2 8,7:E:FW:0
518 | led 3 15,0:ND:IA:0
519 | led 4 7,7:N:FW:0
520 | led 5 8,7:N:FW:0
521 | led 6 0,0:ND:IA:0
522 | led 7 7,7:W:FW:0
523 | led 8 7,8:W:FW:0
524 | led 9 0,15:SD:IA:0
525 | led 10 7,8:S:FW:0
526 | led 11 8,8:S:FW:0
527 | led 12 7,7:D:FW:0
528 | led 13 8,7:D:FW:0
529 | led 14 7,7:U:FW:0
530 | led 15 8,7:U:FW:0
531 | ```
532 |
533 | 转换为实际位置:
534 |
535 | ```
536 | 6 3
537 | \ /
538 | \ 5-4 /
539 | 7 \ FRONT / 2
540 | | 12-15 |
541 | 8 / BACK \ 1
542 | / 10-11 \
543 | / \
544 | 9 0
545 | ```
546 |
547 | LED0、3、6、9应该朝下放置在飞机下方。\
548 | LED1-2、4-5、7-8和10-11应分别朝向东/北/西/南。\
549 | LED12-13应朝下放置,LED14-15应该朝上放置,均放置在中部。
550 |
551 | ### 28 LED 配置示例
552 |
553 | ```
554 | #right rear cluster
555 | led 0 9,9:S:FWT:0
556 | led 1 10,10:S:FWT:0
557 | led 2 11,11:S:IA:0
558 | led 3 11,11:E:IA:0
559 | led 4 10,10:E:AT:0
560 | led 5 9,9:E:AT:0
561 | # right front cluster
562 | led 6 10,5:S:F:0
563 | led 7 11,4:S:F:0
564 | led 8 12,3:S:IA:0
565 | led 9 12,2:N:IA:0
566 | led 10 11,1:N:F:0
567 | led 11 10,0:N:F:0
568 | # center front cluster
569 | led 12 7,0:N:FW:0
570 | led 13 6,0:N:FW:0
571 | led 14 5,0:N:FW:0
572 | led 15 4,0:N:FW:0
573 | # left front cluster
574 | led 16 2,0:N:F:0
575 | led 17 1,1:N:F:0
576 | led 18 0,2:N:IA:0
577 | led 19 0,3:W:IA:0
578 | led 20 1,4:S:F:0
579 | led 21 2,5:S:F:0
580 | # left rear cluster
581 | led 22 2,9:W:AT:0
582 | led 23 1,10:W:AT:0
583 | led 24 0,11:W:IA:0
584 | led 25 0,11:S:IA:0
585 | led 26 1,10:S:FWT:0
586 | led 27 2,9:S:FWT:0
587 | ```
588 |
589 | ```
590 | 16-18 9-11
591 | 19-21 \ / 6-8
592 | \ 12-15 /
593 | \ FRONT /
594 | / BACK \
595 | / \
596 | 22-24 / \ 3-5
597 | 25-27 0-2
598 | ```
599 |
600 | 在这种情况下,所有LED应该朝外放置。
601 |
602 | 注意:此配置是专门为[Alien Spider AQ50D PRO 250mm机架](http://www.goodluckbuy.com/alien-spider-aq50d-pro-250mm-mini-quadcopter-carbon-fiber-micro-multicopter-frame.html)设计的。
603 |
604 | ## 故障排除
605 |
606 | 初次通电时,灯条上的所有LED灯珠都将被设置为白色。这意味着如果您的测量设备反应速度足够快的话,则可以检测电流消耗情况。大多数5050封装的LED灯珠的功耗为0.3W。这也意味着您可以确保灯条上每个LED的灯珠中的R、G、B都可以正常工作。经过短暂的延迟之后,LED将显示上锁时的颜色序列/电池电量不足警告序列。
607 |
608 | 您还应检查`LED_STRIP`功能是否已正确启用,并且与其他功能没有冲突
609 |
--------------------------------------------------------------------------------
/tuning-notes/betaflight-4.2.md:
--------------------------------------------------------------------------------
1 | # Betaflight 4.2
2 |
3 | ### **Betaflight 4.2 带来了…**
4 |
5 | * **更准确的循环时间** - 改善了RPM滤波器性能
6 | * **改进了的前馈** - 使飞行更加顺畅,下文附有摘要,用以优化平滑设置,以达到电影式飞行的目的
7 | * **新的动态Dterm滤波截止频率曲线** - 通过提高Dterm滤波器截止频率的移动速度来加强过冲抑制能力
8 | * **电池压降动态补偿 **- 为飞行提供一致的油门响应和PID“感觉”
9 | * **新的Rate模式** - 更直观地调节那些重要参数,并为竞速和电影飞行用途提供更线性的“操控感”
10 | * **改进的动态陷波滤波器 **- 更好的噪声抑制能力,简化的最大/最小截止频率配置
11 | * **自动抗自旋配置 **- 更快地抑止偏航自旋
12 | * **独立于I值的反重力增益 **- 若更改I,反重力的效果强度不会随之改变
13 | * **更简单、更好用的RC平滑** - 仔细优化过的默认配置意味着几乎不再需要手动设置平滑参数
14 | * **I值释放可在设定点模式下正常工作 **- 修复了4.0和4.1中的一个错误。该错误导致在设定点模式下降低溢出值的作用很小。现在设定点模式可正常运行,由此错误而被迫使用陀螺仪模式的用户,应返回到设定点模式。
15 | * **NFE竞速模式** - 一种非常有趣的飞行模式,Pitch手动,Roll自稳。
16 | * **配置程序10.7 **- 进行了许多改进,尤其是可以正确显示不同Rate模式下对应的实际曲线
17 | * **OSD改进 **- 现在每次解锁时都可短暂显示启动徽标;CRSF会同时显示当前模式和信号强度;添加了相机取景框,距离返航点距离,电池效率等新元素。
18 |
19 | \
20 | **对于绝大多数飞机来说,4.2的默认值可以提供相当优秀的飞行体验,无需进行修改。**如果您非常清楚您的飞机确实需要使用特殊的PID,请务必重新调参,因为4.2中的新功能,会使得同样的PID产生不同的结果。例如,如果您希望D值非常高而不受噪声强度限制,旧版本中不行,现在却可以。\
21 | \
22 | **某些弱动力飞机(弱动力小无刷、涵道式摄像飞机、7寸及更大的飞机、长续航飞机等)可能需要一些特殊设置以减小回弹。**\
23 | 如果您不熟悉4.2,请先阅读[《4.1调参指南》](betaflight-4.1.md)和[《4.0调参指南》](betaflight-4.0.md)。\
24 | **请使用最新版本的Betaflight配置程序,早期版本将无法与4.2搭配使用。**
25 |
26 | **注意1:**请勿将任何先前版本的diff或dump输出直接粘贴到4.2的CLI中。
27 |
28 | **注意2:**如果您在先前版本将dyn\_notch\_range设置为LOW或HIGH,请将dyn\_notch\_max\_hz动态陷波滤波最大频率设置为350或700.
29 |
30 | **注意3:**如果您以前的PID的I值一直保持默认值,那么在刷写4.2之后您需要对反重力增益稍作修改才能获得相同的效果。
31 |
32 | **注意4:**请先从默认滤波和PID开始调整,除非您十分确信您的飞机需要进行特殊设置。
33 |
34 | **注意5:**我们建议启用RPM滤波器。[点击这里](http://mp.weixin.qq.com/s?\_\_biz=Mzg4OTAzNzM5MA==\&mid=2247484384\&idx=1\&sn=0b0debb82c7e3b6ad0de227a830ad7b9\&chksm=cff0b4c1f8873dd72e267f22644bc23fa7a388f19b277dce35acc8cf17461c4b76feb3c3853c\&scene=21#wechat\_redirect)阅读有关启用和配置PRM滤波器的详细信息。
35 |
36 | ### **快速设置**
37 |
38 | \
39 | 下列是一些参考性的配置片段,包含了一些并不是很常见的设置,以适应不同的飞行风格。对于普通的花飞和竞速来说,默认值应该比较合适。我们无法保证它将完美适配您的飞机,而且他们不包括PID参数或滤波设置,但它可以为其中某些数字提供一定的参数范围参考。
40 |
41 | **专业竞速**(激进式前馈,需要有非常干净的RC信号,否则将可能因为RC质量不良引起的RC数据帧抖动而导致电机过热)
42 |
43 | ```
44 | set iterm_relax_cutoff = 30
45 | set rc_smoothing_auto_smoothness = 5
46 | set ff_interpolate_sp = ON
47 | set ff_smooth_factor = 0
48 | set ff_spike_limit = 60set ff_boost = 20set feedforward_transition = 0
49 | set yaw_lowpass_hz = 100
50 | set throttle_boost = 7
51 | set throttle_boost_cutoff = 25
52 | set dyn_lpf_dterm_curve_expo = 7
53 | set gyro_rpm_notch_q = 600
54 | ```
55 |
56 | (启用电池电压补偿,只要适用于您的飞机,那么值越高越好,D expo也是如此)
57 |
58 | **普通花飞/竞速**(强前馈,可应对常见的RC信号丢帧情况,反应灵敏)
59 |
60 | ```
61 | set iterm_relax_cutoff = 20
62 | set rc_smoothing_auto_smoothness = 7
63 | set ff_interpolate_sp = AVERAGED_2
64 | set ff_smooth_factor = 20
65 | set ff_spike_limit = 70
66 | set ff_boost = 15
67 | set feedforward_transition = 0
68 | set yaw_lowpass_hz = 100
69 | set throttle_boost = 7
70 | set throttle_boost_cutoff = 25
71 | set dyn_lpf_dterm_curve_expo = 7
72 | set gyro_rpm_notch_q = 700
73 | ```
74 |
75 | **HD**(用于拍摄高清视频的平滑前馈,低速转弯十分平稳,较低的I值释放阈值以最小化回弹)
76 |
77 | ```
78 | set iterm_relax_cutoff = 10
79 | set rc_smoothing_auto_smoothness = 20
80 | set ff_interpolate_sp = AVERAGED_3
81 | set ff_smooth_factor = 40
82 | set ff_spike_limit = 55
83 | set ff_boost = 0
84 | set feedforward_transition = 40
85 | set yaw_lowpass_hz = 70
86 | set throttle_boost = 5
87 | set throttle_boost_cutoff = 10
88 | set dyn_lpf_dterm_curve_expo = 7
89 | set gyro_rpm_notch_q = 800
90 | ```
91 |
92 | **电影式飞行**(仅限低速转弯,否则飞起来会觉得很“肉”)
93 |
94 | ```
95 | set iterm_relax_cutoff = 5
96 | set rc_smoothing_auto_smoothness = 40
97 | set ff_interpolate_sp = AVERAGED_4
98 | set ff_smooth_factor = 50
99 | set ff_spike_limit = 50
100 | set ff_boost = 0
101 | set feedforward_transition = 70
102 | set yaw_lowpass_hz = 50
103 | set throttle_boost = 2
104 | set throttle_boost_cutoff = 10
105 | set dyn_lpf_dterm_curve_expo = 8
106 | set gyro_rpm_notch_q = 900
107 | set iterm_windup = 75
108 | ```
109 |
110 | 下面的调参建议可能有助于最大程度地减小高清视频中的轻微随机抖动:
111 |
112 | * 禁用D\_Min
113 | * 使用PD比滑块**,**将D设置得比P高约20%
114 | * 将TPA设置为仅衰减D,从您的巡航油门值起始,并稍微增加衰减百分比
115 | * 将Dterm低通滤波expo设置的尽可能高(您会受到中油门附近的D噪声限制)(当D更高,您可能需要更多的Dterm滤波,例如将Dterm滤波滑块向左移动两个格子)
116 | * P值比普通的花式飞行P值低20%,使得P仅仅能够提供基本的稳定性
117 | * I值降低一半
118 | * 提高FF过滤强度
119 | * 将Rate类型设为actual,中央灵敏度设置为10,Expo设为0,最大Rate使用您常用的最大Rate。当Expo为0可以为中央杆位提供柔和的感觉,可以使您在摇杆偏离中央时快速反应过来。当中央灵敏度非常低时,可能不需要前馈过渡/死区。
120 |
121 | **返回默认值**(值为0意味着“关闭”)
122 |
123 | ```
124 | set iterm_relax_cutoff = 15
125 | set rc_smoothing_auto_smoothness = 10
126 | set ff_interpolate_sp = AVERAGED_2
127 | set ff_smooth_factor = 37
128 | set ff_spike_limit = 60
129 | set ff_boost = 15
130 | set feedforward_transition = 0
131 | set yaw_lowpass_hz = 0
132 | set throttle_boost = 5
133 | set throttle_boost_cutoff = 15
134 | set dyn_lpf_dterm_curve_expo = 5
135 | set gyro_rpm_notch_q = 500
136 | set iterm_windup = 100
137 | ```
138 |
139 | **一次性开启其他所有推荐使用的新功能**
140 |
141 | ```
142 | set dyn_lpf_dterm_curve_expo = 6
143 | set vbat_sag_compensation = 100
144 | set vbat_pid_gain = OFF
145 | set rc_smoothing_type = FILTER
146 | set rc_smoothing_input_hz = 0
147 | set rc_smoothing_derivative_hz = 0
148 | set rc_smoothing_input_type = BIQUAD
149 | set rc_smoothing_derivative_type = PT1
150 | set rc_smoothing_auto_smoothness = 10
151 | ```
152 |
153 | 开启电池压降动态补偿
154 |
155 | ```
156 | set vbat_sag_compensation = 100
157 | set vbat_pid_gain = OFF
158 | ```
159 |
160 | ### **最小化回弹的设置**
161 |
162 | 目前,Betaflight默认值旨在给予中等性能的四轴飞行器最出色的表现,“中等性能”指的是大多数重量较轻,响应性良好的5寸飞机和更小的飞机。
163 |
164 | “弱动力”飞机,例如弱动力小无刷、涵道HD摄像飞机、重型4s花飞飞机和许多7寸及更大的飞机,它们所具有的共同点是,相较于“中等性能”的飞机来说,在快速翻滚以及快速进行偏航转弯时,它们往往都会发生回弹。
165 |
166 | 本段解释了这些飞机会回弹的原因,并将给出解决回弹的方法。
167 |
168 | 在Betaflight的PID中,I用于提供转弯时的精度、快速平飞时的俯仰精度、大风情况下的稳定性、自由落体和半圈翻滚时的稳定性,控制不对称的空气阻力效应,并在通常情况下清理掉无数无法被P处理掉的持久性残差。随着时间的推移,它会积累一些小的残差的校正值,而该校正值可以使飞机保持正确的姿态。较高的I值将更快、更完整的执行校正值,尤其是在转弯时和大风天,在这种情况下,无法被P、D或FF消除的残差将很小。相对较高的I是Betaflight 4.x在急转弯和长直道上飞行如此精准的原因之一。
169 |
170 | 如果飞行员打杆速率过快而飞机无法及时响应,则陀螺仪信号将落后于设定点,并且将产生较大的误差信号。这时I将开始积累以修正此问题。I值释放将尝试控制这种积累。若I值被释放得很少,不足以弥补积累速度,则可能会导致Iterm大量积累,并且当飞行员杆位回中时,所有积累下的I都将会将飞机向反方向驱使动作,该动作会逐渐消失,直到角速度归零。这就是飞行员在翻滚结束时看到的那个缓慢的“回弹”动作。
171 |
172 | 这种动作称为“积分饱和”(Iterm windup)。
173 |
174 | 我们使用I值释放(iterm\_relax)和I值饱和(iterm\_windup)两个功能来控制与I值有关的回弹。在4.2中这些功能的默认设置对于“中等性能”飞机非常有效。I值释放默认值为15,在正常的翻滚期间会强烈抑制I的积累。I值饱和则适用于偏航问题,并且由于通常情况下根本不需要他,故默认情况下I值饱和关闭。
175 |
176 | 但是,“弱动力”飞机在快速翻滚及快速掉头后往往会回弹,这是因为从输入信号侧来观察,它们比正常情况具有更高的延迟和更大的误差。在这种情况下,需要为这些机器调整I值释放和I值饱和参数。
177 |
178 | 当您发现在进行600°/s的翻滚/快速掉头**,**和/或快速打Yaw杆之后出现了烦人的回弹,您就应当意识到您的飞机动力较弱。弱动力飞机的其他表征线索是,您的悬停油门比正常值高(例如您的悬停油门高于25%),或者下落或低油门滑行时产生了缓慢的晃动。
179 |
180 | 对于偏航来说,任何飞机机臂过长 - 大于6英寸 - 都将导致偏航动力偏弱,并且通常会出现偏航回弹和偏航跳跃问题。
181 |
182 | 可以通过以下三种方式解决由于I值饱和引起的回弹问题。
183 |
184 | **1.最好的方法是调整参数或更改飞机的硬件,以使其响应速度变快。**理想情况下,PID参数匹配的飞机可以在其余功能保持默认的情况下响应得很快。这也将改善飞机的整体处理能力。让我们考虑一下如何做到这一点。
185 |
186 | 弱动力飞机通常需要较高的P和FF。在某些情况下,可能需要两倍的P和三倍的FF。所有PIDF参数增益都有一个上限,但是您需要尽可能提高。D很可能需要和P同时增大,否则将会导致Pterm震荡,而Dterm噪声则限制了您究竟可以将D增大到多少。您应该向右大幅推动“**摇杆响应增益**”滑块,并且将“**P和D增益**”滑块逐步向右滑动。这将能使机器更快地旋转并减小误差幅值和持续时间,所以它们应当可以减少晃动和回弹。请注意,D过高会延长响应速度,并加重回弹现象。所以在这些机器上使用正确的PD值确实很重要。
187 |
188 | 假如调整了P和FF,但仍然有晃动和回弹,则应尝试降低I,将其值设为默认值的一半或三分之一。若I过低则将使得飞机在长周期内不稳定,所以也不要将其降得过低。
189 |
190 | 在硬件方面,弱电机-重桨这样的配置将使得飞机很难快速地改变推力。应该尽量使用较轻较小的螺旋桨,以使得电机更容易旋转。使用与电机动力匹配的螺旋桨可以大大改善因弱动力造成的问题,例如回弹。
191 |
192 | 在大型飞机上,例如beat-class或xclass,使用螺旋桨内旋(prop-in)布局会提高偏航性能。
193 |
194 | 任何降低回弹的更改都意味着,您可以令飞机更快速准确地对输入信号做出反应,这是衡量调参成功与否的重要指标。
195 |
196 | **2.第二个方法是降低俯仰、横滚或偏航的Rate,或者只是更平稳地飞行**,而使快速翻滚的开始与结束动作稍慢一些。如果不再恶狠狠地压榨硬件的极限,您将会得到良好的整体性能表现,而无需参数优化到极致。
197 |
198 | **3.调整我们提供的I值释放(iterm\_relax)和I值饱和(iterm\_windup)功能**
199 |
200 | Betaflight使用iterm\_relax来防止快速的翻滚指令产生不必要的I值积累。
201 |
202 | 其参数iterm\_relax\_cutoff用于设定抑制效果的强度及其持续时间。较低的值会在更长的时间内以更高的强度来抑制I值,这是抑制I值造成的回弹的必要条件。
203 |
204 | 首先应尝试将iterm\_relax\_cutoff从默认值15降低到10,然后是7,然后是5,注意每次调整后回弹情况都会有所改善。在其“有效工作”的前提下选择尽可能高的值。截止频率越低,转弯就越不准确,因此您需要衡量取舍。您应当选择刚好可以控制回弹现象的最高值。
205 |
206 | 我们强烈建议使用默认的设定点模式下的I值释放。在4.2中,您无需将其更改为陀螺仪模式,设定点模式下的I值释放可能比4.2中的陀螺仪模式效果更好。
207 |
208 | 对于偏航存在的回弹问题,首先应当尝试调整偏航PID,优化偏航PID可以改善回弹问题。当您进行偏航动作时,FF会在移动摇杆时提供初始的“推动力”,P会在不久之后提供“推动力”,而I将完成大部分偏航动作。为了获得良好的偏航性能,需要同时使用到这三个元素。
209 |
210 | 理想情况下,您需要录制日志,用以作为调整P、I和FF的参考依据。应尽量将偏航轴的中等角速率以下的响应延迟,调整至与俯仰和横滚的响应延迟大致相同。
211 |
212 | 在黑盒日志中您将会看到,对于较高的偏航角速度指令,电机会很快出现较大的输出命令差,其中一对同转向电机油门将达到100%,另一对电机油门为0。这意味着飞机无法执行您所期望的偏航角速度。当发生这种情况时,积分饱和和回弹是不可避免的。
213 |
214 | I值饱和(iterm\_windup)解决了偏航轴的这一问题。在旧版本中它作用于所有轴,但在4.2中它专门作用于偏航轴。当电机输出命令差值超过预设的百分比时,它将抑制I值的积累。默认值为100,表示该功能默认关闭。将其设为70可以很好地防止飞机发生偏航回弹。
215 |
216 | 当电机输出命令差值超过70%时,通过对偏航积分进行抑制,无论我们输入了多长时间的过量指令,都不会发生积分饱和,所以不会发生偏航反弹。最棒的一点是,I值饱和不会削弱对低角速度指令的响应——它们将完全不受影响。
217 |
218 | 当飞行员输入的设定点的变化率(加速度)相对于飞机来说过高时,acc\_limit和acc\_limit\_yaw会选择性地抑制I值积累。默认情况下,它们是关闭的。它们仅仅会在设定点发生快速变化时才会抑制I,这只是暂时性抑制。由于不良的I值抖动可能会在长周期内反复出现,包括在完全不移动摇杆时也会出现,因此不建议使用这两个参数。
219 |
220 | ### **以上就是你需要知道的全部内容了……去飞吧!**
221 |
222 | **下面是为硬核晚间准备的技术细节:**
223 |
224 | ### **更精准的循环时间**
225 |
226 | 陀螺仪和PID的调度器已经完全重写,这带来了更少的PID随机抖动和更低的CPU占用率。令它正常工作并不需要进行额外的设置。现在,滤波器更准了,电机温度更低了,续航时间更长了,RPM滤波器的Q因子也可以被设置得更高了。
227 |
228 | RC输入信号的处理代码也得到了改进,现在它明显精确了更多,这使得前馈也比以前更顺滑了。
229 |
230 | **现在陀螺仪的刷新率被锁在了陀螺仪的“原生”采样率上,无法手动调整。在通常情况下它是8k。**
231 |
232 | 并且应该重新调整PID更新速率以与飞控的处理器性能相适应。PID循环时间显示在配置程序的底部。对于RPM滤波来说,最重要的就是保证PID循环时间的稳定性。1%的循环时间误差会导致RPM陷波滤波器偏离其正确位置1%。
233 |
234 | 不开启RPM滤波时,绝大多数F4和F7飞控都可以在8k PID更新速率下完美运行。
235 |
236 | 开启RPM滤波时,F405和F7xx的飞控应该可以在工作在8k PID速率下,但F405会在4k时更精确。我们建议使用4k,然后试试8k,只有在看起来至少与4k一样稳定时才使用8k。
237 |
238 | F411飞控应该设置为4k,通常需要进行超频才能获得最佳效果。
239 |
240 | 为使随机抖动尽可能少,请关闭黑盒调试功能。只使用1k的速率记录黑盒数据,如无必要,不要使用更高的记录速率或调试功能。
241 |
242 | 当使用4k或2k PID速率时,下采样过程可能会产生混叠的伪信号。通常可以通过运行在陀螺仪环路中的陀螺仪低通滤波器2来防止其产生。陀螺仪低通滤波器2是唯一一个以陀螺仪频率运行的低通滤波器。当处于4k或更低的PID速率时,如果将其关闭,一个简单的两点平均滤波器会自动代替它。在4k PID速率下,两点平均滤波器可以较好地减少随机晃动,尽管如此,它仍然比不上在1000Hz下运行的陀螺仪低通滤波器2。在2k PID速率时,它无法完全防止混叠。因此**在2k PID速率时,不要关闭陀螺仪低通滤波器2**。
243 |
244 | 8k PID速率不会出现混叠问题,所以陀螺仪低通滤波器2可以仅为减少噪音而设置或者直接禁用它,而不必担心随机晃动。
245 |
246 | 在使用4k PID速率时,如果不需要陀螺仪低通滤波器来减少噪声,请将其截止频率设置得尽可能高(直接到1000Hz),或者将其关闭。
247 |
248 | 使用2k PID速率时,请不要关闭陀螺仪低通滤波器2。
249 |
250 | ### Dshot设置:
251 |
252 | 开启RPM滤波时,请在4k PID时候使用Dshot300,或在8k PID时使用Dshot600
253 |
254 | 当双向DShot/RPM滤波开启时:
255 |
256 | * Dshot150 -> 最大2k PID速率
257 | * Dshot300 -> 最大4k PID速率(PID速率为8k时,DShot300会每2次PID循环发送一次数据)
258 | * Dshot600 -> 最大8k PID速率
259 |
260 | 不开启双向DShot时:
261 |
262 | * Dshot150 -> 最大4k PID速率
263 | * Dshot300 -> 最大8k PID速率
264 | * Dshot600 -> 最大16k PID速率(在4.2中,8k是最高PID速率)
265 |
266 | ### 改善了的前馈
267 |
268 | 4.2提供了前馈优化,以适合从硬核竞速飞手到电影级摄影飞手的所有人。
269 |
270 | 当被设置的比较激进时,前馈会迅速对任何摇杆输入作出反应。基本前馈分量摇杆移动度成正比,boost是与摇杆移动的瞬时加速度成正比。在大多数情况下,激进的前馈可以将设定点与陀螺仪之间的响应延迟降到0,从而为竞速飞手提供高质量的控制和即时性。柔和的前馈,包含将前馈过渡阈值调整为30,既可以快速响应较为迅速的摇杆输入,也可以使中央杆位附近的感觉十分平滑,是花式飞行和电影式飞手的理想选择。
271 |
272 | 激进前馈的主要缺点是在尝试平滑地飞直线时会产生抖动。大多数遥控信号中都存在抖动、丢包或重复的数据,而且我们所有人都会有一些手指/拇指地晃动。如果飞机对微小的速度也会立刻响应地话,那么在尝试平稳地向前飞行或进行平稳的大半径转弯时候,它就会“颤抖”。
273 |
274 | 竞速飞手和专业级电影摄影飞手的需求相去甚远,所以在开发4.2时,我们投入了大量精力去尽可能适配这些千差万别的需求。
275 |
276 | 前馈很大程度上取决于RC链路的稳定性以及传入数据包之间步长间隔平滑程度。我们强烈推荐黑羊Crossfire用户升级到最新的CRSF\_Shot固件(包括更新OpenTx系统,为CRSF外部模块提供时钟同步)。Frsky Tx用户应该升级到OpenTx 2.3并关闭ADC功能。
277 |
278 | #### 模式: ff\_interpolate\_sp
279 |
280 | 前馈最重要的参数是它运行的模式,可以用`set ff_interpolate_sp`命令设置:
281 |
282 | * `OFF`: 旧的线性插值法,不会进行增压抑或是减少信号毛刺。
283 | * `ON`: 新的基于设定值的插值法,可以立刻响应RC信号的每一次变化,有增压并能减少信号毛刺,适合用于竞速。
284 | * `AVERAGED_2`: 类似“ON”,但会使用两点平均滤波来减少信号毛刺并消除前馈中交替出现上下抖动。在飞直线或进行平滑转弯时会有更少的抖动,适用于包括竞速和花飞在内的大多数情况。(默认设置)
285 | * `AVERAGED_3`: 使用三点平均滤波以减少信号毛刺,可在飞直线或平滑转弯时大大降低抖动。适合带有运动相机的花式飞行。在未升级到CRSF\_Shot时,可有效降低XF接收机在150Hz模式(20ms)下的的抖动。
286 | * `AVERAGED_4`: 使用四点平均滤波以对信号毛刺进行最强的抑制,是电影级高清摄影的好选择。也可以有效的消除R9系统中的抖动。
287 |
288 | #### 平滑度: ff\_smooth\_factor
289 |
290 | 第二个重要的参数是“平滑度”因子,用于限制RC信号之间的最大变量。它类似于指数型或低通型的平滑函数。CLI参数是`ff_smooth_factor`。默认值为37,最大值为75。
291 |
292 | 当设为0时,不会前馈信号进行平滑处理。任何输入的RC信号将立刻应用全部FF系数和增压,这可能是拥有干净RC信号链路的竞速飞手所喜爱的。
293 |
294 | 当保持默认值为37时,RC信号中将有63%被立刻转化为前馈。响应就像一阶低通滤波器,其时间常数为RC信号步长间隔,即截止频率为(1000/2 \* pi \*步长间隔)hz,或者对于6.66ms的RC信号帧长,其截止频率约为24Hz。该参数可消除RC信号中的尖锐毛刺,从而减少了常见的RC链路中的抖动对前馈的影响。
295 |
296 | 高于默认值的值会提供更平滑的前馈信号,但可能导致大量的延迟,甚至使得前馈变得毫无用处。除了飞行缓慢的电影飞机,不建议在其他任何飞机上这样做。
297 |
298 | #### 增压: ff\_boost
299 |
300 | 该功能相较于4.1没有改变,请参阅[4.1调参指南](https://github.com/betaflight/betaflight/wiki/4.1-Tuning-Notes#Feed-Forward-Limiting)
301 |
302 | 总体来说,增压对摇杆加速度做出响应,并通过放大迅速打杆动作以降低电机滞后效应。但它会使RC信号抖动产生更多的毛刺伪像。4.2中的默认设置则试图达到良好的平衡。
303 |
304 | 默认增压值为15,这对几乎适用于所有飞机。竞速飞手可能偏爱20。较高的值可能会在普通飞机上引起微小的过冲、抖动或过度敏感,但在弱动力飞机上最大可以调到30。
305 |
306 | #### 峰值限制: ff\_spike\_limit
307 |
308 | `ff_spike_limit`用简单的软限幅方式,直接裁切掉前馈信号中的较大尖峰。默认值适用于绝大多数情况。大多数人都应该保持此值为默认值。
309 |
310 | 更高的数字将会允许更大的前馈尖峰通过。想要完整的激进前馈的竞速飞手或者RC信号干净的飞手可以调高这个值,但是要仔细观察前馈轨线在黑盒日志中的形状来判断具体效果。
311 |
312 | 一般来说,最大的单次前馈跳跃是当飞手突然从满杆回中时,即在完成一个快速翻滚动作时。如果要尽量减少此时的延迟,则可以尝试将该值调高一些。
313 |
314 | #### 过冲限制: ff\_max\_rate\_limit
315 |
316 | `ff_max_rate_limit` 相较于4.1也没有改变,请参阅[4.1调参指南](betaflight-4.1.md).
317 |
318 | 保持它为100就好。
319 |
320 | ### RC信号平滑改进
321 |
322 | 经过广泛的测试,默认的RC平滑参数被简化并优化了通常来说,不需要更改默认设置。
323 |
324 | 默认的自动平滑设置将会根据识别出的RC数据包步长间隔动态计算RC平滑的时间常数。这对于大多数RC遥控系统和前馈插值确实非常有效。默认的输入滤波器类型是`BIQUAD`,用于平滑设定点和P。导数滤波器类型是`PT1`, 可以平滑掉前馈轨线中的尖峰。
325 |
326 | 大多数飞手都应保持默认设置。
327 |
328 | `rc_smoothing_auto_smoothness` 用于设置RC信号的“平滑度”。更高的值会更加平滑,但会增加延迟。10是多数情况下的最佳值。竞速飞手可能更喜欢8,甚至5,但是会有更大的抖动,所以并不会很大的改善飞行表现。对于老旧的RC信号会抖动的遥控器来说,20或者40可能会对抖动现象有所改善。
329 |
330 | 以下是新的默认设置:
331 |
332 | ```
333 | set rc_smoothing_type = FILTER
334 | set rc_smoothing_input_hz = 0
335 | set rc_smoothing_derivative_hz = 0
336 | set rc_smoothing_input_type = BIQUAD
337 | set rc_smoothing_derivative_type = PT1
338 | set rc_smoothing_auto_smoothness = 10
339 | ```
340 |
341 | ### 动态Dterm滤波曲线指数
342 |
343 | `dyn_lpf_dterm_curve_expo` 现在随着油门的增加,Dterm低通滤波器的截止频率会比以前更快地上升。Dterm低通滤波器截止频率会零油门时就开始随油门升高,将其设置得大于等于5可以改善对洗桨的抑制。
344 |
345 | 动态调整的范围, `dyn_lpf_dterm_min_hz` 和 `dyn_lpf_dterm_max_hz`, 仍然保持不变,现在只是会更快地到达最大值。
346 |
347 | * 默认值(6)已经很好用了。
348 | * 1是一个很平缓的曲线-几乎是线性的-在整个油门区间从最小到最大。
349 | * 6是一个从零油到半油有迅速上升的曲线。
350 |
351 | 图表请参阅[PR9486](https://github.com/betaflight/betaflight/pull/9486).
352 |
353 | ### 动态电池压降补偿
354 |
355 |
该功能在满电时降低电机的输出量,然后在飞行过程中向上提升电机的输出,以在电池电压发生下降时进行快速补偿。
356 |
357 | 该功能在整个可用的电池电压区间中自动补偿动力,可提供一个更一致的飞行手感,从油门和PID来说都是如此。飞机在起飞时不会感觉“很暴力”,也不会在在快降落时变得“很迟钝”。
358 |
359 | 最好启用:
360 |
361 | ```
362 | set vbat_sag_compensation = 100
363 | set vbat_pid_gain = OFF
364 | ```
365 |
366 | 这意味着“100%补偿电池压降”
367 |
368 | 注意1:飞机必须有一个板载电池电压传感器。无法使用ESC遥测得电压,因为其值变化太慢。
369 |
370 | 注意2:一定不要同时启用`vbat_pid_gain`这个旧的电池电压补偿方式。
371 |
372 | 注意3:仅当您通过遥控器遥测或OSD对电池电压进行主动监控时才启用此功能。当电池电压下降至3.5V之后,您会立刻失去“跟手感”。
373 |
374 | 注意4:在3D模式下无法工作。
375 |
376 | 该代码可以从4.2V到3.5V(用户可自行配置)警告电压之间的电压变化进行动态补偿。
377 |
378 |
从4.2V到3.5V大约下降了16%的电压。在100%的补偿中,满电时,电机输出将被削减16%。当电压下降时,电机输出会逐渐升回正常状态,从而抵消电压骤降带来的动力损失。一旦电池电压低于3.5V,动力就将恢复正常,不再有更多的补偿。.
379 |
380 | 启用电池电压补偿之后,可能需要重新调整油门限制和电机输出限制。如果您的静态 `motor_output_limit` 值已经低于100,电池电压补偿会进一步降低电机输出。可能要把 `motor_output_limit` 上升10以获得相似的整体性能。通常不需要更改油门限制。
381 |
382 | 如果想在起飞时有更多的动力余量,以牺牲一定的“手感”为待见,那就可以将补偿设为较低的值。例如50%补偿`set vbat_sag_compensation = 50`。
383 |
384 | 将补偿值设置得超过100%可能会对压降极为严重得情况有所帮助,但通常来说并不需要。
385 |
386 | 有两种电池压降的情况:
387 |
388 | * 随着电池电量消耗,电压在几分钟内缓慢下降
389 | * 由于油门抖动期间的瞬态高电流负载而导致电压快速下降
390 |
391 | 若您只需要补偿电压缓慢下降的情况,请将`vbat_sag_lpf_period`设置为200(20秒为周期,或时间常数为3.3秒)。这样并不能够补偿电压的快速瞬间下降。较高的值对于慢速飞行或者电影式飞行有很大的帮助。
392 |
393 | 若需要补偿电压快速下降,择请坚持使用默认值(`vbat_sag_lpf_period`为2或200毫秒,时间常数大致为33毫秒)。它足够快,可以非常快速地响应油门瞬变和Split-S动作时带来的电压下降。
394 |
395 | 室内无刷/空心杯的飞行电压往往低于普通的2寸/3寸四轴,因此警告电压通常设置得更低,例如3.3V,衰减范围、电机输出最大抑制量都会更大一些。在这种情况下,稍微降低补偿量,例如80%,将去除它在起飞满电时过于“肉”的感觉。但是,有些小屋刷的电池压降幅度很大,而在某些情况下,高于100的补偿值可能有助于在整个电池范围内获得更一致的“感觉”。
396 |
397 | 若使用HV电池则无需调整。
398 |
399 | 将调试通道设置为`BATTERY`则可以在OSD或黑盒日志中显示补偿的额度。
400 |
401 | 调试通道2显示的是补偿力度,一个介于0和100之间的值。0表示您的电压处于补偿范围内的低端,并且无法进行进一步的补偿。100表示您的电池电量充沛,并且输出补偿已处于最大。如果您愿意的话,它可以被视作一个简单的0-100电池状态显示器。
402 |
403 | 调试通道3则显示的是电机输出降低的实际百分比。满电时默认值在160(16%)。如果补偿值为50%,则会在满电时看到仅有8%的补偿量。
404 |
405 | ### 全新的Rate模式
406 |
407 | 我们开发了两套全新的Rates模式,并升级了配置程序使之能以图表的方式显示所有的Rates设置。强烈建议使用最新版的配置程序。零expo,在中位附近灵敏度较低的Actual Rate推荐给摄影飞行或花式飞行。
408 |
409 | 这两个新Rate分别是`ACTUAL`和`QUICK`。
410 |
411 | 他们可以完全独立地对中位手感、指数曲线和最大滚转速率进行调整。
412 |
413 | 中位手感由中位附近的速率曲线决定。在新的模式中,可以直接设定中位手感,且其他参数并不会影响它。
414 |
415 | `QUICK` 模式从之前的Betaflight中继承了传统的RCRate值用于设置中位手感。你可以保持旧的设置不变。
416 |
417 | `ACTUAL` 模式可以让你用度/秒来设置最大滚转速率。将原来的RCRate值乘以200可换算为度/秒的数值。例如,1.0的RCRate会被换算成200的中位值。在 `ACTUAL` 模式中,中位和最大速率具有相同的单位,并且可以直接地通过在中位和其他位置的手感比较出来。
418 |
419 | 在新模式中,expo会增加曲线的曲率,但不会改变中位速率(Rate曲线在中位处的斜率)和最大滚转速率。较高的expo会使曲线更为弯曲,飞机不会快速旋转除非打满杆量。这比较受花飞飞手欢迎。较低的expo提供更大的低灵敏度范围和更可预测的飞机反应。这比较受喜爱高中位灵敏度的竞速飞手和喜爱低中位灵敏度的摄影飞手欢迎。
420 |
421 | 在 `ACTUAL` 模式中,expo的数值可以被降得比以前更低。这对于要求平滑飞行的摄影飞手是个好消息。
422 |
423 | 对花飞飞手来说,高expo值可提供大范围的线性手感,但在打满杆时,又可以有一个迅速的滚转。
424 |
425 | 在 `QUICK` 模式中,expo曲线会更为传统。不同的曲线可在地面站中可视化地调整。
426 |
427 | 最后,当增加死区时,最大滚转速率也不会变了。
428 |
429 | 这个在线计算器可以[将BF与Actual可视化](https://www.desmos.com/calculator/r5pkxlxhtb),使换算旧的Rate值更为简便。这个计算器则用于 [Quick Rates](https://illusionfpv.github.io)
430 |
431 | ### 自动偏航溢流抑制
432 |
433 | BF 4.2现在默认将 `yaw_spin_threshold` 设为比最大yaw轴滚转速率略小一点的值。在大多数情况下这会使yaw轴旋转抑制在撞击物品并旋转时更快地运作。而且现在飞手可以在竞速、花飞的Rate文件间自由切换, `yaw_spin_threshold` 会自动调整。
434 |
435 | 在CLI中使用 `yaw_spin_recovery`. 进行模式设置。设置项为 `OFF`, `ON`, 或 `AUTO`(默认)。如果要手动设置阈值,设为`ON` 并使用 `yaw_spin_threshold`设置数值。
436 |
437 | 我们希望`AUTO`适合所有人。更多信息请参阅[这里](https://github.com/betaflight/betaflight/pull/9455)。
438 |
439 | ### 反重力增益值从I值中独立
440 |
441 | 以前,反重力增益值是作为PID I值的一个倍数,意味着当I值增加了,反重力的强度也会增加,反之亦然。这可以导致I值过高时在油门迅速变动时的抖动,或者是I值较低时反重力效果不足。
442 |
443 | 4.2中,反重力增益从PID中独立出来,由反重力增益独立调整。
444 |
445 | 如果先前将I值调的高于默认,则需要调高反重力的增益值,反之亦然,以此获得与之前相当的反重力效果。对反重力增益的调整应该与I值相对于默认值的比例成比例。
446 |
447 | ### 升级了的动态陷波滤波器
448 |
449 | 我们对动态陷波滤波器做了大量的修改,它现在可以更精确、更大范围地识别和跟踪噪声。在大多数飞机上会有更好的效果。它会在非标准的陀螺仪刷新率下更精确。
450 |
451 | 相较于以前的设定范围如 `AUTO`, `LOW`, `MEDIUM` 或 `HIGH`, 现在用户可以直接设置他们想要的动态陷波滤波器覆盖的最大频率,用 `dyn_notch_max_hz`调整。动态陷波滤波器会帮助控制在设置频率范围内出现的噪声。
452 |
453 | `dyn_notch_max_hz` 的默认值600Hz适合大部分飞机。最佳数值取决于是否使用RPM滤波和飞机的转速范围。
454 |
455 | 如果以前使用 `LOW`, `dyn_notch_max_hz` ,350Hz左右应该够用了。如果以前使用 `HIGH`,大概700Hz就行。我几乎没见过转速比这还高的飞机。
456 |
457 | 未使用RPM滤波时,动态陷波滤波器需要覆盖整个可能的电机频率。需要的数值可通过开启 GYRO\_SCALED 调试模式并观察频谱图获取。或者可以用70%的峰值空载转速来估计。例如,2000kv的电机使用6S时空载转速约为2000\*6\*4=48000rpm,70%就是33600rpm,除以60就得到了560Hz。
458 |
459 | 响应迟缓的飞机如X-class应使用350-400Hz的 `dyn_notch_max_hz` 和比默认更低的 `dyn_notch_min_hz` 。较低的最大值会改善飞行表现。
460 |
461 | 开启RPM滤波时,电机噪声会几乎被完全消除,动态陷波滤波器就没什么可做的了,一般而言可以将其关闭。但是,它可以有效削减残留噪声或者机架的共振。如果机架没有共振,他就会停留在设定范围的中心,进而导致极少的延迟。
462 |
463 | 如果在某个频率有共振,可以将陷波器的最大、最小值设在这个固定频率的附近。例如,如果有150Hz的共振,试试把最小值设为100,最大值设为200。
464 |
465 | 无论将最大值设得多低,实际使用的值不会低于最小值的两倍。这用以保证程序正常运行。
466 |
467 | 4.1调参指南中的关于陷波器宽度和Q值的部分依然有效。总而言之,当使用RPM滤波时:4.1调参指南中的关于陷波器宽度和Q值的部分依然有效。总而言之,当使用RPM滤波时:
468 |
469 | ```
470 | set dyn_notch_width_percent = 0
471 | set dyn_notch_q = 250
472 | ```
473 |
474 | 不使用RPM滤波时:
475 |
476 | ```
477 | set dyn_notch_width_percent = 8
478 | set dyn_notch_q = 120
479 | ```
480 |
481 | ### I值释放可在设定点模式下正常工作
482 |
483 | 在4.0和4.1中有一个影响I值释放的设定点模式下的Bug。默认设置下设定点模式可以用,但调整 `iterm_relax_cutoff` 几乎是无效的。此Bug不影响陀螺仪模式下的I值释放。
484 |
485 | 这就是为什么只有在陀螺仪模式下降低 `iterm_relax_cutoff` 值才可有效减弱回弹。现在,设定点模式在所有 `iterm_relax_cutoff` 值下都可正常运作。
486 |
487 | 我们建议4.2的用户使用设定点模式。
488 |
489 | 调整 `iterm_relax_cutoff`时,为减小由I引起的回弹,调到最大值可提供充分的回弹抑制。
490 |
491 | 为确认飞机的回弹是由I引起的,而不是由于其他的什么东西,可以临时将 `iterm_relax_cutoff` 设到较高的值,如40,然后进行测试飞行。如果回弹反而加剧了,降低 `iterm_relax_cutoff` 的值直到它被完全抑制。
492 |
493 | 对大多数搭载GoPro的花飞机来说,10左右的 `iterm_relax_cutoff` 就够了。7寸大约是5-7.X-class是5或更低。
494 |
495 | ### NFE竞速模式
496 |
497 | 仅在自稳模式有效。
498 |
499 | 启用后,Roll轴是自稳,Pitch轴与手动模式无异。
500 |
501 | 使用以下CLI命令以启用该功能: `set level_race_mode = ON`.
502 |
503 | ### OSD升级
504 |
505 |
506 |
507 | 可以在每次解锁时显示自定义的logo了。\
508 | CLI命令: `set osd_logo_on_arming = ON` 选项有 OFF, ON, FIRST\_ARMING.
509 |
510 | CRSF的连接质量现在显示为“A:BB”。A是RF刷新率(2=150Hz,1=50Hz),BB是连接质量。该调整可使连接质量正常工作。
511 |
512 | 以下新元素被加入OSD:
513 |
514 | * 相机取景框 (#9261)
515 | * 飞行距离警报,使飞行距离闪烁。备注:距离的单位是米 (#8862)
516 | * 电池效率。单位是mAh/km或mAh/mi (#9601)
517 |
518 | ### 配置程序的改进
519 |
520 | Rate设置页面完全支持所有模式的rate曲线图像显示。
521 |
522 | PD平衡滑块现在只改变D,而不是P。使感受D造成的变化变得更容易。
523 |
524 | 动态怠速值可在PID调校页面开启和调整。
525 |
526 | 当开启Dmin时,原先的D列被重新命名为Dmax,以更直观地展示其作用。
527 |
528 | Yaw轴的P值改变同pitch和roll。默认值略高。
529 |
--------------------------------------------------------------------------------
/tuning-notes/betaflight-4.0.md:
--------------------------------------------------------------------------------
1 | # Betaflight 4.0
2 |
3 | ## Betaflight 4.0带来了
4 |
5 | * 由双向Dshot的RPM回传控制的RPM滤波器组,显著改善对于电机噪声的抑制,降低因滤波带来的延迟。
6 | * 弹射起飞模式,允许飞行员精准的保持指定的角度,以完美的姿态弹射进入赛道。
7 | * D_Min,根据摇杆的运动状态调整PID的D项系数。
8 | * [动态低通滤波器](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/tuning-notes/betaflight-4.0.md#dong-tai-di-tong-lv-bo-qi),可以在低油门时降低噪声,并在高转速时降低延迟。
9 | * [改进的动态陷波器代码](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/tuning-notes/betaflight-4.0.md#gai-jin-de-dong-tai-xian-bo-lv-bo-qi-dai-ma),具有更好的噪声跟踪能力和抑制能力,降低延迟。还可使用两个间隔较近、槽口较窄的陷波器,以更低的延迟更好地追踪和抑制电机噪声。
10 | * [仅衰减D的TPA](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/tuning-notes/betaflight-4.0.md#zhi-shuai-jiandde-tpa),用于在高油门时降低D的增益以降低Dterm噪音,使P能够保持正常的响应。
11 | * 整合式偏航控制,实验性功能,在数学上对偏航的PID进行积分,可以用于简化调整偏航参数的过程。
12 | * [改进的I值释放设定点模式](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/tuning-notes/betaflight-4.0.md#gai-jin-le-deizhi-shi-fang-de-she-ding-dian-mo-shi),旨在提高过弯和躲避障碍时的准确性。适用于赛道飞手。
13 | * [瞬态油门限制](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/tuning-notes/betaflight-4.0.md#shun-tai-you-men-xian-zhi),通过防止使噪声重复加倍导致曲解原信号,改善高油门和低油门时的响应性能。
14 | * [改进了偏航的PID](https://app.gitbook.com/s/-M4XZa_Xo8uuKqMMASip/tuning-notes/betaflight-4.0.md#gai-jin-de-pian-hang-pid),因为我们更好的理解了应该如何调整偏航。
15 |
16 | 其他的与飞行性能相关的变化还包括:
17 |
18 | * 绝对控制代码已经得到改进,但现在默认关闭。因为如果没有正确调整参数,绝对控制会导致晃动
19 | * 默认情况下禁用I值旋转
20 | * PID默认值略有改动
21 |
22 | **重要提示:请从头开始设置4.0!请勿将旧DUMP直接粘贴到CLI中!**
23 |
24 | **警告:4.0对高P和D值敏感! 对于正常的4S 2400-2600kV 5寸飞机来说,默认值是非常合适的。对于高推重比的飞机(例如6S或超轻型飞机),首次飞行时应该将所有PID值至少减少1/3。**
25 |
26 | ### 如果我飞默认值,我应该注意什么?
27 |
28 | * 电机更凉了
29 | * 在低油门下会有和以前一样的洗桨情况,但在高油门下飞控对于洗桨的控制显著改善
30 | * 默认参数范围通用性更强,适用于各种类型的穿越机
31 | * 电机听起来感觉更精准、更“平滑”。
32 |
33 | ### 我是一个自由花飞飞手,我应该往CLI里面粘贴什么?
34 |
35 | 花飞的目标是流畅。使用你的旧PID就可以了,将D_Min设置为旧D值的75%,并稍稍降低你的旧P和D值。
36 |
37 | **警告:默认PID是针对略重的经典4s花飞飞机(有一个较重的GoPro,电池也比较中)配置的。如果使用6s或比较轻的花飞飞机,请在起飞前将PID降低1/3。否则的话飞机可能会有严重的抖动,甚至直接抖上月球!**
38 |
39 | 若以默认值为基础,对于一个普通的4s花飞飞机,请尝试:
40 |
41 | ```
42 | set dterm_lowpass2_type = PT1
43 | set dterm_lowpass2_hz = 200
44 | set feedforward_transition = 30
45 | set iterm_relax_type = gyro
46 | set iterm_relax_cutoff = 10
47 | set transient_throttle_limit = 15
48 | set i_pitch = 85
49 | set i_roll = 80
50 | set d_min_roll = 25
51 | set d_min_pitch = 28
52 | set d_min_boost_gain = 30
53 | set d_min_advance = 50
54 | set d_pitch = 38
55 | set d_roll = 30
56 | set tpa_rate = 50
57 | set tpa_breakpoint = 1500
58 | set tpa_mode = D
59 | set p_yaw = 35
60 | set i_yaw = 100
61 | set d_yaw = 0
62 | set f_yaw = 35
63 | set iterm_rotation = OFF
64 | ```
65 |
66 | ### 我的飞机在翻滚之后有一个缓慢的回弹…
67 |
68 | 这通常是由于`iterm_relax_cutoff`值过高引起的。请在CLI中将其值拉高,以确认更高的值的确会是他变得更糟,然后请逐步尝试将此值降低,直到回弹现象不再困扰你为止。最佳值应该是不再会给您造成回弹情况下的最高值。 如果它是自由式四边形,则还要`set iterm_relax_type = gyro`,这样可以延长I值的抑制时间,并且对于具有此特定问题的花飞飞机更好。 上面的代码段对于大多数花飞飞机来说应该足够了。
69 |
70 | 使用陀螺仪类型iterm_relax和较低截止值的缺点是,在非常快速的持续转弯(例如围绕树木进行刷锅)等情况下,飞机的转弯半径会趋向于变大,且不能完美保持转弯半径。这对花式飞行来说问题不大,但对于竞赛飞行员或刚入门自由式花飞的飞行员来说是个大问题。 竞赛飞行员通常更喜欢设定点为30-35的临界值,并接受一些反弹。
71 |
72 | 默认值则有些妥协;请以代码段作为调参起点。
73 |
74 | ### 我是一个竞速飞手…或者我正在飞6s/超轻高灵敏飞机
75 |
76 | 竞速的目标是获得最佳响应能力。所以需要更多的I,尽可能少的D。但这样可能会导致洗桨情况变糟糕,翻滚过后的过冲变大。
77 |
78 | ```
79 | set dterm_lowpass2_type = BIQUAD
80 | set dterm_lowpass2_hz = 150
81 | set feedforward_transition = 0
82 | set iterm_relax_type = setpoint
83 | set iterm_relax_cutoff = 35
84 | set transient_throttle_limit = 10
85 | set p_pitch = 30
86 | set p_roll = 28
87 | set i_pitch = 90
88 | set i_roll = 84
89 | set d_pitch = 27
90 | set d_min_pitch = 18
91 | set d_roll = 25
92 | set d_min_roll = 16
93 | set d_min_boost_gain = 27
94 | set d_min_advance = 0
95 | set f_pitch = 90
96 | set f_roll = 84
97 | set tpa_rate = 75
98 | set tpa_breakpoint = 1400
99 | set tpa_mode = D
100 | set p_yaw = 30
101 | set i_yaw = 90
102 | set d_yaw = 0
103 | set f_yaw = 30
104 | set iterm_rotation = OFF
105 | set thrust_linear = 0
106 | ```
107 |
108 | ### 救命!我一解锁它就飞起来了!
109 |
110 | 这是由于D的敏感性所导致的,潜在原因可能是机臂过软、推重比很高、陀螺仪设置错误或者是桨/机架响应问题。
111 |
112 | 对于6s飞机来说,您首先应将PID降低1/3。
113 |
114 | 下面的设置**稍稍降低了P和D,并将Dterm滤波稍微下调以增强其滤波强度**,这可以使你的飞机不再那么癫狂地起飞。从某个角度来讲它可以解决潜在的问题:
115 |
116 | ```
117 | set d_min_roll = 14
118 | set d_roll = 20
119 | set d_min_pitch = 15
120 | set d_pitch = 22
121 | set d_min_boost_gain = 20
122 | set tpa_rate = 75
123 | set tpa_breakpoint = 1400
124 | set tpa_mode = D
125 | set p_roll = 30
126 | set p_pitch = 30
127 | set d_yaw = 0
128 | set dterm_lowpass2_type = PT1
129 | set dterm_lowpass2_hz = 100
130 | ```
131 |
132 | ### 我正在飞大轴距的飞机 - 7寸或者更大的X-Class
133 |
134 | 对于具有较大螺旋桨的四轴来说,Betaflight 4.0的默认滤波设置通常太高。请尝试以下操作,允许动态陷波和低通滤波的截止频率变得足够低,以适应这些低转速的怪兽:
135 |
136 | ```
137 | set dyn_lpf_gyro_min_hz = 70
138 | set dyn_lpf_gyro_max_hz = 350
139 | set dyn_notch_range = LOW
140 | set iterm_relax_type = gyro
141 | set iterm_relax_cutoff = 7
142 | set dyn_notch_min_hz = 100
143 | set dyn_lpf_dterm_min_hz = 70
144 | set dyn_lpf_dterm_max_hz = 150
145 | set dterm_lowpass2_hz = 120
146 | set d_yaw = 0
147 | ```
148 |
149 | 有些时候,桨/机臂共振会需要一个静态Dterm陷波滤波器,但通常来说并不需要。基于RPM的多组滤波器应该能很好地适应这些机器。
150 |
151 | ### 我的3.5参数调校得令我非常满意,我只想要飞起来像以前一样
152 |
153 | 以下代码段可以将4.0的滤波器设置为与3.5完全一致。 如果您在3.5中的参数调整得非常好,那么这些设置应使您的飞机在4.0中得到几乎完全相同的飞行体验。 在较高的rpm下,延迟会稍有减少,并且电机可能会稍微更凉一些,但总体而言应该相同。 如果无法在4.0中获得良好的结果,并且您清楚这些参数3.5中工作量好,请尝试这些设置。
154 |
155 | 请不要将3.5的diff/dump直接粘贴到4.0中!
156 |
157 | 在4.0中,偏航的I值放大了2.5倍。要完全匹配3.5的PID的话,请将3.5中的Yaw的I值除以2.5。
158 |
159 | ```
160 | set gyro_lowpass_type = PT1
161 | set gyro_lowpass_hz = 300
162 | set gyro_lowpass2_type = PT1
163 | set gyro_lowpass2_hz = 100
164 |
165 | set dyn_lpf_gyro_min_hz = 300
166 | set dyn_lpf_gyro_max_hz = 450
167 |
168 | set gyro_notch1_hz = 0
169 | set gyro_notch1_cutoff = 0
170 | set gyro_notch2_hz = 0
171 | set gyro_notch2_cutoff = 0
172 |
173 | set dyn_notch_range = AUTO
174 | set dyn_notch_width_percent = 0
175 | set dyn_notch_q = 70
176 | set dyn_notch_min_hz = 130
177 |
178 | set dterm_lowpass_type = PT1
179 | set dterm_lowpass_hz = 200
180 | set dterm_lowpass2_type = PT1
181 | set dterm_lowpass2_hz = 100
182 |
183 | set dyn_lpf_dterm_min_hz = 200
184 | set dyn_lpf_dterm_max_hz = 250
185 |
186 | set dterm_notch_hz = 0
187 | set dterm_notch_cutoff = 0
188 |
189 | set d_min_roll = 0
190 | set d_min_pitch = 0
191 | set d_min_yaw = 0
192 |
193 | set abs_control_gain = 0
194 | set use_integrated_yaw = OFF
195 | set d_yaw = 0
196 | ```
197 |
198 | ### 4.0最小化洗桨调参指南
199 |
200 | 简短的回答:
201 |
202 | * 在弧线中飞行
203 | * 在转弯时保持油门
204 | * 调大D(增加D本身、D_Min或者d_min_gain)
205 | * 降低滤波器延迟
206 | * 将响应能力/洗桨抑制能力调得强一些
207 | * 某些情况下增大一点P
208 |
209 | 又长又复杂的回答:
210 |
211 | 当降低油门,进行快速转弯,然后飞行员再次推高油门,这时飞机会发现它正在向后/向下坠入乱流,洗桨便在这时发生了。当处于反向气流中时,任何螺旋桨都会在尖端产生涡流,从而大大减少推力,而“乱流”本身就有可能非常混乱,当我们飞经它时,它会把飞机推来推去。
212 |
213 | 当我们在180°翻转情况下将油门快速降低时,将会有几个电机开始以低于其他电机转速启动,导致推力增加得并不均匀,从而导致轴与轴之间产生串扰、二次PID响应,使得稳定性变得更差。因此需要在发生洗桨时尽量保持油门,并尽可能避免将油门降低至零。
214 |
215 | 最终结果是产生高度非线性的电机响应,使得正常的PID控制变得相对无效。
216 |
217 | 洗桨的最佳解决方案是飞行风格。一个优秀的飞行员可以十分平滑地驾驶一个有着非常糟糕的洗桨状况的飞机,并且还会使它看起来不错。这其中重要的飞行因素有:
218 |
219 | * 保持螺旋桨在干净的空气中前进
220 | * 避免剧烈的180°转弯飞行
221 | * 转弯时保持油门
222 | * 不要将油门快速降低到零(快速翻滚、倒飞期间除外)
223 | * 在弧线上流畅飞行
224 |
225 | 在洗桨过程中,飞机会以相对较低的频率震动,例如20-30Hz,这在视频中能很容易观察到。这些震动无法通过滤波消除。对洗桨能有更好抑制能力的穿越机通常具有以下特质:
226 |
227 | * 能根据需要快速改变推力:
228 | * 更高的电池s数,例如6s优于4s;
229 | * 更轻,更易于转动的螺旋桨(不要过轻)
230 | * 较重的飞机(更稳定)
231 | * 电池上置(更低的转动惯量)
232 |
233 | 从软件角度来看:
234 |
235 | * **滤波器延迟越多越少**(尽管滤波器延迟低=噪声滤除得少=电机更热)
236 | * **D系数越高好**(过多的D将会导致电机更热))
237 | * 对于P来说,有一个“甜蜜点”,P过低或者过高都不是理想的 - 需要进一步实验
238 | * 在低转速下提高PID响应性(推力线性化)对某些飞机来说非常好用
239 | * **D_Min只会使洗桨变得更糟糕,而不是更好**
240 |
241 | 4.0一直专注于更强的低转速滤波,以避免在高清视频中造成果冻,同时还保持电机较凉。4.0中高转速时滤波器的延迟低于3.5,但低转速时延迟将增大。
242 |
243 | **在4.0中,大多数时间D将会以一个更低的值运行 - D_Min的值**。这将是你在正常飞行时使用的D值。当有摇杆命令输入时,`D_Min`仅会上升到正常的D值。在发生洗桨时,D也会向着D的正常值增大,但不会完全增大到D的正常值。从洗桨的角度来看,`D_Min`值比D值更重要。
244 |
245 | 请注意,4.0默认的D的“最大值”比D_Min高,但此值仅会在快速快速翻滚期间被激活。因此,对于通常发生在低油门段的洗桨来说,D_Min是最重要的。
246 |
247 | 总体而言,在4.0中,如果能一直保持油门,尤其是在1/3油门到半油门的区间内,洗桨一般会发生得更少;但是当从更低的油门开始推油门时,洗桨可能会更糟。将油门降至零然后180°急转飞行的飞手可能会收到比3.5更多的洗桨,但如果在转弯期间保持油门,您可能会发现它比之前表现得更好。
248 |
249 | 如果你发现4.0相比之前版本有更多的洗桨,以下修改可能会有所帮助:
250 |
251 | * 将旧参数的D值上调20%
252 | * 将D_Min值设置为低于旧D值的20%(这将使D的最大值和最小值之间的差异减小)
253 | * 将d_min_boost_gain增加到30
254 |
255 | 如果这样的D表现还不错,
256 |
257 | * 尝试增大或降低P值以找到最佳P值
258 | * 尝试将thrust_linear增大一些(对于5寸穿越机,建议值是10-20,并请注意悬停时的晃动情况)
259 | * 为降低滤波器延迟,请小心地将滤波器最小值稍稍增大一些
260 |
261 | 默认的滤波器最小值为150Hz左右。例如
262 |
263 | * `dyn_lpf_gyro_min_hz`,陀螺仪动态低通滤波器最低截止频率
264 | * `dyn_notch_min_hz`,陀螺仪动态陷波器最低截止频率
265 | * `dyn_lpf_dterm_min_hz`,Dterm动态低通滤波器最小截止频率
266 | * `dterm_lowpass_hz`,Dterm低通滤波器2截止频率(不是动态滤波器,但是此值也会在飞行过程中上升)
267 |
268 | **如果电机很凉,请立刻尝试增加所有这些值,比如170,然后再次试飞**。当再次增大这些值时,应减少增大量并逐步进行测试。请注意,在典型的5寸飞机上,250Hz大概是中油门时的转速。还请注意,如果你使用弯曲的螺旋桨进行飞行或者电机没有固定得很牢靠的话,则有很大的可能性会烧毁电机。当更改这些滤波器值时,请仔细检查。您可能还会发现,当您增加这些值是,果冻效应会突然变得更糟,或者电机温度会突然恶化。
269 |
270 | 基于RPM的滤波器可能会降低延迟,应予以考虑。但请注意,此功能目前仍然是实验性功能。
271 |
272 | 请谨记,洗桨的根本原因是飞行风格。在技术原因中,迄今为止最大的影响因素是电机/螺旋桨的产生推力的延迟而引起的延迟(这由物理因素决定,因为在现实世界中物体的能量无法发生跃变)。只有10%的问题与滤波器延迟有关。及时滤波器延迟为0,仍然会有洗桨状况发生。大多数人都会注意到,通过增大D、D_Min,并将滤波器截止频率设到更高,或者关闭一些滤波器就能够改善洗桨状况。然而在某些情况下,“回报”会越来越少,燃烧电机的风险,以及功率、效率和飞行时间的损失也会越来越大。每个人的情况都会略有不同,最佳的折中方案很大程度上取决于那些对我们而言最重要的东西,以及我们真正想要飞机实现的东西。
273 |
274 | ### 动态低通滤波器
275 |
276 | #### 介绍
277 |
278 | 对于四轴飞行器来说,摇杆命令输入和所对应的电机响应都发生在低频区,响应次数通常小于每秒50次(50hz)。然而,电机因转动产生的噪音一直延展到500hz,并且可以比我们的摇杆命令输入还要“响”。这种噪声由陀螺仪检测到,通过PID被放大,最终返还给电机。由于电机不能以这么高的频率快速改变转速,所以,电力受到到噪声影响不断上升下降,而不能产生实际升力,但会产生热量。滤波的目的则是消除这些高频噪声,确保仅向电机发送无噪声的干净的输入信号。
279 |
280 | 所有的数字滤波器都会产生一些延迟,延迟越大,四轴震荡的幅度就越大,这会导致洗桨变得更糟糕,操作也变得迟钝。
281 |
282 | 设计与调整滤波器的挑战是在截止频率之上尽可能多地消除噪声,在截止频率以下尽可能多地保留信号,兼顾以上两点同时尽可能地使延迟降到最低。但是所有的滤波器都将带来延迟,并且滤波强度越高延迟就越大。
283 |
284 | 大多数噪声的直接来源是电机的转动:电机的基频(rpm\*60,单位hz)和该频率的整数倍频率(高次谐波)。所有的螺旋桨叶片也都具有固定的共振频率,并且,当它与电机转动频率相匹配时,可能突然会在共振频率的影响下产生不良震荡。上述所有噪音都和电机转速直接相关。虽然在空气湍流和轴承的震动中存在一些与转速不相关的随机噪声带,但穿越机上绝大多数的噪声都与电机转速直接直接或间接相关。
285 |
286 | 对于那些不能使用RPM滤波器的来说,动态陷波器和低通滤波器都得到了改进,因此他们的工作效果更好,延迟更低。
287 |
288 | #### 4.0中噪声滤波的改动
289 |
290 | Betaflight 4.0提供了一种可以将低通滤波器的截止频率快速切换到更高值的方法。分配给第一级陀螺仪和Dterm的低通滤波器的截止频率现在可以随着油门的增加,沿着模拟电机转速的曲线(油门-截止频率曲线)而动态增加。这可以减少高油门时的延迟,并且允许动态陷波滤波器更好的跟踪电机噪声峰值。
291 |
292 | 现在,动态陷波滤波器的中心频率可以在低油门时更低,以帮助消除有时在花飞穿越机上出现的果冻效应。新的动态低通滤波器的默认设置将允许动态陷波器在更宽的频率范围内更好的跟踪电机噪声峰值。并且会比以前更强力的清除电机噪声基频以上的噪声信号。
293 |
294 | 这意味着在低油门下的延迟和洗桨情况并不会比3.4更好或者更差,但是在较高的油门时延迟和洗桨情况将会改善。显著改善对于全频谱的噪声的抑制能力。
295 |
296 | 低通滤波器的截止频率会随着油门而移动。这将使动态陷波器能更精准的追踪到电机噪声,同时还能降低延迟。 动态陷波器的代码也得到巨幅提升,能够更强力清除电机噪声。
297 |
298 | #### 启用/禁用动态低通滤波器
299 |
300 | 动态低通滤波器的最小值和最大值配置选项独立于传统的静态低通滤波器1和2。当动态低通滤波器激活时,其设置将会覆盖掉静态低通滤波器1的值。静态低通滤波器2的值和静态陷波滤波器仍然可以正常使用,并会像之前一样工作。
301 |
302 | 并非所有飞控的闪存大小都足以支持动态低通滤波器。如果你的飞控在CLI内没有显示`dyn_lpf_gyro_max_hz`等参数,则不支持启用动态低通滤波器。
303 |
304 | 当动态最小值(指截止频率,下同)大于最大值且动态最小值为0时,第一级低通滤波器的值将被忽略,动态低通滤波器将激活。
305 |
306 | 例如,以下设置将忽略gyro_lowpass_hz的值,并启用动态低通滤波器,最小值为150hz,最大值为600hz:
307 |
308 | ```
309 | set dyn_lpf_gyro_min_hz = 150
310 | set dyn_lpf_gyro_max_hz = 600
311 | ```
312 |
313 | 以下设置将禁用动态低通滤波器,并将返回到静态低通,也会忽略`gyro_lowpass_hz`的值:
314 |
315 | ```
316 | set dyn_lpf_gyro_min_hz = 0
317 | set dyn_lpf_gyro_max_hz = 600
318 | ```
319 |
320 | 当低通滤波器类型配置为biquad时,动态低通滤波的效果最佳。单个动态biquad将达到3.5中的静态PT1所达到的全部滤波效果。通常需要一个陀螺仪静态低通滤波作为辅助,不需要静态陷波器。强烈建议在4.0中使用默认值进行低通滤波。
321 |
322 | #### 动态低通滤波器设置
323 |
324 | dyn_lpf_gyro_min_hz设置的是动态低通滤波器的最低截止频率。它并不能将 油门-截止频率的曲线向上提升,而是为其放置一个“地板”。当截止频率随着油门-截止频率曲线下降到一定程度时,截止频率将不再下降。
325 |
326 | dyn_lpf_gyro_max_hz设置的是动态低通滤波器的截止频率可以达到的最高频率,它还定义了从零油门移动至此截止频率的油门-截止频率曲线。在理想状况下,dyn_lpf_gyro_max_hz应该被设置为接近穿越机实际的最大电机转速(hz)。对于典型的5寸机来说,大约是450-500hz,就是27000-30000rpm;较小的穿越机通常转速更快,对于3-4寸穿越机来说约为600-650hz;大轴距的飞机转速将更慢,大约为300-350hz。最大频率可以通过在OSD中显示RPM的调试数据来帮助你确定,或者记录日志进行黑盒分析,或者使用PID-analyzer进行分析。可以通过`set osd_stat_max_fft = ON`,来使上锁后在OSD的stats屏幕中显示峰值最大值,请确保将`dyn_lpf_gyro_max_hz`设置为至少610,否则动态陷波滤波器将不能升得很高,并且FFT最高峰值频率读数将是无效的。
327 |
328 | 如果在全油门时低通滤波器的截止频率不够高,电机噪声有可能会被低通滤波器衰减,导致动态陷波滤波器的FFT无法正常追踪到电机噪声,这会使得整体噪声更严重。同样地,如果低通滤波截止频率不够低,则FFT则有可能去追踪电机噪声的第一级谐波,导致电机噪声的基频噪声漏过。使用`set debug_mode = DEBUG_DYN_LPF`会将动态陷波滤波器的中心频率记录到debug0通道中。FFT值将随着油门升高平滑追踪电机噪声峰值。如果在高油门时,FFT值无法在电机噪声峰值频率上保持稳定,就需要略微提升`dyn_lpf_gyro_max_hz`的值。如果在低油门时,FFT值非常跳跃,你可以微调`dyn_lpf_min_hz`来帮助其稳定追踪电机噪声的主峰值。
329 |
330 | Betaflight 4.0默认在陀螺仪信号上使用单个动态Biquad,而不是像3.5一样使用两个静态PT1。这是因为Biquad具有更清晰的带通范围,并且在截止频率以上(对信号)有更陡峭的切割幅度。这可以是非有效的衰减高于预期电机峰值的其他所有噪声,并允许动态陷波消除噪声。最终应该会得到一张非常干净的噪声频谱图,电机噪声的基频、高次谐波和大多数普通噪声都将被消除。低油门时的延迟与3.5大抵相同,但中油门时延迟将减少。对比3.5来说,默认设置将使更多的低于截止频率的信号通过,通常将带来更敏锐的响应。
331 |
332 | #### 动态Dterm滤波
333 |
334 | 在Dterm上使用与陀螺仪相同的动态低通滤波方法,但策略略有不同。
335 |
336 | D项将主动放大高频率的噪声,但我们需要尽可能多的D来帮助我们抑制超调和洗桨等不受控的事件。在一个调整良好的飞机上,洗桨发生在30-80hz频率范围内。所以在低于100hz的范围内,我们需要尽可能多的D;高于100hz就希望有尽可能少的D。与此同时,Dterm的延迟确实降低了它的效率,因此我们希望尽可能的减少D项延迟。这几乎是一个不可能的挑战!
337 |
338 | 经大量仿真之后,我们发现4.0默认的动态biquad设置提供了最佳效果。通过将动态biquad范围设置为150-250hz,静态低通设置为高于250hz,我们狠狠地对D项进行了过滤。这样的设置使得D项在在洗桨频率附近(40-80hz)被放大,同时使高于此频率的D项都被大幅度衰减掉。这是使Betaflight 4.0尽管只做了很少的陀螺仪滤波但却使电机变得更凉的主要原因。
339 |
340 | 我们使用一个动态Biquad滤波器和第二级截止频率稍稍提高的静态滤波器来增强对Dterm的过滤。这是为了强力抑制Dterm噪声,因为D项充当着与频率大小正相关的噪声放大器。这样安排的原因,一是为了使D项在洗桨频率附近(40-80hz)之间被放大,同时将高于截止频率的噪声狠狠的衰减掉。正是于此,才使得Betaflight 4.0的电机温度更低。第二个Dterm静态滤波器不一定必须是Biquad,如果飞机相当干净(新装,噪声低,机架硬),PT1就会有很好的效果了。但第一级动态滤波器类型应该保持为Biquad。
341 |
342 | 所以,将Dterm滤波保持默认设置即可。
343 |
344 | #### 调整动态低通滤波器
345 |
346 | 调整这些动态低通滤波器并非易事。通过`set debug_mode = FFT_FREQ`并在黑盒中观察分析是唯一实用的方法。原则上应与标准陷波滤波器同时使用:
347 |
348 | * 将dyn_lpf_gyro_max_hz设置为以hz表示的最大电机转速的预估值
349 | * 在试飞中,根据低油门时的电机温度,将dyn_lpf_gyro_min_hz上调至最高不高于200hz
350 | * 如果电机温度比较高而且轴承不太好,请至少添加一个陀螺仪静态PT1滤波器
351 | * 永远开启Dterm的动态Biquad,并且需要小心地将最小值调高。在此过程中你有可能会突然在某个频率下使电机变得非常烫手,这是因为螺旋桨无法那么快地响应指令中的噪声。
352 | * Dterm的低通滤波器2十分有用;如果黑盒日志显示Dterm的噪声并不高,则可以将其截止频率调高
353 |
354 | 在试飞中:只需要保留默认值;如果电机都很凉,则可以按相同的百分比提升所有的滤波器的截止频率,并使陀螺仪动态低通的最大值保持在最大转速附近。
355 |
356 | ### 改进的动态陷波滤波器代码
357 |
358 | 我们使用基于FFT的动态陷波滤波器无法单独追踪每个电机。即使是电机分布在多个略微不同的频率上制造噪声,FFT算法也只能计算出一个中心频率传递给陷波器来抑制噪音。3.5的动态陷波器的Q因子为0.7(CLI中为70),它使得槽口变得很宽,在低转速(低油门)时导致十分明显的滤波延迟。
359 |
360 | 在4.0的开发期间,我们发现,如果使用两个间隔较近、槽口较窄的陷波器,与一个较宽的陷波器相比,可以获得更好的滤波效果,同时也能降低延迟。
361 |
362 | `dyn_notch_width_percent`设置的是中心频率两侧的百分比,决定了这两个成对的陷波器间隔有多远。dyn_notch_q默认值为120,使得陷波器的槽口宽度几乎为3.5中的一半。
363 |
364 | 对于干净的飞机、亦或是视延迟十分重要的飞机来说,将`dyn_notch_width_percent`设置为0将仅运行一个非常窄的陷波器。电机温度有可能会变得更高,但滤波延迟将降低,洗桨情况将会不那么糟糕。这并不适用于普通穿越机,但对于那些使用新桨新电机顺畅飞行的高性能穿越机来说可能会有所帮助。使干净的穿越机平滑飞行的另一种方法是减小百分比宽度并增加Q因子。例如,将宽度设置为4%并将Q设置为200将会使陷波器槽口变得非常窄,并且带来更低的延迟。
365 |
366 | 相反,如果要在任何情况下都能愉快地飞飞机,并且如果机器不是很吵(指信号噪声)的话,就需要增加宽度百分比和降低Q因子。任何对于宽度或者Q因子的改变都应该是成对做出的,例如,如果宽度提高了50%那Q因子也应该降低50%,以免在两个陷波器中间产生一个较大的“中间间隙”。
367 |
368 | 动态陷波滤波器有三个频率范围可供选择,“ LOW”,“ MEDIUM”和“ HIGH”。 将其设置为“AUTO”,则会根据`dyn_lpf_gyro_max_hz`的值选择范围,如下所示:
369 |
370 | * 当`dyn_lpf_gyro_max_hz`设置为0(关闭),或低于334hz,将选择“LOW”。
371 | * 当`dyn_lpf_gyro_max_hz`设置为334 - 610hz,将选择“MEDIUM”。
372 | * 当`dyn_lpf_gyro_max_hz`设置为高于610hz,将选择“HIGH”。
373 |
374 | 这些模式在真实世界中的近似频率范围为:
375 |
376 | * LOW:80 - 330hz(适用于电机转速较低的飞机,或当低频共振成为主要困扰)
377 | * MEDIUM:140 - 550hz(非常适用于5寸飞机)
378 | * HIGH:230 - 880hz(适用于电机转速较高的2.5 - 3寸飞机)
379 |
380 | 另外,4.0提供了`dyn_not_min_hz`用于设置动态陷波器的最低中心频率,而可忽略已选择的频率范围。默认值是150hz。若要去除100hz的共振尖峰,必须将频率范围设为“LOW”,且`dyn_notch_min_hz`值必须低于100hz,例如80hz。对于某些飞机来说,这可能有助于消除果冻效果。若目标噪声峰值低于80hz,则几乎不可能通过动态陷波滤波方式将其去除,需要使用静态陷波滤波器。
381 |
382 | 如果没有开启RPM滤波,则应将`dyn_lpf_gyro_max_hz`设置为以hz表示的频率,如果将模式保留为`AUTO`,则会自动选择适当的范围。 用户可以通过手动选择范围来覆盖它。 它应该设置得足够高,以包含电机最大RPM频率。 默认设置适用于大多数四轴飞行器。
383 |
384 | 启用RPM滤波后,动态陷波滤波器和动态低通滤波器无需跟踪和消除电机噪声。 通常,一旦通过RPM滤波器消除了电机噪声,就只需要一个静态的250hz PT1陀螺仪低通滤波器即可消除少量残留的高频噪声。 要禁用第一个陀螺低通,需要将`gyro_lowpass_hz`设置为0,且`dyn_lpf_gyro_max_hz`也必须为0。 如前所述,如果动态低通模式为`AUTO`,且`dyn_lpf_gyro_max_hz`为0,则动态陷波滤波器将自动被强制为`LOW`模式。 如果动态陷波范围需要高于`LOW`模式的330hz上限,则必须将动态陷波模式手动设置为`MEDIUM`或`HIGH`。
385 |
386 | 通常来说,当开启RPM回传之后,RPM滤波可以非常有效的移除电机信号,让动态滤波器来解决正常使用的飞机并不是共有的机架共振问题。
387 |
388 | 非常干净的飞机通常不会产生明显的共振噪声峰值,也不会从动态陷波中受益。关闭动态陷波可以节省CPU使用率并减少总体滤波器延迟。
389 |
390 | 知道您是否存在共振噪声峰值的唯一方法,是使用PIDtoolbox或等效工具对黑盒日志进行频谱分析。将动态陷波滤波器关闭,并`set debug_mode = gyro_scaled`来记录日志,以便可以清楚地看到传入的陀螺噪声的图像,包括共振噪声和所有噪声。
391 |
392 | 如果确实存在共振峰,并且您想要使用动态陷波滤波器来处理它们,但同时要防止使其频率变得太低而增加延迟,请选择包含共振峰线的最高范围,并将`dyn_notch_min_hz`设置为低于最小峰值10%左右。例如:
393 |
394 | * 300hz处有一个共振峰:范围为`LOW`,`dyn_notch_min_hz`设置为270hz。
395 | * 400hz处有一个共振峰:范围为`MEDIUM`,`dyn_notch_min_hz`设置为370hz。
396 | * 100hz附近有低频共振峰:范围为`LOW`,`dyn_notch_min_hz`设置为80hz。
397 |
398 | 如果共振峰较窄,将Q设置为尽可能高的值(120 - 200)并将宽度设置为0,可以最小化延迟。
399 |
400 | 当动态陷波跟随电机转速到非常低的频率时,延迟将变得非常大。一些花飞穿越机会在低频下产生明显的共振,从而导致果冻效应。允许动态陷波器运行在更低的中心频率上,虽然会导致明显的延迟,产生洗桨震颤,但是对于这类低共振频率的穿越机来说是比较有效的。
401 |
402 | 3.4中的动态陷波是一个Q=0.7的单槽口陷波器,在220hz和300hz之间的相对频带中移动。如果需要的话,可以按照配置4.0的动态陷波器来配置3.4的动态陷波器,但它并不能像4.0中正确配置的动态陷波器那样工作。
403 |
404 | 要调整动态陷波器,最好通过记录一些大动作的黑盒数据来进行分析调整。
405 |
406 | ### 只衰减D的TPA
407 |
408 | 按油门衰减PID(Throttle PID Attenuation,即TPA)已经存在了很长时间了。它在阈值以上区域随油门按线性衰减PID,在全油门时将达到预设的衰减百分比。最初,TPA的作用是,减少精调的穿越机在全油门时的震荡幅度。从2.9开始TPA不再衰减I,仅衰减P和D。在3.5中,D被解耦成D和FF,然后我们便开始思考TPA应如何作用于这些独立的因素。我们注意到由D项导致的噪声在高油门时更糟糕,并且令我们惊讶的是,我们可以在不导致Pterm震荡的前提下在全油门时将D衰减70-80%。通过不随油门衰减P或FF,仅衰减D便可以在高油门时保持系统对摇杆命令的瞬态响应性,并且显著降低全油门时的信号噪音和电机温度。
409 |
410 | 因此,默认情况下,在4.0中TPA已被配置为仅衰减D。以下是ctzsnooze推荐的设置:
411 |
412 | ```
413 | set tpa_rate = 75
414 | set tpa_breakpoint = 1400
415 | set tpa_mode = D
416 | ```
417 |
418 | 要将TPA返回到原来的衰减PD,比如3.5或更早版本,请在CLI内粘贴以下命令:
419 |
420 | ```
421 | set tpa_rate = 10
422 | set tpa_breakpoint = 1650
423 | set tpa_mode = PD
424 | ```
425 |
426 | 通常情况下,花飞飞机可能使用较低的“TPA-only-D”;对于竞速机来说,可以将起始点设置为1400并将衰减幅度设置为75%。
427 |
428 | ### 改进了的I值释放的设定点模式
429 |
430 | I值释放在快速翻滚期间削弱I的增益量,以最小化快速翻滚之后的回弹或过冲。如果为了能提高在大风天气下的稳定性而在Pitch和Roll上提高I值,那么就需要使用一点I值释放了。
431 |
432 | I值释放的设定值模式(竞速专用)已经改进为在急转和绕桩避障时能更好的保持转动角速度。代码已经略有更改,只有真正的快速打杆才会衰减I。这意味着I可以在更急的转弯期间更快和更强烈地积累。
433 |
434 | `iterm_relax_cutoff`频率决定释放开始时的启动速率以及释放速率。对于竞速我推荐`set iterm_relax_cutoff = 35`。这样I可以更快的积累,并在急转弯时更快地释放。不利的一面是,I值可能会导致快速翻滚之后产生一些过冲,但对于竞速来说这并不是什么大问题。
435 |
436 | 适用于花飞和目视飞行的I值释放陀螺仪模式并没有改变。在此模式下,`iterm_relax_cutoff`应该保持为20hz。I值释放陀螺仪模式在大多数的遥感命令输入过程中强烈的衰减了iterm的积累,从而实现非常干净的翻滚。它不适合比赛或在刀旗或者门旗附近进行非常急的螺旋转弯,因为对于I值来说有一个值来控制它是否衰减,如果这个值与转弯过程中的摇杆输入相匹配,飞机就会以超过输入指令所预期的角速度进行转弯。这种问题通常来说仅仅存在于紧凑的高速竞速机上。
437 |
438 | ### 瞬态油门限制
439 |
440 | 当AIRMODE激活时,如果有任何电机的转速需要超过0或100%,AIRMODE都将自动在Mixer中调节油门以保持正常的电机差速。例如飞控需要电机以40%的速度差进行转动,但其中一个电机的转速将降到-10%,AIRMODE会将Mixer中的油门调整为50%。这就是AIRMODE在非常低或非常高的油门下使飞机响应保持正常的方式。
441 |
442 | AIRMODE的效果非常好,但是如果任何一个电机轨迹上都叠加了噪声尖峰,大到足以使电机超过100%的话,那么AIRMODE会将峰值切断为100%并将“切断”的尖峰“反射”到其他三个电机中,形状相反。这导致所有的电机信号都将出现尖锐的尖峰,并导致“过冲”的电机产生严重的数字信号缺损。
443 |
444 | 这是存在于高油门和低油门附近的问题,并导致全油门段内电机发热,以及不良的噪声和解锁初期的不稳定。
445 |
446 | 通过测量电机信号中的噪声量,可以动态地提供额外的油门升高(或降低)量,仅根据需要,以避免噪声反射的问题。
447 |
448 | 有一个有关于此的CLI参数:`transient_throttle_limit`用于设置允许的最大油门增加量或减少量的百分比。15%是十分通用的一个百分比,虽然在大多数穿越机中很少需要这么大的量,但在正常条件下将它设置的如此之高没有任何不利因素。然而,将百分比设置得更高,可以帮助你使用炸弯了的桨飞回家而不用担心电机烧毁。
449 |
450 | ### 改进的偏航PID
451 |
452 | **以下指南只适用于传统偏航控制策略!如果你正在使用整合式偏航控制,则调整过程完全不同!**
453 |
454 | 偏航主要由电机的加速度驱动,特别是在较低转速下。当电机加速时,电机对飞机本身施加反向作用力(反扭矩)。这提供了即时而无延迟的偏航加速度。转速变化率越大,这种由加速度驱动的偏航力就越大。对于更重的电机和桨来说,偏航力也更大。因为电机加速度可以几乎瞬时改变,偏航力可以以非常快的速率进行改变。
455 |
456 | 在较高的转速下,单个电机的rpm受偏航上的空气阻力因素影响,这可以使飞机以稳定的角速度进行偏航转动。
457 |
458 | 在俯仰和横滚中,推力基本上与RPM呈线性相关。并且,由于改变转速需要一段时间,因此在这两个轴向上总有一点延迟。我们的标准PID控制器所假设的是转速和推力之间呈线性关系,但在偏航上这完全不一样。
459 |
460 | 因此,调整偏航的经典PID与调整俯仰和横滚的PID完全不同。这就是JoeLucid开发实验性的整合式偏航控制的主要原因,该方法允许我们以传统方式调整偏航的PID。
461 |
462 | 若对偏航使用经典PID,请在调整时记住以下事项:
463 |
464 | * D必须始终为0。任何不是0的值都将带来无益的震荡。
465 | * I值释放不要应用到偏航。set iterm_relax = RP P使得电机信号能够快速变化,但其很少会超调。
466 | * P能够可快速响应摇杆指令,也可以快速响应过冲、横风、碰撞等事件。偏航的P的主要问题是它容易在偏航轴上产生噪声,并且很容易在偏航上产生Pterm震荡。以上两个问题决定了P的可以取得的最大值。通常来说,不建议在标准穿越机上将偏航的P调至高于35。
467 | * FF的作用与P非常相似,因为它是一个摇杆输入命令的增益项。但仅仅如此。它并不会给电机信号增加噪声,并且不会使四轴稳定在未输入的命令上。添加FF可以降低飞机在偏航旋转期间对P和I的依赖程度。太多的FF会在快速输入大杆量命令(迅速把摇杆打到满舵)时迅速导致过冲,并且会在摇杆迅速归中时导致输出量不足。这是3.5黑盒日志中偏航的典型性能表现。 改变YawI仅仅会改变其积累速度。
468 | * I项的系数并不会改变I在PID输出函数函数中的大小 ,仅仅会改变Iterm积累到那个大小的速度。I项大小仅取决于有多少稳态误差需要修正。我们发现,要使偏航效果表现优异,则需要一个非常高的I。因此,Betaflight 4.0现在在内部自动将偏航的I乘以2.5倍。如果你将YawI设置为100,那么实际得到的YawI则是250。这大大提高了偏航性能,减少了过冲,因为在此情况下只需要更少的FF。
469 |
470 | 4.0偏航的默认值(P35 I100 D0 FF0)适用于大多数飞机,可以平滑准确无噪音的对输入命令做出响应。
471 |
472 | 对于更高速率的偏航动作,可能需要一些调整。
473 |
474 | 如果P和I的量不足以在转动时使飞机的偏航角速度达到预期值,稳态误差将会使I信号被积累到更大值,这将导致一些过冲。在此情况下,如果四个电机没有任何一个达到转速最大值,则需要调高YawI和YawFF,以帮助飞控更紧密的跟踪偏航命令输入,减少转动期间的午茶凉,从而减少I带来的过冲。如果在旋转期间某个电机转速已经达到最大值,最好的解决方案是稍稍降低偏航的rate,或者是在做出这个命令时稍稍降低打杆的速度。另一种解决方案是将I值释放也应用到偏航上,这将导致I仅能积累到一个比较低的水平上,增大FF用以推动偏航旋转。然而,通常来说这并不会为较慢的偏航旋转动作提供良好的控制性能。
475 |
476 | 除非你对偏航性能有特殊要求,例如你的摄像头上仰角高于60°,否则不建议擅自调整偏航的PIDF。
477 |
478 | ### 额外部分:关于OpenTX ADC滤波器的相关注意事项
479 |
480 | OpenTx有一种专门用于过滤摇杆输入信号的算法,它只传输超过一定大小的变化,这就是ADC滤波器。当摇杆缓慢移动时,它不会向RX发送新的杆位数据,直到摇杆移动量足够大时才会发送新值。这有助于减少摇杆抖动带来的影响。
481 |
482 | 不幸的是,当没有新数据发送时,FF项将会跳变到0。结果就是,在轻微移动摇杆时有可能造成非常陡峭的FF轨迹,并且控制精度将降低。禁用ADC滤波器将强制遥控器传输它检测到的任何数据,这将使每个数据包都有新数据,而无论杆位变化有多小。这意味着遥控器将会传输一些抖动信号,但会显著改善控制精度,并且FF的轨迹将会干净很多。霍尔摇杆的抖动非常小,可以毫无问题地关闭ADC滤波器。
483 |
484 | 如果你有一个使用霍尔摇杆的FrSky遥控器:
485 |
486 | * 在遥控器的配置菜单中内的硬件页面中,取消ADC fliter复选框。注意,特殊版本的遥控器通常在出厂固件中就已经关闭了ADC滤波器。
487 | * 在Betaflight配置器的接收机选项卡中,将RC死区和Yaw死区设置为0。当您的摇杆穿过该区域时,这将使飞机的控制输出保持平滑。
488 |
489 | ### 额外部分:对于滤波菜鸟
490 |
491 | BF4.0中的滤波器已经变得非常复杂,因此,对于一些经验不足的用户而言,很难真正区分所有可用选项。以下是有关可用滤波器以及如何/在何处配置它们的一些摘要,包括新的动态RPM陷波滤波器:
492 |
493 | * Betaflight配置程序(BFC)图形页面中的动态陷波滤波功能可打开或关闭,可通过CLI命令`dyn_notch...`来设置。尚无可用的配置程序图形界面选项以供编辑参数。
494 | * 动态低通滤波器不需要进一步的功能切换,可通过在配置器滤波页面中的相关配置选项中输入参数来设置,或通过CLI命令 `dyn_lpf ...`来设置。
495 | * RPM滤波器(具有36个滤波器组)完全独立于动态陷波和动态低通滤波器,并通过CLI命令`rpm_notch ...`来设置。尚无可用的配置程序图形界面选项以供编辑参数。
496 | * 静态陀螺仪低通滤波器和Dterm低通滤波器以及静态陀螺和dterm陷波滤波器:可以通过配置程序相关页面中的选项设置参数,或使用CLI命令`dterm_lowpass / notch ...,gyro_lowpass / notch ...`等来设置。
497 |
498 | 注意:陀螺仪或Dterm的低通滤波器1可以是动态的,或静态的;低通滤波器2始终是静态的(这在配置程序图形界面中有所反应)。
499 |
500 | ## 感谢所有提出惊人想法的天才、测试员和程序员,是你们一起创造出了这个伟大的版本!
501 |
--------------------------------------------------------------------------------
/motors-and-esc/bidirectional-dshot-and-rpm-filter.md:
--------------------------------------------------------------------------------
1 | # 双向Dshot和RPM滤波器
2 |
3 | ### 近期公告
4 |
5 | * 适用于F3飞控的BF 4.1定制版固件,[在这里获取!](https://github.com/joelucid/betaflight/releases)
6 | * 适用于BLHeli_S电调的带有双向Dshot的免费固件,[在这里获取!](https://github.com/JazzMaverick/BLHeli/tree/JazzMaverick-patch-1)
7 | * **本站强烈不推荐使用JESC**,但您仍可以在[这里](https://jflight.net)了解JESC。
8 | * 现在,BLHeli\_32的32.7.0已完全支持双向Dshot。您可以直接从BLHeliSuite32中直接刷写,而无需手动下载固件文件。
9 |
10 | ### 介绍
11 |
12 | 使用基于RPM回传的滤波器(组)可以更有效地控制电机噪声。电机会更凉,对于折弯的桨的容忍度会更高,全油门下的声音听起来会更干净,且加速更快。
13 |
14 | 如果开启动态陷波滤波器,则可以将其槽口调窄,从而减少延迟。它也可以被从追踪电机噪声这一任务中解放出来,来处理机架共振。
15 |
16 | 在干净的飞机上,通常可以通过提高滤波器截止频率或直接禁用某些陀螺仪滤波器来改善低通滤波器带来的延迟。请在阅读调整指南之后,再仔细进行此项操作。
17 |
18 | 它使用了两种基本技术:
19 |
20 | [双向Dshot](https://github.com/betaflight/betaflight/pull/7264)是Betaflight 4.x的一项新功能。它使飞控能够在每个电机的电调信号线上接受到准确的RPM回传。这项新功能并不需要额外的电调遥测信号线,也不需要额外的反向遥测通道。每个从飞控发出的Dshot命令帧包含一条命令,这条命令会向电调请求实时的eRPM传感器读数。飞控需要预先知道电机的磁极数,这样就可以将eRPM转换为RPM。
21 |
22 | [RPM滤波器](https://github.com/betaflight/betaflight/pull/7271),运行在陀螺仪信号和Dterm信号上,共计36个。利用RPM回传数据来实现对电机噪声以手术级精度过滤。默认情况下,飞控在Pitch、Roll和Yaw上各运行12个陷波滤波器(Notch),用于过滤陀螺仪内的每个电机噪声的前三级谐波。
23 |
24 | 为了使RPM滤波器正常工作,电调必须支持双向Dshot协议,并且必须在CLI中启用双向Dshot功能。
25 |
26 | 刷有Betaflight 4.1的所有飞控与刷有最新版本固件的BLHeli\_32和BLHeli_S电调均支持这两个功能。Betaflight 4.0已不再支持此功能。
27 |
28 | ### **解锁前的预检测**
29 |
30 | 如果已启用RPM滤波器,但一个或多个电调未提供有效的转速数据的话,则将在OSD上显示`RPMFILTER`标志,并阻止解锁(更多信息请参阅解锁序列与安全)。这是为了防止由于配置不完整或滤波器无法正常工作,而导致飞行不可控或者导致电机过热。请参阅下文,以确保对电调进行了正确配置,来支持此功能的开启。
31 |
32 | ### 电调配置
33 |
34 | #### 双向Dshot固件
35 |
36 | Betaflight 4.1中的双向Dshot协议与Betaflight 4.0中的不同(4.1中的可靠性更高)。电调固件版本需与您当前的飞控固件版本相匹配。
37 |
38 | **对于BLHeli\_32电调**,双向Dshot是32.7.0中完全支持的功能。只需使用BLHeliSuite32刷写新版本固件即可。
39 |
40 | **对于BLHeli_S电调**,请点击[这里](https://github.com/JazzMaverick/BLHeli/tree/JazzMaverick-patch-1/BLHeli_S%20SiLabs)下载JazzMaverick的固件。使用开源的[blheli配置程序](https://github.com/blheli-configurator/blheli-configurator/releases)进行刷写。
41 |
42 | ### Betaflight配置
43 |
44 | #### 电机磁极数
45 |
46 | 运行8k/8k时,请选择Dshot600。电调向飞控发送eRPM,需要利用电机的磁极数量以将其换算成RPM。这些信息可以在电机转子上找得到,而不是绕组所在的定子磁铁数量。标准的5寸(穿越机)电机有14个磁极,因此14是默认设置。较小的电机通常有12个磁极。如果电机磁极数不是14,请自行计数或者查看电机的规格,并且在Betaflight配置程序的配置页面内更改磁铁数量。
47 |
48 | #### Dshot150,Dshot300还是Dshot600?
49 |
50 | 若PID速率为4k,例如8k/4k或4k/4k,请使用Dshot300以获得最高可靠性;当然Dshot600也可以。
51 |
52 | 若PID速率为8k,则必须使用Dshot600;若使用Dshot300,则将每两个PID周期更新一次电机转速。
53 |
54 | 在L型电调上(BLHeli_S的L型号电调,其主控为EFM8BB1),强烈建议使用Dshot150,并使用2k/2k的控制速率。
55 |
56 | #### 配置片段
57 |
58 | 当您使用Betaflight 4.1,则不再需要使用特殊配置代码。相反,只需要在Betaflight配置程序内“配置”页面中启用双向Dshot。
59 |
60 | #### 验证配置
61 |
62 | 现在你的飞控已经开启了双向Dshot。您现在需要验证它是否真正在工作。为此,您需要重启飞控和电调。首先,将电调供电(插上电池),然后插入USB线缆。现在,在Betaflight配置程序中打开“电机”页面,您不应该看到`E: xxxx`显示为红色。旋转电机是,应该看到R: xxxx显示电机的实时转速。回传的错误百分比不应该超过1%。除非电机正在旋转,否则所有电机的RPM都应是0。
63 |
64 | **重要说明**:如果仅通过USB线缆连接飞控,而未插入电池,则将在“电机”页面内看到E: 100%的故障提示。插入电池并等待电调初始化完成,此读数将下降至0%。拔出电池后,将继续显示0%。
65 |
66 | ### 调参
67 |
68 | RPM滤波器可以在不增加太多延迟的情况下清除几乎所有的电机噪声,从而完成繁重的滤波工作。
69 |
70 | 但是,RPM滤波器无法消除因轴承、风和湍流带来的一般“垃圾”噪声。仍然需要使用低通滤波器来抑制这些噪声。
71 |
72 | RPM滤波器也无法消除频率特性固定的机架共振噪声。最好开启动态陷波滤波器来抑制这些噪声。
73 |
74 | 由于现在不再需要使用动态陷波滤波器来控制电机噪声,因此需要重新配置动态陷波滤波器。在配置程序的“滤波”页面内,将动态陷波滤波范围设置为“中”,将“动态陷波滤波器宽度百分比”设置为0,将“动态陷波滤波器Q”设置为250。\
75 | 
76 |
77 | 若您的飞机在现有情况下飞行良好,请不要在开启RPM滤波后的首次试飞时更改任何滤波器设置。对于已经有一定问题的机器和新机器来说,我们建议从4.1默认的低通滤波器开始调整。下面代码段将使用4.1默认滤波设置,在0油门时延迟约为3.5ms,在全油门时延迟约为1.1ms。
78 |
79 | ```
80 | # 4.1默认低通滤波器设置
81 |
82 | set gyro_lowpass_type = PT1
83 | set gyro_lowpass_hz = 200
84 | set dyn_lpf_gyro_min_hz = 200
85 | set dyn_lpf_gyro_max_hz = 500
86 | set gyro_lowpass2_type = PT1
87 | set gyro_lowpass2_hz = 250
88 |
89 | set dterm_lowpass_type = PT1
90 | set dterm_lowpass_hz = 100
91 | set dyn_lpf_dterm_min_hz = 70
92 | set dyn_lpf_dterm_max_hz = 170
93 | set dterm_lowpass2_type = PT1
94 | set dterm_lowpass2_hz = 150
95 | ```
96 |
97 | 如果您的电机运转良好,且声音听起来不错,则飞行状况良好,那么可以通过减小或关闭其他一些滤波器来降低滤波延迟。您可以:
98 |
99 | * 将现有的Biquad滤波器(如果有的话)改为PT1
100 | * 将低通滤波器的截止频率提高
101 | * 禁用整个滤波器组(将其截止频率设为0)
102 |
103 | 每一个上述操作都将使更多的噪声透过滤波器进入PID,然后再传入电动机。
104 |
105 | 只能一次更改一个滤波器设置。每次更改之后,请务必进行一次悬停测试和一次短暂的试飞。仔细听电机声音,然后迅速降落以确认电机没有过热。然后重复进行更稳定的飞行,并再次降落检查电机温度。
106 |
107 | 在更改设置之前和之后均记录黑盒日志,然后使用PIDtoolbox来查看频谱图是非常有效的。黑盒日志可以帮助您来确定关闭不需要的滤波器,并可以在更改设置之后来检查是否突然获得了额外的噪声。
108 |
109 | 最好在进行任何更改之前使用`diff all`来保存当前设置,以便恢复。
110 |
111 | ### 试飞成功后提高低通滤波器
112 |
113 | 同时以相同比例提高所有滤波器截止频率,是最安全、最可靠的方法。
114 |
115 | 下面的代码片段将所有低通滤波器上移约50%,从而将总延迟降低到0油门时延迟约为2.3ms,全油门时延迟约为0.9ms:
116 |
117 | ```
118 | # 4.1低通滤波器设置提升1.5倍
119 |
120 | set gyro_lowpass_type = PT1
121 | set gyro_lowpass_hz = 300
122 | set dyn_lpf_gyro_min_hz = 300
123 | set dyn_lpf_gyro_max_hz = 900
124 | set gyro_lowpass2_type = PT1
125 | set gyro_lowpass2_hz = 350
126 |
127 | set dterm_lowpass_type = PT1
128 | set dterm_lowpass_hz = 150
129 | set dyn_lpf_dterm_min_hz = 100
130 | set dyn_lpf_dterm_max_hz = 250
131 | set dterm_lowpass2_type = PT1
132 | set dterm_lowpass2_hz = 200
133 | ```
134 |
135 | 如果您原先使用的是4.1默认滤波器设置,那么这是适度但较为大幅的改动。您将注意到洗桨情况得到了明显改善。如果在第一次解锁时,飞机发出刺耳的声音并在解锁时或悬停过程中跳起来,通常是您的滤波器截止频率过高,或者是因为您的D过高。在这种情况下不建议继续飞行。
136 |
137 | 下一步将是使用默认值的2倍的设定值。只有最干净的飞机才能适应这种滤波设置。但是,滤波器延迟将变为正常值的一般,这可以大幅抑制洗桨震颤。0油门时延迟约为1.7ms,全油门时约为0.65ms:
138 |
139 | ```
140 | # 4.1低通滤波器设置提升2倍
141 |
142 | set gyro_lowpass_hz = 400
143 | set dyn_lpf_gyro_max_hz = 1000
144 | set dyn_lpf_gyro_min_hz = 400
145 | set gyro_lowpass2_type = PT1
146 | set gyro_lowpass2_hz = 500
147 |
148 | set dterm_lowpass_type = PT1
149 | set dterm_lowpass_hz = 200
150 | set dyn_lpf_dterm_max_hz = 340
151 | set dyn_lpf_dterm_min_hz = 140
152 | set dterm_lowpass2_type = PT1
153 | set dterm_lowpass2_hz = 300
154 | ```
155 |
156 | ### 完全禁用低通滤波器
157 |
158 | 要完全禁用低通滤波器,而又不烧毁电机,那么您的飞机的机械结构必须处于较为健康合理的状态:机臂未发生分层,螺丝未松动,陀螺仪芯片工作正常,电机轴承运转正常无噪声。
159 |
160 | 禁用滤波器将会产生相当大的影响,只能由熟悉滤波器的人员来完成。如上所述,将全部滤波器视作一个组,对其进行同步调整是较为安全的。
161 |
162 | 下列代码将完全禁用陀螺仪低通滤波1:
163 |
164 | ```
165 | set gyro_lowpass_hz = 0
166 | set dyn_lpf_gyro_max_hz = 0
167 | ```
168 |
169 | 下列代码将完全禁用陀螺仪低通滤波2:
170 |
171 | ```
172 | set gyro_lowpass2_hz = 0
173 | ```
174 |
175 | 不建议完全禁用Dterm滤波器,因为这样做会很容易烧毁您的电机。将Dterm滤波器视作一个组来同步调整是较为安全的做法。
176 |
177 | ### 配置动态陷波滤波器
178 |
179 | 使用RPM滤波器配置片段将会将动态陷波滤波器重新配置为单个、槽口较窄的陷波滤波器,从而降低滤波延迟。
180 |
181 | 默认情况下,动态陷波范围设置为`AUTO`模式,并使用`陀螺仪动态低通滤波器最高截止频率`的值来选择动态陷波滤波器的运行范围。
182 |
183 | 由于机架共振的频率通常在动态陷波滤波器的`LOW`或`MEDIUM`范围内,所以最好在使用RPM滤波器时,手动配置动态陷波滤波器。如果您知道低于150hz的频段内没有机架共振噪声峰,则建议将范围设置为`MEDIUM`来降低延迟。
184 |
185 | 假设您知道低于某个频率的频段内没有共振噪声,而要使动态陷波滤波器中央频率始终大于某个最低频率,请相应地设置动态陷波滤波器最低频率。
186 |
187 | 例如,下列代码将使动态陷波滤波器运行范围调整为90-330Hz,并将槽口缩窄,陷波器槽口数量减小为1:
188 |
189 | ```
190 | set dyn_notch_range = LOW
191 | set dyn_notch_width_percent = 0
192 | set dyn_notch_q = 200
193 | set dyn_notch_min_hz = 90
194 | ```
195 |
196 | 下列代码将使动态陷波滤波器运行范围调整为180-550Hz(单个窄槽口):
197 |
198 | ```
199 | set dyn_notch_range = MEDIUM
200 | set dyn_notch_width_percent = 0
201 | set dyn_notch_q = 200
202 | set dyn_notch_min_hz = 180
203 | ```
204 |
205 | 如果共振噪声在频谱上分布得较窄,则可以将动态陷波Q调整为250。共振带较宽或有多条共振带则可能需要将Q设为120-150。
206 |
207 | 最好将关闭动态滤波器前后的频谱图进行比较,以准确确定其性能。
208 |
209 | 可以在无共振的刚性结构机架上完全关闭动态陷波滤波器,但是应谨慎行事,最好在对开启前后进行对比观察,并最终确定其无意义的情况下进行飞行。
210 |
211 | ### 进阶主题
212 |
213 | #### 基于计时器的双向Dshot
214 |
215 | 如果您的飞控支持,则可以使用我们的基于计时器的双向Dshot,来稍微降低开启双向Dshot后的CPU负载。在4.1之前,唯一可用的实现方法是基于DMA的双向Dshot。它的缺点是,它要求将某些飞控上的计时器和DMA通道进行重新映射后方可使用,并且不适用于所有飞控。
216 |
217 | 从4.1开始,您需要使用`set dshot_bitbang=off`来禁用默认的Bitbang方式的双向Dshot。如果要切换回bitbang方式的双向Dshot,请将其设置为`AUTO`。
218 |
219 | #### 支持非bitbang的双向Dshot的飞控及配置代码片段
220 |
221 |
222 |
223 | | 飞控目标 | 配置代码 | 注意 | 支持的电机 | |
224 | | --------------- | ---------------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------ | ----------------------- |
225 | | AG3XF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1 - M4 (tested Mister_M) | |
226 | | AIKONF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/AIKONF4-upgrade.cf) | | M1 - M4 (tested fujin) | |
227 | | AIRBOTF7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 (tested by Asizon) | |
228 | | ALIENFLIGHTNGF7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/ALIENFLIGHTNGF7-upgrade.cf) | 无法使用M3,请使用M5-9来替代。LED与M1无法同时工作 | M1-M2, M4-M9 | |
229 | | ALIENWHOOP | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 | |
230 | | ANYFCF7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1 M2 M3 M4 M5 M6 M9 | |
231 | | ANYFCM7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/ANYFCM7-upgrade.cf) | | M1 M2 M3 M4 M5 M7 M9 M10 | |
232 | | BETAFLIGHTF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1 - M4 ok (tested Balint) | |
233 | | CLRACINGF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/CLRACINGF4-upgrade.cf) | | M1-M4 ok | |
234 | | CLRACINGF7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/CLRACINGF7-upgrade.cf) | 4号电机不工作,请使用LED焊盘来代替。 | M1 M2 M3 M5 | |
235 | | CRAZYBEEF4DX | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 ok (tested Noctaro) | |
236 | | CRAZYBEEF4FR | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 ok (tested joelucid) | |
237 | | DALRCF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DALRCF4-upgrade.cf) | | M1-M6 (tested QuadMcFly) | |
238 | | DALRCF722DUAL | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DALRCF722DUAL-upgrade.cf) | | M1-M6. But either M5 or M6 | |
239 | | DYSF4PRO | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 (tested BRadFPV) | |
240 | | ELINF405 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 (tested elin-neo) | |
241 | | ELINF722 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 (tested elin-neo) | |
242 | | EXF722DUAL | [Snippet](https://github.com/betaflight/bidircfg/blob/master/EXF722DUAL-upgrade.cf) | | M1-M8 | |
243 | | FLYWOOF7DUAL | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M6 | |
244 | | FORTINIF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4(tested QuadMcFly) | |
245 | | FOXEERF722DUAL | [Snippet](https://github.com/betaflight/bidircfg/blob/master/FOXEERF722DUAL-upgrade.cf) | | M1-M6 | |
246 | | FURYF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/FURYF4SD-upgrade.cf) | | M1-M4, No LED support, Tested RawFPV | |
247 | | FURYF7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 | |
248 | | HAKRCF722 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/HAKRCF722-upgrade.cf) | | M1-M6 | |
249 | | KAKUTEF4V2 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | | M1-M4 tested |
250 | | KISSFCV2F7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/KISSFCV2F7-upgrade.cf) | | M1-M6 | |
251 | | LUXF4OSD | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | | M1-M4 tested (Mister_M) |
252 | | MAMBAF411 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | DMA & timer reviewed by joelucid | |
253 | | MAMBAF722 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/MAMBAF722-upgrade.cf) | | M1-M4 tested (kc10kevin) | |
254 | | MATEKF405 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 tested (Wudz\_17) | |
255 | | MATEKF411 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | DMA & timer reviewed by joelucid | |
256 | | MATEKF411RX | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | DMA & timer reviewed by joelucid | |
257 | | MATEKF722 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M8 | |
258 | | MATEKF722SE | [Snippet](https://github.com/betaflight/bidircfg/blob/master/MATEKF722SE-upgrade.cf) | M5不工作 | M1-M4, M6-M8 | |
259 | | MLTEMPF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 (tested RC2 monko760) | |
260 | | NERO | [Snippet](https://github.com/betaflight/bidircfg/blob/master/NERO-upgrade.cf) | | M1-M8 | |
261 | | NOX | [Snippet](https://github.com/betaflight/bidircfg/blob/master/NOX-upgrade.cf) | | M1-M4 | |
262 | | NUCLEOF7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | M4不工作但可使用M6代替 | M1-M3,M6 | |
263 | | NUCLEOF722 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | M4不工作但可使用M6代替 | M1-M3,M6 | |
264 | | OMNIBUSF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 (tested omerco) | |
265 | | OMNIBUSF4SD | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 (tested joe lucid) | |
266 | | OMNIBUSF4FW | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 tested (skonk) | |
267 | | OMNIBUSF7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/OMNIBUSF7-upgrade.cf) | | M1-M4 (tested in RC2 IgguT) | |
268 | | OMNINXTF7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M4 | |
269 | | PYRODRONEF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/PYRODRONEF4-upgrade.cf) | | M1-M4 (tested fujin) | |
270 | | REVOLTOSD | [Snippet](https://github.com/betaflight/bidircfg/blob/master/REVOLT-upgrade.cf) | | M1-M4 (tested JayBird) | |
271 | | SPEEDYBEEF4 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/SPEEDYBEEF4-upgrade.cf) | | Flavoredcrayon | |
272 | | SPRACINGF7DUAL | [Snippet](https://github.com/betaflight/bidircfg/blob/master/SPRACINGF7DUAL-upgrade.cf) | | M1-M10 | |
273 | | TMOTORF4 | | M4-5不工作但可使用M6代替 | M1-M3, M6 | |
274 | | YUPIF7 | [Snippet](https://github.com/betaflight/bidircfg/blob/master/DEFAULT-upgrade.cf) | | M1-M6 | |
275 |
276 | 下列是配置代码片段的设置说明
277 |
278 | #### 循环更新周期和Dshot协议
279 |
280 | 双向Dshot可与Dshot150、Dshot300和Dshot600一起使用。出于实际目的,Dshot600在所有PID速率下均可正常工作。
281 |
282 | 请记住,对于每一个发送的命令帧,现在将有一个帧返回,并且输出帧和返回帧之间有25us的时间来切换通信方向、DMA和计时器。循环更新周期必须选择得足够低,以使得刚好可以在一个命令周期内完成Dshot协议速率下的两个帧+50us。
283 |
284 | 双向Dshot和RPM滤波器都消耗大量CPU资源,并且这使得环路速率精准到位变得尤为重要,因为只有这样滤波器才能调整到正确的频率上。建议您在首次试飞时使用Dshot600以4k/4k飞行。Dshot600的速率适用于所有循环更新频率。
285 |
286 | 在F4上,每根电调信号线更换方向需要花费3-4us。所有信号线全部切换两次方向需要花费大约24-23us。RPM滤波器内含36个陷波滤波器,它们以1000hz的频率更新截止频率。
287 |
288 | 8k/4k在大部分F405上都可以正常工作;可以使用8k/8k但需要超频。F411需要超频才能以8k/4k工作。F7可以使用8k/8k不需要超频。
289 |
290 | 您可能需要关闭电调自定义启动音乐,因为这可能会干扰双向Dshot。默认启动音工作正常。
291 |
292 | #### DMA
293 |
294 | 旧版双向Dshot需要使用正常的DMA,而不是DMA brust。关闭DMA brust可能并不适用于特定飞控。你可以通过输入以下命令进行简单的尝试:
295 |
296 | > set dshot_burst=off
297 |
298 | 并检测你的飞机是否还能够进行飞行。如果可以,请继续下一步操作:
299 |
300 | #### **启用新的程序调度策略**
301 |
302 | 由于RPM滤波使用非常窄的陷波滤波器,因此经滤波后的陀螺仪环路时间不会发生变化,完全符合数学期望结果。在曾经,这需要降低环路速率并进行超频。现在已经添加了推程序调度策略的一些更改,即使在更高的环路速率下,也可以实现陀螺仪速率在滤波前后保持一致。双向Dshot需要启用以下命令:
303 |
304 | `set scheduler_optimize_rate=on`
305 |
306 | #### **启用双向Dshot**
307 |
308 | `set dshot_bidir=on`
309 |
310 | 看看你的电机能否正常旋转。如果可以,请尝试拔下USB线缆,连上电池并重新连接USB。转到CLI,键入status。您应该会看到Dshot的遥测报告。每台电机的RPM读数应该是0,通常这里不会发生错误。
311 |
312 | #### **电机磁极数**
313 |
314 | ESC报告eRPM,需要使用电机的磁极数以将其转换为RPM。磁极数可以在电机的定子外壳上找得到,不要数绕组所在的定子磁铁数量。典型的5寸电机有14个电机,因此14是默认值。较小的电机通常具有较少的磁极数,通常为12个。计数或查看电机规格以知悉确切磁极数量,并使用如下命令以进行配置:
315 |
316 | `set motor_poles=14`
317 |
318 | #### **验证环路时间一致**
319 |
320 | **重要:**
321 |
322 | 启用上述所有功能后,请仔细检查您的环路速率是否一致。如果不一致,请选择较低的环路速率。请记住,与滤波不同,环路速率对飞行性能的影响非常小。
323 |
324 | 为此,请在CLI中输入tasks并检查陀螺仪环路速率与您指定的环路速率是否相符(注意,电池应连接飞控已获得准确的环路速率结果)。例如:
325 |
326 | ```
327 | # tasks
328 | Task list rate/hz max/us avg/us maxload avgload total/ms
329 | 00 - ( SYSTEM) 10 1 0 0.5% 0.0% 0
330 | 01 - ( SYSTEM) 1000 3 1 0.8% 0.6% 522
331 | 02 - ( GYRO/PID) 7999 43 34 34.8% 27.6% 2845
332 | 03 - ( ACC) 1000 12 10 1.7% 1.5% 107
333 | 04 - ( ATTITUDE) 100 17 10 0.6% 0.6% 11
334 | 05 - ( RX) 32 34 32 0.6% 0.6% 12
335 | 06 - ( SERIAL) 100 851 3 9.0% 0.5% 8
336 | 08 - (BATTERY_VOLTAGE) 50 4 2 0.5% 0.5% 1
337 | 09 - (BATTERY_CURRENT) 50 1 1 0.5% 0.5% 0
338 | 10 - ( BATTERY_ALERTS) 5 3 2 0.5% 0.5% 0
339 | 11 - ( BEEPER) 100 2 1 0.5% 0.5% 1
340 | 14 - ( BARO) 43 98 66 0.9% 0.7% 34
341 | 15 - ( ALTITUDE) 40 7 3 0.5% 0.5% 1
342 | 17 - ( TELEMETRY) 250 1 0 0.5% 0.0% 27
343 | 19 - ( OSD) 60 21 13 0.6% 0.5% 9
344 | 21 - ( CMS) 60 1 1 0.5% 0.5% 0
345 | 22 - ( VTXCTRL) 5 1 1 0.5% 0.5% 0
346 | 23 - ( CAMCTRL) 5 1 1 0.5% 0.5% 0
347 | 25 - ( ADCINTERNAL) 2 3 1 0.5% 0.5% 0
348 | 26 - ( PINIOBOX) 19 1 1 0.5% 0.5% 0
349 | RX Check Function 2 1 0
350 | Total (excluding SERIAL) 46.0% 37.1%
351 | ```
352 |
353 | 您需要检查GYRO/PID这一行:
354 |
355 | ```
356 | 02 - ( GYRO/PID) 7999 43 34 34.8% 27.6% 2845
357 | ```
358 |
359 | 在这种情况下,我们已将GYRO/PID环路速率配置成为8k/8k,此行显示它正运行着7999hz的环路速率。它必须非常接近8k(8000Hz)。建议将误差保持在1%以下。
360 |
361 | #### 调试模式
362 |
363 | 有两种黑盒调试模式可以用来验证RPM滤波器:`RPM_FILTER`记录电调报告的每个电机的频率。`DSHOT_RPM_TELEMETRY`记录未经转换的eRPM。
364 |
365 | #### TPA
366 |
367 | 此代码将应用4.1默认TPA配置(1250起始,仅衰减D至满油门下65%)。
368 |
369 | ```
370 | set tpa_rate = 65
371 | set tpa_breakpoint = 1250
372 | ```
373 |
374 | ### 参考来源
375 |
376 | [双向Dshot PR](https://github.com/betaflight/betaflight/pull/7264)
377 |
378 | [RPM滤波器PR](https://github.com/betaflight/betaflight/pull/7271)
379 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------