如何使用三轴加速器 计算速度

carl.xu 2020-07-02 02:28:18
大虾:
请教一下:如何使用三轴加速器 计算速度 与 方向
android 7.1
我们使用的是 mpu6881 六轴的芯片,从android取的数据来看,只能取 Sensor.TYPE_ACCELEROMETER 的x y z 值
我尝试这样取速度 ,速度没有变化
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
long curTime = System.currentTimeMillis();
double x = event.values[0];
double y = event.values[1];
double z = event.values[2];
double xyz = (double)(x*x + y*y + z*z);

yz_plane = (double)(Math.sqrt((y)*(y)+(z)*(z)));
xz_plane = (double)(Math.sqrt((x)*(x)+(z)*(z)));
xy_plane = (double)(Math.sqrt((x)*(x)+(y)*(y)));

if(curTime-lastUpdate > TIME){
long diffTime = curTime-lastUpdate;
if(diffTime <= 0)diffTime = 1;
lastUpdate = curTime;
x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_X];
z = event.values[SensorManager.DATA_X];
double speed = Math.abs(x+y+z-last_x-last_y-last_z)/diffTime*10000;
Log.i("lock"," speed "+speed);
if(speed > SHAKE_THRESHOLD){
Log.i("lock","speed = "+speed);
lastUpdate += 10000;//判断成功的话,10秒内不再判断
// handler.sendEmptyMessage(MessageID.MESSAGE_SENSOR);
}
last_x = x;
last_y = y;
last_z = z;
}
...全文
11045 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SuTaoJin 2021-01-20
  • 打赏
  • 举报
回复
楼主解决了吗?
carl.xu 2020-07-05
  • 打赏
  • 举报
回复
我下周攻关,再确定这个问题,从加速度及陀螺仪的算法看,感觉有希望,努力中。
gamepc 2020-07-03
  • 打赏
  • 举报
回复
嫩否指导一下啊!
carl.xu 2020-07-03
  • 打赏
  • 举报
回复
应该有希望了,关闭贴子
carl.xu 2020-07-02
  • 打赏
  • 举报
回复
有大虾能指导一下不
carl.xu 2020-07-02
  • 打赏
  • 举报
回复
如何 计算出速度 与 计算x轴的方向,比如 x辆向左偏了25度 ,向右偏了 25 度
使用芯片:MPU-6050(MPU-6050数据手册) 供电电源:3-5v(内部低压差稳压) 通信方式:标准IIC通信协议 芯片内置16bit AD转换器,16位数据输出 陀螺仪范围:±250 500 1000 2000 °/s 加速度范围:±2±4±8±16g MPU-6000(MPU-6000数据手册)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP: Digital Motion Processor)硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术 InvenSense的运动处理资料库,可处理运动感测的复杂数据,降低了运动处理运算对操作系统的负荷,并为应用开发提供架构化的API。 MPU-6000的角速度全格感测范围为±250、±500、±1000与±2000°/sec (dps),可准确追緃快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为±2g、±4g±8g与±16g。产品传输可透过最高至400kHz的I2C或最高达20MHz的SPI。 MPU-6000可在不同电压下工作,VDD供电电压介为2.5V±5%、3.0V±5%或3.3V±5%,逻辑接口VVDIO供电为1.8V± 5%。MPU-6000的包装尺寸4x4x0.9mm(QFN),在业界是革命性的尺寸。其他的特征包含内建的温度感测器、包含在运作环境中仅有±1%变动的振荡器。 应用运动感测游戏 现实增强 电子稳像 (EIS: Electronic Image Stabilization) 光学稳像(OIS: Optical Image Stabilization) 行人导航器 “零触控”手势用户接口 姿势快捷方式 认证 市场智能型手机 平板装置设备 手持型游戏产品 3D遥控器 可携式导航设备 特征以数字输出6轴或9轴的旋转矩阵、四元数(quaternion)、欧拉角格式(Euler Angle forma)的融合演算数据。 具有131 LSBs/°/sec 敏感度与全格感测范围为±250、±500、±1000与±2000°/sec 的3轴角速度感测器(陀螺仪)。 可程式控制,且程式控制范围为±2g、±4g、±8g和±16g的3轴加速器。 移除加速器与陀螺仪轴间敏感度,降低设定给予的影响与感测器的飘移。 数字运动处理(DMP: Digital Motion Processing)引擎可减少复杂的融合演算数据、感测器同步化、姿势感应等的负荷。 运动处理数据库支持Android、Linux与Windows 内建之运作时间偏差与磁力感测器校正演算技术,免除了客户须另外进行校正的需求。 以数位输出的温度传感器 以数位输入的同步引脚(Sync pin)支援视频电子影相稳定技术与GPS 可程式控制的中断(interrupt)支援姿势识别、摇摄、画面放大缩小、滚动、快速下降中断、high-G中断、零动作感应、触击感应、摇动感应功能。 VDD供电电压为2.5V±5%、3.0V±5%、3.3V±5%;VDDIO为1.8V± 5% 陀螺仪运作电流:5mA,陀螺仪待命电流:5A;加速器运作电流:350A,加速器省电模式电流: 20A@10Hz 高达400kHz快速模式的I2C,或最高至20MHz的SPI串行主机接口(serial host interface) 内建频率产生器在所有温度范围(full temperature range)仅有±1%频率变化。 使用者亲自测试 10,000 g 碰撞容忍度 为可携式产品量身订作的最小最薄包装 (4x4x0.9mm QFN)
前言: 记得在上大二下的时候参加了2015全国电子设计大赛,题目刚下来便决定了做C题"多旋翼的自主飞行器"4天3夜拿到瑞萨最小系统后便开始写各个模块的驱动代码,因为有开发环境CUBE的神助攻,所以前期的驱动代码是还很顺利的。接下来便是飞行器的组装和电路板 制作,在一起就绪后花掉了2天时间,剩下的两天便疯狂调试,最苦恼的是电池供给跟不上,无奈只能调调停停,初次制作算法也还不够成熟,我直接用的以前做平衡车的经验。不过最后飞得也还算平稳,用的手机加蓝牙控制飞行(后来想一想也是胆大),但题目要求自主飞行,于是我便苦恼了,我便开始记录四旋翼起飞的油门,在起飞后直接给油门(危险)效果也还可以,就在比赛前一天晚上出事故了 一块刚充满电的电池 我装上做最后测试。电池电量过高 直接结果导致飞机飞太高撞到了天花板,结果将飞机撞坏了一个电机,桨就不用说了 惨,不过幸运的是人没事。队友也傻了,怎么办?此时已是凌晨1点。我们捡起“残骸”拍拍上面的灰,听了首“安河桥”便开始和队友一起埋头苦干。哈哈···最后在早上6点前飞机修好了 虽然效果大打折扣不过最基本的任务还算能够完成。第二天比赛,我们是下午开始。第一次参赛,试飞的时候发现异常,冷静后发现超声波线松了 排除故障后开始比赛,比赛结果就不往下写了。(。。。。。)无论怎样我很享受这个过程。比赛结束后便有了做一个小四轴的想法,于是便在网上搜索资料,偶然看到了STC的这个开源项目,于是便自己也动手做了一个,控制代码我也有重写,现分享给大家!!!一起交流!!! 功能概述: 本设计是基于STC15W4K61S4的微型四轴。以STC15W4K61S4为主控。硬件包括,mpu6050传感器,电源,nrf2401通信模块,720空心杯电机,PCB机架。姿态解算采用四元数,串级PID作为控制器,配合遥控器实现俯仰,横滚,偏航姿态控制。主要用于学习和理解四轴飞行器的基本原理。 实物图: 应用场景: 控制思路: 首先调整电机1,3同向 2,4同向 且相邻电机旋转反相在X型模式下首先通过mpu6050获取三轴加速度计和三轴陀螺仪数据 经过数据处理融合后 得到姿态角度pitch roll 以及Z轴陀螺仪积分出 yaw角。将得到的姿态角送入PID控制器计算输出对应的油门补偿对应的电机 从而使四旋翼平衡。简单来说飞机往那边沉 对应的电机就加速提高升力抵抗它下沉,它的下沉程度是通过角度来反映的而已,具体补偿多少合适,则是通过PID控制器计算的而已。单纯通过角度误差来控制,是属于单级的PID 控制。经过试验这种控制策略应用在小四轴效果不太理想,因此我们通常采用的串级PID控制小四轴,即引入了角速度环,通常内环使用PD(对象角速度)外环使用PI(对象角度&内环输出)这样的控制策略在测试中效果较好,但理想的参数调整比较难,因此需要耐心调试才能得到较好的效果。 系统框图: 本系统硬件设计组成: 主控:STC15W4K61S4 (封装:LQFP32) 传感器:MPU6050(三轴加速度计,三轴陀螺仪)(封装:QFN)https://www.datasheet5.com/pn-MPU-6050-1083104 电机:720空心杯 MOS管 AO3400A (封装:SOT23_M)https://www.datasheet5.com/pn-AO3400A-1215185 2.4G无线:NRF2401 (模块)https://www.datasheet5.com/datasheet/NRF2401/250319... 电源芯片: ME6219 (封装:SOT95)https://www.bom2buy.com/search/ME6219 BL8530-501SM(封装:SOT89)https://www.datasheet5.com/pdf/BL8532/1751621/BELLI... 元器件成本估算: 部分器件成本估算:https://www.bom2buy.com/list/1312-stc15w4k61s4 总结: 此项目在大三上完成,经过调试 能够实现基本飞行,同时也存在以下问题: 参数应该还不够理想(遥控器跟随效果不好)。 PCB设计过大 导致超重,因为担心手焊的MPU不好使故留了较多直插模块接口同时还考虑到十字和X型所以各留了一个这样的直插接口。 这是一次不错的动手经历吧,从原理图PCB到代码都是自己一个人完成,每当遇到问题就网上寻求答案,过程还是很坎坷的,不过也特别有意思。同时也学到很多知识,做事情也更加细心严谨! 测试结果: 手机里翻了半天总算找到了一点视频上传与大家分享,效果不太好希望勿喷。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧