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);
});
}
它可以正常工作(在适当的超时时间内),但是如果有风,无人机会飘走,这对我来说非常危险,因为现场有不止一架无人机,我不希望它们碰撞。
是否还有另一种方法来改变无人机的高度,同时保持其位置? 还是有一种方法可以测量风向后推呢?
答案 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时,它可以正常工作。