久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
MPU6050 DMP直接輸出姿態角,無需卡爾曼 MSP430主控
[打印本頁]
作者:
51hei學習技術中
時間:
2017-4-4 04:11
標題:
MPU6050 DMP直接輸出姿態角,無需卡爾曼 MSP430主控
用了6050,我得說明幾點,,一 ,關于姿態角解算,你可以卡爾曼,也可以直接算i四元數再結算,其中區別請看源程序,
二、dmp、dmp很簡單、但是、需要具有iic的 接口 、能懂嗎? 需要有推挽輸出能力的iic接口、不是模擬iic、我被這個氣死了 !。。。。。。。。。。。!
三、我懶得去整理 、直接打包上傳的三個文件 有點亂、時間緊迫也沒有去美化、你們可以看到我的這三種用法、如果自己用時哪里有問題 、請注意分析源代碼 的計算原理、強調一點、iic 沒成功是因為 149沒有iic 、對于這個我也是日了狗、我的設置是全部可以參考的
0.png
(51.62 KB, 下載次數: 175)
下載附件
2017-4-4 04:07 上傳
這個是別人的資料:
平衡車全套資料.zip
(15.25 MB, 下載次數: 223)
2017-4-4 04:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
mpu6050DMP.zip
(1.24 MB, 下載次數: 177)
2017-4-4 04:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
這個是430的MPU6050-DMP.zip
(1.33 MB, 下載次數: 154)
2017-4-4 04:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
0.png
(61.87 KB, 下載次數: 185)
下載附件
2017-4-4 04:08 上傳
MSP430單片機主程序:
#include <msp430f149.h>
#include <math.h>
#include "Config.h"
#include "1602.c"
#include "mpu6050.c"
#include "mpu60500.h"
#include "mpu60500.c"
#include "mpuiic.h"
#include "mpuiic.c"
#include "IOI2C.h"
#include "IOI2C.c"
#include "dmpKey.h"
#include "dmpmap.h"
#include "inv_mpu.h"
#include "inv_mpu.c"
#include "inv_mpu_dmp_motion_driver.h"
#include "inv_mpu_dmp_motion_driver.c"
#include "kaerman.c"
struct quaternion{
float w;
float x;
float y;
float z;
}quaternion;
float gyr[3],acc[3];
float Pitch=1.0,Roll,Yaw ;
//q30格式,long轉float時的除數.
#define q30 1073741824.0f
void mix_gyrAcc_crossMethod(struct quaternion *attitude,const float gyr[3],const float acc[3],float interval);
void quaternion_normalize(struct quaternion*q);
void main()
{
WDT_Init(); //看門狗設置
Clock_Init(); //系統時鐘設置
Port_init(); //系統初始化,設置IO口屬性
delay_ms(100); //延時100ms
LCD_init(); //液晶參數初始化設置
LCD_clear(); //清屏
//InitMPU6050();
uchar e=mpu_dmp_init();
float yy=e*1.0;
delay_ms(300);
/*
P1DIR|=0x01;
P1OUT&=0XFE;
TA0CCTL1=OUTMOD_7+CCIE;
TACTL=TASSEL_2+MC_1+TAIE;
TA0CCR0=655;
TA0CCR1=654;
*/
//float aaa=0.0,bbb=0.0,ccc=0.0;
quaternion.w=1;
quaternion.x=0;
quaternion.y=0;
quaternion.z=0;
_EINT();
while(1)
{
Disp(yy,0,0);
/*
gyr[0]=-GetData(GYRO_XOUT_H)/16.4;
gyr[1]=-GetData(GYRO_YOUT_H)/16.4;
gyr[2]=-GetData(GYRO_ZOUT_H)/16.4;
acc[0]=GetData(ACCEL_XOUT_H)/16384;
acc[1]=GetData(ACCEL_YOUT_H)/16384;
acc[2]=GetData(ACCEL_ZOUT_H)/16384;
Disp(Pitch,0,0);
Disp(Roll,7,0);
Disp(Yaw,0,1);
Disp(quaternion.z,7,1);
mpu_dmp_get_data(&aaa,&bbb,&ccc);
Disp(aaa,0,0);
Display10BitData(GetData(ACCEL_XOUT_H),0,0); //顯示X軸加速度
Display10BitData(GetData(ACCEL_YOUT_H),5,0); //顯示Y軸加速度
Display10BitData(GetData(ACCEL_ZOUT_H),10,0); //顯示Z軸加速度
Display10BitData(GetData(GYRO_XOUT_H),0,1); //顯示X軸角速度
Display10BitData(GetData(GYRO_YOUT_H),5,1); //顯示Y軸角速度
Display10BitData(GetData(GYRO_ZOUT_H),10,1); //顯示Z軸角速度 */
}
}
/*
#pragma vector=TIMERA1_VECTOR
__interrupt void P1(void)
{
P1OUT|=0X01;
if(TAIV==2)
{_NOP();}
mix_gyrAcc_crossMethod(&quaternion,gyr,acc,0.01);
}
*/
void mix_gyrAcc_crossMethod(struct quaternion *attitude,const float gyr[3],const float acc[3],float interval)
{
const static float FACTOR = 0.001;//取接近0的數
//
float w_q = attitude->w;
float x_q = attitude->x;
float y_q = attitude->y;
float z_q = attitude->z;
float x_q_2 = x_q * 2;
float y_q_2 = y_q * 2;
float z_q_2 = z_q * 2;
//
// 加速度計的讀數,單位化。
float a_rsqrt = sqrt(acc[0]*acc[0]+acc[1]*acc[1]+acc[2]*acc[2]);
float x_aa = acc[0] * a_rsqrt;
float y_aa = acc[1] * a_rsqrt;
float z_aa = acc[2] * a_rsqrt; //加速度計測量出的加速度向量(載體坐標系下)
//
// 載體坐標下的重力加速度向量,單位化。
float x_ac = x_q*z_q_2 - w_q*y_q_2;
float y_ac = y_q*z_q_2 + w_q*x_q_2; //通過四元數旋轉矩陣與地理坐標系下的重力加速度向量[0 0 0 1]叉乘得到載體坐標系下的重力加速度向量
float z_ac = 1 - x_q*x_q_2 - y_q*y_q_2;//(主要)角速度計測出的四元數表示的載體坐標系下的重力加速度向量(這里已轉換成載體坐標系下)
//
// 測量值與常量的叉積。
float x_ca = y_aa * z_ac - z_aa * y_ac;
float y_ca = z_aa * x_ac - x_aa * z_ac;
float z_ca = x_aa * y_ac - y_aa * x_ac;//角速度計測出的角度誤差,疊加的FACTOR大小可以實驗試湊
//
// 構造增量旋轉。
float delta_x = gyr[0] * interval / 2 + x_ca * FACTOR;
float delta_y = gyr[1] * interval / 2 + y_ca * FACTOR;
float delta_z = gyr[2] * interval / 2 + z_ca * FACTOR;
//
// 融合,四元數乘法。
attitude->w = w_q - x_q*delta_x - y_q*delta_y - z_q*delta_z;
attitude->x = w_q*delta_x + x_q + y_q*delta_z - z_q*delta_y;
attitude->y = w_q*delta_y - x_q*delta_z + y_q + z_q*delta_x;
attitude->z = w_q*delta_z + x_q*delta_y - y_q*delta_x + z_q;
quaternion_normalize(attitude);//歸一化
float q0=0.0,q1=0.0,q2=0.0,q3=0.0;
q0=attitude->w;
q1=attitude->x;
q2=attitude->y;
q3=attitude->z;
Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch
Roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll
Yaw = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3;
}
void quaternion_normalize(struct quaternion*q)
{
float qlength_inv = 1.0/(sqrt(q->w*q->w + q->x*q->x + q->y*q->y + q->z*q->z));
//這里只應該開根號x*x+y*y+z*z
// now normalize
q->w=q->w*qlength_inv;
q->x=q->x*qlength_inv;
q->y=q->y*qlength_inv;
q->z=q->z*qlength_inv;
}
復制代碼
自己做的程序:
卡爾曼重要設置已保留.zip
(3.17 KB, 下載次數: 80)
2017-4-4 04:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
四元數算.zip
(493.84 KB, 下載次數: 85)
2017-4-4 04:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
dmp需要iic里面149錯誤的其他設置完全是對的.zip
(143.94 KB, 下載次數: 78)
2017-4-4 04:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
white1994
時間:
2017-6-15 13:27
厲害了,,,,
作者:
些許冷熱
時間:
2017-7-22 11:03
賊強...............................
作者:
insightx
時間:
2017-10-15 22:17
正在研究了,借鑒一下。
作者:
taohai163
時間:
2017-11-17 09:53
我找了很久的資料,謝謝了
作者:
hxybiseng
時間:
2018-4-25 10:40
正好需要 下載看看 謝謝
作者:
wenshajava
時間:
2018-4-25 17:31
資料很好啊, 謝謝分享
作者:
FangLilian
時間:
2018-5-11 09:39
不好意思,本人小白,請問模擬IIC是什么啊
作者:
jiangjxuan
時間:
2018-7-6 10:51
怎么下載。
作者:
愛生活!
時間:
2018-7-19 15:08
謝謝樓主分享
作者:
mr_xcq
時間:
2018-9-20 20:08
四元素算法,由于迭代導致歐拉角一直更新,換句話說歐拉角經過一定時間才會穩定,樓主是怎樣使用的呢
作者:
星的愛我
時間:
2019-3-8 22:12
我也想知道四元數和卡爾曼濾波的問題。。。
還有那個iic,現在有點暈乎乎的
作者:
Sakura666
時間:
2019-3-20 14:34
謝謝樓主分享
作者:
xiaozhong1314
時間:
2019-7-26 15:20
厲害了
作者:
QSM980405
時間:
2019-8-27 10:45
哇,樓主好人啊。感謝感謝
作者:
esmember
時間:
2019-9-29 13:34
這個好高大上呢,正在計算,不過都能采集出來了,線支持一下。
作者:
tarchen
時間:
2021-4-9 10:50
多謝分享,最近正在學習相關的知識。
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩av免费
|
欧美在线一区二区三区
|
精品视频免费
|
www.国产精品
|
日本大尺度床戏揉捏胸
|
亚洲一区视频在线
|
日韩一级二级
|
久草国产视频
|
a视频在线免费观看
|
蜜桃久久久
|
性视频网
|
日韩中文字幕一区二区
|
色综合久久天天综合网
|
午夜视频一区二区
|
亚洲免费一区二区
|
精品无人国产偷自产在线
|
99只有精品
|
精品乱子伦一区二区三区
|
亚洲一区二区在线视频
|
久久av网站
|
久久久精品一区
|
亚洲精品成人
|
国产亚洲视频在线观看
|
日本黄色视屏
|
www一级片
|
www.日韩av
|
99超碰在线观看
|
国产免费黄色片
|
亚洲777
|
亚洲精品美女
|
国产在线毛片
|
中文字幕日韩高清
|
欧美日韩在线视频观看
|
91精品国产综合久久久蜜臀
|
免费一区
|
玖玖在线观看
|
国产一区二区在线播放
|
一区二区三区成人
|
亚洲一区二区三区在线视频
|
成人在线视频免费
|
久久综合影院
|