极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 弘毅

arduino学习笔记28 - ITG3200 ADXL345做姿态识别实验

  [复制链接]
发表于 2012-5-16 11:42:35 | 显示全部楼层
Randy 发表于 2012-4-13 10:25
这样的数据能清楚表明啥呢?原始数字才好观察!

观察直接测试就好了。 你直接像视频上那样摇晃板子,比如竖直状态看最后值其实就很清楚了。
中间数据封装了实际上也是个不错的事情,不过微调 修正值(我理解为基值)就麻烦点。(毕竟你的板子啥的甚至桌子都不一定能完全做到100%的水平,所以模块也未必能做到)
回复 支持 反对

使用道具 举报

发表于 2012-5-16 12:19:53 | 显示全部楼层
弘毅 发表于 2012-2-6 17:48
当时买的芯片自己焊的,100多点,3三轴数字陀螺仪~~

其他数字陀螺仪都可以替代

现在整合的板子已经很便宜了。9轴模块(其实就是 3轴陀螺仪+3加速度 + 磁场 +气压) 便宜的也才卖到130以内,IIC接口。

只是不知道是否兼容您提供的测试代码。
数据手册看的不是很懂(E文差了点,毕业好多年了都还给老师了)
回复 支持 反对

使用道具 举报

发表于 2012-5-17 17:16:46 | 显示全部楼层
我测了一下代码,不错,用的是ADXL345,L3G4200D。

仔细阅读了那篇A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications.

对那篇算法的过程倒是能够弄清楚,但是为什么那样做就不清楚。

代码中
  1.   line(0, 0, 0, 1, 0, 0);
  2.   line(0, 0, 0, 0, -1, 0);
  3.   line(0, 0, 0, 0, 0, 1);
  4.   line(0, 0, 0, -RwEst[0], RwEst[1], RwEst[2]);
复制代码
为什么RwEst[0] 前面需要加负号,  我感觉是具体的方向变换这块没能够理解。

包括
  1.   rotateX(HALF_PI * -RwEst[0]);
  2.   rotateZ(HALF_PI * RwEst[1]);
复制代码
这块的代码,也是这样。谁能够具体讲讲坐标系以及方向具体怎么看
回复 支持 反对

使用道具 举报

发表于 2012-5-19 16:20:39 | 显示全部楼层
大哥,看了你这篇之后我又看了这篇教程  说的是加速度传感器姿态识别的东西

http://www.starlino.com/imu_guide.html

请问加速度传感器是不是只能做到平稳无额外加速度(重力加速度之外)的情况下的3D识别呢?一旦有额外的抖动,加速度传感器就几乎无能为了了吗?

是不是在姿态识别中加速度传感器做的就只是近似估计重力加速度和加速度传感器模块之间的夹角呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-19 16:40:12 | 显示全部楼层
陀螺仪和加速度传感器呢,相辅相成吧。。加速度传感器有两个问题。。。。
1,转动时,会有所谓的盲区。小角度重力加速度反应不是很灵敏。
2,快速变动情况下,加速度传感器,反应速度跟不上。(所谓的都抖动不灵敏)

陀螺仪呢,反应很灵敏。。。。。可以用算法算出来快速转动时的角度,但是会有累积误差。。。所以需要加速度传感器进行误差校准。

两者相结合,是一种比较靠谱的动态姿态检测方法。。。单独用加速度传感器,只有静态环境才比较靠谱。

其实高级算法我也不会玩了。。。。偶编程很差的=.=复杂东西还需要大家钻研下。
回复 支持 反对

使用道具 举报

发表于 2012-5-19 17:06:31 | 显示全部楼层
弘毅 发表于 2012-5-19 16:40
陀螺仪和加速度传感器呢,相辅相成吧。。加速度传感器有两个问题。。。。
1,转动时,会有所谓的盲区。小角 ...

恩 我感觉加速度的主要作用就是消除陀螺仪的累积误差。
回复 支持 反对

使用道具 举报

发表于 2012-6-3 19:19:53 | 显示全部楼层
你好!我在录入时 出现以下错误 Serial.print(10, BYTE);

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-6-3 19:58:18 | 显示全部楼层
cacil 发表于 2012-6-3 19:19
你好!我在录入时 出现以下错误 Serial.print(10, BYTE);

你用的1.0.1编译器,1.0开始很多命令格式都改了,你换用0022或者0023的IDE就可以了。
回复 支持 反对

使用道具 举报

发表于 2012-6-3 19:59:49 | 显示全部楼层
好的 谢谢您!
回复 支持 反对

使用道具 举报

发表于 2012-6-3 23:17:13 | 显示全部楼层
刚学 没能看到有数据在动, 另外板上的TX灯长亮!求解谢谢!

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-6-3 23:20:57 | 显示全部楼层
cacil 发表于 2012-6-3 23:17
刚学 没能看到有数据在动, 另外板上的TX灯长亮!求解谢谢!

试试processing或者arduino重启之类的,我记得好像是如果没有画面显示,processing启动后,需要按arduino上的复位,重启一下arduino。
回复 支持 反对

使用道具 举报

发表于 2012-6-3 23:29:54 | 显示全部楼层
弘毅 发表于 2012-6-3 23:20
试试processing或者arduino重启之类的,我记得好像是如果没有画面显示,processing启动后,需要按arduino ...

COM3口是这样吗?

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-6-3 23:32:22 | 显示全部楼层
  serial = new Serial(this, "COM3", 9600);
processing用这条命令直接选择为com3
回复 支持 反对

使用道具 举报

发表于 2012-6-4 00:04:38 | 显示全部楼层
弘毅 发表于 2012-6-3 23:32
serial = new Serial(this, "COM3", 9600);
processing用这条命令直接选择为com3

不知道是否这样serial = new Serial(this, "COM3", 9600);   可以读 但是怎么转动 感应器都没反应不停地在跳那些数! 是不是坏了呢? 谢谢您!

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-6-4 08:52:23 | 显示全部楼层
cacil 发表于 2012-6-4 00:04
不知道是否这样serial = new Serial(this, "COM3", 9600);   可以读 但是怎么转动 感应器都没反应不停地在 ...

囧,看样子是有读数了,手头有第二个传感器的话,更换测试下。。。没有的话确实不好判断。
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 00:24 , Processed in 0.047762 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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