ICF5使用手册

产品简介

ICF5是AMOVLAB和FMT团队匠心打造的一款专业级、高性能开源自驾仪硬件。ICF5搭载了最新的FMT稳定版固件,可用于无人机,无人车,无人船和机器人等应用领域。FMT是下一代开源自驾仪系统,支持基于模型开发(Model-based-design,MBD)。使用MATLAB/Simulink以图形化方式快速搭建算法模型,一键代码自动生成轻松部署到飞控硬件上,大大提高科研和研发效率,是先进算法验证、二次开发的理想平台。ICF5使用兆易创新的GD32F470旗舰级芯片,拥有240MHz主频和512KB SRAM,内核自带FPU浮点运算单元,提供更大的算力和内存空间,轻松运行复杂算法。ICF5拥有丰富的外部接口,足以满足大部分的应用场景。除标准的外部接口外,ICF5还提供了以太网接口和CAN总线接口,应用于工业和高带宽数据传输场景。ICF5具有体积小,重量轻的优点,结构尺寸为70.0mm * 36.0mm * 18.5mm,重量仅为39.3g。相比于其它同类产品,ICF5在成本、尺寸和功能上都具备很大优势。

FMT自驾仪资料

项目地址

学习资料

规格参数

名称ICF5 飞控
型号IC200
重量39.3g
尺寸70.0mm * 36.0mm * 18.5mm
硬件参数
处理器GD32F470VGT6@240MHz
SRAM512 KB
Flash1024 KB
传感器
陀螺仪BMI088/ICM-42688-P/ICM-20948*
加速计BMI088/ICM-42688-P/ICM-20948*
电子罗盘BMM150/ICM-20948*
气压计SPL06-001/MS5611*
存储设备
Nor FlashW25Q16 16M-bit
外部接口
UART5
I2C3
SPI1
CAN总线1
以太网口1
ADC1
PWM输出10
SBUS/RSSI1
PPM IN1
PM电源模块输入1
GPS/安全开关/蜂鸣器1
Debug/SWD1
USB接口1(Type-C)
内部接口
TF卡槽1
工作环境及物理参数
PM工作电压4.5 ~ 5.5V
USB电压4.75 ~ 5.25V
工作温度-20 ~ 85℃
支持机型
FMT固件多旋翼/固定翼 即将支持:VTOL垂直起降,直升机,无人车,无人船,机器狗

注意:ICM-20948和MS5611为选配,默认不焊接,只保留焊盘

使用说明

结构尺寸

飞控硬件的结构尺寸为70.0mm * 36.0mm * 18.5mm

快速使用

USB驱动安装(仅Windows系统需要)

Windows系统需要安装GD32的USB驱动,可进入GD32官网下载

下载完成后,选择对应的x86或者x64安装包进行安装即可。

连接地面站

使用提供的USB线将飞控连接至电脑,USB线将给飞控供电同时提供数据传输。

[飞控USB连接图]

打开设备管理器,找到GD32虚拟串口设备的串口号。例如,如下图所示,USB虚拟串口号为COM6

下载链接:https://download.amovlab.com/fmt/QGroundControl-installer-3.5.6.exe

打开QGC地面站(3.5.6版本),进入通讯连接界面,点击添加,并设置如下

选择刚添加的通讯接口,并点击连接。QGC将连接上飞控,如下图所示。

连接控制台

控制台时跟飞控交互的重要方式。通过控制台可以输入FMT系统提供的指令也可以通过控制台查看飞控的打印信息。

控制台目前有两种连接方式:

  • Mavlink Console(通过QGC)
  • 串口控制台

Mavlink Console是通过QGC地面站来连接到飞控的控制台。如下所示,在Mavlink Console界面输入两次回车,将自动连接上控制台

连接上控制台后,可以在输入框输入指令。输入help指令来查看FMT系统提供的所有指令信息

串口控制台

相比于Mavlink Console,串口控制台可以在任意情况下使用,包括当飞控发生异常的前一时刻,串口控制台会输出飞控的错误信息,用于定位错误。而Mavlink Console则很可能不能及时输出错误时刻的信息。

串口控制台默认使用Debug口的串口(serial0)连接,也可以修改配置文件将控制台映射到其它串口,具体请参阅配置飞控章节。

将Debug接口的串口线连接到JLink的串口端口,如下图所示。

[图]

注意

也可以使用其它设备来连接串口,如USB转TTL线,无线数传等。

将JLink连接上电脑,从设备管理器中查找JLink虚拟串口端口的设备号。

注意

如果没有出现JLink的端口设备,说明未安装Jlink驱动,请访问Jlink官网https://www.segger.com/downloads/jlink/下载。

使用串口助手软件(如MobaXTerm)连接JLink的串口端口,将波特率设置为57600

给飞控上电,可以看到控制台的输出信息如下所示。同样我们可以通过串口控制台来输入指令跟飞控进行交互。

查看飞控数据

可以通过QGC地面站的飞行界面查看飞机的姿态,航向,速度和位置等信息,如下图所示

也可以使用QGC的Analyze功能来查看Mavlink消息的数据,如下图所示

除此之外,还可以通过控制台提供的mcn指令来打印需要查看的消息数据。比如要查看导航的输出数据,可以输入mcn echo ins_output指令。

当然,FMT还提供更强大的数据查看方式,如日志和开环仿真,通过这种方式可以获得算法模型的所有数据。具体使用方式请参阅FMT文档

接口示意图

CAN

PIN 接口PIN 1PIN 2PIN 3PIN 4
CAN+5VCANHCANLGND

DEBUG

PIN 接口PIN 1PIN 2PIN 3PIN 4PIN 5PIN 6
DEBUG+5VUART6_TXUART6_RXSWDIOSWCLKGND

电源接口

电源接口类型为 GH1.25MM ,输入电压范围为 DC 4.5V~5.5V,输入电压过大可能导致设备烧毁,建议输入电压和电流设置为5V/2A。接入电源前请确认接入电源极性正确,是否和电源接口极性对应,电源接口极性如下图所示。

电源接口包含一个I2C和两路ADC(VOLT,CURRRENT)用来测试电压和电流。I2C和ADC共用两个引脚,可以通过板上的电阻选择使用I2C或ADC采集电压和电流。

USB接口

USB Type C接口,位于飞控侧面。可用于USB数据传输(如连接地面站)。同时可以用来给飞控供电,最大可提供5V/1A的功耗。

UART

主要有4个对外的串口接口。2个带流控制的数传串口接口(TELEM1和TELEM3),1个通用串口接口(UART)以及1个调试端的串口接口(DEBUG)。串口默认波特率为57600。

ICF5串口映射

UARTDevicePort
UART6serial0DEBUG Tx/Rx
USART1serial1TELEM1
USART2serial2TELEM2
USART0serial3UART
UART7serial4GPS

Micro SD卡槽

SD卡槽位于Cube的底部,最大支持扩展128G。如需拆卸,需先将Cube取下,然后方可取出/插入SD卡。插入时请参考SD卡缺口方向。

I2C接口

包含一个标准的外部I2C总线接口,可用于挂载外部I2C设备。

SPI接口

包含一个标准的外部SPI总线接口接口。SPI接口包含CS1和CS2两个片选引脚,可以外接两个SPI设备。

PWM接口

包含10路PMWM输出接口,所以最多可以用来驱动10路作动器(如电机,舵机等)

遥控接口

​支持SBUS和PPM遥控协议,请将接收机信号接至对应的飞控端口,并确保sysconfig.toml中有对遥控进行正常配置。具体遥控配置方式请参考配置飞控章节。

GPS接口

​GPS接口包含一个标准串口用于跟GPS通信,基于uBlox协议。飞控上电后将自动检测GPS的波特率,故无需特别配置GPS波特率。GPS接口包含一个I2C总线,可用于跟GPS上的I2C设备进行通信,如电子罗盘,RGB灯等。另外,GPS接口还包含一个安全开关接口和一个蜂鸣器接口,可用于控制GPS模块上的安全开关和蜂鸣器(若GPS模块上有的话)。

调试接口

​调试接口位于飞控侧面,可使用J-Link通过SWD方式进行代码下载与单步调试。

调试接口还包含一个串口,用于飞控控制台的默认输出。

PIN脚定义

PIN 接口PIN 1PIN 2PIN 3PIN 4PIN 5PIN 6
DEBUG+5VUART6_TXUART6_RXSWDIOSWCLKGND

CAN接口

CAN接口可以应用于工业级的应用场景或跟其它CAN设备进行数据通信。其接口位于飞控侧面。

PING脚定义

PIN 接口PIN 1PIN 2PIN 3PIN 4
CAN+5VCANHCANLGND

注意

目前FMT固件暂不支持CAN功能,将在后续的软件更新中支持上。

以太网口

以太网接口类型为GH1.25MM。以太网接口可用于飞控仿真,数据传输,远程连接等应用场景。

注意

目前FMT固件暂不支持以太网功能,将在后续的软件更新中支持上。

电源指示灯

包含一个电源状态灯,一个FMU运行灯,一个网卡状态灯和一个RGB状态灯。

电源灯亮表示飞控处于上电状态。FMU运行灯快闪表示Bootloader正在运行,慢闪表示FMU,即FMT固件正在运行。网口状态灯闪烁表示网卡有数据传输。RGB状态灯为蓝色表示飞机处于上锁状态,为绿色表示解锁状态,为红色表示异常状态。

配置飞控

FMT使用toml文件对飞控的各个模块进行配置,具体的语法请参考TOML官网

在飞控启动阶段,系统会尝试从*/sys/sysconfig.toml*加载配置文件。如果这个文件不存在,那么将使用默认的系统配置(default_config.h)。注意,默认系统配置仅开启了控制台和Mavproxy的功能,遥控和电机输出未开启。

我们提供了默认的配置文件,位于FMT-Firmware/target/amov/icf5/config/sysconfig.toml。该配置文件需要上传到飞控的/sys目录下,飞控启动时将自动去加载该配置文件中的内容。

上传配置文件

上传配置文件可以通过QGC的Onboard Files界面进行文件上传(基于FTP协议)。首先点击List Fiels获取飞控的文件目录,选择sys目录并点击Upload,然后选择要上传的sysconfig.toml文件。

注意

QGC 3.5.6版本以后已经移除Onboard Fiels功能,故需要使用QGC 3.5.6版本。

也可以使用一张SD读卡器,取下飞控的SD卡,通过读卡器将sysconfig.toml文件放到SD卡的/sys目录。

修改配置文件

我们提供了一组默认的ICF5配置文件

里面包含了几个表,每个表对一个特定组件进行配置:

  • console:配置飞控控制台所使用的设备
  • mavproxy:配置飞控mavlink设备
  • pilot-cmd:配置飞控遥控输入设备
  • actuator:配置飞控作动器输出设备,即PMWM输出

Console

[console]表用来配置控制台模块。如下是一个有效的控制台配置,它将三个设备预留给控制台模块。三个设备serial0, serial1 和 mav_console由[[console.devices]]表来进行管理。前两个设备是通用的串口设备,而mav_console是一个特殊的设备(虚拟设备),它提供了read/write接口来跟QGroundControl Mavlink Console进行数据交换。在系统启动阶段,控制台将默认使用第一个设备(在这里是serial0)。当有其它设备收到数据并且auto-switch为true,则控制台将自动切换到对应设备上。

[console]
    # device list, the first device will be used by default
    [[console.devices]]
    type = "serial"             # type must be serial or mavlink
    name = "serial0"            # device name
    baudrate = 57600            # serial baudrate

    [[console.devices]]
    type = "serial"             # type must be serial or mavlink
    name = "serial1"            # device name
    baudrate = 57600            # serial baudrate
    auto-switch = true          # automatically switch to device if data received

    [[console.devices]]
    type = "mavlink"            # type must be serial or mavlink
    name = "mav_console"        # device name
    auto-switch = true          # automatically switch to device if data received

Mavproxy

mavproxy模块实现了MAVLink协议,负责处理MAVLink数据通信,包括消息的传输和接收。

mavproxy模块的配置在[mavproxy]表中定义。它支持多个通道,其中通道0用于地面控制站(GCS),通道1用于机载计算机(OBC)。每个通道可以与一个或多个[[mavproxy.devices]]关联,以便相应的mavproxy通道可以利用这些设备。

以下是一个包含两个为通道0保留的设备和一个为通道1保留的设备的示例配置。

[mavproxy]
    [[mavproxy.devices]]        
    chan = 0                    # channel 0 (GCS) device
    type = "serial"
    name = "serial1"            # device name
    baudrate = 57600            # serial baudrate

    [[mavproxy.devices]]        
    chan = 0                    # channel 0 (GCS) device
    type = "usb"
    name = "usbd0"              # device name
    # automatically switch to usb if connected, switch back to default device is disconnected
    auto-switch = true
    
    [[mavproxy.devices]]
    chan = 1                    # channel 1 (Onboard Computer) device
    type = "serial"
    name = "serial2"
    baudrate = 115200

默认情况下,系统将利用为mavproxy通道定义的第一个设备。然而,如果为一个通道定义了多个设备,系统具有切换到其他可用设备的能力。例如,如果建立了USB连接,mavproxy通道0可以切换到usb0设备。如果USB连接断开,mavproxy通道0将自动切换回serial1设备。

Pilot-Cmd

[pilot-cmd]表用来配置pilot_cmd(遥控)模块。你可以通过[pilot-cmd.device]表来配置rc设备,协议,通道数,采样周期,通道数值范围等。遥感通道通过stick-channel设置,它包含了四个元素,分别对应摇杆yaw,throttle,roll,pitch。一个典型的遥控以及摇杆配置如下所示:

    # channel mapping for [yaw, throttle, roll, pitch]
    stick-channel = [4,3,1,2]

    [pilot-cmd.device]
    type = "rc"
    name = "rc"
    protocol = "auto"           # auto/sbus/ppm
    channel-num = 8             # max supported channel: sbus:16, ppm:8
    sample-time = 0.05          # sample time in second (-1 for inherit)
    range = [1000,2000]

目前支持的RC接收机协议为SBUS和PPM,这里可以将其配置为auto,表示自动识别接入的接收机协议。

遥控控制模式可以通过[[pilot-cmd.mode]]来设置。比如定义自稳模式:

    [[pilot-cmd.mode]]
    mode = 3                    # stabilize mode
    channel = 5
    range = [1800,2000]

该设置表示如果遥控通道5的值在[1800, 2000]的范围内,那么自稳模式将被选中。

FMT还支持多通道模式映射,这将使得有限的遥控通道可以支持更多的模式选择。

    [[pilot-cmd.mode]]
    mode = 3                    # stabilize mode
    channel = [5,6]
    range = [[1800,2000],[1400,1600]]

您可以根据需要加入更多的模式定义,FMT支持的mode的数值对应的模式类型如下所示:

  • 0:None 未知模式
  • 1:Manual 手动模式
  • 2:Acro 特技模式
  • 3:Stabilize 自稳模式
  • 4:Altitude 定高模式
  • 5:Position 定点模式
  • 6:Mission 任务模式
  • 7:Offboard 外部控制模式

您还可以配置遥控指令。当前支持两种类型的指令:

  • cmd1: 事件指令,边沿触发有效,类似脉冲信号。
  • cmd2: 状态指令,长时间有效,直到有新的状态指令到达,类似步进信号。

可以在[[pilot-cmd.command]]表中定义遥控指令,比如:

    [[pilot-cmd.command]]
    type = 1                    # 1:event | 2:status
    cmd = 1000                  # force-disarm: forcely disarm motors for safety concern
    channel = 6                 # command channel
    range = [1800,2000]         # if channel value in this range, the event is triggered

    [[pilot-cmd.command]]
    type = 2                            # 1:event | 2:status
    cmd = 2001                          # for testing
    channel = [4, 5]                    # command channel
    range = [[1300,1500],[1200,1400]]   # if channel value in this range, the event is triggered

FMT目前支持的所有cmd1指令如下所示:

  • 0:FMS_Cmd_None 空闲指令
  • 1000:FMS_Cmd_PreArm 预解锁指令
  • 1001:FMS_Cmd_Arm 解锁指令
  • 1002:FMS_Cmd_Disarm 上锁指令
  • 1003:FMS_Cmd_Takeoff 起飞指令
  • 1004:FMS_Cmd_Land 降落指令
  • 1005:FMS_Cmd_Retuen 返航指令
  • 1006:FMS_Cmd_Pause 暂停指令(暂停当前的任务,进入Hold状态)
  • 1007:FMS_Cmd_Continue 继续指令(继续当前的任务)

Actuator

[actuator]表用来配置作动器设备。[[actuator.devices]]表定义系统包含哪些作动器设备。ICF5有以个作动器输出端口(main_out),所以一个典型的配置如下所示。你可以修改pwm的频率,其中支持的pwm频率为50Hz到400Hz。

    [[actuator.devices]]
    protocol = "pwm"
    name = "main_out"
    freq = 400                  # pwm frequency in Hz

[[actuator.mappings]]表可以用来将遥控通道或者控制器输出映射到任意作动器的通道。

如下示例包含了两个映射。第一个映射将控制器输出通道1-4映射到main_out的PWM通道1-4。第二个映射将遥控通道2映射到main_out的PWN通道5-6,将遥控通道3映射到main_out的PWN通道7。

    [[actuator.mappings]]
    from = "control_out"
    to = "main_out"
    chan-map = [[1,2,3,4],[1,2,3,4]]

    [[actuator.mappings]]
    from = "rc_channels"
    to = "main_out"
    chan-map = [[2,2,3],[5,6,7]]

飞控校准

飞控校准是保证飞行安全和飞行稳定性的重要步骤。在将飞控部署到新的机架或者全新的环境中时,需要对传感器进行校准。

陀螺仪校准

陀螺仪校准是通过QGroundControl进行。遵从QGroundControl的指导完成校准流程。

  • Step1:将机体放置水平并保持不动,然后点击Gyroscope传感器按钮。

  • Step2:点击OK开始校准。顶部的进度条将显示校准进度。

  • Step3:完成后,QGroundControl将显示进度条Calibration complete。

  • Step4:查看&保存结果

校准的结果可以通过在控制台输入param list CALIB指令查看

msh />param list CALIB
CALIB:
      GYRO0_XOFF: -0.024290
      GYRO0_YOFF: -0.059920
      GYRO0_ZOFF: -0.007062
......

控制台输入param save保存校准结果,否则系统断电将丢失未保存的校准结果。

加速计校准

加速度计校准通过QGroundControl进行。遵循QGroundControl的指导完成校准流程。

  • Step1:点击Accelerometer传感器按钮然后点击OK开始校准

  • Step2:将机体置于屏幕图片所示方向。一旦黄色框出现,将机体静置。当前方向校准完成后屏幕上对应图标的框将变绿

  • Step3:将机体置于各个方向并重复以上步骤直到所有方框变绿,校准完成
  • Step4:查看&保存校准参数

校准的结果可以通过在控制台输入param list CALIB指令查看。

msh />param list CALIB
CALIB:
......
       ACC0_XOFF: -0.265755
       ACC0_YOFF: 0.072022
       ACC0_ZOFF: -0.140535
    ACC0_XXSCALE: 0.999727
    ACC0_YYSCALE: 1.000000
    ACC0_ZZSCALE: 0.990056
    ACC0_XYSCALE: 0.000000
    ACC0_XZSCALE: 0.000000
    ACC0_YZSCALE: 0.000000
......

控制台输入param save保存校准结果,否则系统断电将丢失未保存的校准结果。

注意

ACC0_XXSCALE,ACC0_YYSCALE,ACC0_ZZSCALE为校准矩阵对角线数据,应是接近于1的值。如果不是,可能校准的数据异常,需要重新校准。

磁力计校准

磁力计校准通过QGroundControl进行。遵循QGroundControl的指导完成校准流程。

  • Step1:点击Compass按钮并点击OK开始校准

  • Step2:将机体置于红框所示(未完成)状态并保持不动。一旦黄色框出现,将机体沿着指定轴进行旋转。当前方向校准完成后屏幕上对应图标将变为绿框。

  • Step3:重复以上步骤完成对各个方向的校准直到所有方框都变绿
  • Step4:查看&保存校准参数

校准的结果可以通过在控制台输入param list CALIB指令查看。

msh />param list CALIB
CALIB:
......
       MAG0_XOFF: -0.025247
       MAG0_YOFF: -0.067397
       MAG0_ZOFF: -0.136934
    MAG0_XXSCALE: 0.863891
    MAG0_YYSCALE: 0.912510
    MAG0_ZZSCALE: 0.931017
    MAG0_XYSCALE: 0.010489
    MAG0_XZSCALE: -0.022396
    MAG0_YZSCALE: 0.076960
......

控制台输入param save保存校准结果,否则系统断电将丢失未保存的校准结果。

注意

MAG0_XXSCALE,MAG0_YYSCALE,MAG0_ZZSCALE为校准矩阵对角线数据,应是接近于1的值。如果不是,可能校准的数据异常,需要重新校准。

水平校准

水平校准通过QGroundControl进行。遵循QGroundControl的指导完成校准流程。

  • Step1:将机体水平放置在平面上,点击Level Horizon按钮并点击OK按钮开始校准

  • Step2:机体静止不动,等待校准完成

  • Step3:查看&保存校准结果

校准的结果可以通过在控制台输入param list CALIB指令查看。

msh />param list CALIB
CALIB:
......
      LEVEL_XOFF: -0.017828
      LEVEL_YOFF: -0.000741
      LEVEL_ZOFF: 0.000000

控制台输入param save保存校准结果,否则系统断电将丢失未保存的校准结果。

  • Step4:重启飞控,将机体水平放置。连接上地面站后通过地面站查看姿态是否完全水平,如果不是则需要重新校准。

遥控器校准

遥控器校准不能使用QGC,因为QGC的遥控校准是基于PX4的遥控配置,而FMT的遥控配置跟PX4的不一样。故我们提供了calib rc指令来进行遥控校准的操作。

  • Step1:在校准之前,请先确保遥控接收机有连接到飞控并且遥控器有打开。我们可以输入mcn list指令来查看rc_channels的消息的发布频率是否为非0,非0则表示有正常收到遥控信号。
  • Step2:输入calib rc指令开始校准,按照提示进行遥控校准。

  • Step3:rc_trim_channels消息即为遥控原始数据(rc_channels消息)校准后的结果,输入mcn echo rc_trim_channels查看校准后的数据。将摇杆或开关拨到极限位置和中间位置,其对应值应为最小值1000或最大值2000和中间值1500。

  • Step4:输入param save保存校准参数

电调校准

电调校准不是必须的,一般只有当电调上电后发出连续的“哔哔”声异常信号才需要对电调进行校准。

这种情况通常是由于电调的PWM信号频率改变导致。比如之前使用PX4飞控(默认PWM频率50H在),而换成FMT后PWM默认频率为400Hz。

注意

为了安全起见,在校准电调的时候请卸下桨叶。

校准方式

不同的电调可能校准方式不同,具体请参阅对应电调的说明,这里仅针对普通的电调校准方法进行说明。其原理是先给电调输出最大值,然后再给电调输出最小值。

  • 飞控通过USB上电
  • 将对应电机输出设置为最大值 (比如2000)
  • 连接电池,给电机和电调上电
  • 在听到电调提示音后将对应电机输出设置为最小值(比如1000)
  • 校准完成

下面介绍两种校准方式,一种是通过遥控来校准,一种是通过指令校准(推荐)。

遥控校准

将遥控的通道直接映射到对应电机输出是最简单的校准方式。比如将油门杆通道映射到四个主电机输出,同时取消控制器到电机输出的映射,可以按照如下方式配置。

[actuator]
    [[actuator.devices]]
    protocol = "pwm"
    name = "main_out"
    freq = 400                  # pwm frequency in Hz

    [[actuator.mappings]]
    from = "rc_channels"
    to = "main_out"
    chan-map = [[3,3,3,3],[1,2,3,4]]

这样主电机的输出将直接由遥控信号的通道3(油门杆)来决定,然后按照电调的校准方式进行校准即可。

注意

校准完成后请移移除刚添加的遥控到控制输出的映射。

指令校准

由于遥控通道可能本身存在一定误差,这将导致校准后的电调存在误差。为了避免遥控通道本身的误差而影响电调校准的结果,我们可以使用act指令来进行校准。

我们需要先禁止控制器的输出,以防止它覆盖act指令的输出。我们可以使用如下指令来禁止控制器的输出:

mcn suspend control_output

然后我们可以在控制台输入如下指令来将对应电机的输出设置为最大或最小值:

  • 设置最大值:
act set --all -d main_out 2000

-设置最小值:

act set --all -d main_out 1000

首次飞行

首次飞行需要做一些飞行前的安全检查,以确保飞行的安全。

遥控功能检查

首先需要检查遥控功能是否正常,请按如下步骤进行。

首先检查是否收到遥控数据。输入mcn list,查看rc_channels数据的发布频率是否为非0。

然后检查摇杆映射是否正确(关于遥感映射配置请参考配置飞控章节)。映射后的遥控数据通过pilot_cmd消息发布,输入mcn echo pilot_cmd查看映射后的摇杆数据。将throttle,roll,pitch,yaw杆分别打到极限位置和中间位置并查看输出的数据是否正确。

摇杆打到最下或最左输出应为-1,打到最上或最右输出应为1,打到中间输出应为0。

注意

如果误差过大,请重新进行遥控校准。

接下来检查模式切换是否正常。根据默认的toml设置,SWC开关拨到上、中、下档,对应的模式为:

  • 上:Position位置控制模式
  • 中:Altitude定高模式
  • 下:Stabilize自稳模式

通过控制台查看飞控的控制台输出模式,应跟sysconfig.toml中的模式设定相匹配,分别为Position/Altitude/Stabilize。

最后检查紧急上锁开关是否正常。紧急上锁开关是用于紧急情况下对飞机进行一键上锁,比如飞机无法自动上锁,或者飞机撞到障碍物等情况下使用。

将遥控器SWD开关从上拨至下,将触发Disarm指令,可以通过控制台查看。

注意

FMT飞控的指令是变化沿有效,故将SWD从上拨至下只会触发一次Disarm指令,如要再次触发,需先将SWD拨回上面,然后再次拨至下面。

解锁/上锁

对于飞机解锁操作,将左边摇杆打到右下角不动,如下图所示。大约1.5秒后飞机解锁,电机怠速(Standby)旋转。慢慢推高油门,当油门大于一个阈值(一般是-0.1),将从怠速进入解锁状态。

怠速模式(Standby)下,将左边摇杆打至左下角不动,大约1.5秒后飞机上锁。

飞机解锁后,拉低油门,当飞机触地后,将油门拉至最低,飞机将自动上锁。

飞机的解锁上锁操作也可通过QGC地面站发送解锁/上锁指令。首先点击下图1所示位置,下方将出现解锁或上锁的滑块(根据当前锁定状态决定),滑动滑块,将触发解锁或上锁的指令。

电机检查

首先取下所有电机的桨叶,然后给无人机连接电池。使用遥控器将模式设置为Stabilize,并解锁。此时电机应该慢速旋转,然后缓慢推高油门,飞控将解锁,电机转速将响应油门杆。将油门杆拉至最低,2s后飞机将自动上锁。

姿态检查

连接地面站,通过地面站观察飞机的姿态响应是否正常。

仿真模拟飞行

如果对于飞机的操纵不太熟悉的用户,建议首先使用SIH仿真模式进行飞行演练,以熟悉飞机的操作。关于SIH仿真模式的开启方法,请参阅FMT官方文档的步骤。

飞行测试

为了安全考虑,建议首先在室外开阔场地进行测试。新手推荐首先使用Position模式进行飞行。

参数调节

ICF的默认控制参数是适配的MFP450无人机,其飞机参数如下所示:

  • 410轴距机架
  • T-motor2216电机*4
  • 20A四合一电调

如果您的飞机跟MFP450的机架轴距或者电机参数相差较大,则可能需要进行控制器PID参数调节。下面介绍PID参数调节的方法。

查看参数

ICF5的PID参数可以在控制台输入param list CONTROL来查看,如下所示。一般来说我们只需要调节高度环PID(如果高度不稳定)和姿态角速度环PID(如果姿态不稳定)。

以姿态内环为例,如果发现无人机飞行中姿态不稳定或者位置抖动现象明显,则需要调节角速度PID。一般情况下,对于小于MFP450的飞机,需要调小PID参数,对于大于MFP450飞机,需要调大PID参数

修改参数

目前可以通过两种方式来修改参数:

  1. 通过控制台param指令
  2. 通过QGC地面站修改

param指令

比如要将ROLL的角速度参数P,将设置为0.1,可以通过如下指令:

param set ROLL_RATE_P 0.1

如果要将给某个参数值设置负数,则需在负数前面添加--,比如param set RC1_REV -- -1

修改完成后,可以通过如下指令查看参数值:

param get ROLL_RATE_P

参数修改完后,无需重启飞控,立即生效。所以理论上可以在飞机定点的过程中对参数进行微调,但是为了安全起见,建议在地面调节完参数再起飞进行测试。

当调节了一组比较稳定的参数后,可以输入param save保存,防止参数掉电丢失。

QGC地面站

在QGC参数界面,输入要修改的参数,然后点击参数即可设置参数值。

同样的,当调节了一组比较稳定的参数后,可以输入param save保存,防止参数掉电丢失。

查看控制曲线

如果要查看控制器内部的控制曲线,比如目标信号和估计信号的误差。可以使用FMT的开环仿真功能,具体使用方式请参考文章以及文章后面的视频演示:

FMT仿真——开环仿真 - 知乎 (zhihu.com)

代码编译

搭建开发环境

如果是第一次编译FMT,在编译前需要做些准备工作,比如下载编译器、构建工具以及配置环境变量等。总的来说,FMT的编译环境配置还是非常简单的。

FMT所使用的开发工具链都是跨平台的(Windows/Linux/Mac),首先下载如下工具链:

  • 编译器: arm-none-eabi-toolchain Version:7-2018-q2-update
  • 构建工具: Scons和Python3
  • 集成开发环境: Visuan Studio Code
  • USB驱动:GD32 Virtual Com Port Driver

编译器

Arm官网下载arm-none-eabi-toolchain,版本7-2018-q2-update

下载完成后点击安装包进行安装。安装完成后,添加一个环境变量RTT_EXEC_PATH,将其设置为刚下载的编译器下的bin目录,即包含编译器执行文件的目录,如下图所示:

构建工具

构建工具使用SCons,其使用python语法,简单易用。我们首先需要安装python3(如果电脑上已经安装了python3可以跳过此步骤)。

登录python官网,下载最新的python3。下载安装包后根据提示安装即可。

下一步安装SCons。打开shell控制台,输入pip3 install scons,如下所示。安装完成后输入scons --version,如果有输出scons的版本说明安装成功。

集成开发环境

FMT使用Visual Studio Code作为默认开发环境,可以上vscode官网进行下载、安装。

安装好后可以在vscode中下载C/C++插件,这样方便阅读代码以及实现代码跳转。

USB驱动

最后需要安装GD32的USB驱动,可以上GD32官网下载。

安装完成后,通过USB连接飞控到电脑,在设备管理器中可以看到GD32的端口,如下所示

代码编译

首先在Windows控制台输入如下指令获取最新的FMT-Firmware(飞控嵌入式系统)代码

git clone https://github.com/Firmament-Autopilot/FMT-Firmware.git --recursive --shallow-submodules

如果指令需要先安装Git,如果没有安装Git,可以上Git官网下载。

代码下载好后,可以使用Visual Studio Code打开FMT-Firmware目录,打开FMT-Firmware的工程,如下所示:

点击下方的TERMINAL选项,会打开控制台。在控制台中进入FMT-Firmware/target/amov/icf5目录,然后输入scons -j4开始编译。

注意

如果出现编译错误,可以输入scons -c清理一下工程,再重新编译。

代码下载

ICF5飞控中内置了FMT Bootloader,所以可以通过USB或者串口来下载FMT固件。

首先需要先下载一个pyserial,在Windows控制台中输入如下指令安装:

然后在vscode的控制台中进入icf5的BSP目录,输入python uploader.py,然后通过USB连接飞控。脚本将自动识别ICF5,并开始下载代码(需要预先编译固件)。

代码也可以通过J-Link来下载,具体请参考代码调试章节

代码调试

代码调试可以在vscode中使用JLink来对FMT飞控系统进行单步调试。

首先您需要一个JLink,并在您的系统上安装JLink Server

安装完成后,需要在创建一个新的环境变量JLINK_SERVER,并将它的值设为J-Link Server的路径,例如:

编译Debug版本固件

修改icf5目录下的rtconfig.py,将BUILD改为debug(这样生成的固件才会包含调试信息),然后重新编译固件。

连接Jlink SWD的引脚(引脚1,7,9,4)到飞控的Debug端口。您也可以连接J-Link TX/RX作为控制台使用。

下载Cortex-Debug插件

在vscode中下载Cortex-Debug插件。不要安装最新的版本,使用v1.4.4,如下所示

注意

默认会自动安装最新的Cortex-Debug插件,安装完成后,点击Uninstall右边的小箭头然后选择Install Another Version即可安装v1.4.4版本。

开始Debug

在VSCode中点击Debug Run按钮并选择目标板配置ICF5 Debug J-Link,然后点击Start Debugging按钮开始调试。

发货清单

套餐1

序号名称型号数量
1飞控Amov-ICF51
2图/数传线6-Pin GH1.251
3SBUS信号线4-Pin GH1.25转3-Pin杜邦线1
4PPM信号线3-Pin GH1.25转3-Pin杜邦线1
5UART线4-Pin GH1.251
6CAN线4-Pin 超薄GH1.251
7I2C线4-Pin GH1.251
8PWM线12-Pin GH1.251
9PWM扩展板12-Pin GH1.251
10网口线4-Pin GH1.251
11Debug线6-Pin 超薄GH1.251
12电源输入线6-Pin GH1.251
13SPI线7-Pin GH1.251
14USB线Type-C1
15内存卡 (Cube内置)32GB1

套餐2(含分电板)

序号名称型号数量
1飞控Amov-ICF51
2图/数传线6-Pin GH1.251
3SBUS信号线4-Pin GH1.25转3-Pin杜邦线1
4PPM信号线3-Pin GH1.25转3-Pin杜邦线1
5UART线4-Pin GH1.251
6CAN线4-Pin 超薄GH1.251
7I2C线4-Pin GH1.251
8PWM线12-Pin GH1.251
9PWM扩展板12-Pin GH1.251
10网口线4-Pin GH1.251
11Debug线6-Pin 超薄GH1.251
12电源输入线6-Pin GH1.251
13SPI线7-Pin GH1.251
14USB线Type-C1
15内存卡 (Cube内置)32GB1
16分电板Power_Module4-6S1

套餐3(含GPS+分电板)

序号名称型号数量
1飞控Amov-ICF51
2图/数传线6-Pin GH1.251
3SBUS信号线4-Pin GH1.25转3-Pin杜邦线1
4PPM信号线3-Pin GH1.25转3-Pin杜邦线1
5UART线4-Pin GH1.251
6CAN线4-Pin 超薄GH1.251
7I2C线4-Pin GH1.251
8GPS线10-Pin GH1.251
9PWM线12-Pin GH1.251
10PWM扩展板12-Pin GH1.251
11网口线4-Pin GH1.251
12Debug线6-Pin 超薄GH1.251
13电源输入线6-Pin GH1.251
14SPI线7-Pin GH1.251
15USB线Type-C1
16内存卡 (Cube内置)32GB1
17GPSBT-468A1
18分电板Power_Module4-6S1

联系方式

99c9b1d51dda3419c36803638a9be01.jpg

售后信息

  • 本条款仅适用于阿木实验室所生产的产品,阿木实验室通过其授权经销商销售的产品亦适用本条款。

  • 我方提供产品的保修期是指交货后产品初步验收合格之日起 12 个月。非甲方原因产生的故障,由我方负责维修。(耗材不在保修范围内)产品在甲方使用过程中,因为软件重新修改产生的问题,我方可根据解决问题的难易程度提供微信语音/视频的指导。

  • 产品自购买之日起,一周内经我司核实为质量问题,由阿木实验室承担返修产品的往返快递费,购买阿木实验室产品超过一周到一年内经我司核实为质量问题,用户和我公司各自承担寄出返修产品的快递费。

  • 返修时需提供购买凭证和保修卡或交易记录。

  • 产品自购买之日起七天内,在正常使用情况下出现质量问题,外观无损坏,凭保修卡或购机凭证在阿木官方销售渠道和经销商处协商可以免费更换同型号产品;经销商在收到更换产品时必须第一时间通知我公司予以备案更换。

  • 对于自购买之日起人为损坏、改装、拆机及超过一年免费保修期的,用户必须支付往返邮费及维修成本费用。 收费标准:人工费+配件费用

  • 为确保您的权益受到保护,并能及时有效的为您服务,请在购买阿木实验室产品时完整填写好保修卡及索要购机凭证。

  • 请访问www.amovlab.com获取完善的售后服务条款。

注意!ATTENTION!

  • 用户不能自行拆卸接收机,若发生故障,请与供应商联系。

  • 请使用阿木实验室指定品牌稳压电源,并严格遵循阿木实验室的标称电压,以免对接收机造成损害。

  • 请使用原厂附件,使用非原厂附件不享有保修资格。

  • 雷雨天请勿使用天线,防止因雷击造成意外伤害。

  • 请严格按照用户手册中的连线方法连接您的设备,各接插件要注意插接紧,电源开关要依次打开。

  • 请勿在没有切断电源的情况下对各连线进行插拔。

  • 各连接线材破损后请不要再继续使用,请及时购买更换新的线材,避免造成不必要的伤害。

  • TF 卡建议使用金士顿、朗科、闪迪三种品牌。