Skip to main content

RTK教程


RTK教程

1. 概述

RTK(Real-time Kinematic)即载波相位动态实时差分技术,是常用的全球定位测量方法,可提供厘米级的定位精度。目前支持机载千寻网络RTK和Ntrip RTK的接入。

2. 接口调用流程

2.1 添加RTK流程状态监听

示例代码如下:

        RTKCenter.get().addRTKSystemStateListener(this)

2.2 初始化

示例代码如下:


RTKCenter.get().init()

注意:方法中默认设置RTK模块为启用状态。

2.3 RTK模块启用状态

获取RTK启用状态,示例代码:


RTKCenter.get().getAircraftRTKModuleEnabled(onSuccess = {

//success
}, onFailure = { code, msg ->
//failure
})

设置启用状态,示例代码:


RTKCenter.get().setAircraftRTKModuleEnabled(isChecked, onSuccess = {
//success
}, onFailure = { code, msg ->
//failure
})

2.4 RTK信号模式

获取信号模式,示例代码如下:


RTKCenter.get().getRTKSignalMode(onSuccess = { mode ->
//success
}, onFailure = { code, msg ->
//failure
})

设置信号模式,示例代码如下:


RTKCenter.get().switchRTKSignalMode(mode, onSuccess = {
//success
}, onFailure = { code, msg ->
//failure
})

2.5 RTK信号类型

获取信号类型,示例代码:

        RTKCenter.get().getRTKSignalType(onSuccess = { type ->
//success
}, onFailure = { code, msg ->
//failure
})

设置信号类型,示例代码:

            RTKCenter.get()
.switchRTKSignalType(rtkSignal = type, rtkConfig = getRtkConfig(), onSuccess = {
//success
}, onFailure = { code, msg ->
//failure
})

注意:设置信号类型会触发相应RTK服务的登录操作。

2.6 移除监听器

示例代码如下:


RTKCenter.get().removeRTKSystemStateListener(this)

3.Sample获取

参考Sample中RTKCenterFragment

4.接口说明


/**
* Copyright: Autel Robotics
* @author Autel on 2024/10/16
* RTK管理类
*/
interface IRTKCenter {

/**
* 初始化
*/
fun init()

/**
* 销毁,释放资源
*/
fun destroy()

/**
* 添加RTK流程状态监听器
* @param listener
*/
fun addRTKSystemStateListener(listener: RTKSystemStateListener)

/**
* 移除RTK流程状态监听器
*/
fun removeRTKSystemStateListener(listener: RTKSystemStateListener)

/**
* 移除所有RTK流程状态监听器
*/
fun clearAllRTKSystemStateListener()

/**
* 是否开启RTK模块
* @param isEnabled
* @param onSuccess
* @param onFailure
*/
fun setAircraftRTKModuleEnabled(
isEnabled: Boolean,
onSuccess: () -> Unit,
onFailure: (code: IAutelCode, msg: String?) -> Unit
)

/**
* 获取是否开启RTK模块
* @param onSuccess
* @param onFailure
*/
fun getAircraftRTKModuleEnabled(
onSuccess: (Boolean) -> Unit,
onFailure: (code: IAutelCode, msg: String?) -> Unit,
)

/**
* 切换RTK信号模式
* @param rtkSignalMode 信号模式
* @param onSuccess
* @param onFailure
*/
fun switchRTKSignalMode(
rtkSignalMode: RTKSignalModeEnum,
onSuccess: () -> Unit,
onFailure: (code: IAutelCode, msg: String?) -> Unit,
)

/**
* 获取RTK信号模式
* @param onSuccess
* @param onFailure
*/
fun getRTKSignalMode(
onSuccess: (RTKSignalModeEnum?) -> Unit,
onFailure: (code: IAutelCode, msg: String?) -> Unit,
)

/**
* 切换RTK信号类型
* @param rtkSignal
* @param rtkConfig
* @param onSuccess
* @param onFailure
*/
fun switchRTKSignalType(
rtkSignal: RTKSignalEnum,
rtkConfig: NetWorkRTKConfig,
onSuccess: () -> Unit,
onFailure: (code: IAutelCode, msg: String?) -> Unit
)

/**
* 获取RTK信号类型
* @param onSuccess
* @param onFailure
*/
fun getRTKSignalType(
onSuccess: (RTKSignalEnum?) -> Unit,
onFailure: (code: IAutelCode, msg: String?) -> Unit,
)


}

/**
* Copyright: Autel Robotics
* @author Autel on 2024/10/17
* RTK 功能系统状态监听
*/
interface RTKSystemStateListener {

/**
* RTK 初始化
* @param status 状态信息
*/
fun onRTKInitStatus(status: RtkSystemStatusBean?)

/**
* RTK 登录状态
*/
fun onLoginStatus(status: RtkSystemStatusBean?)

/**
* 上报RTK数据
* @param report
*/
fun onRTKReportInfo(report: RtkReportBean?)

/**
* RTK 登出
*/
fun onLogoutState()
/**
* RTK 释放资源
*/
fun onDestory()
}

/**
* Copyright: Autel Robotics
* @author Autel on 2024/10/22
*/
data class NetWorkRTKConfig(
//通用参数
var commonConfig: RTKCommonConfig? = null,
//千寻参数
var qxRtkConfig: QXRTKConfig? = null,
//是否千寻
var isQianXun: Boolean? = false
)

//通用RT参数
data class RTKCommonConfig(
var host: String = "",
var port: Int = 0,
var userName: String = "",
var passWord: String = "",
//该值使用AUTO或null,用户可以输入自己获取的挂载点,但不建议这样
var mountPoint: String = "AUTO"
)

//千寻RTK 参数
data class QXRTKConfig(

var key: String? = "",
var secret: String? = "",
var deviceType: String? = "",
var deviceId: String? = ""
)

/**
* Copyright: Autel Robotics
* @author Autel on 2024/10/22
*/
data class RtkSystemStatusBean(
//0:失败,1成功
var code: Int = 0,
var msg: String = ""
)