前言
本文总结了使用树莓派4B调用Onboard SDK在模拟器中运行飞行控制样例操控大疆A3飞控所遇到到的各类问题。
在整个调试过程中,大疆这款产品一言难尽。就个人而言,不推荐大疆A3飞控!不推荐大疆A3飞控,不推荐大疆A3飞控!如果因为某些原因必须使用大疆A3飞控,请参考下文。
看完本文,你可以解决在Linux平台上使用Onboard SDK使用大疆A3飞控的大部分问题。大疆N3飞控、经纬系列无人机在使用Onboard SDK遇到问题时也可在一定程度上参考此篇文章。
环境配置
硬件配置
本文使用到的硬件有:
-
大疆A3飞控套装
-
乐迪AT10遥控器套装
-
航模电池
-
树莓派4B
-
Windows电脑
乐迪AT10遥控器套装为SBUS协议的遥控器,可使用其他SBUS协议的遥控器,也可使用大疆的RC遥控器。
航模电池可以使用A3飞控支持的3S~12S锂聚合物电池。
树莓派4B搭载Debian 11 (bullseye) 32位系统,内核版本为6.1。可使用其他任一Linux发行版的虚拟机替换,例如Ubuntu。
软件配置
本文使用到的软件有:
产品激活
由于SDK在首次使用时会校验产品激活信息,且大疆开发者网站必须使用邮箱登录,请将您激活飞控设备的大疆账号绑定常用邮箱。
如果您是新手,请务必跟随下文中的步骤操作。
如果您已注册过大疆账号,且熟悉绑定邮箱操作,请直接登录账号并绑定邮箱,然后跳转到“激活飞控”章节。
如果您已注册过大疆账号且绑定邮箱,请直接跳转到“激活飞控”章节。
注册大疆官网账号
在产品激活之前,请先前往大疆官网注册账号,如图1所示。

在注册完成后,请点击登录按钮进行登录,然后打开“我的账号”,并点击“账号管理”,在“账号管理”界面设置邮箱,如图2、图3、图4所示。



激活飞控
接线
激活飞控前需要对飞控上电。为了给飞控上电,需要先组装飞控套装。
大疆提供的产品手册中已经提供了详细的连线方式,如图5所示。Micro USB--USB的连接线在飞控配套的线缆中可以找到。如果您对连线还有其他疑问,请查阅产品手册。

激活
飞控上电后,请在您的电脑中安装并打开DJI Assistant 2。右上角可以切换语言,如图6所示。隐私政策应当选择“同意”。

接着来到“数据授权”界面,为了正常使用OnBoard SDK,请务必授权所有的数据信息,如图7所示。

一切设置就绪后,会跳转到等待连接页面。

接着,您需要将飞控通过Micro USB--USB线缆连接到电脑。DJI Assistant 2会自动检测并识别飞控。如果您已经将线缆连接到电脑,那么DJI Assistant 2应当会自动检测到,如图9所示。

如果您在插入线缆后,DJI Assistant 2没有识别到飞控,请尝试重复插拔或使用电脑的其他USB接口。如果重复插拔和更换USB接口均无效,请关闭DJI Assistant 2并重新打开。如果重新打开时提示“DJI Assistant 2仍在后台运行中”,请打开电脑的任务管理器,在“进程”页面中搜索“DJI”,在“后台进程”一栏中手动结束进程,如图10所示。

如果您是首次连接飞控,那么会DJI Assistant 2会弹窗提示您登录账号并激活飞控,请登录您的账号并点击激活按钮。一切就绪后,会转到概览页面,如图11所示。您的界面中某些参数显示可能与图11不同,请不要担心。

基础设置
请参考远航科技N3飞控安装视频对飞控和遥控器进行基础设置。虽然教程视频中为N3飞控,但参数设置基本相同,请不必担心。无论您是新手或老手,都请您仔细观看视频,这会影响后续SDK执行是否顺利。
请务必按照视频一步步操作。
请务必按照视频一步步操作,
请务必按照视频一步步操作,
在按照视频操作后,您应当完成以下内容:
-
飞控的安装
-
电调线的安装(如果您计划在纯模拟器中运行,请忽略)
-
遥控器的配对和校准
-
飞控的校准
请务必确保以上项目均设置完毕。
串口连接飞控
在基础设置完成后,我们需要进行SDK相关配置并使用串口连接到飞控。您可以参考这篇文章进行SDK相关配置并使用串口连接到飞控。
大疆SDK
下载SDK
在确保可以使用串口正确与飞控通信后,需要下载大疆官方的OnBoard SDK。
根据官方文档,目前最新的Onboard SDK版本为4.1,但A3飞控最高仅支持Onboard SDK 3.9版本,官方推荐使用3.9版本,且固件需要更新到最新版本,如图12所示。同时,大疆开发者官网中的文档也仅支持4.1版本的SDK,如需查看3.9版本的文档,请点击此处下载。

在了解到版本支持情况后,请连接到Linux虚拟机或者树莓派开发板,执行以下命令安装依赖。
sudo apt update
sudo apt install -y git g++ cmake
依赖安装完成后,您可以通过git下载OnBoard SDK 3.9版本、打开OnBoard SDK 3.9的github页面下载压缩包、点击当前页面顶部的资源下载。
如果您选择使用git下载,请执行以下命令下载并切换到代码主目录。
git clone -b 3.9 https://github.com/dji-sdk/Onboard-SDK.git
cd Onboard-SDK/
如果您选择下载压缩包,请自行下载压缩包并上传到Linux虚拟机或者树莓派开发板,并执行下面的命令解压缩和切换到代码主目录。
sudo apt update
sudo apt install unzip
unzip Onboard-SDK-3.9.zip
cd Onboard-SDK-3.9/
切换到代码主目录后,请执行下面的命令创建编译目录并进行编译。
mkdir build && cd build
cmake ..
make
注册APP
在程序编译的同时或者程序编译完成后,您需要前往大疆开发者官网。登录大疆账号,如图13和图14所示。由于SDK在首次使用时会校验产品激活信息,且大疆开发者网站必须使用邮箱登录,请将您激活飞控设备的大疆账号绑定常用邮箱,并登录激活飞控设备的大疆账号。


登录完成后,请点击右上角的头像,进入“个人中心”,如图15所示。

在“个人中心”点击右上方的“创建应用”,并填写相应信息,最后点击“创建”按钮,如图16和图17所示。您在此处可能与图16有所区别,请不必担心。
注意APP Type必须选择为OnBoard SDK,其他信息如实填写即可。如果您从未注册过大疆开发者,这里可能会要求您填写申请信息,请不必担心。如实填写信息后申请会立刻通过。


在应用创建完成后,“个人中心”界面应当图18所示。尽管大疆官网提示“请在激活邮件中激活你的应用”,但是我在使用163邮箱时,并不会收到首封邮件,而需要我手动点击“重发邮件”按钮,进行邮件重发操作,如图19所示。


点击邮箱中的邮件激活并查看APP信息,应当如下图所示。请记录此处的APP ID和APP Key。

回到我们的Linux虚拟机或者树莓派开发板,在程序编译完成后,执行下面的命令拷贝模板,如图21所示。如果拷贝失败,请使用pwd命令检查当前所在的目录,当前所在目录应当为Onboard SDK主目录下的build目录。
cp ../sample/platform/linux/common/UserConfig.txt bin/

最后,使用你熟悉的编辑器编辑刚刚拷贝的UserConfig.txt文件,这里以vi为例,执行下面的命令进行编辑。
cd bin/
vi UserConfig.txt
此时,文件内容应该如图22所示。请将大疆开发者个人中心中的APP ID与APP KEY复制粘贴到此处,并根据自己实际的情况修改设备地址和波特率。最终效果应该如图23所示。
在vi编辑器中,按下键盘上的字母“i”进入插入模式。按下键盘上的“ESC”,输入“:wq”,按下回车键即可退出。


运行飞行示例程序
在执行飞行示例程序之前,您需要检查以下内容:
-
遥控器已打开
-
飞控已通过USB线缆连接到DJI Assistant 2
-
遥控器已与接收机配对
-
接收机已正确连接到飞控
-
遥控器已正确设置通道类型
-
遥控器已正确校准
-
遥控器左右摇杆均处于正中心
确保以上内容无误后。打开DJI Assistant 2,切换到“模拟器页面”,点击“打开”按钮。接着点击“开始仿真”,如图23和图24所示。开始仿真成功后,飞控LED灯会经过一系列变化,最终变为绿灯常闪或黄灯常闪。
如果遥控器当前设定的姿态为A模式,则飞控黄灯常闪,其只能进行常规的起飞和降落。如果您想让其执行更复杂的控制,请拨动遥控器的姿态切换开关,将其切换为P模式,此时其LED灯绿灯常闪。更多关于LED灯的信息请参考“附录”章节的“飞控LED状态”。


点击开始仿真后,仿真窗口并不会弹出。而是会自动最小化,请您手动打开仿真窗口,如图25所示。

最后,让我们执行以下命令运行飞行控制示例程序。
sudo ./djiosdk-flightcontrol-sample UserConfig.txt
一般情况下,您是通过新创建的APP ID和APP KEY运行示例程序。因此,第一次运行时会提示L801:NEW_DEVICE_ERROR,如图26所示。大疆会在第一次运行时通过DJI Assistant 2连接的电脑向大疆服务器进行注册。因此该步骤的DJI Assistant 2需一直保持连接,并且连接的电脑可以访问互联网。

此时不必担心,我们只需再次运行示例程序即可。

最后,我们输入“a”即可执行最简单的起降任务,如图28所示。模拟器中的状态是完全同步的。

接着我们可以再次运行飞行控制示例程序执行b起降+简单控制任务,如图29所示。要想执行b任务,遥控器的模式必须设置为P,此时飞控的LED必须为绿灯慢闪。

报错处理指南
连接飞控时报错L822:UNKNOW_ACK_ERROR_CODE
错误详情

错误分析
该错误是因为Linux上位机不能成功连接到飞控。
解决方案
请参考串口连接大疆A3飞控尝试排查问题。
指定飞行任务后报错L818: MOTOR_FAIL_HAVE_RUN_SIM
错误详情

错误分析
大疆Onboard SDK中API Reference--ErrorCode--CommonACK类中指示了该错误代码。

该错误代码的解释为:“模拟器已经运行”。出现该问题时,飞控的LED指示灯往往为红绿灯交替闪烁,该状态指示飞控正处于模拟器模式,但又无法成功连接到模拟器。
解决方案
解决思路是使飞控退出模拟器模式或者使飞控连接到模拟器。目前还没有探索出使飞控退出模拟器模式的方法,官方文档中也没有相关说明。之前有几次在DJI Assistant 2中“基本设置”页面,“ESC设置”中进行任意一个电机的测试,有时可以成功使其退出模拟器模式,但该方法有时又不起作用。因此,此处更推荐使用使飞控连接到模拟器的方法。
-
重新开始仿真(推荐)
在DJI Assistant 2的“模拟器”页面中,点击“打开”按钮,接着点击“开始仿真”按钮即可重新开始仿真。开始仿真成功后,飞控LED灯会经过一系列变化,最终变为绿灯常闪或黄灯常闪。更多关于飞控LED灯信息,请参考文末“附录”中的“飞控LED”章节。


指定飞行任务后报错L822:UNKNOW_ACK_ERROR_CODE
错误详情

错误分析
注意!该报错会在多处地方出现,请核对出现的位置,确保该报错出现在指定飞行任务后!
注意!该报错会在多处地方出现,请核对出现的位置,确保该报错出现在指定飞行任务后!
注意!该报错会在多处地方出现,请核对出现的位置,确保该报错出现在指定飞行任务后!
该报错目前出现原因不明,可能是遥控器状态或飞控状态有误。
解决方案
-
关闭遥控器开关再重新打开。
-
断开飞控电源并重新上电。
-
重新刷写飞控固件。
遇到此问题时,我通过关闭遥控器开关再重新打开解决了这个问题。如果该方法无效,建议可尝试断开飞控电源并重新上电、重新刷写飞控固件等其他措施。
运行飞行控制示例程序时报错L818: MOTOR_FAIL_ASSISTANT_PROTECTED
错误详情

错误分析
大疆Onboard SDK中API Reference--ErrorCode--CommonACK类中指示了该错误代码。

该错误代码的解释为“通过USB数据线将飞行器与调参软件连接”。
但经过测试,该错误事实上是因为遥控器配置错误。
解决方案
请检查以下内容:
-
遥控器已打开
-
飞控已通过USB线缆连接到DJI Assistant 2
-
遥控器已与接收机配对
-
接收机已正确连接到飞控
-
遥控器已正确设置通道类型
-
遥控器已正确校准
-
遥控器左右摇杆均处于正中心
-
模拟器打开并已点击“开始仿真”
如果遥控器已打开、飞控已通过USB线缆连接到DJI Assistant 2、遥控器已正确与接收机配对、接收机已正确连接到飞控、遥控器已正确设置通道类型,DJI Assistant 2的主界面左下角会正确显示“RC状态”;如果遥控器未正确连接,那么“RC状态”会显示为“失控”,如图48所示。
如果您不了解遥控器如何与接收机进行配对,请参考遥控器说明书。
如果您不会将接收机正确连接到飞控,请参考《A3用户手册》中“安装”章节的“开始安装”部分正确接线。如果遥控器正确与接收机配对且接收机正确连接到飞控,遥控器中的“信号”指示应当显示有较强的信号。
如果遥控器没有设置正确通道类型或遥控器未正确校准,请观看远航科技的N3飞控安装视频,大约从7:56秒开始。如果您是小白用户,强烈建议完整观看此视频。设置完成后,拨动遥控器的左右摇杆,DJI Assistant 2的“概览”页面中的“控制”部分关于遥控器的A、E、T、R通道中显示的蓝色条应当会发生变化,如图49所示。
如果遥控器左右摇杆未处于正中心,请将其拨动至正中心。如果均位于正中心,此时DJI Assistant 2的“概览”页面中的“控制”部分关于遥控器的A、E、T、R通道中显示的蓝色条应当均位于红线附近,如图50所示。



附录
飞控LED灯
请参考大疆A3飞控LED指示灯状态简析及异常状态处理方法了解飞控LED灯状态和错误时的修复方案。