MPU9250适合做惯性导航精度吗

阿里巴巴中国站和淘宝网会员帐号体系、《阿里巴巴服务条款》升级,完成登录后两边同时登录成功。
若您长时间无法正常使用,您可以
&1688商学院步街网_一折特卖优惠券_名品导购_天天折扣今日特价网!
品质6道人工质检+低价全网最低价=步街网每天10点独家开抢每天最多可赚:20&积分&后才能签到&&|&& 系统繁忙系统繁忙。即将为您跳转到淘宝详情页...Copyright (C) 2010 - 2015 步街网◆今日订单0◆◆◆列表◆◆◆意见反馈◆返回顶部◆【图片】【项目发起】用arduino mini pro + mpu6050一步步实现惯性导航_arduino吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:56,958贴子:
【项目发起】用arduino mini pro + mpu6050一步步实现惯性导航收藏
挑灯夜战ing,工作台镇楼学生党一枚,东西有点点乱,勿吐槽
arduino micro 找云汉芯城,货源充足,提供超过6000万个电子元器件信息.下单有优惠!元器件厂商原厂授权,百多万种现货供应,信心保证,即刻在线订购!
首先试着把6050的加速度计和陀螺仪的输出用串口读取出来,直觉告诉我这种二三十块的小IMU出厂时会有大量误差..果然就是这情况 我碰都没碰,就出来了这么些值
不过关系不大...仔细观察了一下,这些误差都分布在某个常数的周围,下面就可以通过一个简单的方法对其进行校准从数据手册中找到刻度系数表,用输出值除以这些刻度系数即可得到以°/s为单位的角速度和以g为单位的加速度输出下面说下校准的方法IMU在水平放置的状态下,Z轴加速度计的输出应该是1g,其余轴的加速度计和陀螺仪的输出均应该为0。对1000个输出值的误差取平均,利用其对输出进行校准同时增加将输出值进行换算的算法
再观察输出值,可以看到常数误差已经基本被消除了,剩下的都些是较小的随机误差
困了,lz先更到这里,碎觉去
可以实现,而且早在5年前已经做出来了,MWC飞行控制器就是用这个配置了这是个开源飞控系统你可以在网上找到他的源码,
lz可以帮你的代码发给看看么
用课本理论来实践,楼主有前途
简单易用的高性价比数据采集卡, 为您提供优质技术支持.
不错啊,最近也在研究6050
不错,求教
楼主的红色控制原理右下的板子花了多少人民币
很想和楼主交个朋友
下面就该写姿态更新算法了,至于卡尔曼滤波什么的先不搞翻书查查...嗯..四元数微分方程...就是你了去他的推导过程....查出那个算法就好了地球自转速率....360°/24h/3600s 大概是 0.004166°/s 0.004166°/s*131LSB/° 约等于 0.5458...也就是说以MPU6050的分辨率根本分辨不出来,不管他了上边说激光陀螺的输出一般是角增量(别问我为什么不用激光陀螺,一个这玩意不比一辆五菱便宜!),所以就给出了用角增量作为输入的四元数姿态更新算法可MPU6050输出的是角速度..不过关系不大,待会有办法解决
楼主太厉害了
如何获取角增量:角速度是角增量的导数..用定积分就好了嘛设T为采样周期 t时刻角速度为w0 t+T时刻角速度为w1 计算定积分得采样周期内的角增量为(w0+w1)/2 * T
可惜四元数不懂
接下来就到四元数姿态更新算法了,本人采用二阶近似设t时刻的姿态四元数为p=p0+p1*i+p2*j+p3*k t+T时刻的姿态四元数q=q0+q1i+q2j+q3k 把这个矩阵乘法列为直观形式如下C语言当中表示如下为避免重复的计算,定义double型变量I=1-Δθ²/8注意角增量的单位应该换算成弧度q即为最新的姿态四元数
对四元数不太了解的话可以参考一下这篇文章 比较通俗地介绍了四元数与空间旋转之间的关系
LZ你好,我也在弄哦,我用的是nano+6050....
四元数转欧拉角算法,将姿态四元数转换成roll pitch yaw(滚转 俯仰 偏航)形式的欧拉角
可以看得出这基本上还是准确的
这是做四轴的节奏吗
一进吧就在看你的帖子了,试一下,再说
漂移大不大?咱俩的算法差不多,但时间不能长,放15min差不多yaw能转一圈……P.s:高中就积分,四元数,楼主真不是盖的。
#include &I2Cdev.h&#include &MPU6050.h&// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation// is used in I2Cdev.h#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
#include &Wire.h&#endif// class default I2C address is 0x68// specific I2C addresses may be passed as a parameter here// AD0 low = 0x68 (default for InvenSense evaluation board)// AD0 high = 0x69MPU6050//MPU6050 accelgyro(0x69); // &-- use for AD0 highint16_t ax, ay,int16_t gx, gy,int axoffs,ayoffs,int gxoffs,gyoffs,double rgx,rgy,double rax,ray,double ax0,ay0,az0;double ax1,ay1,az1;double wx0,wy0,wz0;double wx1,wy1,wz1;double dwx,dwy,double q0,q1,q2,q3;double p0,p1,p2,p3;double qc0,qc1,qc2,qc3;double roll,pitch,double t1;double t0;// uncomment &OUTPUT_READABLE_ACCELGYRO& if you want to see a tab-separated// list of the accel X/Y/Z and then gyro X/Y/Z values in decimal. Easy to read,// not so easy to parse, and slow(er) over UART.#define OUTPUT_READABLE_ACCELGYRO// uncomment &OUTPUT_BINARY_ACCELGYRO& to send all 6 axes of data as 16-bit// binary, one right after the other. This is very fast (as fast as possible// without compression or data loss), and easy to parse, but impossible to read// for a human.//#define OUTPUT_BINARY_ACCELGYRO#define LED_PIN 13bool blinkState =void setup() {
// join I2C bus (I2Cdev library doesn*t do this automatically)
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
Wire.begin();
#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
Fastwire::setup(400, true);
// initialize serial communication
// (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
// it*s really up to you depending on your project)
Serial.begin(9600);
// initialize device
Serial.println(&Initializing I2C devices...&);
accelgyro.initialize();
accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_500);
accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_2);
// verify connection
Serial.println(&Testing device connections...&);
Serial.println(accelgyro.testConnection() ? &MPU6050 connection successful& : &MPU6050 connection failed&);
// use the code below to change accel/gyro offset values
getoffs();
// configure Arduino LED for
pinMode(LED_PIN, OUTPUT);}void loop() {
// read raw accel/gyro measurements from device
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
t1=micros();
t=(t1-t0)/1000000;
// these methods (and a few others) are also available
//accelgyro.getAcceleration(&ax, &ay, &az);
//accelgyro.getRotation(&gx, &gy, &gz);
//calibration error
wx1=rgx/65.5;
wy1=rgy/65.5;
wz1=rgz/65.5;
ax1=(rax/1;
ay1=(ray/1;
az1=(raz/1;
dwx=((wx1+wx0)/2)*t*0.01745;
dwy=((wy1+wy0)/2)*t*0.01745;
dwz=((wz1+wz0)/2)*t*0.01745;
dw=sqrt(dwx*dwx+dwy*dwy+dwz*dwz);
qc0=cos(dw/2);
qc1=(dwx/dw)*sin(dw/2);
qc2=(dwy/dw)*sin(dw/2);
qc3=(dwz/dw)*sin(dw/2);
q0=qc0*p0-qc1*p1-qc2*p2-qc3*p3;
q1=qc1*p0+qc0*p1+qc3*p2-qc2*p3;
q2=qc2*p0-qc3*p1+qc0*p2+qc1*p3;
q3=qc3*p0+qc2*p1-qc1*p2+qc0*p3;
roll=atan2(2*(q0*q1+q2*q3),1-2*(q1*q1+q2*q2))*57.25977;
pitch=-asin(2*(q0*q2-q3*q1))*57.25977;
yaw=-atan2(2*(q0*q3+q1*q2),1-2*(q2*q2+q3*q3))*57.25977;
Serial.print(roll);Serial.print(&,&);
Serial.print(pitch);Serial.print(&,&);
Serial.print(yaw);Serial.print(&///&);
Serial.print(ax1);Serial.print(&,&);
Serial.print(ay1);Serial.print(&,&);
Serial.println(az1);
}void getoffs(){
int16_t ax, ay,
int16_t gx, gy,
long int axsum=0;
long int aysum=0;
long int azsum=0;
long int gxsum=0;
long int gysum=0;
long int gzsum=0;
for(i=1;i&=2000;i++)
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
azsum=az+azsum-16384;
axoffs=-axsum/2000;
ayoffs=-aysum/2000;
azoffs=-azsum/2000;
gxoffs=-gxsum/2000;
gyoffs=-gysum/2000;
gzoffs=-gzsum/2000;}应大家的要求贴出完整代码
静置15Min后的漂移量 rool漂了16° pitch漂了10度 yaw只漂了4度 还不算太夸张
登录百度帐号上传列表:
- stm32f030 drive ads-15 16:20:44,下载1次 - CC1125无线模块。调频发送接收。已测试, 10:49:53,下载6次 - DSP2812Flash内运行的闪烁灯程序, 09:35:33,下载3次
近期下载:
- 破解版 Visual.Assist.X.V10.6.1833 支持VS2010 VS2008 VS2005 VC6 ,安装完成后替换安装目录下的VA_X.dll
- GPS DR 组合kalman滤波的GPS滤波部分,DR部分滤波以后再传 - 用C编辑的GPS——DR滤波算法,我相信对广大朋友有帮助 - 严老师编写的惯性/GPS组合导航相关程序,包括轨迹生成、滤波、解算等 - 国外网站www.openpilot.com开源的一款无人机GPS辅助INS导航算法程序,据说目前很多国内无人机都是使用的这套导航算法,对研究惯导的朋友可能会有帮助 - 惯性导航+GPS组合导航,经典算法,不要错过。 - AHRS航姿参考系统源代码,处理器为STM32f1系列,编译器为MDK,里面有陀螺仪,加速度计,磁力计和气压计数据融合解算姿态角的源代码 - imu_arhs的程序:基于IMU(三轴角速率、三轴加速计和三轴磁场)的方位姿态解算系统(ahrs),基于C语言开发,VC 6.0编译器,可方便的移植到其他环境
- arduino minimu
code source utilisation imu - 基于IMU(三轴角速率、三轴加速计和三轴磁场)的方位姿态解算系统(ahrs),基于C语言开发,VC 6.0编译器,可方便的移植到其他环境。 - 9轴AHRS源代码,对写程序很有帮助,欢迎下载学习 - 自己编写的基于AHRS的扩展卡尔曼滤波器程序 - A STUDY
on Fusion Filter Algorithm for Low Cost Tightly coupled AHRS/GPS
- AHRS code in Python. This file is used to develop
AHRS using IMU output - openpilot自动驾驶仪的姿态参考系统(AHRS)源码 - MPU1950在GD32F103CB上的测试代码,使用MPU1950内的DMP做数据融合,开发环境是KEIL, - 基于加速度、角速度的快速九轴姿态解算,选用传感器为MPU6050+HMC - 自己做的四轴飞行器源码,用的是9150做姿态检测和M4做主控。相当值得啊 - 捷联惯性导航中运用互补滤波时用到的,这是用c语言编程的程序,研究惯性导航时可以参考使用 - 压缩包内含有MPU9250姿态解析源代码,可直接得到角度和四元数,方便使用,并含有滤波。12345678910
搜索配件:
&&价格区间:从
折扣价格¥493.00元
原价:¥593.00元 (8.3折)
最近30天销量:月销 9 笔
商品来源:
&购物咨询(商品客服):
由卖家 zhaowen_win 从 广东 深圳 发货
推荐服务商:&&&&&&&&&&
双氙商品详情
商品标签云
买过的人评价...
下载地址:http://www.elecmaster.net/forum.php?mod=viewthread&tid=18
6轴与9轴的区别:http://elecmaster.net/forum.php?mod=viewthread&tid=296
常见问题解答:http://elecmaster.net/forum.php?mod=viewthread&tid=298
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:3件
相关内容:&
¥298.00(9.8折)
卖家:诺贝尔商务
来自:广东 深圳
最近30天销量:0件
相关内容:&
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:13件
相关内容:&
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:73件
相关内容:&
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:16件
相关内容:&
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:19件
相关内容:&
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:9件
相关内容:&
¥88.00(9.3折)
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:0件
相关内容:&
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:92件
相关内容:&
¥58.00(8.6折)
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:7件
相关内容:&
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:4件
相关内容:&
¥148.00(6.6折)
卖家:zhaowen_win
来自:广东 深圳
最近30天销量:2件
相关内容:&
您或许还喜欢
15.20&&&&(无折)
26.92&&&&(9折)
108.00&&&&(无折)
138.00&&&&(无折)
96.00&&&&(无折)
8.25&&&&(9折)
请留下你对双氙的意见或建议,感谢!
(如果有个人或商家的相关问题需要解决或者投诉,请致电400-000-5668)
联系电话/微信/QQ:
支持中英文(Support in both Chinese and English)
感谢您的反馈,我们会努力做得更好!}

我要回帖

更多关于 惯性导航agv 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信