CC3D飞控运行iNAV用于固定翼导航

iNAV起源于cleanflight,其目的是更好的支持自主导航飞行功能。

CC3D使用基于ARM的STM32F1处理器,几乎是当前最便宜的32位飞控了。它板载MPU6000姿态传感器和EEPROM存储,不带气压计和罗盘。好在iNAV的固定翼导航功能恰恰不需要气压计和罗盘,因此你只要用CC3D和一个能用的GPS模块,就可以搭建一个包含基本辅助飞行、自动回家和预设航点飞行的固定翼飞控。
当前iNAV项目中,早已不再对F1处理器的飞控进行更新与维护;所幸,其最终版本1.7.3已经足够稳定,从此实现廉价的轻量级固定翼导航飞行不再是梦想,对于放不下APM的小体积的固定翼来说特别合适。在过去的一个月内,我已经在三台不同的固定翼上安装并测试过CC3D,都取得了不错的飞行辅助效果。
本文主要翻译自iNAV的教程:
“Howto:CC3D flight controller, minimOSD, GPS and LTM telemetry for fixedwing”
原文地址:
//———————————分割线———————————

1.飞控功能

基本的自稳飞行
自动回家
航点飞行
电池的电压电流检测(需要额外的硬件支持)
RSSI检测
失控保护
数传

2.所需的工具

CC3D飞控,全新的带连接线的最好
GPS模块,推荐ublox系列,我一开始用的是便宜的ublox-6M,如果有M8N更好
载机、遥控器等等

3.烧写iNAV固件

假设这里用的是一个全新的CC3D飞控,自带的Bootloader没有损坏,那么我们可以通过它的mainport来进行固件的烧写。
首先从 https://github.com/iNavFlight/inav/releases/tag/1.7.3 获取固件,如果你是用普通的PWM接收机,下载“inav_1.7.3_CC3D.hex”,如果是单线PPM接收机,下载“inav_1.7.3_CC3D_PPM1.hex”。然后我们用到一个USB转串口模块,连上飞控自带的转接线,插入mainport接口,并且把boot跳线短接。我用了cleanflight的地面配置工具进行烧写,因为它可以载入第三方固件进行烧写。然后就OK了。记得烧写完成后去掉boot的跳线。

4.基本设置

通讯端口

CC3D有四个可以用的通信端口,分别是USB口、UART1(Main port)、UART3(Flexiport)以及在Receiver port上的模拟串口。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
一般来说,USB口(USB VCP)就用作电脑端软件进行参数的配置等,不需要修改。
Mainport(UART1)用于外接数传模块或是OSD,比如我这里把串口1设定为MSP协议通讯,波特率是9600,用来连接OSD模块。
Flexiport(UART3)通常用来连接GPS,波特率使用的是38400或是57600。iNAV有一个优点,就是可以自动帮你配置GPS,不需要用u-center之类的工具,只要GPS芯片是ublox6或8系列的都可以。

配置

固定翼有两种,经典固定翼架构和飞翼。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
左图中的通道序号和飞控可能不一致,先不要在意;右侧可以选择电调协议和刷新率。固定翼对电机的响应要求没有多旋翼那么高,选择50Hz就好,可以兼容的电调范围更广。
注意,iNAV飞控的加速度计校准和APM一样,需要校准六个方向。具体方法就是把飞控摆放到如下的位置以后,每一个位置保持住,按一下setup界面的“Calibrate Acc”,不需要严格按照下图顺序,只要每个位置都做到就可以。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行

飞控安装方向

这又是一个很方便的特性,理论上你可以把任意安装到随意的角度,只要在这里正确的选择飞控安装方向。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
例如,如果使用CC3D默认的安装角度(遵照塑料外壳上的箭头指示),USB口会在后面,这让调试不太方便,你可以把旋转180度把USB放前面,只要把Yaw改成180,以此类推。
下图是飞控的连线图,第一张是普通接收机并行信号线连线图,第二张是PPM接收机连线图。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
区别只在ReceiverPort的走线不一样。因为CC3D飞控的接口很有限,因此强烈建议使用PPM接收机,这样你就能腾出接口来进行电池检测或是信号强度检测,而使用PWM接收机的话,这些接口就都被占用了。此外,刚烧写了固件以后,飞控默认是不开启所有信号输出的,你需要手动开启。还有要注意,如果你使用USB连接飞控,所有的外围器件是没有被供电的,因为USB的电源线和外围器件的电源线是独立的。
然后,在GPS配置区域,需要开启GPS的导航功能,并且选择你使用的GPS协议,通常是UBLOX。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
一旦你开启了GPS导航功能,那么只有在搜到足够的星的情况下才能解锁飞机,所以地面调试的时候,建议先关闭GPS导航功能,不然一直没法解锁飞控,很憋屈。在GPS选项卡里面,可以看到当前的GPS数据,如果已经定位,也会看到你在地图中的位置。
在接收机选项卡中,你可以看到摇杆信号值。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
飞行模式选项卡里,你可以给你的段位开关指定各种飞行模式。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
最常见的是一个三段开关,常见配置如下:
低段:不选择任何模式的时候,激活的是增稳模式,只有陀螺仪工作来辅助保持飞行稳定,该模式下手掷起飞的感觉真是太好了。
中段:角度模式或是水平模式。
高段:自动回家。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行

失控保护

iNAV的失控保护的工作前提是接收机信号丢失。为此,你可以把你的接收机设置成丢失无线信号以后停止所有信号输出。或者,直接把失控保护设定为一个模式,通过遥控器来激活。
iNAV中有几种不同的响应可供选择,你可以停机下落,可以原地降落,或是自动返航。对于固定翼,一般我们会选择自动返航。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行

数传

iNAV使用的数传系统有这么几种:
请根据自己的喜好选择。

遥控发射器的设置

使用飞控的第一步是校准你的遥控器,对iNAV来说,我们需要在把两个摇杆推到右上角的时候(副翼最右,油门最大,方向舵最右,升降舵向前压到底),四个通道的信号量都将是最大,如果不是,请通过遥控发射机上的正反开关来修正。这非常重要,因为这样才能让飞控和你的遥控器达成一个共识:例如副翼通道的处于最大值意味着你要向右横滚,油门通道处于最大值意味着你要提高螺旋桨的转速。此外,最好参照着配置软件上显示的数值,把你的遥控器的信号中位调节到1500us,低位1000us,高位2000us。

电机

电机选项卡同时显示电机和舵机当前的输出信号。不妨切换到手动模式下,你会看到舵机信号随着你的摇杆移动而变化,例如,我向右压副翼,4号通道值减少,5号通道值增加,说明这两个是这台飞翼两个副翼舵机通道,然后这时候,我们把每一个通道对应的舵机记录下来。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
舵机设置
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
在这里需要注意,舵机序号是从0开始的而不是1。在这里你可以配置每一个舵机通道的极限位置和中立点。舵机的动作比例值和方向都在“Direction and Rate”里面设置,如果正常满行程是100%,那么-50%就是指舵机反向,并且行程为50%。在手动模式下,通过调节舵机方向,舵面的运动方向必须和你的遥控器摇杆一致,如果舵面方向正确,那么在Angle/Horizon模式下,舵面也会给出正确的反馈方向。

设备连线

如果你熟悉CC3D飞控,那么你一定知道Mainport,flexport和输入输出插口的电源正极是互相联通的。如果所有设备都通过插在输出接口上的电调线来供电,那么舵机工作时带来的电压扰动很可能让飞控死机重启。所以最好使用第二个BEC模块给舵机供电。
一个简单的做法就是,舵机和电调的电源正极端子从插头里面挑出来以后并联在一起,然后把另一个5V的BEC模块的正负极连接到飞控的空闲输出口上。

PID/PIFF参数设置

如果你在Preset界面中选择了预设的飞机配置,那么此时默认的PID参数可以作为一个很好的起始值。一般,你就算是不做任何修改,飞机都可以飞的不错。下图是我的800mm翼展的EPP彩虹飞翼的参数配置。注意,固定翼的控制器其实是PIFF(P、I和FF),在这里FF参数在PID界面里面显示为D参数。
在CC3D飞控上烧写iNAV固件用于固定翼导航飞行
我的调参方式如下:
1.找一个无风的好天气,在Angle模式下进行视距内的飞行,PID参数预设如下:P=5,I=10,D/FF=20。
2.起飞以后猛压副翼,看看飞机的反应:正常情况下飞机应该平稳的改变横滚角,摇杆会中后飞机恢复水平不该有明显的震荡和过冲。如果有明显的震荡,那么请减小FF的值。如果你的飞机起先转的很快,随后很慢才达到最大的倾斜角度,那说明FF的值太小了。
3.在俯仰方向使用同样的方式来调节FF参数。
4.我的方式是把FF参数一直调高,直到对应的运动方向出现震荡,然后再把FF参数减小20%。
5.如果飞机一直没法达到预设的角度(例如你设定了最大横滚角为30度,但是你副翼压到头也只能横滚20度),那么需要增加I参数。
6.随后在起风的时候飞行,让飞机经受一些扰动的气流。
7.增加P参数可以提高飞机的抗风性,在Angle模式下,I参数和FF参数可以让飞机保持水平稳定,P参数则可以给与飞机抗风的能力。不过P参数太大的话,舵机的动作幅度也会增大,工作时容易发热减少寿命。

OSD配置

我更喜欢使用MW-OSD,当前该项目的开发十分的活跃,支持众多的不同协议的飞控,从APM到MWC再到iNAV,应有尽有。使用的模块依旧是miniOSD。你需要安装MWOSD固件。安装请参考http://www.mwosd.com/ 上面的使用说明。一般都是先下载固件代码,然后再ArduinoIDE上面完成配置、编译和烧写。配置依旧是在Config.h文件中完成,你需要修改如下的代码:
#define MINIOSD 选择硬件
#define iNAV 选择飞控版本
#define FIXEDWING 选择飞行器类型
#define FORCE_MSP 强制使用MSP协议
#define PROTOCOL_LTM 开启iNAV专用轻量级协议LTM
#define BAUDRATE 9600 选择波特率
一般配置这些代码就可以了。
你不妨试试#define MAPMODE功能,这样会在屏幕中显示一个简易地图,以上北下南的地图坐标的形式,来指示你当前和起飞点的相对方向。
开启LTM协议的目的是让你可以在使用数传的时候,OSD也可以读取到链路里面的信息,如果已经使用了数传,那么OSD模块的TX口一般不连。
现在MWOSD的免费版本配置软件似乎对固件版本有限制,因此你有可能要选择高级版本的收费版配置软件。

祝你好运。