DJI Matrice 100的垂直起飞

时间:2019-11-12 22:29:53

标签: dji-sdk

DJI Android SDK version: 4.11

Matrice 100 / Matrice 600

我正试图垂直脱下无人机。

我在时间轴上尝试了GoToAction,但是由于SDK中的某些错误而失败,(由您的支持团队dev@dji.com#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);
    });
}

它可以正常工作(在适当的超时时间内),但是如果有风,无人机会飘走,这对我来说非常危险,因为现场有不止一架无人机,我不希望它们碰撞。

是否还有另一种方法来改变无人机的高度,同时保持其位置? 还是有一种方法可以测量风向后推呢?

2 个答案:

答案 0 :(得分:1)

[*]垂直取下无人机:

我总是在GoToAction之前的timelineMission中使用TakeOffAction升至所需的高度。但是,我使用的是Mavic Pro,而SDK与使用矩阵无人机的行为可能会有所不同。

将FlightControlData与VirtualSticks一起使用时,我在startPrecisionTakeoff()类中使用了FlightController方法;起飞后,连续发送飞行控制数据,无人机将升至所需位置。

[*]稳定的悬停:

对于我徘徊的唯一低成本解决方案,是在FlightAssistant类中启用VisionAssistedPositioning,我不知道Matrice是否支持此功能,因为文档在支持的飞机上没有说明任何内容

答案 1 :(得分:1)

好的,所以解决方案是使用以下功能:setVirtualStickAdvancedModeEnabled(true)

之所以没有看到任何结果,是因为在模拟器中我正在玩20.0 North Wind,这显然太多了。

当我将其降低到5.0时,它可以正常工作。