大疆DJI 精灵 4 RTK SDK开发之连接D-RTK 2 高精度GNSS移动站
7月底开始接手dji ux-sdk开发的app的项目。其中解决D-RTK2连接问题的经验,非常鼓舞我,同时也感激刘队长和刘总对我的帮助。所以记录在此。
开始做这块的工作,是参与自https://blog.csdn.net/cf8833/article/details/103053702。按照这个博客的操作,无法连接上D-RTK2
2021年9月29日深夜,我一直没有找到如果精灵 4 RTK SDK开发之连接D-RTK 2 高精度GNSS移动站的方法。官网(https://developer.dji.com/api-reference/android-api/Components/RTK/DJIRTK.html?search=rtkm&i=0&#djirtk_startsearchbasestation_inline)api上写的大部分的函数主要是针对经纬M300 RTK,见下图。甚至业主口中赞不绝口的某斯研发出来的app上,此时我内心已经有些迟疑了,到底精灵4 RTK的SDK是否支持对D-RTK2的连接?
图1 大部分D-RTK2的连接函数只支持m300
刘队长对此质疑,他认为必须要以大疆DEV官方的明确答复才能断定。于是我向官方的客服发送邮件。
在开发者论坛上,DJI的客服提示,设置基站模式的RTK之后,需要重启遥控器。但是精灵4 不带屏遥控器,在重启后确实会去尝试连接D-RTK2,但是遥控却无法连接上无人机了。
此时,刘总也不放弃,他也在看上面的那篇博文件,并且他关注到留言里的一个函数。setRTKChannelEnabled()
图2 博客的留言区提到的关键函数
使用这个函数之后,必须要把重启遥控器的函数屏蔽掉,就能顺利地连上D-RTK了。也就是原理其实很简单,要想连接上D-RTK2就必须把遥控器的RTK连接通道打开,它才能连接上。而刚刚的重启遥控器的操作,也会把遥控器的某个通信链路打开,恰好可以连接上D-RTK2,但是却会断开与无人机的链接。也就是重启过程中只能占用一个通信链路。(这个分析不知道对不对,如有误,请博友们指正)。
D-RTK是适用在 网络RTK无法覆盖的区域.