大疆A3、N3、M100飞控ONBOARDSDK二次开发经验分享

⼤疆A3、N3、M100飞控ONBOARDSDK⼆次开发经验分享
开发流程
二氯丙醇步骤⼀:选择开发⽅式
步骤⼆:观看官⽅资料
⾸先要看下Documentation以及API Refence⾥⾯的资料(图⼆),⾥⾯介绍了怎么进⾏⼆次开发以及⼤部分API的⽤法。
步骤三:下载对应软件及代码
根据⾃⼰的选择,去Downloads⾥的ONBOARD SDK下载例程代码以及DJI Assistant 2(图三)。
步骤四:注册获取开发ID和KEY
下载完代码跟软件后,可以看下DoJI voumnion中的Software Setup (图四),需要在开发者⽹站⾥⾯注册⼀个OSDK application ID and Key pair。
抛光毛刷
步骤五:将ID与KEY写进代码
打开下载的代码,点击Activate.cpp,将⾃⼰的注册的ID跟Key填进去(图五),那么,软件部分其实已经准备好了。
步骤六:硬件连接,使能API控制,写⼊订阅信息频率
接下来就是准备好STM32F407的板⼦(如果没有该型号,请⾃⼰移植下代码)。按照Documentation 中的Hardware Setup,连接对应的接⼝。官⽅例程中是采⽤串⼝三与N3飞控进⾏通讯,串⼝⼆与电脑上位机通讯。串⼝⼆与电脑通讯,飞控初始化等出现任何问题可以在电脑端看到。因为我使⽤的板⼦串⼝三的接收⽤作DBUS(硬件取反了),所以我把串⼝反过来⽤了。串⼝⼆⽤于与N3通讯,串⼝三⽤于与电脑通讯。飞控与板⼦连接好以后,打开电脑DJI Assistant 2软件,将N3飞控与电脑端连接,在DJI Assistant 2软件,选择机型配置参数等,这个就不说了,⾃⼰百度,有很多教程。看下Documentation中的Software Setup,有教程说明怎么配置API模式(图六),使能API控制,并且需
要选择你要订阅的信息的频率。
可以看下我的代码,我订阅的⼀些信息是50HZ的,所以我订阅的信息就在这个软件选择了50HZ。
步骤七:连接上位机,跑官⽅例程,观看现象
官⽅代码中的main.cpp中,通过switch选择你要试的例程(图七),
然后此时可以将下载的代码下载⾄板⼦中,打开DJI Assistant 2中的模拟器(图⼋),
可以看到飞机按照预设的轨迹进⾏飞⾏。例如官⽅例程(图九),飞机在虚拟器中会⾃动起飞距地⾯1.2⽶,然后往右边⽅向飞⾏6⽶,再向前飞⾏6⽶,然后在回到原始位置并且降落。
飞机飞机如果测试到这⾥都没问题,那么恭喜你,可以开始做室内定位了。做定位之前,⼀定要把资料看⼀下,看下例程的代码是怎么写的,⾃⼰花点时间写⼀下⾃⼰想实现的功能,然后可以在模拟器中看飞⾏效果,模拟器的飞⾏效果跟实际是差不多的,所以每次写了新东西,需要现在模拟器试试,不要直接上飞机试。
步骤⼋:光流选型
要做室内定位,那就要去买光流模块以及激光模块。光流模块的话建议不熟悉光流算法的同学购买匿名的光流模块。这款光流已经融合了⾼度以及加速度计陀螺仪,数据⽐较好,⽤起来⽐较⽅便。光流数据主要⽤来⽔平定位,⽽激光⾼度数据要⽤来修正飞机飞⾏的⾼度,因为室内纯⽓压计定⾼是不稳。具体实现过程代码已经写明了注释。如果想⾃⼰融合光流数据的同学可以购买JL3285A、优象或者PMW3901,具体是实现过程就是使⽤陀螺仪的⾓速度数据与光流的像素数据进⾏融合,使得在原地摇晃光流时,可以⽤陀螺仪的数据去把光流的数据抵消掉,再把⾼度的信息加进去融合,将最终的像素变化信息转化为实际cm单位,再将该数据与地理坐标系的加速度计进⾏融合。这样可以使得飞机在飞⾏的时候,下⽅有车⼦经过不会严重⼲扰到。
定位思路
1. 定⾼思路:室内纯⽓压定⾼的话,因为室内的⽓压不是很稳定,特别是在飞机飞⾏的过程中,桨叶的风容易⼲扰到⽓压计,导致数据
棘轮棘爪突变,出现飞⾏⾼度不稳定的现象。GUIDANCE是采⽤双⽬加超声波的⽅法实现的,我们这⾥采⽤的是激光,也可以使⽤市⾯上的其他的⾼度传感器。读取激光的⾼度,油门回中的时候记住此时激光⾼度。然后使⽤PID进⾏闭环控制,将最终的结果控制飞机的垂直速度(使⽤SDK中的垂直速度控制API)
。为了避免飞机飞过⼀些不平坦的地⽅,飞⾏⾼度变化太过于剧烈,可以使⽤激光⾼度的变化率,当变化过⼤时,削弱激光修正⾼度的系数,并且当重新稳定的时候再次确定⾼度。
2. 定点思路:从光流模块中,可以得到光流的速度数据,可以通过定时器计算前后⼆次数据的时间间隔,然后将速度进⾏积分,得到距
离,再将速度以及距离进⾏闭环控制,将最终的结果当飞机的⽬标⾓度传⼊API中。另外,在飞⾏过程中关掉光流的作⽤,当遥控杆⼦回中的时候,把⽬标速度变为0,此时不要外环位置环的作⽤,可以达到刹车稳定的⽬标。当刹车后速度在⼀个⼩范围内,就重新加⼊位置环,并且把⽬前的位置当为⽬标位置。
SDK开发注意事项
称量室1. STM32的板⼦初始化后要先等待⼀段时间,可以在初始化中加延时,或者等飞控成功启动再给板⼦上电,否则通讯会不成功。
2. 之前出现过飞控的控制权被抢回去,⾃⼰还不知道,所以⼤家需要给飞机装个灯或者其他东西,进⼊SDK模式的时候,可以通过亮灯
的形式来提醒飞⼿。同样需要写⼀个功能,就是可以通过掰动遥控杆⼦进⼊或退出SDK模式,当⾃⼰
写的东西出错的时候,遥控可以⽴马夺回板⼦的控制权。
3. 在给飞控增加新功能时,要注意⼀定要在模拟器中先验证⼀下,不能直接拿飞机飞⾏验证。(在模拟器中,如果不进⼊SDK模式,是转向轴
默认GPS定位的。⽐如⾃⼰写了光流定位的代码,可以掰动摇杆进⼊SDK模式,此时因为飞机的定位信息来⾃光流模块的信息,⽽不是模拟器中虚拟的GPS信息,所以模拟器中的飞机会慢慢飘⾛,并且飞⾏过程不会刹车。你可以⼿动移动⼀下真实的飞机,那么此时光流就会有移动的数据,模拟器中的飞机就会朝你移动的反⽅向⼀直移动,当你把真实的飞机移动回原来的位置,那么虚拟器中的飞机就会停下来,这样说明定位思路是正确的,才可以拿出去外⾯试试。定⾼修正的思路也是⼀样的,⽬标⾼度确定了,当你拿起真实飞机的时候,模拟器中的飞机肯定是⼀直下降,除⾮你回到之前的位置,它才会停下来)
4. 建议⼤家可以先⽤⼩⼀点的飞机调试(f330或者f450),等调试稳定才再上⼤飞机,⼤四轴有点危险,调试还是命要紧,同样钱也
重要,所以买⼩的来玩玩。
5. ⽆论是想在飞机上开发什么功能,要先在DJI Assistant2软件上把飞控原本的参数调试到最佳,不然其他就⽩做了,本⼈原先在f450
上做好定位功能,整套拆下来装到⼤四轴的时候,⼤四轴飞起来软绵绵的。并且⼤四轴重量变化较⼤时,飞控原本的参数也就没⽤了,所以⼤家要调好参数(基础感度,动⼒带宽,姿态感度,具体可以参考www.iqiyi/v_19rrari2fo.html),使得飞机在定⾼模式飞⾏时姿态平稳,没有抖动,原先就是没有注意这个问题,以为是定位问题,浪费了很多时间。
6. 使⽤API的时候,要注意API可以根据⾃⼰的需求改动,原先的API是当你想控制飞机的姿态⾓度的时候,那么垂直⽅向只能控制⾼
度。当你想控制垂直⽅向的速度时,那么姿态⾓就只能控制⾓速度,因为垂直⽅向⽤⾼度信息还有YAW⽤⾓度控制的话,飞⾏效果不是很好,有点迟钝,想⽤速度控制⼆个API就⽭盾了(可以从模拟器中看出),写了很多代码才实现,后⾯发现可以直接改API,⽅便了很多,我把PITCH,ROLL改成⾓度控制,⽽YAW以及⾼度采⽤⾓速度和速度控制(图⼗),飞起来就⽐较顺⼿,反应⽐之前灵敏(也可能是我⾃⼰不会⽤,我感觉原先的API应该是给⾃动飞⾏设计的)。
7. 光流的安装⽅式也会影响到飞⾏效果,⼀般的光流都是需要装在飞机的正下⽅,如果没有装正下⽅的话需要⾃⼰去修正,如果⽤匿名
光流的话,需要你⾃⼰细看⼀下⼿册,直接在上位机上设置就可以了。(匿名光流可以在淘宝购买,店家就是匿名科创)
自熟粉丝机
8. ⼤四轴飞⾏的时候,如果是在室内,飞⾏的⾼度要⾼⼀些,因为会有地效的作⽤,太低飞机会晃动,调试飞机参数的时候,尽量⾼⼀
些,并且飞机起飞的环境不要太过于密闭。
9. A3等其他飞控同样⽀持SDK⼆次开发,建议可以试试A3,毕竟价格⾼,优势肯定也是有的。
代码⽂件
⽂件名功能
Driver.cpp板⼦初始化,并且判断时间执⾏对应任务
⽂件名功能
Led.cpp buzzer.cpp主要⽤来提醒⾃⼰进⼊SDK模式,⾃⼰⽤了蜂鸣器,⽐赛建议使⽤灯⽐较明显,因为四轴噪声太⼤Time.cpp原先⼤疆例程的系统时钟以及定时器初始化
Control.cpp主要是定位还有发送位置控制指令
Communication.cpp初始化串⼝,⽤来与N3飞控以及电脑上位机通讯
Sub_information.cpp⽤来订阅相关信息
Pid.cpp pid实现的函数,建议⼤家有空可以试试⾃抗⼲扰(ADRC),不过任何改动可以在模拟器还有⼩飞机试试Optical_flow.cpp光流数据接收分析代码,根据买的光流协议编写
代码运⾏流程
该代码在STM32F4上⾯运⾏,这个例程代码默认使⽤正点原⼦的匿名光流模块,该⼯程⽂件运⾏流程如下所⽰:

本文发布于:2024-09-23 05:18:26,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/203303.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:光流   飞机   代码   数据   模拟器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议