​微信公众号
手机版
​​新浪微博
会员登录
关于我们  |   商务合作  |  友情链接   |  意见反馈  |  人才招聘
北京云翼同创科技有限公司 深圳高博特文化发展有限公司   版权所有,并保留所有权利 © 2018 京ICP备16044150号-1                       

跨界 · 融合 · 服务 · 创新



双击此处添加文字
新闻聚焦
行业技术
首页  >  新闻聚焦   >  行业技术  >   详情
浅谈一种基于DJI N3飞控的新型光流控制方式
来源:尖兵之翼 | 作者:高博特 | 发布时间: 2022-06-01 | 4715 次浏览 | 分享到:
高性能导航模块的支持,可帮助飞行器实现丰富的应用扩展,为无人机爱好者及行业应用探索者提供稳定而全面的系统级解决方案……

作为NAZA飞控系列的最新一代产品,N3多旋翼飞控系统采用DJI大疆最新的控制导航算法,新增的内置双IMU冗余设计,可实现数据实时互为备份,结合全新内减震结构设计,赋予飞行器高可靠性;“黑匣子”数据记录系统为飞行性能分析提供精准数据支持,同时,对于包括Lightbridge 2、 DJI Assistant 2等在内的一系列DJI大疆配件、高性能软件、SDK和A3 Upgrade Kit高性能导航模块的支持,可帮助飞行器实现丰富的应用扩展,为无人机爱好者及行业应用探索者提供稳定而全面的系统级解决方案。

 

下面是一份大疆N3飞控ONBOARDSDK二次开发经验的分享。

开发流程

步骤一:选择开发方式

先去大疆的开发者网站(https://developer.dji.com/)看资料,我选择的是ONBOARD SDK stm32(图1),还有其他的开发方式,比如QT,ROS,LINUX等。

 

图一

步骤二:观看官方资料

首先要看下Documentation以及API Reference里面的资料(图二),里面介绍了怎么进行二次开发以及大部分API的用法。 

图二

步骤三:下载对应软件及代码

根据自己的选择,去Downloads里的ONBOARD SDK下载例程代码以及DJI Assistant2(图三)。 

图三

步骤四:注册获取开发ID和KEY

下载完代码跟软件后,可以看下Documentation中的Software Setup (图四),需要在开发者网站里面注册一个OSDK application ID Key pair。 

图四

步骤五:将ID与KEY填进去

打开下载的代码,点击Activate.cpp,将自己的注册的ID跟Key填进去(图五),那么,软件部分其实已经准备好了。 

图五

步骤六:准备好STM32F407的板子

接下来就是准备好STM32F407的板子(如果没有该型号,请自己移植下代码)。按照Documentation 中的Hardware Setup,连接对应的接口。官方例程中是采用串口三与N3飞控进行通讯,串口二与电脑上位机通讯。串口二与电脑通讯,飞控初始化等出现任何问题可以在电脑端看到。因为我使用的板子串口三的接收用作DBUS(硬件取反了),所以我把串口反过来用了。串口二用于与N3通讯,串口三用于与电脑通讯。飞控与板子连接好以后,打开电脑DJI Assistant2软件,将N3飞控与电脑端连接,在DJI Assistant2软件,选择机型配置参数等,这个就不说了,自己百度,有很多教程。看下Documentation中的Software Setup,有教程说明怎么配置API模式(图六),使能API控制,并且需要选择你要订阅的信息的频率。 

图六

可以看下我的代码,我订阅的一些信息是50Hz的,所以我订阅的信息就在这个软件选择了50Hz。

步骤七:连接上位机,跑官方例程,观看现象

官方代码中的main.cpp中,通过switch选择你要试的例程(图七),

 图七

然后此时可以将下载的代码下载至板子中,打开DJI Assistant2中的模拟器(图八),

 图八

可以看到飞机按照预设的轨迹进行飞行。例如官方例程(图九),飞机在虚拟器中会自动起飞距地面1.2米,然后往右边方向飞行6米,再向前飞行6米,然后再回到原始位置并且降落。

 图九

飞机飞机如果测试到这里都没问题,那么恭喜你,可以开始做室内定位了。做定位之前,一定要把资料看一下,看下例程的代码是怎么写的,自己花点时间写一下自己想实现的功能,然后可以在模拟器中看飞行效果,模拟器的飞行效果跟实际是差不多的,所以每次写了新东西,需要现在模拟器试试,不要直接上飞机试。

步骤八:光流选型

要做室内定位,那就要去买光流模块以及激光模块。光流模块的话建议不熟悉光流算法的同学购买匿名的光流模块。这款光流已经融合了高度以及加速度计陀螺仪,数据比较好,用起来比较方便。光流数据主要用来水平定位,而激光高度数据要用来修正飞机飞行的高度,因为室内纯气压计定高是不稳。具体实现过程代码已经写明了注释。如果想自己融合光流数据的同学可以购买JL3285A、优象或者PMW3901。

具体实现过程就是使用陀螺仪的角速度数据与光流的像素数据进行融合,使得在原地摇晃光流时,可以用陀螺仪的数据去把光流的数据抵消掉,再把高度的信息加进去融合,将最终的像素变化信息转化为实际cm单位,再将该数据与地理坐标系的加速度计进行融合。这样可以使得飞机在飞行的时候,下方有车子经过不会严重干扰到。

定位思路 (代码已注释)

定高思路:室内纯气压定高的话,因为室内的气压不是很稳定,特别是在飞机飞行的过程中,桨叶的风容易干扰到气压计,导致数据突变,出现飞行高度不稳定的现象。GUIDANCE是采用双目加超声波的方法实现的,我们这里采用的是激光,也可以使用市面上的其他的高度传感器。读取激光的高度,油门回中的时候记住此时激光高度。然后使用PID进行闭环控制,将最终的结果控制飞机的垂直速度(使用SDK中的垂直速度控制API)。为了避免飞机飞过一些不平坦的地方,飞行高度变化太过于剧烈,可以使用激光高度的变化率,当变化过大时,削弱激光修正高度的系数,并且当重新稳定的时候再次确定高度。