[实例] 误差估计

误差估计

实际工程中,我们经常需要计算目标经纬高信息的最大误差范围。设备通过北斗定位模块获取自身经纬高信息,并配有激光测距设备、倾角传感器等,测量目标的方位角、俯仰角和距离。假如各种传感器的误差如下:

  • 北斗定位水平误差:≤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β[Δdsinβ+dΔβradcosβ]
  • 总水平误差: Δ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=Δβdeg180π
  • Δθ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,deg180π
  • Δ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米。这些值是基于最坏情况下的误差叠加得到的保守估计。实际应用中,误差可能会小于此值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客不孤独

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值