惯性室内导航入门到精通(1)-步行者航位推算

前言

之前使用rssi室内定位获得大致定位,这时候使用手机内置传感器进行惯性导航,进行综合定位,使定位更精确。

下一篇:惯性室内导航入门到精通(2)-移动平均法

点击:室内定位主页目录+一维实战+二维实战+安卓惯性导航基础


惯性导航概述

惯性导航是一种不借助外力(接收本体之外的信号)的自主性导航,你只要知道自己的初始位置,知道自己的初始朝向,知道自己每一时刻如何改变了朝向,知道自己每一时刻相对朝向是怎样走的,这样就能得到每时每刻自己的位置。

PDR算法概述

PDR算法能在无信标条件下,通过加速度三轴加速度值和方向角对行走路线进行相对定位。在进行PDR算法时候,需要知道步长以及方向。
惯性室内导航入门到精通(1)-步行者航位推算_第1张图片
已知坐标为一个向量(E0,N0),求得步长在该角度的向量。获得下一步位置
惯性室内导航入门到精通(1)-步行者航位推算_第2张图片
所以,当知道步长和方向角即可以获得轨迹。
大致方向,步长计算通过手机内置三轴加速度传感器获得,方向通过加速度传感器以及磁力计共同获得。

加速度传感器

手机中有多种传感器,而我们需要使用其中的加速度传感器来进行导航。加速度传感器是一种能够测量加速度的传感器。在手机静止时,传感器返回的是地球引力9.8m/s^2。通过调用安卓api可以轻松获得三轴的加速度值。
如图所示,手机内置的加速度传感器为三轴加速度传感器,即加速度的变化会显示在x,y,z轴上。举例(当y朝天时三轴为 0,9.8,0 。 当z朝天时为 0 ,0 ,9.8)

惯性室内导航入门到精通(1)-步行者航位推算_第3张图片

加速度传感器的使用

使用系统api

获得系统中的加速度传感器

    private SensorManager sensorManager;
    private Sensor sensor;
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        /**
         * Senor.TYPE_LIGHT:光照传感器
         * Senor.TYPE_GRAVITY:重力传感器
         * SenorManager.getOrientation(); 方向传感器
         * Senor.TYPE_ACCELEROMETER: 加速度传感器
         */
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

注册函数和 解除注册

    protected void onResume() {
        super.onResume();
        if(sensorManager != null){
            /**
             * 第三个参数决定传感器信息更新速度
             * SensorManager.SENSOR_DELAY_NORMAL:一般
             * SENSOR_DELAY_FASTEST:最快
             * SENSOR_DELAY_GAME:比较快,适合游戏
             * SENSOR_DELAY_UI:慢
             */
            sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_UI);
        }
    }
    protected void onPause() {
        super.onPause();
        if(sensorManager != null){
            //解除注册
            sensorManager.unregisterListener(this,sensor);
        }
    }

传感器监听函数

x,y,z值就是加速度传感器的三轴加速度值

public void onSensorChanged(SensorEvent event) {
        //Sensor 发生变化时,在次通过event.values获取数据
        float x =  (event.values[0]);
        float y = (event.values[1]);
        float z = (event.values[2]);
    }

你可能感兴趣的:(室内外定位)