精华内容
下载资源
问答
  • 方向传感器---使用加速度传感器和地磁传感器共同实现

    布局很简单:

    activity:

    /**
     * 方向加速度:使用加速度传感器和地磁传感器共同实现。
     * 此模拟简易指南针功能。
     */
    
    public class ActOrientationSensor extends AppCompatActivity {
    
        @BindView(R.id.img_compass)
        ImageView imgCompass;
        @BindView(R.id.img_arrow)
        ImageView imgArrow;
    
        private SensorManager sensorManager;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_act_orientationsensor);
            ButterKnife.bind(this);
    
            sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
            Sensor magneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
            Sensor accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            sensorManager.registerListener(sensorEventListener, magneticSensor, SensorManager.SENSOR_DELAY_GAME);
            sensorManager.registerListener(sensorEventListener, accelerometerSensor, SensorManager.SENSOR_DELAY_GAME);
        }
    
        private SensorEventListener sensorEventListener = new SensorEventListener() {
            float[] accelerometerValues = new float[3];
            float[] magneticValues = new float[3];
            private float lastRotateDegree;
            @Override
            public void onSensorChanged(SensorEvent event) {
                //判断当前是加速度传感器还是地磁传感器
                if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
                    //注意赋值时要调用clone()方法,
                    //不然accelerometerValues和magneticValues将会指向同一个引用
                    accelerometerValues = event.values.clone();
                } else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
                    //注意赋值时要调用clone()方法,
                    //不然accelerometerValues和magneticValues将会指向同一个引用
                    magneticValues = event.values.clone();
                }
                float[] R = new float[9];
                float[] values = new float[3];
                //为R数组赋值
                SensorManager.getRotationMatrix(R, null, accelerometerValues, magneticValues);
                //为values数组赋值,values中就已经包含手机在所有方向上旋转的弧度了
                SensorManager.getOrientation(R, values);
                //1.values[0]表示手机围绕Z轴旋转的弧度;
                //2.values[0]的取值范围为-180度到180度,
                //正负180度表示正南方向,0度表示正北方向,
                //-90度表示正西方向,90度表示正东方向;
                //3.Math.toDegrees()把弧度转换成角度;
                //将计算出的旋转角度取反,用于旋转指南针背景图
                float rotateDegree = -(float)Math.toDegrees(values[0]);
                if(Math.abs(rotateDegree - lastRotateDegree) > 1){
                    RotateAnimation animation = new RotateAnimation(
                            lastRotateDegree, rotateDegree,
                            Animation.RELATIVE_TO_SELF, 0.5f,
                            Animation.RELATIVE_TO_SELF, 0.5f);
                    animation.setFillAfter(true);
                    imgCompass.startAnimation(animation);
                    lastRotateDegree = rotateDegree;
                }
            }
    
            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
            }
        };
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if (sensorManager != null) {
                sensorManager.unregisterListener(sensorEventListener);
            }
        }
    }
    
    
    展开全文
  • 以下是自己查看网上资料写的算法,但是实际测试发现,我希望的是静止状态下得到的实际加速度应该为零,但是按照重力加速度向x,y,z分量的角度写的当下的算法是不等于0的,和实际要求不符合;请求好心人指点以下: ...
    以下是自己查看网上资料写的算法,但是实际测试发现,我希望的是静止状态下得到的实际加速度应该为零,但是按照重力加速度向x,y,z分量的角度写的当下的算法是不等于0的,和实际要求不符合;请求好心人指点以下:
    


    public void onSensorChanged(SensorEvent evt) {
    // TODO Auto-generated method stub
    if (evt.sensor.getType() == Sensor.TYPE_ORIENTATION) {
    Or_x = evt.values[SensorManager.DATA_X];
    or_x = (double) Or_x;
    Or_z = evt.values[SensorManager.DATA_Z];

    or_z = (double) Or_z;

    Or_y = evt.values[SensorManager.DATA_Y];
    or_y = (double) Or_y;

    }

    if (evt.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
    AccelX = evt.values[SensorManager.DATA_X];
    AccelY = evt.values[SensorManager.DATA_Y];
    AccelZ = evt.values[SensorManager.DATA_Z];
    }
    // ///
    ac_hx = Math.sin(or_z * 3.1415926 / 180) * 9.81;//静止状态下or_z翻转角下x方向固有的加速度
    axp = (AccelX - ac_hx);//实际加速度


    // ///
    ac_hy = Math.sin(-or_y * 3.1415926 / 180) * 9.81;;//静止状态下or_y翻转角下y方向固有的加速度

    ayp = AccelY - ac_hy;//实际加速度

    // ///
    ac_hz = Math.sqrt(9.81*9.81 - ac_hx * ac_hx + ac_hy * ac_hy);
    //静止状态z方向固有的加速度


    azp = (AccelZ - ac_hz);//实际加速度


    // ///
    Log.i("axp", "axp===" + axp);
    Log.i("ayp", "ayp===" + ayp);
    Log.i("azp", "azp===" + azp);

    Tapplication.dangxia_ac_x = axp;
    Tapplication.dangxia_ac_y = ayp;
    Tapplication.dangxia_ac_z = azp;

    Tapplication.bundle_insert_data_valide = true;

    // ///
    }
    展开全文
  • X、Y、Z的负方向加速度值的正值,正方向加速度值的负值。 例如:无人机在静止放置时,重力加速度值为正值 (由于加速计内部小球有对底部弹簧的重力朝-Z方向)。 那么:若无人机朝下减速,力朝-Z,则示数为正值;...

    X、Y、Z的负方向为加速度值的正值,正方向为加速度值的负值。

    例如:无人机在静止放置时,重力加速度值为正值 (由于加速计内部小球有对底部弹簧的重力朝-Z方向)。

    那么:若无人机朝下减速,力朝-Z,则示数为正值;若自由落体,则示数为0(自由落体运动时,小球和底部无压力)。

    上面图片供自行脑补,如有争议联系QQ:295951389。

    展开全文
  • 三轴加速度计的原理和方法

    万次阅读 2014-12-07 06:25:05
    现如今,很多现代人都非常注重自己的日常锻炼,计步作为一种有效记录监控锻炼的监控手段,被广泛应用在移动终端的... 为避免上述问题的出现,我们可以考虑一种新的测步方法,即:通过设备上的加速度传感器来计算步数

    现如今,很多现代人都非常注重自己的日常锻炼,计步作为一种有效记录监控锻炼的监控手段,被广泛应用在移动终端的应用中。

      目前,大部分的计步都是通过GPS信号来测算运动距离,再反推行走步数实现的。这种方法很是有效,但在室内或没有GPS信号的设备上无法工作。同时,GPS精度对结果的干扰也比较大。

      为避免上述问题的出现,我们可以考虑一种新的测步方法,即:通过设备上的加速度传感器来计算步数,在不支持GPS的设备上也可正常工作。还可以与GPS互相配合测步,这样可令使用场景变得多样。

      1.先要摸清模型的特征

      目前,大部分设备都提供了可以检测各个方向的加速度传感器。以iOS设备为例,我们利用了其三轴加速度传感器(x,y,z轴代表方向如图)的特性来分析。分别用以检测人步行中三个方向的加速度变化。

      


     

      iOS设备的三轴加速度传感器示意图

      用户在水平步行运动中,垂直和前进两个加速度会呈现周期性变化,如图所示。在步行收脚的动作中,由于重心向上单只脚触地,垂直方向加速度是呈正向增加的趋势,之后继续向前,重心下移两脚触底,加速度相反。水平加速度在收脚时减小,在迈步时增加。

      


     

      反映到图表中,可以看到,在步行运动中,垂直和前进产生的加速度与时间大致为一个正弦曲线,而且在某点有一个峰值。其中,垂直方向的加速度变化最大,通过对轨迹的峰值进行检测计算和加速度阀值决策,即可实时计算用户运动的步数,还可依此进一步估算用户步行距离。  



     

      2.计步的合理算法

      因为用户在运动中可能用手平持设备,或者将设备置于口袋中。所以,设备的放置方向不定。为此,通过计算三个加速度的矢量长度,我们可以获得一条步行运动的正弦曲线轨迹。

      第二步是峰值检测,我们记录了上次矢量长度和运动方向,通过矢量长度的变化,可以判断目前加速度的方向,并和上一次保存的加速度方向进行比较。如果是相反的,即是刚过峰值状态,则进入计步逻辑进行计步,否则舍弃。通过对峰值的次数累加,可得到用户步行的步伐。

      最后,就是去干扰。手持设备会有一些低幅度和快速的抽动状态,或是我们俗称的手抖,或者某个恶作剧用户想通过短时快速反复摇动设备来模拟人走路,这些干扰数据如果不剔除,会影响记步的准确值,对于这种干扰,我们可以通过给检测加上阀值和步频判断来过滤。

      


     

      人体最快的跑步频率为5HZ,也就是说相邻两步的时间间隔的至少大于0.2秒,如图所示,我们设置了timespan在记步过程中我们过滤了高频噪声,即步频过快的情况。同时我们通过和上次加速度大小进行比较,设置设立一定的阀值Threshold来判断运动是否属于有效,有效运动才可进行记步。

      3.关于计步器的扩展

      以上是一个依靠加速度测算的计步器实现原理,已知步行和跑步的步伐经验值,那么稍微改进下即可变成一个测距测速计。

      通过三轴加速度传感器,我们可以知道用户的运动状态。除了计步,还可以通过加速器的变化曲线判断用户摔倒状态,做成一个老人和儿童摔倒检测自动报警器。

    展开全文
  • Android 加速度感应器检测手机摇晃

    千次阅读 2013-08-07 17:42:44
    垂直方向加速度 Z=values[2] 测试时发现,将手机至于水平桌面稳定后X、Y约为0,Z约为9.5(约等于重力加速度) 2)实现加速度感应器代码如下 package com.example.androidapp; import android.hardwar
  • 三轴加速度传感器

    千次阅读 2013-11-13 10:33:21
    另一方面,在预先不知道物体运动方向的场合下,只有应用三轴加速度传感器来检测加速度信号。由于三轴加速度传感器也是基于重力原理的,因此用三轴加速度传感器可以实现双轴正负90度或双轴0-360度的倾角,通过校正...
  • Android加速度传感器原理

    千次阅读 2017-08-07 14:11:09
    这里我们将通过一个”摇一摇”应用来说明如何使用加速度传感器.但在开发之前,我们先对加速度...加速度传感器输出的信息存放在 SensorEvent的values数组中,此时的values数组会有三个值,分别代表手机在x轴,y轴,z轴方向
  • 一、前言 在物联网时代,传感器是数据收集的最底端,如何运用传感器数据是一门技术活。 加速度计是一种常见的传感器,在某些... 加速度计能够采集物体的加速度数据,市面上有很多加速度传感器,例如LIS3DH等,...
  • 加速度计、陀螺仪和姿态角

    千次阅读 2018-10-30 16:18:38
    原文地址 ... 加速度计 用来测量x,y,z三个轴上的加速度。 应用 1、微信摇一摇 陀螺仪 用来测量x,y,z三个轴转动的角速度,右手定则。 应用 1、飞行、体育类游戏...
  • 加速度计&陀螺仪

    千次阅读 2014-03-05 14:54:20
    在iOS4之前,加速度计由UIAccelerometer类来负责采集工作,而电子罗盘则由Core Location接管。 而iPhone4的推出,由于加速度计的升级和陀螺仪的引入,与motion相关的编程成为重头戏, 所以,苹果在iOS4中增加一个...
  • Android加速度传感器 -- 抬手亮屏

    千次阅读 2018-06-06 14:46:20
    android系统提供以下传感器供应用层使用,具体如下:// android.hardware....TYPE_ACCELEROMETER 1 // 加速度传感器 TYPE_MAGNETIC_FIELD 2 // 磁力传感器 TYPE_ORIENTATION 3 // 方向传感器 TYPE_GYROSCOPE 4 // 陀螺...
  • 1. devicemotion:监听手机加速度变化的事件(比如:手机疯狂摇摆) 属性:均为只读属性 (1)accelerationIncludingGravity:重力加速度(包括重心引力9.8) (2)acceleration:加速度(需要设备陀螺仪支持) ...
  • cocos2dx游戏开发加速度

    千次阅读 2014-01-15 01:57:09
    在cocos2d-x引擎中 使用了类CCAccelerometer来存储加速度计的信息 类CCAccelerometer的作用和用户操作的分发器类似 区别在于用户操作的分发器可以拥有很多委托对象 而加速度计只存在一个委托对象 这是因为一个移动...
  • 加速度传感器的计步算法Pedometer

    千次阅读 2020-02-26 22:23:29
    加速度传感器的计步算法Pedometer ...  Android上的加速度传感器的方向如下所示(当你面朝手机屏幕观察)。因此加速度是由三个正交的向量组成的,例如当你平放手机在桌子上屏幕朝上,此时应为(0,0,9.6...
  • 三轴加速度传感器LIS3DH使用心得

    千次阅读 2019-08-12 09:50:07
    LIS3DH是ST公司推出的一块三轴加速度计芯片,使用它能实现很多有趣的应用。接下来笔者通过例程分享下LIS3DH的一些开发心得。 首先请出我们使用的开发板:UFUN, 这是块小巧精致的开发板,内核为STM32,搭载了多种...
  • 三轴加速度传感器能够采集分析人体摔倒时三个方向加速度变化特征,以判断老人是否摔倒。主要分析了三轴加速度传感器ADXL345的特点及工作原理,最后提出一种检测老人意外摔倒的方案。 关键词:三轴加速度传感器;...
  • 在要求精度不高的情况,可以使用三轴加速度积分得到位移,飞思卡尔给出了官方方法,下文来自翻译说明 http://cache.freescale.com/files/sensors/doc/app_note/AN3397.pdf?fsrch=1&sr=2 摘要 此文档描述并...
  • android 手机加速度传感器的问题

    千次阅读 2017-01-02 13:04:50
    我自己的手机是华为荣耀3c的,在调用加速度传感器的时候,根据3个方向加速度判断,然后如果符合则引发震动等效果代码: @Override public void onSensorChanged(SensorEvent event) { int sensorType = ...
  • 转载的一篇文章,跟自己做过的一个...【翻译】利用加速度求解位置的算法——三轴传感器 http://www.cnblogs.com/cposture/p/4378922.html 摘要 此文档描述并使用MMA7260QT三轴加速计和低功耗的9S08QG8八位单片
  • 加速度传感器检测物体倾角的原理

    千次阅读 2020-06-25 19:29:27
    方法利用重力矢量及其在加速度计轴上的投影来确定倾斜角度。   以两轮平衡小车(倒立摆模型)为例,当检测到倾角存在时要控制小车以一定的加速度运动,才能维持平衡而不至于倒下。因此倾角的测量成为控制小车...
  • 本文主要对BMA250传感器的文档内容进行提取,通过阅读本文,可以了解到该传感器具备什么样的功能已经如何驱动文档翻译由于我是...加速度范围: +-2g,4g,8g,16g 低通滤波器带宽:1KHz - 8Hz 输入电压: 就给3.3V啦有
  • Android手机中的加速度计与陀螺仪

    万次阅读 多人点赞 2019-03-22 15:30:24
    传感器和加速度传感器的区别与联系 陀螺仪原理 陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。人们根据这个道理,用它来保持方向。然后用多种方法读取轴所指 示的方向,并...
  • 选用一款数字式3轴加速度传感器,原思路是通过加速度传感器的3轴加速度值进行二次积分获取设备的移动位置,通过位置判断设备是否被移动;通过瞬时加速度值来判断设备是否为强力破坏; 经过测试发现加速度本身噪声很...
  • 主要介绍一下android的加速传感器的简单用法,模拟摇一摇 ,如果x,y,z三个方向加速度超过了15,就会弹出Toast,当然你可以设置更复杂的策略,比如判断间隔代码如下public class MainActivity extends Activity { ...
  • 三轴加速度传感器是加速度传感器中用来测量空间加速度的传感器,即测量物体在空间中速度变化的快慢,三轴加速度传感器与单轴、两轴加速度传感器在测量原理上没有差别,他们的主要差别在于测量的维度不同,三轴加速度...
  • 通过加速度与磁力计计算方位角

    千次阅读 2020-04-30 09:38:59
    通过加速度传感器与磁力计计算方位角,实现电子罗盘功能,网上很多都是通过加速度,磁力计,陀螺仪去混合计算,太复杂了,而且现在我用的传感器只有加速度与磁力计,我只需要水平的方位角,实现电子罗盘功能。...
  • 手机传感器中的加速度传感器 期末做的是计步器APP,所以对加速度传感做了些研究哈哈,下面...经常听到的有方向传感器,重力感应器,加速度传感器,心率传感器等等。不同版本系统安卓机支持的传感器会不同,所以开发...
  • 三轴加速度传感器的计步测算法

    万次阅读 2017-12-21 11:15:57
    现如今,很多现代人都非常注重自己的日常锻炼,计步作为一种有效记录监控锻炼的监控手段,被广泛应用在移动终端的... 为避免上述问题的出现,我们可以考虑一种新的测步方法,即:通过设备上的加速度传感器来计算步数
  • Android中的传感器之---加速度传感器

    千次阅读 2020-08-17 16:08:42
    加速度传感器 加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。 该数值包含地心引力的影响,单位是m/s^2。 将手机平放在桌面上,x轴默认为0,y轴默认0,z轴默认9.81(由于地球的固有重力)。 将手机朝...
  • 利用stm32控制步进电机 速度&&加速度控制

    万次阅读 多人点赞 2018-08-27 00:52:25
    较好的方法是,设全局变量temp_x ,使Pluse_Period=1000/temp_x (1000可以为任意常数) 则脉冲频率为:f=1/T=1/(Pluse_Period * t)=temp_x/(1000*t) 此时全局变量temp_x 与转速成正比,适于控制 3、加速度控制 使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,969
精华内容 33,187
关键字:

判断加速度方向的方法