【晒机大赛-教程分享】有关BF的CLI命令行指令调参

[复制链接]
查看5054 | 回复1 | 2022-2-20 21:48:38 | 显示全部楼层 |阅读模式
本帖最后由 zlhqnqs 于 2022-2-15 21:25 编辑

此项调参为进阶的调参方式,通过betaflight的CLI命令可以调整开源固件对飞控的一切参数,包括之前一些没有在地面站显示的参数都可以调。由于有一些参数不常用,所以就没有被放入配置程序中,只能通过命令行来调整。
Betaflight Configurator 2020_12_26 20_01_37.png

首先是注意事项。首先一定要在之前把一些没有保存的设置先保存了,一旦进入这个界面之后之前未保存的数据就没有办法保存了,离开这个界面或者执行相应的命令之后,飞控就会立刻重启,并且只保存命令行的内容。还有一件事就是不建议插上电池进行CLI调参,如果实在需要连接电池,一定要把桨叶给卸下来,防止意外的发生

如需查看所有支持的命令的话在命令行里输入“get”然后再按回车即可

记住,当你输入完命令后想要执行,一定要在最后输入“save”然后按回车,这样命令才会被保存并且执行,飞控就会自动重启保存
接下来讲几个相对用到的次数比较多和比较实用或者一些秘传命令。

第一条要讲的,就是当你启用了GPS功能后,当搜到星的数量不够的时候,默认你是无法解锁电机的,比如在室内或信号差的时候

set gps_rescue_allow_arming_without_fix=?


可选择  ON    OFF

可以在GPS信号不好的地方,没有精准定位的地方解锁起飞,起飞后不能触发救援模式,只有落地后锁定,GPS定位成功之后才能触发默认关闭。(无GPS不能解锁)

接下来讲一个很有用的命令,但不是每个人都用的到。

这条命令的作用就是改变飞行姿态控制时的基准线。在未使用这条命令或者=号后面的数值为0的时候,飞机在动作时是以纵穿机身的中轴线线为基准位置来位移的。当=号后的数值不为0且是1到50之间的数字时,飞机将以这数值作为与机身中轴线夹角的轴线作为位移基准。换句话说,就是当这个数值为摄像头上仰度数时,飞机将以摄像头的纵轴线作为动作基准。这样就更符合FPV飞行者的真实感受,利于操控。

set roll_yaw_cam_mix_degrees = ?
的范围可以是0到50范围内,并且包含着两个数字的整数


接着来讲一下tasks命令,betaflight的软件在不断升级,这就不得不让飞控有更强的软件运行能力和处理能力。像以前的F3飞控,由于CPU的算力不足,使得飞控的稳定性下降,所以不得不去掉一些功能来减小CPU的负担。所以在这个趋势下,飞控使用的CPU也越来越高级,比如相对来说比较早的F4(如F405)系列的芯片,到后来的F7(如F722)系列芯片,再到最近的H7芯片,都是不断升级CPU的算力来保证飞控的稳定性。如果你不确定用了一些功能后飞控的算力是否能稳定使用,你就需要输入tasks这个命令。

它会告诉你CPU的负载,和一些信息的处理,让我们来看看
# tasks
Task list             rate/hz  max/us  avg/us maxload avgload     total/ms
00 - (         SYSTEM)     10       1       0    0.5%    0.0%         0
01 - (         SYSTEM)   1000       3       1    0.8%    0.6%       522
02 - (       GYRO/PID)   7999      43      34   34.8%   27.6%      2845
03 - (            ACC)   1000      12      10    1.7%    1.5%       107
04 - (       ATTITUDE)    100      17      10    0.6%    0.6%        11
05 - (             RX)     32      34      32    0.6%    0.6%        12
06 - (         SERIAL)    100     851       3    9.0%    0.5%         8
08 - (BATTERY_VOLTAGE)     50       4       2    0.5%    0.5%         1
09 - (BATTERY_CURRENT)     50       1       1    0.5%    0.5%         0
10 - ( BATTERY_ALERTS)      5       3       2    0.5%    0.5%         0
11 - (         BEEPER)    100       2       1    0.5%    0.5%         1
14 - (           BARO)     43      98      66    0.9%    0.7%        34
15 - (       ALTITUDE)     40       7       3    0.5%    0.5%         1
17 - (      TELEMETRY)    250       1       0    0.5%    0.0%        27
19 - (            OSD)     60      21      13    0.6%    0.5%         9
21 - (            CMS)     60       1       1    0.5%    0.5%         0
22 - (        VTXCTRL)      5       1       1    0.5%    0.5%         0
23 - (        CAMCTRL)      5       1       1    0.5%    0.5%         0
25 - (    ADCINTERNAL)      2       3       1    0.5%    0.5%         0
26 - (       PINIOBOX)     19       1       1    0.5%    0.5%         0
RX Check Function                   2       1                         0
Total (excluding SERIAL)                        46.0%   37.1%

如上边所示,这是一个F722飞控得到的反馈


接下来讲一类秘传命令,什么是秘传命令?就是那些属于你平时是用不到的,但是一旦需要它你就会抓狂不知道怎么弄。举个例子,比如飞控的某一个电机信号输出口坏了,像焊盘掉了,PCB短线等,这时该电机就无法读取信号,正常情况下正常人都会觉得这个飞控是废了,要么换新,要么返厂维修。但是,重点来了,你可以使用资源重映射来补救一下。(如果你是土豪或者觉得太麻烦了,那请随意,建议直接买 新的飞控,但是我相信有很多人和我一样都是**)

什么是资源重映射呢?我们先来看看官方给的解释:“资源重映射允许您配置 MCU 上的引脚以用于各种功能。这是最开始的大框架——可以有更多的功能”。注意:此命令仅在 Betaflight 3.1 及更新版本中可用。

用人话来说,就是飞控的某一个电机信号输出口坏了,你可以通过命令行来重新定义一个引脚来作为该电机信号的输出口,同时该引脚原本的功能将不复存在。注意:尽管资源重映射的功能很强大,但是不是所有的引脚都是能相互定义的,比如电池电压传感器(ADC_BATT),电池电流传感器(ADC_CURR),来自接收器的模拟 RSSI 输入(ADC_RSSI),只能映射到其他 ADC 引脚。想要知道更多的相关信息,可以自己去betaflight的官方WIKI里面,有专门讲资源重映射的文章。

接下来就以一个实际的例子来讲一讲到底该怎么操作。


现在我们假设有这么一个飞控,它支持8路的电机信号输出,6路的UART串口(UART1和UART2串口装有反向电路),电池的电压和电流还有RSSI信号的输入口各一个等等。我现在去使用用它的4个电机,一个接受机(包含数据回传功能),一个GPS,一个图传,两个舵机。正常情况下我会使用1—4号的电机信号输出口,3个UART口,以及两个PWM信号输出口。但现在的飞控出现了以下问题:2号电机信号输出口坏了,接收机连接的UART1串口坏了,飞控默认情况下没有输出PWM信号的口,所以两个舵机现在没有地方能接。接下来让我们来解决这些问题。

首先来解决电机的问题,飞控支持8路的电机信号输出,2号口出现了问题,所以我们需要把2号口映射到5—8号口的任意一个口(由于穿越机使用的混控类型为QuadX,所以默认启用1—4号电机信号口)。我们先在CLI里面输入“resource list”,然后回车,这时飞控会把所有的映射给显示出来。找到MOTOR,如接下来示例所示:

A06: MOTOR 1
A07: MOTOR 2
A08: MOTOR 3
A09: MOTOR 4
A10: MOTOR 5
A11: MOTOR 6
A12: MOTOR 7
A13: MOTOR 8
如右所示,A06到A13分别映射了MOTOR 1到MOTOR 8,我们现在把坏的2号电机信号输出口给映射到原本的5号口。(AXX是飞控给每一个引脚的名字,是不会改变的,但是可以改变映射),我们首先在CLI输入“resource motor 2 none”,回车之后继续输入“resource motor 5 none”然后回车,这两句话的意思是清除旧映射。然后输入“resource motor 2 A10”回车后输入SAVE保存,等飞控重启后继续输入“resource list”查看A10是不是映射为了MOTOR 2。现在飞控上的原5号电机信号输出口可以连接2号电机并且能正常使用了。
重映射的命令是resource [function name] [index] [pin](例如resource MOTOR 1 A1)
其中 MOTOR 是函数,1 是电机指数(1 基于例如四轴无人机上的 1-4),A1 是端口 A 引脚 1,或者在 STM 数据表文档中通常称为 PA1。

这套重映射的命令详细的流程图如下所示

c5d3521c-d9a9-11e6-8ed8-c53afdbda50f.jpg


接下来我们来解决第二个问题,接受机的UART串口坏了的问题。

该接收机原本的UART1串口坏了,那只能换一个UART口(注意:UART是串口通讯用到的口,它由接受口RX和发出口TX组成。该接收机带有数据回传的功能,所以不仅要连接飞控的RX也要连接TX口接收数据)有的接收机的回传信号类型需要反向电路,所以如果飞控有反向电路那就把接收机连在有反向电路的UART口。我们在硬件上只需把原本连接飞控的RX1和TX1连接到RX2和TX2就行,接下来,你只需到地面站改一下接收机的串口号就行了,解决这部份其实可以不用CLI的。

Betaflight Configurator 2020_12_26 19_56_27.png

我们原本应该是UART1上的串行数字接收机选项上是打勾的,现在只需把UART1的关闭,把UART2的打开然后保存即可

接下来讲讲第三个问题怎么解决,一般情况下穿越机的飞控默认没有输出PWM信号的
从betaflight固件的3.1开始,默认的舵机输出分配从固件中删除。相反,舵机的输出必须由CLI的资源重映射命令来经行分配设置


STM32处理器的飞控内部是定时器,用于定时输出脉冲到电机、伺服系统等。每个 FC 板可以有不同的 STM32 引脚连接到 FC 上的输入和输出。

大规则是定时器的通道不能分配给不同的功能。如果您将电机连接到输出 3 和 4,则 TIM4 被锁定到电机,不能用于其他用途。这意味着您不能将输出 5 和 6 用于舵机。(例外情况是电机由传统 PWM 协议控制;在这种情况下,电机和伺服系统可能能够在同一计时器的通道上混合)

按照我们刚刚说的那个飞控,我们可以使用电机信号的6,7,8引脚中的任意两个引脚作为舵机的PWM信号引脚,接下来讲讲该怎么操作。

首先还是先输入“resource list”查看引脚定义

A06: MOTOR 1
A07: MOTOR 2
A08: MOTOR 3
A09: MOTOR 4
A10: MOTOR 5
A11: MOTOR 6
A12: MOTOR 7
A13: MOTOR 8

这里我们就选A11,和A12,首先输入“resource motor 6 none”回车后继续输入“resource motor 7 none”然后再回车。
接着继续输入“resource servo 1 A11”回车后继续输入“resource servo 2 A12”,最后输入save保存。不要忘记再次输入“resource list”检查一下。

这样你就成功把6,7号电机信号改成舵机的PWM信号引脚了,接下来要做的就是去地面站去设置一些有关舵机的设置了,这里就不讲了。

到此为止,有关的三个问题已经解决了,相信你现在对资源重映射已近有了进一步的认识,并且知道了该项命令的强大之处了


继续来讲讲其他的命令,用到的可能性就相对比较小了




set ledstrip_visual_beeper = ?

   可以选择[ON,OFF]


当设置为 on,并且 LEDLO​​W 模式处于活动状态(即 LED 灯条关闭)时,LED 灯条与哔哔声同步闪烁,作为一个视觉指示器,以防飞行器距离太远听不见蜂鸣器或多架无人机正在飞行。


set anti_desync_power_step = ??

可以输入的范围[0-10000]的整数


默认设置为最大 ESC 油门变化。减少直到不再发生异步。

对于那些有异步问题的人,可以试试这个。不知道这是否可以帮助 ESC 在某些情况下从 pid 控制器快速电机跳跃。通过分析一些不同步或不需要的滚动或翻转的人的日志。在 100% 的情况下,当 PID 控制器突然改变油门时会发生不同步。例如,在无人机需要停止的滚动或翻转之后,电机会很快上下脉冲。现在可以使用此功能控制突然的步进。ESC 在快速改变 RPM 方面遇到的困难最大。这直接作用于电机输出。它基本上是 1ms 内允许的最大油门变化。100 表示每毫秒 100 个油门步骤。



vbat_pid_compensation = ??

       可选[ON,OFF]


使用最大电池电压作为偏移量。使用完整的 lipo 调整您的四轴飞行器,当电压降低时,您的 pid 将放大至 25%。

当你有新旧电池时。电压下降较多的旧的将自动获得更多的 PID 调整。当电压完全降至 2 节以下时,它也会自行禁用。计算电池计数,PID 调整基于电池电压。因此,从 3S 转到 4S 不是问题。


接下来说说一个实用的一条非调参命令。它可以通过飞控连接接受机和电脑,实现无线加密狗功能,这样能带来相对真实的手感

要实现这个功能,需要你飞控连接电脑后接受机能通上电才行,否则用不了,当然遥控器也要和接收机对频

接下来讲讲该怎么通过CLI命令行来进行相应设置

首先输入“set usb_hid_cdc”然后回车,看它弹出的选项里“usb_hid_cdc={OFF/ON}”,如果是ON就是打开了,如果没有就输入“set usb_hid_cdc=ON”回车后输入“SAVE”保存即可。

接下来就可以打开模拟器进行相应的设置了


Betaflight还有许多CLI相关的命令行,我这里就不一个一个讲下去了。其实bf大多数的参数都可以用CLI来进行调参,比如说滤波器的设置,PID的设置等等。我相信真正需要用到命令行的人还是占少数的,如果你想要知道的更多,你可以去官方的WIKI去查看,上面有比较详细的文章。

最后感谢能静下时间全部看完的飞友们,如果你有更好的或者有什么实用的CLI命令,欢迎在评论区来分享飞行的技巧与乐趣!







回复

使用道具 举报

tsjz7 | 2022-2-21 10:24:55 | 显示全部楼层
很不错,支持!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则