如何设置单元测试以测试自定义DJI任务?

时间:2018-08-22 16:34:27

标签: ios dji-sdk drone

Here,它指出我们可以使用DJISimulator对象来帮助促进连续集成(即单元/集成测试)。但是我似乎无法弄清楚那是怎么可能的。 DJISimulatorDJIFlightController不遵循相同的基本协议,也没有相似的委托。

我想做的是在我的单元测试中,模拟(不附加无人机硬件或运行DJIAssistant 2)无人机起飞并执行我们建立和上传的航点任务,并在完成后,回家并着陆;遵循与我们使用真正的无人机和集成了DJISDK的自定义iOS应用程序飞行时执行的相同代码流。

这可能吗?

1 个答案:

答案 0 :(得分:1)

目前,无法物理上循环运行模拟器( RC + RC)。这是因为实际的模拟是在无人机上进行的,并且针对不同无人机的每个不同的飞行控制器模型都有自己的小怪癖,这使得很难在软件中完全准确地模拟整个事物。

但是,您可以在测试回路中连接并打开电源,而无需实际驾驶无人机即可模拟航点任务。

要开始模拟,请从飞机的DJISimulator获取flightController对象,然后使用所需的位置,频率等调用start simulation方法。启动模拟器后, ,您可以听模拟器的委托方法来获取无人机在模拟世界中的状态。


编辑

要添加更多有关编写单元测试的方法的信息,下面是一系列大致步骤的测试内容,例如:这样的任务[起飞,向北偏航,航点任务,回家和着陆] :

  1. 如果已经打开模拟器,请确保打开模拟器或重新启动以清除无人机状态。
  2. 在单元测试方法中,创建所有时间轴操作并将其添加到时间轴。
  3. 添加时间线进度监听器。每当任何时间轴元素更新时,都会触发此侦听器。您的大多数单元测试逻辑都将放在此块中。例如,如果时间线侦听器元素是索引为1的“飞机偏航”元素,则您知道这是“向北偏航”步骤。因此,只要该元素的状态最终完成,您就可以探查无人机以询问其姿态,并断言它的偏航指向了北方,就像您期望的那样。同样,在航路点期间,到达每个航路点后,您可以检查无人机的gps坐标是否在期望的位置(+几米的错误阈值)。如果时间轴上的任何时间出现错误,则您认为测试失败。
  4. 开始您的时间表。
  5. 由于所有内容都是异步的,因此您需要添加一个等待时间,直到超时时间合理为止,如果直到那时您的时间轴都未成功完成,则认为测试失败。

P.S。如果您希望对任务(航路点,热点等)进行更详细的更新,则还可以订阅以收听MissionOperator侦听器(WaypointMissionOperator,HotpointMissionOperator等)。那些有可能感兴趣的上载/下载侦听器。

此外,在测试的任何时候,您都根本不需要监听模拟器的状态监听器,因为您只需探测无人机的状态即可(位置,电动机是否打开等等),它会提供模拟值,您可以将其与期望值进行核对。