正在上传图片(0/1)

精灵3的一些问题

 0
手机看帖 5 5063
1、把航点任务上传到飞机上去后,怎样判断飞机当前航点任务是否完成?一个航点完成之后,是不是简单的再上传新的航点就行了?还是得先pause,然后再上传,再resume??
2、飞机的速度是怎么控制的?waypoint的speed参数我已经降到很低了,为什么速度还是这么快?看了文档后DJIGroundStationTask里面的的各种speed的作用是什么?是否跟waypoint 里面的maxReachTime有关?
3、怎样控制飞机头的朝向?说的简单点就是怎样控制飞机的yaw角度?waypoint里面的heading参数好像不管用啊?我设置了这个参数,但是在飞行的过程中,飞机头的朝向还是在变化?感觉控制飞机头的朝向有好几个参数同时控制才有效,就像speed一样。


最近遇到好多问题啊!!!!无奈在禁飞区内,要调试要去好远。。。。。。。。。


评论
上传
你需要登录之后才能回帖    登录 | 注册
lanyusea  Inspire 1认证用户 2015-7-2 3#
1. 用downloadGSTask,不过 2.0的API目前无法调用,2.1Beta可以,有需求去发邮件给sdk@dji要beta test权限。具体实现方式如下:(摘抄邮件)

该函数会返回当前所有航点的信息,而非剩余航点的信息(此处与文档记载相左,回帖者注)。您最后一个需求是想打印当前剩余航点的信息,您可以通过downloadGroundStation功能获取当前所有waypoint的信息,然后在飞机每经过一个新的航点的时候都推送过来一个pushinfo,会获取当前waypoint的index信息。这样知道所有waypoint的信息,和当前的waypoint的index,您就可以实现对剩余waypoint的数量的实时监控。

上传新航点需要先pause,上传,再resume。新的航点信息会【覆盖】之前的信息,没飞完的不会保留。

2. waypoint.speed / waypoint.maxReachTime  / DJIGroundStationTask.horizontalSpeed 三者无论是谁都无法设置速度,目前的SDK中速度是写死的(虽然文档上并没有说):(继续摘抄与sdk的邮件)

我们这边已经核实目前我们的waypoint属性的speed值是一个固定的写死的值。在上传航点的过程中,对速度进行赋值并不生效。

3. waypoint中的heading 指的是到达这个航点时候的头朝向,东北地坐标系,0指向正北,+-180指向正南。
两个waypoints飞行途中的头朝向需要设置 DJIGroundStationTask.movingMode:(继续摘抄邮件)

typedef NS_ENUM(NSUInteger, DJIGSHeadingMode){
    /**
     *  Aircraft's heading toward to the next waypoint
     */
    GSHeadingTowardNextWaypoint, (这个就是AUTO 状态,代表飞行器的heading是向下一个航点的方向转动)
    /**
     *  Aircraft's heading using the initial direction
     */
    GSHeadingUsingInitialDirection,(这个是INIT,根据heading的值根据飞机起飞时所对应的角度进行设定,并且一直保持这个值)
    /**
     *  Aircraft's heading control by the remote controller
     */
    GSHeadingControlByRemoteController,(这个是Remote_Control, 可以通过遥控器在飞机飞行航点的时候对机头也就是yaw轴方向进行控制)
    /**
     *  Aircraft's heading using the waypoint's heading value
     */
    GSHeadingUsingWaypointHeading (这个是On the Basis of WayPoint,根据waypoint中heading设置的属性进行设置)
};

按你的需求,应该设置mTask.movingMode = GSHeadingUsingWaypointHeading;
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
楼主   2015-7-3 4#
lanyusea 发表于 2015-7-2 19:56
1. 用downloadGSTask,不过 2.0的API目前无法调用,2.1Beta可以,有需求去发邮件给sdk@dji要beta test权限 ...
你的回答太给力!!!!!正是我所需要的,,,,非常感谢!!!
楼主   2015-7-3 5#
lanyusea 发表于 2015-7-2 19:56
1. 用downloadGSTask,不过 2.0的API目前无法调用,2.1Beta可以,有需求去发邮件给sdk@dji要beta test权限 ...
解决判断航点结束,你看这样行不行? 每次只上传一个点,等哪一个点执行完毕后,再上传下一个点,你看可以吗?不过问题来了,怎样判断一个点执行完毕啊?
lanyusea  Inspire 1认证用户 2015-7-3 6#
qiuhai 发表于 2015-7-3 11:10
解决判断航点结束,你看这样行不行? 每次只上传一个点,等哪一个点执行完毕后,再上传下一个点,你看可 ...
恩…… 我觉得downloadGSTask来判断是否结束是最保险的做法………你做一下比较发现index和totalCount相同的时候即全都飞完了。

其他一些比较tricky的方式我想过,比如说设定 mTask 的DJIGroundStationFinishAction为none(飞完之后啥都不做),
之后用timerTask去fetch MCU callback中飞机的速度,如果速度在长时间内(假设5s)都保持在阈值(假设0.1m/s)以下,即认为航点飞行结束了。

不过我只是设想了一下没有具体尝试过,所以并不能保证可靠性和准确率
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
lanyusea  Inspire 1认证用户 2015-7-11 7#
qiuhai 发表于 2015-7-3 11:10
解决判断航点结束,你看这样行不行? 每次只上传一个点,等哪一个点执行完毕后,再上传下一个点,你看可 ...
找到方式了,
可以用

DJIGroundStationExecutionPushInfo​中的wayPointIndex


这个callback会在飞机到达航点时返回当前航点的索引。
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

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