DJI Android SDK version: 4.11
Matrice 100
/ Matrice 600
我正在尝试垂直脱下无人机。
我在时间轴上尝试使用GoToAction
,但是由于SDK中的某些错误而失败,(由您的支持团队[email protected]#29496确认),我已经开始使用GoToAction,但是没有进行或完成,并且根本没有记录错误。
因为我需要继续工作,所以我尝试了一种变通方法,方法是通过每秒请求的高度20次调用以下函数,将FlightControlData发送到VirtualStick:
VerticalControlMode.POSITION
FlightOrientationMode.AIRCRAFT_HEADING
VirtualStickModeEnabled = true
VirtualStickAdvancedModeEnabled = true
void sendHeightCommand(Float requestedAltitude) {
FlightControlData data = new FlightControlData(0f, 0f, 0f, requestedAltitude);
flightController.sendVirtualStickFlightControlData(data, djiError -> {
log.v(djiError.getDescription);
});
}
并且它可以工作(在适当的超时时间内),但是如果有风,无人机会漂移,这对我来说非常危险,因为现场有不止一架无人机,我不希望它们发生碰撞。
还有另一种改变无人机高度并保持其位置的方法吗?还是有一种方法可以测量风向后推呢?
[*]垂直取下无人机:
我总是在GoToAction之前的timelineMission中使用TakeOffAction升至所需的高度。但是,我使用的是Mavic Pro,而使用无人驾驶飞机的SDK可能会表现出不同。
[将FlightControlData与VirtualSticks一起使用时,我在startPrecisionTakeoff()
类中使用了FlightController
方法;起飞后,连续发送飞行控制数据时,无人机将升至所需位置。
[*]稳定的悬停:
关于悬停,我看到的唯一低成本解决方案是启用FlightAssistant
类中的VisionAssistedPositioning,我不知道Matrice是否支持此功能,因为文档在受支持的飞机上未说明任何内容。
好,解决方案是使用功能:setVirtualStickAdvancedModeEnabled(true)
之所以没有看到任何结果的原因是因为在模拟器中我正在玩20.0 North Wind,这显然太多了。
当我将其降低到5.0时,它可以正常工作。