Pixhawk PRO

安装与调试

在ARDUPILOT旋翼机上安装PX4FLOW光流传感器

发表日期:2023/12/30  浏览次数:236

详细介绍:

预先要求

在安装和调试光流传感器之前,请先保证:

  1. 旋翼机已经安装、调试完毕,至少可以在Stabilize(自稳)和AltHold(定高)模式下稳定飞行。
  2. 飞控的固件为Copter-3.3或之后的版本。推荐使用最新的稳定版本。
  3. 手上有Maxbotix1043(PX4Flow自带)以外的一款超声波或激光雷达传感器(推荐),或飞控上的6.6V ADC没有被占用(使用PX4Flow自带的MB1043,不推荐)。ArduPilot开发者似乎是在测试中发现MB1043的读数不够稳定,没有支持通过I2C连接至MB1043。因此,只能使用其它型号的传感器,或将MB1043的模拟输出口引出至飞控ADC。所有支持的传感器可见http://ardupilot.org/copter/docs/common-rangefinder-landingpage.html#common-rangefinder-landingpage

PX4FLOW简介

PX4Flow光流传感器是一款高分辨率的图像传感器,内置3轴陀螺仪,通过分析无人机正下方地面上的可见信息,确定无人机的地速、实现定点悬停。PX4Flow的正常工作需要声呐或雷达的配合,并且可以在GPS信号不良的时候起到替代GPS的作用。

注意PX4Flow自带的Maxbotix1403超声波传感器是不能直接使用的!建议购买不带超声波传感器版本的PX4Flow,同时另购一个超声波传感器。

安装PX4FLOW

刷写PX4FLOW固件

通常,芯片在出货前都已经刷写了固件。一般情况下,你可以跳过这一步;当然,也可以重新刷写固件以防万一。

  1. 下载PX4Flow固件源码见此
  2. 使用micro USB线,从电脑连接到PX4Flow的USB口。打开MissionPlanner,应该可以通过COM口连接到PX4Flow。如果无法正常连接,可能是需要安装PX4Flow的驱动程序
  3. 选择最上方的“初始设置/INITIAL SETUP”选项卡,选择“安装固件/Install Firmware”,右下角“加载自定义固件/Load custom firmware”,选择步骤1中下载的px4flow-klt-06dec2014.px4文件。之后根据提示进行操作,可能需要你拔下再插上USB线。Load PX4Flow Firmware

镜头对焦

  1. 使用USB线,连接电脑和PX4Flow
  2. 在MissionPlanner右上角选择合适的COM口,连接到PX4Flow
  3. 在选项卡中打开”初始设置/INITIAL SETUP“->”可选硬件/Optional Hardware“->”PX4Flow光流/PX4FlowFocusing the lens
  4. 将传感器对准一定距离的物体(官方建议3m以上;但如果要在室内悬停的话,我个人认为1.5m更好),调整镜头焦距,使图像最清晰。
  5. 国产的PX4Flow的镜头没有固定,容易松动,建议对焦完成后用胶布缠一圈固定。

连线至PIXHAWK

将PX4Flow正面的4Pin接口(I2C接口),连接至飞控的I2C接口。飞控通常会连接多个I2C设备,因此建议使用I2C分线器(飞控I2C接口连到I2C分线器,PX4Flow及其他设备连接至I2C分线器)。

USB口只作连接电脑、烧写固件之用,不用作与飞控通信的接口。

组装PX4FLOW

将镜头指向正下方,micro USB口指向飞机的正前方。此时,PX4Flow板上的X轴指向正前方,Y轴指向右。

通过修改FLOW_ORIENT_YAW参数,可以支持其他的安装朝向。

启用PX4FLOW

使用MissionPlanner连接Pixhawk,在”初始设置/INITIAL SETUP“->”可选硬件/Optional Hardware“->”光流/Optical Flow“中,勾选启用/Enable

Enable PX4Flow

或者,也可在参数中设置FLOW_ENABLE为1。

设置完成后,重启飞控。

安装声呐/激光雷达

本文主要介绍PX4Flow光流传感器的安装和调试。虽然只有拥有了测距雷达,光流传感器才能正常工作,但是因为测距雷达的种类和型号过多,难以一概而论。在此只简单介绍几种主流解决方案,具体配置和技术参数请查找相关产品的技术支持。

LIDAR LITE

Lidar Lite是一款低价的激光雷达,标称有效距离40m,可以使用I2C或PWM模式连接至飞控。Lidar Lite作为激光雷达,有效距离和精度显著高于基于超声波原理的声呐;同时与其他激光雷达相比,价格相对较低。比较适合科研、商用以及预算充足的玩家。

MAXBOTIX1242

Maxbotix1242是一款ArduPilot官方固件支持的超声波传感器,标称有效距离7m,可使用I2C接线,体积小巧,设置简单

PX4FLOW自带的MAXBOTIX1043(模拟输出)

Maxbotix1043是部分PX4Flow出厂自带的超声波传感器。据说开发团队认为该传感器的读数稳定性存在问题,于是没有在固件中提供对这个传感器的支持。不过,你依然可以自行将该传感器的模拟输出引脚(Pin 3)地(Pin 7)引出,接入Pixhawk飞控的6.6V ADC接口(ADC接口从左到右分别为VCC、模拟输入和地;不要接入3.3V ADC,因为输出电压最高可达5V)。将Maxbotix1403视为模拟声呐,即可使用它采集到的数据。

以下参数设置仅供参考:

# 使用模拟声呐 RNGFND_TYPE = 1 # Pin 15代表6.6V ADC RNGFND_PIN = 15 # 声呐输出为线性 RNGFND_FUNCTION = 0 # 声呐输出和参考电压(电源电压)成比例 RNGFND_RMETRIC = 1 # 没有Stop Pin(声呐会一直工作) RNGFND_STOP_PIN = -1 # 设置最大有效距离(厘米) RNGFND_MAX_CM = 500 # 若距离小于30cm,读数就被认为不可靠 RNGFND_MIN_CM = 30 # 停在地面时,声呐与地面的距离(厘米) RNGFND_GNDCLEAR = 2 # 理论上,输入电压为5V,输出电压的范围为0.293V到4.885V (300mm to 5000mm) RNGFND_OFFSET = 0.293 # 根据datasheet,距离5m,输出为4.885V # 5m / 4.885v RNGFND_SCALING = 1.02354

由于对Maxbotix1043的稳定性存疑,且模拟信号的噪声干扰较大,不是非常建议采用此方法。

PREARM:CHECK RANGEFINDER的解决方法

这一信息提示RangeFinder(声呐或雷达)读数不正常,无法正常解锁。出现该信息,是因为在飞控程序中,只有读到了一个0.5m至2m的距离后,才会解锁飞控。如果读到了2m以上的距离,则需要重启飞控。

你可以每次将无人机提起至0.5m以上,完成这项检查;或者你可以在Arming Check的设置中,禁用Parameters选项,即可跳过这项检查。

测试和校准

测试光流传感器

通过MissionPlanner链接到Pixhawk,选择首页左下方的“状态/Status”栏。如果设置正确,可以观察到非0的opt_m_x,opt_m_y和opt_qua的值。

Testing PX4Flow

校准光流传感器

  1. 使用地面站连接飞控,启用在锁定状态下的飞行日志(Copter-3.3设置LOG_BITMASK为131071,Copter-3.4及以上设置LOG_DISARMED为1)
  2. 找一个有明显纹路的地面,确保光照充足
  3. 卸下螺旋桨
  4. 为无人机上电,用手将无人机提起至与视线齐平
  5. 在横滚(Roll)方向上,±15度范围内转动无人机5至10次,每次大约1秒;之后,在俯仰(Pitch)方向上重复此动作。
  6. 断电,下载此次飞行日志。绘制出OF.flowX OF.bodyXIMU.GyrX的数据,结果应该如下Flow_x calibration

    如果OF.flowXOF.bodyX大小不一致,则需要修改FLOW_FXSCALER参数使其一致

  7. 与步骤6类似,绘制OF.flowY OF.bodyYIMU.GyrY的数据。如果OF.flowYOF.bodyY大小不一致,则需要修改FLOW_FYSCALER

检查声呐

在上述飞行日志中,绘制出NKF5.meaRng(单位为米)。如果始终有非零读数,且读数值的变动在10cm以内,说明声呐读数良好(注意在转动无人机的过程中,声呐读数会有所改变)

如果一切正常,可以将LOG_DISARMED重新设置为0,避免产生体积过大的日志文件占用空间

试飞

第一次试飞

试飞目的

测试光流传感器和声呐的读数

参数设定

# 卡曼滤波器采用GPS数据 EK2_GPS_TYPE = 0 # 使用气压计作为滤波器的主要高度数据源 EK2_ALT_SOURCE = 0

试飞步骤

以自稳(Stabilize)或定高(AltHold)模式起飞,确认GPS信号良好后可以切换至定点(PosHold)模式。维持无人机的高度在0.5m至3m(建议达到3m),盘旋片刻即可降落。

分析日志

  1. NKF5.meaRng应该和无人机的离地高度相同
  2. OF.flowXOF.flowY应该不同
  3. OF.bodyXOF.bodyY应该分别和IMU.GyrXIMU.GyrY一致

如果以上都三点符合,则可以进行第二次试飞,实际测试光流性能了。

第二次试飞

试飞目的

测试光流定点和声呐定高是否正常工作

参数设定

# 卡曼滤波器使用光流数据 EK2_GPS_TYPE = 3 # 使用声呐作为主要高度数据来源 Ek2_ALT_SOURCE = 1

飞行前检查

  1. 确保:
    • 可以用遥控器切换到留待(Loiter)模式
    • 自稳(Stabilize)定高(AltHold)中至少有一个模式可用
    • 留待(Loiter)模式下可以方便地切入降落(Land)模式。
  2. 确认在无人机周围,有至少15m的空地。如果光流数据异常,无人机可能会直接以最大速度向一个方向偏移。

试飞步骤

留待(Loiter)模式解锁、起飞,至高度约1m。

如果无人机迅速向某个方向加速,立刻将模式切换成降落(Land)。你可能需要将飞行日志上传到ArduPilot论坛(英文),请大家分析其中可能的原因。

如果无人机实现了稳定的定高和定点,那说明光流和声呐正常工作了。你可以轻轻拨动摇杆,尝试在带光流的Loiter模式下飞行。

已知问题

光流传感器的表现与焦距关系巨大

光流传感器在离地面过近或过远时,都会因为成像模糊,导致数据变差。我发现的一个常见现象是:在无人机贴近地面(30cm以内),以及无人机远离地面(跟焦距有关,大约3-5m以上)时,极易触发错误“Err: EKF_CHECK-2”。其原因为光流成像质量不佳,导致卡曼滤波器无法正常工作。为了确保安全,飞控会强制进入Land模式降落。

因此,充分分析无人机执行任务时所处的高度。例如,在单层住宅高度(2.8m)的室内飞行,个人认为,在大约1.5m处对焦就比较合适(没有经过充分试验,欢迎讨论)。

光流传感器在老式日光灯下可能表现不佳

日光灯等光源有频闪现象,它们实际上以一定的频率不停地在亮、暗之间切换。这一频率肉眼无法分辨;但是如果频闪的频率较低,如使用电感镇流器的老式日光灯的闪烁频率为100Hz,则很有可能会干扰光流传感器。打开手机的摄像头,对准光源,如果能够观察到明显的亮暗变化,说明此光源很有可能会影响到光流传感器的正常工作。

因此,还是推荐使用自然光照、基本无频闪的白炽灯、以及使用电子镇流器的新式日光灯和LED灯(闪烁频率在10KHz量级)。

光流传感器可能掉线,且没有提示

掉线的可能原因是供电不稳,I2C接口连接的设备过多,电流达到了上限。因为飞控程序的原因,光流掉线时不会有任何提示,只能根据飞行日志中有没有OF数据段、检查FLOW_ENABLE参数来进行判断。

如果光流传感器掉线现象反复出现,可以考虑将光流传感器单独供电。

版本信息

20170909 1.0 initial commit




在线客服

pixhawkpro

400-100-1000

928697906@qq.com

928697906

关注我们

关注我们
TOP