主要内容

使用传感器融合估计手机定位

MATLAB移动™报告从加速计传感器数据,陀螺仪,磁力仪在苹果或安卓移动设备。从每个传感器或原始数据融合定位数据可以获得。这个例子展示了如何比较融合定位手机的方向估计的数据ahrsfilter对象。

读加速度计、陀螺仪、磁强计和欧拉角

读取记录电话传感器数据。的MAT-filesamplePhoneData.mat包含传感器数据登录iPhone在100 Hz采样率。要用你自己的手机数据中运行这个例子,请参考传感器数据采集与MATLAB移动

matfile =“samplePhoneData.mat”;SampleRate = 100;%这必须匹配手机的数据速率。(加速度计、陀螺仪、磁强计,EulerAngles)= exampleHelperProcessPhoneData (matfile);

转换为North-East-Down (NED)坐标系

MATLAB移动使用公约如下图所示。处理的传感器数据ahrsfilter对象,转换为内德,右手坐标系与轴顺时针运动对应于积极的旋转。交换的x轴和y轴和否定z轴的各种传感器数据。注意,加速度计的读数是否定自读数产生相反的两个公约上签字。

phoneAxes.png

加速度计= -[加速度计(:,2)加速度计(:1)加速度计(:,3)];陀螺仪=[陀螺仪(:,2)陀螺仪(:1)陀螺仪(:,3)];磁强计=[磁力仪(:,2)磁强计(:1)磁强计(:,3)];qTrue =四元数([EulerAngles (:, 3) -EulerAngles (:, 2) EulerAngles (: 1)),“eulerd”,“ZYX股票”,“帧”);

正确的电话初始旋转

电话可能随机旋转抵消。不知道偏移量,不能比较ahrsfilter对象和电话的结果。使用第一个四个样品来确定旋转偏移,然后旋转电话数据回到理想的值。

%得到使用ecompass开始猜测取向。没有系数%。使用初始取向估计算出%手机旋转抵消。q = ecompass(加速度计、磁强计);Navg = 4;qfix = meanrot (q (1: Navg)。/ meanrot (qTrue (1: Navg));取向= qfix * qTrue;%旋转修正手机数据。

调优AHRS过滤器

电话,优化噪声参数调优ahrsfilter对象。滤波器的参数需要调整的具体IMU MAT-file电话,记录数据。使用调优函数与记录的定位数据作为地面实况。

orientFilt = ahrsfilter (SampleRate = SampleRate);groundTruth =表(方向);sensorData =表(加速度计、陀螺仪、磁强计);tc = tunerconfig (“ahrsfilter”MaxIterations = 30,ObjectiveLimit = 0.001, =“没有”);调整(orientFilt sensorData groundTruth, tc);

传感器数据融合与过滤器

估计使用调谐设备定位ahrsfilter对象。

重置(orientFilt);q = orientFilt(加速度计、陀螺仪、磁强计);

阴谋的结果

阴谋每个取向估计的欧拉角和四元数之间的距离两个方向估计。四元数之间的角距离是衡量两个四元数。这个距离可以用作取向估计的误差度量。

numSamples =元素个数(方向);t = (0: numSamples-1)。/ SampleRate;d = rad2deg (dist (q、方向));图绘制(t, eulerd(问,“ZYX股票”,“帧”传说)偏航球场标题(“ahrsfilter欧拉角”)ylabel (“度”)包含(“时间(s)”)

图包含一个坐标轴对象。坐标轴对象与标题ahrsfilter欧拉角,包含时间(s), ylabel度包含3线类型的对象。这些对象代表偏航、俯仰,滚。

图绘制(eulerd(取向,“ZYX股票”,“帧”传说)偏航球场标题(“电话欧拉角”)ylabel (“度”)包含(“时间(s)”)

图包含一个坐标轴对象。坐标轴对象与标题电话欧拉角,包含时间(s), ylabel度包含3线类型的对象。这些对象代表偏航、俯仰,滚。

图绘制(t, d)标题(“定位错误”)ylabel (“度”)包含(“时间(s)”)%添加均方根误差rmsval =√意味着(d。^ 2));线(t, repmat (rmsval、大小(t)),线型=“-”。颜色=“红色”);文本(t (1) rmsval + 0.7,“均方根误差= "= + rmsval,颜色“红色”)

图包含一个坐标轴对象。坐标轴对象与标题定位错误,包含时间(s), ylabel度包含3线类型的对象,文本。

使用poseplot查看手机的定位估计三维矩形。

图页= poseplot (MeshFileName =“phoneMesh.stl”);i = 1:元素个数(q)组(pp、“定位”问(我));drawnow结束

图包含一个坐标轴对象。坐标轴对象是空的。