无人机在降落阶段,先cancleLanding,然后setGoHomeHeightInMeters设置新的返航高度,...
已完成无人机在降落阶段,先cancleLanding,然后setGoHomeHeightInMeters设置新的返航高度,在设置新的home点,然后startGoHome,飞机没有先飞到返航高度,直接飞过去了,这是为什么?
-
是在航线任务过程中吗?可以描述一下你的使用场景吗? 如果有相关代码,例如航线,可以上传到这个链接:https://pan-sec.djicorp.com/s/F4gj8B5qX6Hts6M 密码是dji123 方便我们模拟你的使用场景来复现问题,定位问题。 -
我使用M2EA在模拟器测试了,初始返航高度是50m,降落到5m左右,重新设置返航高度为30m,并重新设置返航点。我已经将测试视频上传到了https://pan-sec.djicorp.com/s/F4gj8B5qX6Hts6M,密码是dji123。不知道你第二次设置的返航点坐标是多少呢?如果距离很近,可能就继续降落了。 -
private boolean mExecute = false;//
private FlightController flightController = null;
/**
* 5m左右的时候调用一次
*/
public void test() {
if (mExecute) {
FsLog.d("mExecute true");
return;
}
FsLog.d("test");
mExecute = true;
BaseProduct baseProduct = DJISDKManager.getInstance().getProduct();
if (baseProduct instanceof Aircraft) {
flightController = ((Aircraft) baseProduct).getFlightController();
}
if (null != flightController) {
flightController.cancelLanding(new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
FsLog.d("cancelLanding djiError = " + djiError);
flightController.setGoHomeHeightInMeters(30, new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
FsLog.d("setGoHomeHeightInMeters djiError = " + djiError);
double baseLatitude = 22;
double baseLongitude = 113;
Object latitudeValue = KeyManager.getInstance().getValue((FlightControllerKey.create(HOME_LOCATION_LATITUDE)));
Object longitudeValue = KeyManager.getInstance().getValue((FlightControllerKey.create(HOME_LOCATION_LONGITUDE)));
double ONE_METER_OFFSET = 0.00000899322;
if (latitudeValue != null && latitudeValue instanceof Double) {
baseLatitude = (double) latitudeValue;
}
if (longitudeValue != null && longitudeValue instanceof Double) {
baseLongitude = (double) longitudeValue;
}
flightController.setHomeLocation(new LocationCoordinate2D(baseLatitude + 10 * ONE_METER_OFFSET, baseLongitude + 10 * ONE_METER_OFFSET), new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
FsLog.d("setHomeLocation " + djiError);
flightController.startGoHome(new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
FsLog.d("startGoHome = " + djiError);
}
});
}
});
}
});
}
});
}
}
辛苦试试这个方法,是没有上升到30高度就直接飞过去了 -
您有试过将ONE_METER_OFFSET扩大100倍或者1000倍之后再进行一次模拟飞行吗?很可能是两个返航点之间距离较近,因此直接降落了。 ![](https://djisdksupport.zendesk.com/attachments/token/W7bUVUHMfSuou6PSqiqw6zdsX/?name=inline-419139187.png)
请先登录再写评论。
评论
11 条评论