作者Seabook (岭北有女万事足~)
看板Electronics
标题Re: [问题] 六轴IMU使用
时间Sat Apr 23 13:07:53 2016
※ 引述《adaj (ada)》之铭言:
: 标题: [问题] 六轴IMU使用
: 时间: Wed Apr 20 17:36:39 2016
:
: 大家好
: 最近小弟想使用一颗六轴的惯性感测器
: 他可得到三轴加速度及角速度(100Hz)
: 想要积分两次得到位移的轨迹
: 但是怎麽计算都不太对
: 想问各位大大有没有使用过的经验能够指导一下小弟QQ
我做机器人大概10几年 IMU跟KF玩了大概10年,略懂一点。(叔叔有练过小朋友不要学)
一颗六轴IMU可以经由sensor fusion估测出两轴角度 (X,Y轴)
Z | 重力(g)
^ |
| |
| V
|
/--------->X
/
/
Y
原理是利用重力夹角的关系,因为Z轴怎麽转跟重力夹角都固定,有一轴(Z轴)算不出来
要算那一轴一般用三轴电磁感测器(electrical compass)去得到地磁数据,算出来的。
这就是为啥有些IMU会到9轴的原因(加速度*3,角速度*3,磁力*3)。
OK,回到你的问题。
那......... 用IMU算位移哩?? 用积分不行吗???
当然不行 很不准 因为加速度计有漂移 有误差 你一直积 累积误差会很大
新手1: 很大?! 请问误差有多大?
ANS: 我8年前的经验,用日本的IMU大概1美元,用DSP 100HZ两次积分误差会一直变大
变大的速度大概20~50cm/sec,因为这误差还会随时间增加...
好一点的Sensor误差小一点,但这积出来的数据不能用。
你用尺量都比较准!
新手2: 那误差跟实际值不会刚好一正一负加加减减抵销吗? 积分後不就没有误差了!
ANS: 这机率比买乐透十次都中还低。
OK. 所以到底要怎麽用IMU量到比较精确的位移呢?
答案是 sensor fusion, 你需要另外一个sensor帮助IMU才能算位移
例如你现在手边有个不太准的sonar, IR or Laser 可以量直线距离
你可以用Kalman filter 把加速规 跟 sonar 的数据作融合得到更精确的数据。
(当然前提是假设你的sensor 量距离不太准, 准的话用这个量就好了,IMU直接丢掉)
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.136.252.126
: ※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1461145001.A.015.html
: → Schottky: 这会准才有鬼 04/20 17:45
Sch大讲话真实在....
: → adaj: 短时间内也不行吗? 04/20 20:01
: → MasterChang: 用ADIS16448试试,会好一点点。 04/20 20:32
: → adaj: 想请问有计算的流程能参考一下吗 04/20 21:31
你的问题不在於积分计算 你的问题在於不懂sensor特性(感测的物理量跟更新频率etc.)
听好了,接下来讲的从Wii摇杆用到火星机器人,再到扩增实境(AR)
你现在可能听不懂,但多年後你会挖出这篇废文,一拍天灵盖说:阿!~赌喜阿内!
以下教一个解这问题的正途,未来也可以延伸到更复杂应用。
Kalman filter在台湾一般修"估测理论"的课,也几乎不教或提点皮毛,
所以找个应用,蒐集一些相关PAPER,tutorial,自己练习是一个可行的方案。
当然最好有一些机率,随机程序的基础
参考一下以下这篇论文:
https://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf
计算流程:
(Equation 1.9~1.13) 因为你问题是1D而已,写出来大概5行CODE。
假设你有两个sensors, sonar 量到是zk, IMU量到的加速度是uk (k是time step)
已知sensor 起始位置离墙壁 L cm, 求IMU的即时位移X=?
L
冏墙<---------Sonar (量到距离 zk)
IMU (量到加速度 uk)
KF 有两个步骤,"Prediction" 跟 "Correction"
Prediction:
根据国中学的v=v0+at & x=v0t+0.5*at^2 你可以推算出EQ1.9内的 A跟 B 矩阵
Correction:
根据国小学的 L-zk=X 你可以推算出 EQ1.12~1.13的 H矩阵
写出 Equation 1.9~1.13, Q,R 参数调好 单晶片就能自动估测出IMU的位移了。
这个会了以後,你就可以开始挑战2D,3D的sensor fusion了,
现实中9成9的应用Model会有非线性, 所以要用 Extended Kalman filter (EKF)
用泰勒展开式(Taylor series,就是你高中学过但不知道有啥用的东西)线性逼近
EQ1.9~1.13 变成 EQ2.14~2.18 还是一样5行CODE (当然要CALL一些线代library)
这个好好学以後一定有饭碗,现在越来越多手机,AR应用需要即时估测
人或环境的状态,这些只有上帝才知道的真实数据,
我们人类能做的就是用sensor fusion猜一猜! Good Luck!
--
他高傲,但是宅心仁厚;他谦虚,但是受万人敬仰:
他可以把神仙赐给人的机械运用的出神入化...
可以做出堪称神之艺术的超级机械!
他究竟是神仙的化身?还是地狱的使者?没人知道!
但是可以肯定,每个人都给他一个称号............................机械小天才!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 160.94.47.18
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1461388077.A.3C1.html
※ 编辑: Seabook (160.94.47.18), 04/23/2016 13:15:28
1F:推 tonybin: 只能推了 04/23 13:57
2F:推 adaj: 感谢大大提点,小弟会去试试 04/23 14:38
3F:推 bizer: 最近在研究六轴,推一个 04/23 17:57