正在上传图片(0/1)

地面站起飞的延时问题

 0
手机看帖 16 6619
Hi,

我想让飞机按照航点飞行。

一开始我直接在程序里面写OpenGS -> UploadWP -> StartGS.

但是发现 upload 和 startGS 经常丢失,经常两三次尝试才能成功一次。丢失的意思不是失败,而是没有任何 return code,仿佛这段代码并没有被执行一样。

我认为是硬件上需要一定的响应时间来处理我这三条命令,于是我加上了delay
OpenGS -> delay 2s -> UploadWP -> delay 2s -> StartGS.

经过测试发现2s是足够的,每次都能一次成功。

后来我把航点数量增加了,从4个增加到十多个。

然后发现问题又出现了,upload总是丢失,有return code也经常提示结果是time out,基本上要三四次尝试才能成功起飞一次。


我怀疑是因为航点数量增多了系统需要的处理时间也增多了,所以需要增加更多的delay。


但总觉得这么做哪里怪怪的好像是我钻到那个错误的胡同里面了……
所以想问一下各位有没有遇到相同问题以及是如何解决的……

Thanks
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
评论
上传
你需要登录之后才能回帖    登录 | 注册
DJI-SDK   2015-6-23 3#
您所反馈的问题我们已经复现,但在解决上有一定困难。如果有任何新的进展,我们会立刻通知您。
qiuhai   2015-6-23 4#
你好,你的地面站功能可以用了吗?OpenGS 没有返回值正常吗?为什么我在用店面站的功能,飞机就是没反应啊?跟禁飞区有关吗?
qiuhai   2015-6-23 5#
哦,打错了,是地面站
qiuhai   2015-6-23 6#
我用的是P3
楼主  Inspire 1认证用户 2015-6-23 7#
固件是开发者固件吗?
我之前也遇到过open失败,后来发现是自己的固件是官网最新固件不是开发者固件导致的
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
qiuhai   2015-6-24 8#
开发者固件在哪下啊?
qiuhai   2015-6-24 9#
我刷的是 P3X_FW_V01.01.1002.bin,有必要升级吗?
楼主  Inspire 1认证用户 2015-6-24 10#
qiuhai 发表于 2015-6-24 10:41
我刷的是 P3X_FW_V01.01.1002.bin,有必要升级吗?
看起来是没错的,你打开地面站之前将遥控器拨到 A 档了么?如果开机时候是 A 需要拨走再拨回来。
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
qiuhai   2015-6-24 11#
lanyusea 发表于 2015-6-24 12:48
看起来是没错的,你打开地面站之前将遥控器拨到 A 档了么?如果开机时候是 A 需要拨走再拨回来。 ...
我们是这样操作的!!
qiuhai   2015-6-24 12#
qiuhai 发表于 2015-6-24 13:04
我们是这样操作的!!
不过我们是在禁飞区内!这个跟禁飞区有关吗?
楼主  Inspire 1认证用户 2015-6-24 13#
qiuhai 发表于 2015-6-24 13:05
不过我们是在禁飞区内!这个跟禁飞区有关吗?
可能会有… 你可以再开一个帖子询问一下 DJI-SDK
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
DJIjz   2015-6-24 14#
在调用startGS之前,先确认回调已经执行了onSuccess。
love123zst.163   2015-6-29 15#
哎! 这个问题我遇到过很多次了,刚才出去飞还遇见了呢…… 现在inspire的upload航点时间很慢,而且内容越多 时间越久,我之前的代码是upload命令执行之后 等待两秒 然后执行takeoff, 但是上次 添加了15个点,每个航点添加三四个action,发现我开始takeoff的时候还没收到upload的ack…… 没办法,添加ack等待机制,等待每一步执行完后再执行下一步,要不就增加等待时间……
至于丢失 航点这个问题,我觉得最坑爹了…… 当前我也没解决方案, 继续关注你这个帖子,等群主回复……
楼主  Inspire 1认证用户 2015-6-29 16#
love123zst.163 发表于 2015-6-29 14:43
哎! 这个问题我遇到过很多次了,刚才出去飞还遇见了呢…… 现在inspire的upload航点时间很慢,而且内容越 ...
解决方案是:用handler在result success里面call下一步function
例如:(伪代码)

    private void openGS() {
        DJIDrone.getDjiGroundStation().openGroundStation(new DJIGroundStationExecuteCallBack(){
            @Override
            public void onResult(GroundStationResult result) {
                if (result.value() == 3)
                    GSHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            uploadGS();}
                    });

    private void uploadGS() {
        DJIDrone.getDjiGroundStation().uploadGroundStationTask(mTask, new DJIGroundStationExecuteCallBack(){
            @Override
            public void onResult(GroundStationResult result) {
                // TODO Auto-generated method stub
                if (result.value() == 3) {
                    handler.sendMessage(handler.obtainMessage(SHOWTOAST, "Task Upload Success"));
                    GSHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            startGS();}
                    });

    private void startGS() {
        DJIDrone.getDjiGroundStation().startGroundStationTask(new DJIGroundStationTakeOffCallBack(){

            @Override
            public void onResult(GroundStationTakeOffResult result) {
                // TODO Auto-generated method stub
                if (result.value() == 3) {
                    handler.sendMessage(handler.obtainMessage(SHOWTOAST, "Take off Success"));



然后在onclick里面只call第一个openGS就可以了

我不懂Android所以即便我用了Handler但我觉得我这种用法是不对的,好像只是在result success里面单纯的call了function而已…

但可以正常工作,每次100%成功率起飞,而且点下button到飞起来不超过1s。

所以我认为数据传输是没有延时问题的,问题应该在于delay,有可能是java的编译器某种奇怪的优化打断了上传
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
love123zst.163   2015-6-29 17#
这个方法可以,理论说也没错,回调机制 等待返回后在起飞……

我们的环境比较复杂一点,我们要在PC端操控飞机,并且使用飞机的反馈数据,因为大疆不提供PC端SDK,我们没办法只能做了一个手机中转,又重新把所有的SDK 接口封装了一遍,每个result success 里面执行的都是往PC端发送一个响应的ACK。

不过你这点倒是提醒我了,我可以再封装一个接口,上传航点后直接一起飞的接口
楼主  Inspire 1认证用户 2015-6-29 18#
love123zst.163 发表于 2015-6-29 15:13
这个方法可以,理论说也没错,回调机制 等待返回后在起飞……

我们的环境比较复杂一点,我们要在PC端操控 ...
Otz.... 我觉得你们还是去买一个matrice 100吧………
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
收藏 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表