极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 小人

探讨MPU6050加速度的位移(内附官方说明带中文翻译书签)

  [复制链接]
发表于 2013-5-20 08:48:41 | 显示全部楼层
1,模式识别主要就是根据某种方法,找到你测试模式与一大堆可能得模式之间最可能的匹配。就把这个测试模式看作是一个查询的结果。
2,机器学习是实现模式识别的一种方法,通过给定大量的输入(训练样本),并按照输出来修正算法中的一大堆参数,最后让输入和输出相调和。然后有新的输入,就会产生一个估计输出。如果你前期训练阶段做得好,这个输出的结果就会非常满意。
3,6个参数主要是x,y,z三个方向的加速度和三个方向的角度。。。(忘了咋拼写了)。。。

我们当时是想通过这些参数来感知用户的运动状态,进行一些姿态识别,甚至是手势识别。。。当时想利用坐标转换,转换成绝对坐标,然后把运动参数当成特征。。。后来发现机器学习这种牛逼的东西,压根不需要特意地提取特征,而且很多算法例如bp,因为它在训练过程中就是带着噪声的,所以训练出来的分类器的也是能适应噪声的。。。

p.s...我不是前辈…只是个大三学生而已…只是喜欢找点儿好玩儿的东西折腾折腾而已……
p.s2...一定要小心!!!有些设备(早期的android手机),虽然说是能提供完整的六个参数。。但它的倾角啥的那三个参数,实际上是根据x,y,z三轴加速度插值出来的。。。也就是说这东西压根就只有三个参数。。。就像六个未知数三个方程组一样……求出来的只能是个线性基础解析— —。。。不定方程的东西……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-20 01:18:46 | 显示全部楼层
lixf071213 发表于 2013-5-20 00:14
楼主是怎么解决加速度积分出速度过程中漂移的问题的,希望能跟楼主探讨一下。

不好意思,现在对位移的学习还在进行中,对于电场漂移,现在还没有到这步。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-20 01:15:37 | 显示全部楼层
本帖最后由 小人 于 2013-5-20 01:16 编辑
lixf071213 发表于 2013-5-20 00:38
还有,就是  “他在评论有关位移的回答”   ,这部分的原文在哪,我想看看。


我google了一下就在官网上关于6轴的描述就有,你进去看一看
MPU-6050 6-axis accelerometer/gyroscope | I2C Device Library
http://www.i2cdevlib.com/devices/mpu6050


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-5-20 00:38:32 | 显示全部楼层
还有,就是  “他在评论有关位移的回答”   ,这部分的原文在哪,我想看看。
回复 支持 反对

使用道具 举报

发表于 2013-5-20 00:14:09 | 显示全部楼层
楼主是怎么解决加速度积分出速度过程中漂移的问题的,希望能跟楼主探讨一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-19 23:56:36 | 显示全部楼层
本帖最后由 小人 于 2013-5-20 00:00 编辑
林定祥 发表于 2013-5-19 18:46
也在学习,有些难,但是有两个问题必须澄清:
1、此传感器是重力加速度传感器,也即传感器不管怎么放或怎么动 ...
我很赞成你的观点,首先你提出的两个问题很关键:
  • 如例2 所说运算的时候
    假设此时手机沿z轴正向加速度为2m/s^2,那么android会返回2+9.8=11.8这么一个值;
    假设此时手机沿z轴负向加速度为2m/s^2,那么android会返回(-2+9.8)=7.8这么一个值
    但在论坛里看到有前辈说MPU6050的加速度值本身就是通过DMP处理器融算出来的结果,不知道是否因为通过DMP处理后的的加速度值只为陀螺的旋转服务,所以目前静止时出来重力的值都均为1?所以我们若-9.8是不对的.我大胆猜想我们在z轴减1就可以了。
    关于DMP根据论坛里johnsonzzd的提醒是:
    MPU6050已经不需要咱们自己写程序把角速度和角速度融合得到角度了。它里面同时集成了角速度和陀螺传感器,内部还有处理器(Digital Motion Processor)在进行数据处理,可以直接从它的内部寄存器把角度读出来,这个东西就是所谓的DMP。
    我的地址从程序里可以看出来,MPU6050 mpu(0x68);。
    http://www.i2cdevlib.com/devices/mpu6050#help
    What is the DMP?
    The DMP, or Digital Motion Processor, is an internal processing unit contained within the MPU-6050 and its successors (MPU-6150, MPU-9150, possibly more in the future). The processor has been described by InvenSense employees as a sort of limited CPU, or alternatively as an enhanced ALU (arithmetic logic unit), which is built with an instruction set designed for very specific 3D math operations necessary for orientation calculation. There is currently no known resource for understanding what this instruction set is or how it works

  • 第二点如果你说的“速度变慢会得到负值”,也正是加速度的定义。如果MPU6050的原理也是这样,那么我现在所得到的值也是合理的。只是他一直按移动速度给值的话,那我从哪里得到反方向运动的量呢?



回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-19 23:00:52 | 显示全部楼层
本帖最后由 小人 于 2013-5-19 23:04 编辑
清蒸小绵羊 发表于 2013-5-19 18:02
这一段代码输出的是int吧,不带小数部分不知道是四舍五入还是截尾,用float(ax/8192)不知道可不可以

是这样的
  • 不带小数的话是四舍五入。
  • 若是你想得到浮点很简单,只需要将这个参数改成
    [pre lang="arduino" line="18"]Serial.print(ax/8192.0); Serial.print("\t");
        Serial.print(ay/8192.0); Serial.print("\t");
        Serial.print(az/8192.0);[/code]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-19 22:56:36 | 显示全部楼层
friskit 发表于 2013-5-19 15:19
呵呵呵两年前想要那这个东西做模式识别……后来发现用机器学习,只需要6个参数就足够了……

你好,很开心遇到有做过的前辈。因为我刚接触,你的指示懂,我很想再请教你几个问题
  • 很知道你的模式识别是什么样子的?
  • 我还想请教机器学习是什么意思?
  • 6个参数能给我们介绍一下吗?
谢谢!

回复 支持 反对

使用道具 举报

发表于 2013-5-19 18:46:59 | 显示全部楼层
也在学习,有些难,但是有两个问题必须澄清:
1、此传感器是重力加速度传感器,也即传感器不管怎么放或怎么动都存在一个g=9.8,因此运动的加速度必须在克服重力加速度后才正确;
2、理论上加速度时为正,减速度时为负,静止状态或在恒速时为零。但是这个传感器介绍说,加速度和方向有关,如沿X正方向得出正的加速度,方向则得负的加速度。
这些问题正在梳理中。
回复 支持 反对

使用道具 举报

发表于 2013-5-19 18:02:03 | 显示全部楼层
  1. Serial.print("a/g:\t");[/size]
  2. [size=1]    Serial.print(ax/8192); Serial.print("\t");
  3.     Serial.print(ay/8192); Serial.print("\t");
  4.     Serial.print(az/8192);
复制代码
这一段代码输出的是int吧,不带小数部分不知道是四舍五入还是截尾,用float(ax/8192)不知道可不可以
回复 支持 反对

使用道具 举报

发表于 2013-5-19 15:19:04 | 显示全部楼层
呵呵呵两年前想要那这个东西做模式识别……后来发现用机器学习,只需要6个参数就足够了……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-19 04:13:42 | 显示全部楼层
wing 发表于 2013-5-19 00:19
那是在上楼梯么?

是的,测量上楼梯脚产生的坐标
回复 支持 反对

使用道具 举报

发表于 2013-5-19 00:19:35 | 显示全部楼层
那是在上楼梯么?
回复 支持 反对

使用道具 举报

发表于 2013-5-18 18:16:22 | 显示全部楼层



于是我肯定了MPU6050 使能做到记录位移的,然而第一步是先把位移的加速度算出来,我按照前辈Randy的方法矫正了轴的LSB输出
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 17:06 , Processed in 0.046049 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表