我遇到一个问题,我执行startTakeOff()
方法,并且在之前(0.5米)无人机到达他假定的高度(1.2米)之前返回了该方法的回调米)-这部分有文档记录(startTakeoff()
)-有点奇怪。返回回调后,我将操作加载到时间轴(获取成功的回调),然后触发startTimeline()
方法,我还注册了一个侦听器,该侦听器打印所有时间轴的事件状态,我看到的是时间轴开始,然后GoToAction
(时间轴的第一位)开始,但无人机什么也不做,什么也不动。
如果我清理时间轴,重新加载动作,然后再次触发startTimeline()
(不调用stopTimeline()
),它将按预期的方式工作。
我的问题是-是否有一种“干净”的方法来延迟takeOff的回调?还是让时间轴运行而无需重新加载? “干净”是指我可以设置一个自定义超时,该超时将加载并启动时间轴,但这不是最佳实践……
答案 0 :(得分:0)
没有OSDK在离开地面时触发回调,您唯一的选择是观察并等待其达到1.2m。
答案 1 :(得分:0)
OSDK仅向您提供一些示例。它不是100%可以正常工作。您应该思考并找到解决问题的方法。
在您的情况下,他们提出的延迟没有任何保证。您需要准确的反馈使其稳定
您可以使用SVO之类的系统来实现此目的。 https://github.com/uzh-rpg/rpg_svo
SVO为您提供您当前无人机状态的反馈。所以不要使用延迟
start take off
while uav not at 1.2 meter -> (take off running) do nothing
while uav airbone -> do the thing you want
此外,您可以设置超时,以防过载和无人机无法成功起飞。
我以前看到人们在Android手机上使用SVO / PTAM / Vinsmono。所以我认为您也可以这样做。