大疆社区

标题: 关于FollowMeMession的代码分享 [打印本页]

作者: 一枚MSDK开发者    时间: 2020-12-17
标题: 关于FollowMeMession的代码分享
//启动跟随DJISdkHelper.getFollowMeMissionOperator()?.startMission(
            FollowMeMission(
                FollowMeHeading.TOWARD_FOLLOW_POSITION,
                locateInfo.latitude,
                locateInfo.longitude,
                mAltitude
            )
        )
        { inner1 ->
if (inner1 == null)
                callback.invoke(true)//成功开启跟随回调
                if (null == mUpdateFollowTargetTask) {
                    mUpdateFollowTargetTask = UpdateFollowTargetTask()//新建实时更新跟随点的TimerTask对象
                }
                if(null == mUpdateFollowTargetTimer){r
                    mUpdateFollowTargetTimer = Timer()//新建实时更新跟随点的Timer对象
                }
                //开启实时更新跟随点任务                mUpdateFollowTargetTimer!!.schedule(mUpdateFollowTargetTask, 0, 100L)
            } else {
                if(inner1.errorCode == 176){
                    mHandler.post {
DialogUtils.showTextDialog(mActivity,"随航失败:超过20km",true,null)
                    }
}
                callback.invoke(false)//开启跟随失败回调
            }
        }//实时更新跟随点任务,频率为0.1s
private inner class UpdateFollowTargetTask : TimerTask() {
        override fun run()
            //实时更新跟随点
                       updateCurrentLocateInfo(ConstantsUtil.IS_MAP_TEST)
            //实时更新云台角度
                       //rotateGimbal()
        }

}
//更新跟随点坐标
fun updateCurrentLocateInfo) { val mCurrentLat = DJIFlightModeHelper.getCurrentLocation()!!.latitude       val mCurrentLng = DJIFlightModeHelper.getCurrentLocation()!!.longitude
        followMissionOperator?.updateFollowingTarget(LocationCoordinate2D(mCurrentLat, mCurrentLng)) { inner ->if (inner == null) {                                              
                          "更新跟随点成功:$mCurrentLat,$mCurrentLng".log()                       
                          "follow me state: ${followMissionOperator?.currentState}".log()
                    } else {
                        
"更新跟随点失败:${inner.deion}".log(
                    }
               
}    }


作者: 一枚MSDK开发者    时间: 2020-12-17
由于sdk中没有提供FollowMeMission的示例代码,自己也是一点一点踩坑编写。。。
有一下几点可以注意一下:
1.更新跟随点坐标的频率要适中,过快会导致更新失败,一直报不能执行或者执行超时的错误;也不要太慢,太慢无人机跟不上;我这里使用的频率是100ms。
2.在跟随过程中,可以根据海拔和距离调整云台的角度,来捕捉到跟随点。
3.更新跟随点的监听器会报执行超时或者不能执行的错误,可以不予理会,只需监听到任务开始和任务结束就好了
4.还一个头疼的地方,就是坐标有误差导致跟随不是很准,我这里是高德坐标转84坐标,目前在想办法优化这个问题。。。
作者: kv886    时间: 2020-12-17
学习了
作者: 一枚MSDK开发者    时间: 2020-12-17
kv88612-17 11:23
学习了
学习,共勉!
作者: 菜到进超市    时间: 2021-1-7
感谢楼主, 正好有这个疑问, 还发了帖子.  发完就找到你的帖子了~~~
作者: 菜到进超市    时间: 2021-1-8
本帖最后由 菜到进超市 于 2021-1-8 13:56 编辑
一枚MSDK开发者2020-12-17 10:05
由于sdk中没有提供FollowMeMission的示例代码,自己也是一点一点踩坑编写。。。
有一下几点可以注意一下:
1.更新跟随点坐标的频率要适中,过快会导致更新失败,一直报不能执行或者执行超时的错误;也不要太慢,太慢无人机跟不上;我这里使用的频率是100ms。
2.在跟随过程中,可以根据海拔和距离调整云台的角度,来捕捉到跟随点。
3.更新跟随点的监听器会报执行超时或者不能执行的错误,可以不予理会,只需监听到任务开始和任务结束就好了
4.还一个头疼的地方,就是坐标有误差导致跟随不是很准,我这里是高德坐标转84坐标,目前在想办法优化这个问题。。。
楼主, 我使用这段代码时候, 提示飞机GPS信号弱, 无法跟随.(The GPS signal of the aircraft is weak(216)) 请问你有遇到过吗?   飞机GPS肯定是没问题的, 10颗星
作者: 一枚MSDK开发者    时间: 2021-1-11
菜到进超市Mavic Air 21-8 13:42
楼主, 我使用这段代码时候, 提示飞机GPS信号弱, 无法跟随.(The GPS signal of the aircraft is weak(216)) 请问你有遇到过吗?   飞机GPS肯定是没问题的, 10颗星
启动FollowMe Mission需要满足两个条件:GPS信号满格、无人机当前高度大于10m
作者: 一枚MSDK开发者    时间: 2021-1-11
菜到进超市Mavic Air 21-7 13:48
感谢楼主, 正好有这个疑问, 还发了帖子.  发完就找到你的帖子了~~~
不客气,互相学习
作者: liangS    时间: 2021-4-19
楼主您这个是只能跟踪遥控器的坐标还是可以实现跟踪目标物体发送的gps坐标呢
作者: z__kay-侦察机    时间: 2021-8-3
强啊 老铁 , 虽然看不懂 MSDK 是
MAVIC SDK的意思嘛




欢迎光临 大疆社区 (https://bbs.dji.com/) Powered by Discuz! X3.2