惯性导航系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 既然为平台式,应该有一个笨重稳定的平台。可我们没有
• 桌面倾斜、不平整、手机摄像头后面的突起都会造成手机静止平整放置时x、y轴初 始加速度不为0。在导航的过程中始终有一个偏置
纠偏方法
• 尽量保持平台水平稳定平整
• 手机屏幕向下放置 • 加速度减去手机机体静止时的x、y轴方向的初始加速度偏置
求解x、y轴方向加速度初始偏置
算法细节
算法细节
求得每个时间段的速度变化量
初始速度为0,累加即可求得每个时间段的 近似速度
时间段的速度乘以时间间隔为 此时间段走的路程
每段路程累加即为当前时刻的位置
算法缺陷
APP的采样频率直接影响精度。频率越高,求得的速度变化量越准确,位置越准确
未进行滤波处理。可能会有某些噪声影响准确度
平台倾斜
惯性导航系统的类型
• 捷联式
• 平台式
捷联式惯性导航系统
• 圆锥效应?
• 坐标系换算? • 数据源:陀螺仪、加速度计
• 四元数?
• 四元数转角欧拉公式? • 卡尔曼滤波?
动手!数据收集
• 数据线不方便
• Android?抱歉不会 • Java ? SDK ? Qt ?
• 采用SENSER UDP ----使用UDP协议的APP
数据传输 使用UDP缺点
数据包是否丢失?
是否有延时?
数据采集最好的情况是在Android上收集完毕后发送到电脑上,为什么不这样做呢?因为我不会Android啊
Python自制套接字UDP服务器
为什么不使用捷联式?
• 问题:一个安卓手机只能运行一个Sensor UDP, 一个APP只能收集一个传感器数据
• 解决:把两个安卓手机绑在一起,使用两个服务器收集数据
• 问题:两个服务器收集到的数据数目来自百度文库等。也就是说两个手机不同步,数据不同步
• 解决:无法解决
• 问题:捷联式算法复杂,难以理解,学力不足!!!
• 解决:好好学习,好好专研
确定方案:平台式
使用加速度计
一台手机 二维方向运动
UDP协议传输数据
结构设计
数据结构
• 采集到的数据是离散型加速度信号,采集频率为50Hz(每秒采集50个数据左右)
• 使用list储存服务器接收的x、y、z轴加速度信号。时间段内所有的list合并为一个 numpy.array数组。再对numpy.array数组切割分别得到这个时间段x、y、z轴的 各个时刻的加速度值。
• 数据可视化
• 而且,手机运动的时候会对平面的水平稳固造成影响
第二个问题 时间
• 计时方式不可靠。
• 计时方式为程序计时:开始时间为服务器接收到第一个UDP数据包后,结束时间为 关闭文件读写句柄前。 • 计时期间:数据传输延时、程序卡顿、程序运行、数据丢失都会造成结果的不准确。
• 最可靠的计时方法是:在Android采集数据时,增加一个时间项(可惜我不会安卓)
惯性导航系统
这是个尽力完成的不完美的作品
• 纯造轮子
• 编程能力有限 • 复习压力大,百忙抽空完成
资料来源
• 纯粹按照自己的想法来做的
• 为什么?
环境
• 采集数据:Android
• 数据传输:路由器 • 数据处理:Debian Linux Python
对惯性导航系统的理解
• 惯性导航系统就是依靠自己内部的惯性仪器感知自己的运动情况,推测自己的 位置
• 在静止的手机收集到的加速度信号曲线中,寻找一条水平直线,使得水平直线与信 号曲线在上下两端围成的面积相等。这就是初始偏置。
• 问题:如何寻找出这条曲线? • 近似的解决方案:每一点的加速度和求平均值,近似为此直线。
求解加速度初始偏置遇到的第二个问题
• 由于硬件缘故,以及环境中总是存在着或大或小的震动。使得同外界条件下重复测 试得到的加速度初始偏置总是改变。
系统运行流程
• 1:手机静止,采集静止加速度数据
• 2:对静止加速度数据分析,获取平面倾斜程度信息。获取初始加速度偏移量 • 3:收集机体运动时加速度数据。
• 4:对运动加速度分析,减去初始偏移量,画出运动曲线
系统效果
• 十分不理想
• 改进方向,采用捷联式,对平整度要求小。实时矫正。
• 桌面倾斜、不平整、手机摄像头后面的突起都会造成手机静止平整放置时x、y轴初 始加速度不为0。在导航的过程中始终有一个偏置
纠偏方法
• 尽量保持平台水平稳定平整
• 手机屏幕向下放置 • 加速度减去手机机体静止时的x、y轴方向的初始加速度偏置
求解x、y轴方向加速度初始偏置
算法细节
算法细节
求得每个时间段的速度变化量
初始速度为0,累加即可求得每个时间段的 近似速度
时间段的速度乘以时间间隔为 此时间段走的路程
每段路程累加即为当前时刻的位置
算法缺陷
APP的采样频率直接影响精度。频率越高,求得的速度变化量越准确,位置越准确
未进行滤波处理。可能会有某些噪声影响准确度
平台倾斜
惯性导航系统的类型
• 捷联式
• 平台式
捷联式惯性导航系统
• 圆锥效应?
• 坐标系换算? • 数据源:陀螺仪、加速度计
• 四元数?
• 四元数转角欧拉公式? • 卡尔曼滤波?
动手!数据收集
• 数据线不方便
• Android?抱歉不会 • Java ? SDK ? Qt ?
• 采用SENSER UDP ----使用UDP协议的APP
数据传输 使用UDP缺点
数据包是否丢失?
是否有延时?
数据采集最好的情况是在Android上收集完毕后发送到电脑上,为什么不这样做呢?因为我不会Android啊
Python自制套接字UDP服务器
为什么不使用捷联式?
• 问题:一个安卓手机只能运行一个Sensor UDP, 一个APP只能收集一个传感器数据
• 解决:把两个安卓手机绑在一起,使用两个服务器收集数据
• 问题:两个服务器收集到的数据数目来自百度文库等。也就是说两个手机不同步,数据不同步
• 解决:无法解决
• 问题:捷联式算法复杂,难以理解,学力不足!!!
• 解决:好好学习,好好专研
确定方案:平台式
使用加速度计
一台手机 二维方向运动
UDP协议传输数据
结构设计
数据结构
• 采集到的数据是离散型加速度信号,采集频率为50Hz(每秒采集50个数据左右)
• 使用list储存服务器接收的x、y、z轴加速度信号。时间段内所有的list合并为一个 numpy.array数组。再对numpy.array数组切割分别得到这个时间段x、y、z轴的 各个时刻的加速度值。
• 数据可视化
• 而且,手机运动的时候会对平面的水平稳固造成影响
第二个问题 时间
• 计时方式不可靠。
• 计时方式为程序计时:开始时间为服务器接收到第一个UDP数据包后,结束时间为 关闭文件读写句柄前。 • 计时期间:数据传输延时、程序卡顿、程序运行、数据丢失都会造成结果的不准确。
• 最可靠的计时方法是:在Android采集数据时,增加一个时间项(可惜我不会安卓)
惯性导航系统
这是个尽力完成的不完美的作品
• 纯造轮子
• 编程能力有限 • 复习压力大,百忙抽空完成
资料来源
• 纯粹按照自己的想法来做的
• 为什么?
环境
• 采集数据:Android
• 数据传输:路由器 • 数据处理:Debian Linux Python
对惯性导航系统的理解
• 惯性导航系统就是依靠自己内部的惯性仪器感知自己的运动情况,推测自己的 位置
• 在静止的手机收集到的加速度信号曲线中,寻找一条水平直线,使得水平直线与信 号曲线在上下两端围成的面积相等。这就是初始偏置。
• 问题:如何寻找出这条曲线? • 近似的解决方案:每一点的加速度和求平均值,近似为此直线。
求解加速度初始偏置遇到的第二个问题
• 由于硬件缘故,以及环境中总是存在着或大或小的震动。使得同外界条件下重复测 试得到的加速度初始偏置总是改变。
系统运行流程
• 1:手机静止,采集静止加速度数据
• 2:对静止加速度数据分析,获取平面倾斜程度信息。获取初始加速度偏移量 • 3:收集机体运动时加速度数据。
• 4:对运动加速度分析,减去初始偏移量,画出运动曲线
系统效果
• 十分不理想
• 改进方向,采用捷联式,对平整度要求小。实时矫正。