dji-sdk / Mobile-UXSDK-Android

DJI Mobile UXSDK is a suite of product agnostic UI objects that fast tracks the development of Android applications using the DJI Mobile SDK.
Other
152 stars 110 forks source link

请问精灵4 RTK 如何启用? #111

Closed rangerzhou closed 3 years ago

rangerzhou commented 3 years ago

是否有相关教程以及示例,目前通过如下方法设置 RTK:

Aircraft aircraft = (Aircraft) DJISDKManager.getInstance().getProduct();
        if (aircraft != null) {
            FlightController flightController = aircraft.getFlightController();
            RTK rtk = flightController.getRTK();
            // 检查设备是否支持 RTK
            boolean rtkSupported = flightController.isRTKSupported();
            if (rtkSupported) {
                // 启用 RTK 模块
                Objects.requireNonNull(rtk).setRtkEnabled(true, new CommonCallbacks.CompletionCallback() {
                    @Override
                    public void onResult(DJIError djiError) {
                        showToast("启用 RTK 模块: " + djiError);
                    }
                });

                // 判断是否成功开启 RTK
                Objects.requireNonNull(rtk).getRtkEnabled(new CommonCallbacks.CompletionCallbackWith<Boolean>() {
                    @Override
                    public void onSuccess(Boolean aBoolean) {
                        showToast("获取 RTK 状态成功: " + aBoolean);
                    }

                    @Override
                    public void onFailure(DJIError djiError) {
                        showToast("获取 RTK 状态失败: " + djiError);
                    }
                });

            }

            // 设置信号源: 网络 RTK
            Objects.requireNonNull(flightController.getRTK()).setReferenceStationSource(ReferenceStationSource
                    .BASE_STATION, new CommonCallbacks.CompletionCallback() {
                @Override
                public void onResult(DJIError djiError) {
                    showToast("设置信号源为: BASE_STATION: " + djiError);
                }
            });
            flightController.getRTK().addReferenceStationSourceCallback(new ReferenceStationSource.Callback() {
                @Override
                public void onReferenceStationSourceUpdate(ReferenceStationSource referenceStationSource) {
                    showToast("查看当前信号源: " + referenceStationSource.toString());
                }
            });
        }

但是 startMission 的时候总是提示:RTK is not ready,恳请各位大佬指点一二,谢谢!!!

dji-dev commented 3 years ago

Agent comment from Luce Luo in Zendesk ticket #43018:

尊敬的用户,

您好!感谢您联系DJI 大疆创新。 首先,确认下,您的RTK解决方案是哪一类,是否正确设置。 如下setReferenceStationSource,解决方案有3种: 第一种物理基站,BASE_STATION 第二种第三方网络RTK(M210 V2 RTK, M300 RTK, P4M和P4RTK均支持),即由第三方提供的NTRIP RTK信息服务,需要使用setCustomNetworkSettings接口设置第三方账户信息(由第三方提供),并启动startNetworkService开启RTK信息传输 第三种网络RTK(P4RTK, P4M, M300 RTK),即与DJI签订的RTK信息解决方案,需要先添加相关另行RTK库,设置坐标系统setNetworkServiceCoordinateSystem,同时确保activateNetworkService已经激活您的RTK计划,激活仅需要一次,如果在PILOT上激活了无需重复激活,并启动startNetworkService开启RTK信息传输 ​ ​ 然后,使能RTKsetRtkEnabled 最后,通过isRTKBeingUsed获取RTK数据是否正在被使用,判断getPositioningSolution为FIXED_POINT状态即为精度最高 所有流程均可参考DJI PILOT的操作流程。

非常感谢您的理解与配合,祝您生活愉快!

Best Regards,

DJI 大疆创新SDK技术支持

rangerzhou commented 3 years ago

请问在 PILOT 中如何激活 RTK 计划?

dji-dev commented 3 years ago

Agent comment from Luce Luo in Zendesk ticket #43018:

尊敬的用户,

您好!感谢您联系DJI 大疆创新。 Pilot使用问题,建议您可以咨询产品支持 support@dji.com, 相关同事将会更专业的为您解答。

非常感谢您的理解与配合,祝您生活愉快!

Best Regards,

DJI 大疆创新SDK技术支持

rangerzhou commented 3 years ago

谢谢,当前在 https://github.com/dji-sdk/Mobile-SDK-Android/issues/743 咨询相关问题,暂时关闭此 issue,谢谢 DJI 的支持!!!