误差估计
实际工程中,我们经常需要计算目标经纬高信息的最大误差范围。设备通过北斗定位模块获取自身经纬高信息,并配有激光测距设备、倾角传感器等,测量目标的方位角、俯仰角和距离。假如各种传感器的误差如下:
- 北斗定位水平误差:≤10m (RMS)
- 北斗定位高程误差:≤10m (RMS)
- 北斗航向角误差:≤0.1° (1σ)
- 设备方位角俯仰角测量误差:≤0.1°
- 激光测距误差:≤5米
- 倾角传感器误差:≤0.1°(已包含在方位角俯仰角误差中)
假设目标距离为8km。为了计算最大误差范围,我们假设所有误差源在最坏情况下叠加,即取绝对值之和。绝对方位角误差由航向角误差和方位角测量误差合成,取0.2°;俯仰角误差取0.1°。
下面我们计算误差范围。
数学原理
目标在ENU坐标系中的误差计算:
- 测量水平误差: Hm=d⋅(Δβrad)2+(Δθa,rad)2H_m = d \cdot \sqrt{(\Delta \beta_{\text{rad}})^2 + (\Delta \theta_{a,\text{rad}})^2}Hm=d⋅(Δβrad)2+(Δθa,rad)2
- 测量垂直误差: Δum=maxβ[Δd⋅∣sinβ∣+d⋅Δβrad⋅∣cosβ∣]\Delta u_m = \max_{\beta} \left[ \Delta d \cdot |\sin \beta| + d \cdot \Delta \beta_{\text{rad}} \cdot |\cos \beta| \right]Δum=maxβ[Δd⋅∣sinβ∣+d⋅Δβrad⋅∣cosβ∣]
- 总水平误差: ΔHtotal=ΔHdevice+Hm\Delta H_{\text{total}} = \Delta H_{\text{device}} + H_mΔHtotal=ΔHdevice+Hm
- 总垂直误差: ΔVtotal=ΔVdevice+Δum\Delta V_{\text{total}} = \Delta V_{\text{device}} + \Delta u_mΔVtotal=ΔVdevice+Δum
其中:
- d=8000 md = 8000\,\text{m}d=8000m
- Δd=5 m\Delta d = 5\,\text{m}Δd=5m
- Δβdeg=0.1∘\Delta \beta_{\text{deg}} = 0.1^\circΔβdeg=0.1∘,转换为弧度: Δβrad=Δβdeg⋅π180\Delta \beta_{\text{rad}} = \Delta \beta_{\text{deg}} \cdot \frac{\pi}{180}Δβrad=Δβdeg⋅180π
- Δθa,deg=0.2∘\Delta \theta_{a,\text{deg}} = 0.2^\circΔθa,deg=0.2∘,转换为弧度: Δθa,rad=Δθa,deg⋅π180\Delta \theta_{a,\text{rad}} = \Delta \theta_{a,\text{deg}} \cdot \frac{\pi}{180}Δθa,rad=Δθa,deg⋅180π
- ΔHdevice=10 m\Delta H_{\text{device}} = 10\,\text{m}ΔHdevice=10m
- ΔVdevice=10 m\Delta V_{\text{device}} = 10\,\text{m}ΔVdevice=10m
Python代码实现
以下代码计算目标经纬高的最大误差范围(水平和高程),单位为米。
import math
# 给定参数
d = 8000 # 距离,单位:米
delta_d = 5 # 测距误差,单位:米
delta_beta_deg = 0.1 # 俯仰角误差,单位:度
delta_theta_a_deg = 0.2 # 绝对方位角误差,单位:度
delta_device_horizontal = 10 # 设备水平误差,单位:米
delta_device_vertical = 10 # 设备高程误差,单位:米
# 将角度误差转换为弧度
delta_beta_rad = math.radians(delta_beta_deg)
delta_theta_a_rad = math.radians(delta_theta_a_deg)
# 计算测量水平误差
H_m = d * math.sqrt(delta_beta_rad**2 + delta_theta_a_rad**2)
# 计算测量垂直误差最大值
# 定义函数 f(beta) = delta_d * sin(beta) + d * delta_beta_rad * cos(beta)
# 通过求导找到最大值点:tan(beta) = delta_d / (d * delta_beta_rad)
beta_opt = math.atan2(delta_d, d * delta_beta_rad)
max_vertical_measurement = delta_d * math.sin(beta_opt) + d * delta_beta_rad * math.cos(beta_opt)
# 总误差
total_horizontal_error = delta_device_horizontal + H_m
total_vertical_error = delta_device_vertical + max_vertical_measurement
# 输出结果
print(f"测量水平误差: {H_m:.2f} m")
print(f"测量垂直误差最大值: {max_vertical_measurement:.2f} m")
print(f"总水平误差: {total_horizontal_error:.2f} m")
print(f"总垂直误差: {total_vertical_error:.2f} m")
结果解释
运行上述代码,得到目标经纬高的最大误差范围:
- 水平误差:41.22米
- 高程误差:24.83米
这意味着目标的位置解算中,水平方向上的误差最大不超过41.22米,高程方向上的误差最大不超过24.83米。这些值是基于最坏情况下的误差叠加得到的保守估计。实际应用中,误差可能会小于此值。
1万+

被折叠的 条评论
为什么被折叠?



