本文对惯性导航真值生成工具Aceinna生成的数据进行分析。
一、轨迹生成
- 初始点的选择
在配置文件中,填写经纬度,然后使用经纬度转换WGS84莫卡拖坐标,得到米制单位:
def lla2ecef(lla):
'''
[Lat Lon Alt] position to xyz position
Args:
lla: [Lat, Lon, Alt], [rad, rad, meter], numpy array of size (3,)
return:
WGS-84 position, [x, y, z], [m, m, m], numpy array of size (3,)
'''
sl = math.sin(lla[0])
cl = math.cos(lla[0])
sl_sqr = sl * sl
r = Re / math.sqrt(1.0 - E_SQR*sl_sqr)
rho = (r + lla[2]) * cl
x = rho * math.cos(lla[1])
y = rho * math.sin(lla[1])
z = (r*(1.0-E_SQR) + lla[2]) * sl
return np.array([x, y, z])
以上代码中:
x = rho * math.cos(lla[1])
y = rho * math.sin(lla[1])
说明x=y的条件是
c
o
s
(
l
l
a
[
1
]
)
=
=
s
i
n
(
l
l
a
[
1
]
)
cos(lla[1]) == sin(lla[1])
cos(lla[1])==sin(lla[1])这显然是有问题的。
根据实验结果,该函数有些问题。相关参考如下:
- 在线转换
- 使用proj4库函数转换:
from pyproj import Proj, transform
print(transform(Proj(init='epsg:4326'), Proj(init='epsg:3857'), 0.0, 0.0)) # longitude first, latitude second.
# output (meters east of 0, meters north of 0): (-14314.651244750548, 6711665.883938471)
二、使用仿真数据积分
分为两步:
- 使用没有误差加速度与角速度积分结果:(代码)
从图2可以看出,获得的积分结果与真实一致。 - 使用包含有噪声的结果(mid-accuracy)
可以看出测量的加速度有噪声,估计出来的轨迹远端重合度低于无噪声情况。 - 使用包含有噪声的结果(low-accuracy)
在该例中,我们使用了加速度的噪声: b i a s = [ 1.0 e − 1 , 1.0 e − 1 , 1.0 e − 1 ] bias = [1.0e-1, 1.0e-1, 1.0e-1] bias=[1.0e−1,1.0e−1,1.0e−1]