在dji-osdk-ros中使用waypointV2设计飞行任务时,为实现在飞行过程中实时更改航路及动作,在代码中设...
Completed-
这个是sample实现的问题,actionID是保存在主节点的的变量中,航点信息保存在子节点中。这个可以修改一下sample代码解决,两种解决方案供参考: 1、在主节点中修改,上传action后将保存actionID的变量清除 2、参考航点任务的实现,修改到子节点中保存和处理。 存储actionID的代码参考: https://sdk-forum.dji.net/hc/zh-cn/articles/900005798726 -
请问存储actionID的代码( https://sdk-forum.dji.net/hc/zh-cn/articles/900005798726)的回答中截图的是哪个文件的代码?我在dji-osdk-rosv4.1.0的主节点文件dji_vehicle_node.cpp中没有找到类似的代码?
-
之前的问题已经解决,但遇到了另一个问题,在对waypointV2的sample进行修改,使其能实现实时控制航点和动作后,第一次上传航点动作时无人机能正常的起飞,并按照航点飞行,此后,在无人机执行航点任务的飞行过程中实时上传新的航点动作也能通过stopWaypointV2Mission停止当前任务,并按新航点飞行。
问题1:但在一次航点规划任务执行完毕后,在降落的过程中上传新的航点和任务,虽然主节点返回信息表示新的任务成功上传并执行,但实际在dji assistant2的模拟器中,无人机将不会对降落过程中新上传航点做出反应。
问题2:当降落完成后,上传新的航点,无人机也只会起飞并悬停,不会执行航点任务,只有在其悬停时再上传一次新任务,无人机才会开始执行。(上述操作在主节点回报的信息中都显示成功执行新任务,但在模拟器中的表现并非如此)
-
降落完成后再上传任务与第一次上传航点任务应该没有区别。“但在模拟器中的表现并非如此”是指模拟器中测试正常但是实飞异常吗?
不是的,是指在无人机降落后,重新上传新的航点和动作后,调用startmission,以上操作主节点均返回successfully的信息,但是在模拟器中,无人机只是在完成起飞动作后就悬停了,并没有按照新的航点和动作飞行,而在悬停状态下,再一次执行上传航点和动作并调用startmission才能让无人机在模拟器中正常飞行。
总而言之,就是在第一次执行航点任务时只需要上传一次航点任务,执行一次shartmission即可,但当无人机完成一次航点任务并降落停稳后,需要他再执行航点任务时,需要先上传一次航点任务,执行一次shartmission使其悬停,再在悬停状态下上传航点和动作并调用startmission才能完成对应的航点任务。(全程主节点都没有返回错误信息,主节点的终端中返回的都是successfully)
请问可能是什么情况导致了这个问题?
-
如图所示,基于sample简单做个测试,待飞机执行完第一次完全降落后再次执行,测试正常。(方便测试,仅设置两个航点) ![](https://djisdksupport.zendesk.com/attachments/token/8Q7QUZkNpacHuX3KmU3DWMF7a/?name=inline-1638397023.png) ![](https://djisdksupport.zendesk.com/attachments/token/qQBathlwaufZOeQmPpQY7wE0x/?name=inline862056092.png)
Please sign in to leave a comment.
Comments
10 comments