搜索
bottom↓
回复: 85

【捷联惯导】 有点小成就,四轴起飞指日可待。

  [复制链接]

出105入79汤圆

发表于 2013-4-27 04:06:52 | 显示全部楼层 |阅读模式
本帖最后由 qwe2231695 于 2013-4-27 11:20 编辑

最近在写飞控程序,花了几天时间在坛里学习四元素和捷联惯导。

今天在stm32上写好了框架,坛里大侠的:捷联惯导心得帖子果然是有货的!移植好这个DMP fitter以后,仔细调了一下参数。

发现其实就是一个平衡滤波+PID+四元数的算法,短短30行的代码句句都是公式的精华。

写了一个简单的VB上位机,是以前本人做平衡车用剩的。发现效果比传说中的卡尔曼简单易用好调试。

图中绿色线是加速度测量曲线,在静止状态下做横滚测试,没有运动加速度,可以视为真实角度。可以发现:红色的滤波器输出曲线能反应出角度(贴合绿色线)

在后面部分,做了测试轴上的满量程运动加速度叠加,发现滤波器很好的过滤了运动加速度。

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-4-27 04:38:01 | 显示全部楼层
期待楼主给我们带来惊喜~ :)

出0入0汤圆

发表于 2013-4-27 09:11:07 | 显示全部楼层
楼主头像深深刺痛了我!

出0入0汤圆

发表于 2013-4-27 10:48:50 来自手机 | 显示全部楼层
如果是运动起来以后,有加速、转弯、机体震动,那时候再看看这效果怎么样

出0入0汤圆

发表于 2013-4-30 19:28:51 | 显示全部楼层
关注,留个名先.

出0入0汤圆

发表于 2013-4-30 20:42:46 | 显示全部楼层
430504 发表于 2013-4-27 09:11
楼主头像深深刺痛了我!

理解了捷联惯导之后就不用分了。这东西有点高深,俺没看懂

出0入0汤圆

发表于 2013-5-1 10:36:15 | 显示全部楼层
楼主说的 DMP fitter  是不是论坛里的 imu.c 这个算法??

出105入79汤圆

 楼主| 发表于 2013-5-1 11:32:22 | 显示全部楼层
济南电子爱好者 发表于 2013-5-1 10:36
楼主说的 DMP fitter  是不是论坛里的 imu.c 这个算法??

是的。就是imu.c

出0入0汤圆

发表于 2013-5-4 08:00:45 | 显示全部楼层
qwe2231695 发表于 2013-5-1 11:32
是的。就是imu.c

支持楼主,有个问题还望楼主指点迷津~

void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az)

这个函数的参数
gx gy gz, 是陀螺仪直接读出来的数据,还是转换成了实际角速度数据?
ax ay az,  是加速度计直接读出来3个轴的数据吗?

初次接触四轴,希望大神点拨~~

出0入0汤圆

发表于 2013-5-6 21:23:22 | 显示全部楼层
关注下,以后应该能用到

出0入0汤圆

发表于 2013-5-7 10:51:59 | 显示全部楼层
关注下。

出0入0汤圆

发表于 2013-5-19 17:34:20 | 显示全部楼层
你好!我在做自动跟踪天线,想了解下捷联惯导,有偿求助,我QQ 490912416 谢谢

出0入0汤圆

发表于 2013-5-24 11:47:01 | 显示全部楼层
这个运动加速度 加速度计能检测出来吗,不是只能检测重力加速度吗

出105入79汤圆

 楼主| 发表于 2013-5-24 12:25:35 | 显示全部楼层
rantingting 发表于 2013-5-24 11:47
这个运动加速度 加速度计能检测出来吗,不是只能检测重力加速度吗

这个是MEMS三轴加速度计,不是重力加速度计。要是真的有纯粹的重力加速度计就好了。

出0入0汤圆

发表于 2013-5-24 13:05:20 | 显示全部楼层
qwe2231695 发表于 2013-5-24 12:25
这个是MEMS三轴加速度计,不是重力加速度计。要是真的有纯粹的重力加速度计就好了。 ...

是我搞错了吗,现在的加速度计不是只能通过检测重力加速度吗,要不怎么能计算角度呢,还请帮忙解释下

出105入79汤圆

 楼主| 发表于 2013-5-24 13:18:08 | 显示全部楼层
rantingting 发表于 2013-5-24 13:05
是我搞错了吗,现在的加速度计不是只能通过检测重力加速度吗,要不怎么能计算角度呢,还请帮忙解释下 ...

当物体静止时可以得到角度,因为测量轴上只有重力加速度的值。但是运动的时候,会有运动加速度叠加进去。所以就不完全可信了。就像你带着他坐电梯(或者坐赛车),电梯(赛车)启动和停止的时候度数不再是重力值(测量轴不完全重合的时候是重力加速度的分量),而是和电梯的运动有关了。

出0入0汤圆

发表于 2013-5-24 17:58:17 | 显示全部楼层
qwe2231695 发表于 2013-5-24 13:18
当物体静止时可以得到角度,因为测量轴上只有重力加速度的值。但是运动的时候,会有运动加速度叠加进去。 ...

好的,学习恶劣,我需要再详细了解了解,一直还是认为只能检测到重力加速度

出0入0汤圆

发表于 2013-6-3 14:43:08 | 显示全部楼层
qwe2231695 发表于 2013-5-24 13:18
当物体静止时可以得到角度,因为测量轴上只有重力加速度的值。但是运动的时候,会有运动加速度叠加进去。 ...

非常正确。。。。。。。。

出0入0汤圆

发表于 2013-6-6 20:18:32 | 显示全部楼层
一直对楼主表示关注

出0入0汤圆

发表于 2013-6-6 20:43:52 | 显示全部楼层
济南电子爱好者 发表于 2013-5-1 10:36
楼主说的 DMP fitter  是不是论坛里的 imu.c 这个算法??

弱弱的问一句,这个imu.c是?

出0入0汤圆

发表于 2013-6-30 10:47:28 | 显示全部楼层
好帖子总是要顶顶家收藏的

出0入0汤圆

发表于 2013-6-30 11:17:30 | 显示全部楼层
楼主飞起来了吧?
imu.c代码是在哪个帖子呀?
9楼提的问题很有意思,我也很想知道

出105入79汤圆

 楼主| 发表于 2013-6-30 11:46:57 | 显示全部楼层
aki_studio 发表于 2013-6-30 11:17
楼主飞起来了吧?
imu.c代码是在哪个帖子呀?
9楼提的问题很有意思,我也很想知道 ...

飞起来了,屌丝回去学习自控原理去了。学好挑战MIT。

IMU.c 大致就是这个: gx单位为度秒, ax单位为牛米平方秒

void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az)
{
  float qq0=0, qq1=0, qq2=0, qq3=0;  
  float norm;
  float vx, vy, vz;// wx, wy, wz;
  float ex, ey, ez;
  float q0q0 = q0*q0;
  float q0q1 = q0*q1;
  float q0q2 = q0*q2;
//float q0q3 = q0*q3;
  float q1q1 = q1*q1;
//float q1q2 = q1*q2;
  float q1q3 = q1*q3;
  float q2q2 = q2*q2;
  float q2q3 = q2*q3;
  float q3q3 = q3*q3;

halfT=(float)time; //得到采样时间
       
gx*=0.0174;gy*=0.0174;gz*=0.0174;//转换为弧度

  // 单位化四元数 取模
  norm = sqrtf(ax*ax + ay*ay + az*az);      
  ax = ax /norm;
  ay = ay / norm;
  az = az / norm;
   // 估计方向的重力      
  vx = 2*(q1q3 - q0q2);                                                                                               
  vy = 2*(q0q1 + q2q3);
  vz = q0q0 - q1q1 - q2q2 + q3q3 ;
// 误差和方向传感器测量参考方向之间的交叉乘积的总和
  ex = (ay*vz - az*vy) ;                                                                  
  ey = (az*vx - ax*vz) ;
  ez = (ax*vy - ay*vx) ;
// 积分误差比例积分增益
  exInt = exInt + ex * Ki;                                                                 
  eyInt = eyInt + ey * Ki;
  ezInt = ezInt + ez * Ki;  

  // 调整后的陀螺仪测量
  gx = gx + Kp*ex + exInt;                                                                                                  
  gy = gy + Kp*ey + eyInt;
  gz = gz + Kp*ez + ezInt;                                                                                          

  qq0=q0;qq1=q1;qq2=q2;qq3=q3;

  q0 = qq0 + (-qq1*gx - qq2*gy - qq3*gz)*halfT;
  q1 = qq1 + (qq0*gx + qq2*gz - qq3*gy)*halfT;
  q2 = qq2 + (qq0*gy - qq1*gz + qq3*gx)*halfT;
  q3 = qq3 + (qq0*gz + qq1*gy - qq2*gx)*halfT;

//   // 整合四元数率和正常化                                          
//   q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;
//   q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;
//   q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;
//   q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;
       


  // 正常化四元数
  norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
  q0 = q0 / norm;
  q1 = q1 / norm;
  q2 = q2 / norm;
  q3 = q3 / norm;
  
  //四元数与欧拉角转换公式
  Q_ANGLE.Pitch  = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;
  Q_ANGLE.Rool = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3;
  Q_ANGLE.Yaw  = atan2(2 * q2 * q1 + 2 * q0 * q3, -2 * q3 * q3 - 2 * q2* q2 + 1)* 57.3;
}

出0入0汤圆

发表于 2013-6-30 14:48:03 | 显示全部楼层
多谢分享,mark了
我炸了2套桨之后,就停滞不前了,改天再来看

出0入0汤圆

发表于 2013-7-2 14:09:01 | 显示全部楼层
qwe2231695 发表于 2013-6-30 11:46
飞起来了,屌丝回去学习自控原理去了。学好挑战MIT。

IMU.c 大致就是这个: gx单位为度秒, ax单位为牛 ...

这个源码,貌似在哪里看到过……

出105入79汤圆

 楼主| 发表于 2013-7-2 18:40:31 | 显示全部楼层
rantingting 发表于 2013-7-2 14:09
这个源码,貌似在哪里看到过……

是的,哪里都有,平衡车,各种开源四轴。现在有升级版的了,还没有移植

出0入0汤圆

发表于 2013-7-4 11:48:07 | 显示全部楼层
qwe2231695 发表于 2013-6-30 11:46
飞起来了,屌丝回去学习自控原理去了。学好挑战MIT。

IMU.c 大致就是这个: gx单位为度秒, ax单位为牛 ...

你这个算法,航向角是会漂移的啊。没有磁力计的话,单纯用加速度计校正陀螺,只能校正俯仰、滚转方向的陀螺漂移。因为加速度计所反映的只是俯仰、滚转角信息,并不包括航向角。

出105入79汤圆

 楼主| 发表于 2013-7-4 11:51:03 | 显示全部楼层
rock1943 发表于 2013-7-4 11:48
你这个算法,航向角是会漂移的啊。没有磁力计的话,单纯用加速度计校正陀螺,只能校正俯仰、滚转方向的陀 ...

是的,我使用磁阻在外面有修正一次了。

出0入0汤圆

发表于 2013-7-22 21:57:30 | 显示全部楼层
发现阿莫的帖子技术含量越来越高了

出0入0汤圆

发表于 2013-7-26 12:25:46 | 显示全部楼层
有用,楼主好人啊

出0入0汤圆

发表于 2013-7-26 13:22:27 | 显示全部楼层
qwe2231695 发表于 2013-6-30 11:46
飞起来了,屌丝回去学习自控原理去了。学好挑战MIT。

IMU.c 大致就是这个: gx单位为度秒, ax单位为牛 ...

mark  imu.c代码

出0入0汤圆

发表于 2013-8-1 11:14:20 | 显示全部楼层
想问下楼主,为什么你滤波后的曲线会超前实际曲线呢?而且滤波后的角度有时居然比实际测的要大?

本帖子中包含更多资源

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

x

出105入79汤圆

 楼主| 发表于 2013-8-1 13:00:04 | 显示全部楼层
小伙仔小明 发表于 2013-8-1 11:14
想问下楼主,为什么你滤波后的曲线会超前实际曲线呢?而且滤波后的角度有时居然比实际测的要大?

...

原因如下: 1,加速度开启了MPU6050传感器的低通滤波功能反应较慢。2,滤波参数整定没有达到最好,陀螺仪积分过冲。3,你后面那个框表示的两条线的差值,是由于一个轴加速度和角度之间存在三角函数关系。0度 ,90度的时候两条曲线可以吻合,在中间的时候,要经过sin-1计算才能吻合的。

出0入0汤圆

发表于 2013-8-1 13:39:12 | 显示全部楼层
qwe2231695 发表于 2013-8-1 13:00
原因如下: 1,加速度开启了MPU6050传感器的低通滤波功能反应较慢。2,滤波参数整定没有达到最好,陀螺仪 ...

嗯  我也觉得是参数没整定好。。。这样的波形误差感觉很大。。。

出0入0汤圆

发表于 2013-8-7 01:45:24 | 显示全部楼层
qwe2231695 发表于 2013-7-2 18:40
是的,哪里都有,平衡车,各种开源四轴。现在有升级版的了,还没有移植  ...

楼主,升级版的能不能给个链接或者介绍一下哈?

出0入0汤圆

发表于 2013-8-12 20:30:11 | 显示全部楼层
我也被头像雷到了……

出0入0汤圆

发表于 2013-8-12 21:35:08 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2013-9-3 19:53:45 | 显示全部楼层
楼主飞起来了 吗

出105入79汤圆

 楼主| 发表于 2013-9-3 21:36:08 | 显示全部楼层
蓝色の理想 发表于 2013-9-3 19:53
楼主飞起来了 吗

飞腻了

出0入0汤圆

发表于 2013-9-4 16:45:48 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2013-9-4 23:16:52 | 显示全部楼层
qwe2231695 发表于 2013-9-3 21:36
飞腻了

四轴 上面加个倒立摆呢,有没有试过?

出0入0汤圆

发表于 2013-9-24 10:30:29 | 显示全部楼层
高手,请教啊

出0入0汤圆

发表于 2013-10-20 10:49:27 | 显示全部楼层
真心有用 标记了再说

出0入0汤圆

发表于 2013-10-24 20:49:43 | 显示全部楼层
楼主,你好,我也用的是捷联惯导,滤出的波形效果也和你的差不多,但是控制依然滞后是什么原因呢

出0入0汤圆

发表于 2013-11-6 20:45:33 | 显示全部楼层
好强悍。

出0入0汤圆

发表于 2014-1-28 23:11:44 | 显示全部楼层
网上传的基本上都是IMU.C

出0入0汤圆

发表于 2014-1-29 10:57:01 | 显示全部楼层
mark  imu.c代码

出0入0汤圆

发表于 2014-1-31 14:51:59 | 显示全部楼层
多谢分享

出0入0汤圆

发表于 2014-2-19 21:40:28 | 显示全部楼层
qwe2231695 发表于 2013-6-30 11:46
飞起来了,屌丝回去学习自控原理去了。学好挑战MIT。

IMU.c 大致就是这个: gx单位为度秒, ax单位为牛 ...

楼主,为什么要把屏蔽掉的替换成这样.这两个不一样么??

qq0=q0;qq1=q1;qq2=q2;qq3=q3;

  q0 = qq0 + (-qq1*gx - qq2*gy - qq3*gz)*halfT;
  q1 = qq1 + (qq0*gx + qq2*gz - qq3*gy)*halfT;
  q2 = qq2 + (qq0*gy - qq1*gz + qq3*gx)*halfT;
  q3 = qq3 + (qq0*gz + qq1*gy - qq2*gx)*halfT;

//   // 整合四元数率和正常化                                          
//   q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;
//   q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;
//   q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;
//   q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;

出105入79汤圆

 楼主| 发表于 2014-2-19 22:10:01 | 显示全部楼层
williamzhang533 发表于 2014-2-19 21:40
楼主,为什么要把屏蔽掉的替换成这样.这两个不一样么??

qq0=q0;qq1=q1;qq2=q2;qq3=q3;

结果是差不多的,运算差一步而已。两个都能用。

出0入0汤圆

发表于 2014-2-21 14:27:56 | 显示全部楼层
为什么我用楼主方法做出来的角度,和我用DMP(MPU6050传感芯片)做出来的, 角度值两个比较接近,就是正负相反.
楼主帮我看看哪里出了问题.谢谢!

/*******for angle cal************/
#define Kp 1.0f//2.0f                  // proportional gain governs rate of convergence to accelerometer/magnetometer
#define Ki 0.001f//0.005f                // integral gain governs rate of convergence of gyroscope biases
#define halfT 0.002f               // half the sample period
//float halfT;
//#define qu30  1073741824.0f
float q0=1.0f,q1=0.0f,q2=0.0f,q3=0.0f;
float exInt = 0, eyInt = 0, ezInt = 0;        // scaled integral error
float AcceRatio = 16384.0;                  //加速度计比例系数
float GyroRatio = 131.0;  //16.4;//32.8;//                  //陀螺仪比例系数
void Get_Tiltangle(void)          //4ms 中断调用
{
        float norm;
        float vx, vy, vz;
        float ex, ey, ez;
//        if(MPU6050_is_DRY())
//        {            
             MPU6050_getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

                 gyrox= (gx-mpuoffsetx)/GyroRatio;//*mpukx;                                                // gx单位为度秒, ax单位为牛米平方秒
         gyroy= (gy-mpuoffsety)/GyroRatio;//*mpuky;
         gyroz= (gz-mpuoffsetz)/GyroRatio;//*mpukz;
                 accx= ax/AcceRatio;
         accy= ay/AcceRatio;
         accz= az/AcceRatio;
   
                gyrox*=0.0174;gyroy*=0.0174;gyroz*=0.0174;//转换为弧度

        // normalise the measurements  单位化四元数 取模
        norm = sqrt(accx*accx + accy*accy + accz*accz);      
        accx = accx / norm;
        accy = accy / norm;
        accz = accz / norm;   
                    
                // estimated direction of gravity  估计方向的重力
        vx = 2*(q1*q3 - q0*q2);
        vy = 2*(q0*q1 + q2*q3);
        vz = q0*q0 - q1*q1 - q2*q2 + q3*q3;

                // error is sum of cross product between reference direction of field and direction measured by sensor
        // 误差和方向传感器测量参考方向之间的交叉乘积的总和
                ex = (accy*vz - accz*vy);
        ey = (accz*vx - accx*vz);
        ez = (accx*vy - accy*vx);

                // integral error scaled integral gain
                // 积分误差比例积分增益
        exInt = exInt + ex*Ki;
        eyInt = eyInt + ey*Ki;
        ezInt = ezInt + ez*Ki;

        // adjusted gyroscope measurements
                // 调整后的陀螺仪测量
        gyrox = gyrox + Kp*ex + exInt;
        gyroy = gyroy + Kp*ey + eyInt;
        gyroz = gyroz + Kp*ez + ezInt;

                // integrate quaternion rate and normalise
                // 整合四元数率和正常化
        q0 = q0 + (-q1*gyrox - q2*gyroy - q3*gyroz)*halfT;
        q1 = q1 + (q0*gyrox + q2*gyroz - q3*gyroy)*halfT;
        q2 = q2 + (q0*gyroy - q1*gyroz + q3*gyrox)*halfT;
        q3 = q3 + (q0*gyroz + q1*gyroy - q2*gyrox)*halfT;

                // normalise quaternion
        norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
        q0 = q0 / norm;
        q1 = q1 / norm;
        q2 = q2 / norm;
        q3 = q3 / norm;

                 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;
}

出105入79汤圆

 楼主| 发表于 2014-2-21 16:49:05 | 显示全部楼层
williamzhang533 发表于 2014-2-21 14:27
为什么我用楼主方法做出来的角度,和我用DMP(MPU6050传感芯片)做出来的, 角度值两个比较接近,就是正负相反.
...

很正常· 加个符号反过来就行了。也可以将传感器数据反过来,也可以把传感器焊背面

出0入0汤圆

发表于 2014-2-21 23:08:31 | 显示全部楼层
qwe2231695 发表于 2014-2-21 16:49
很正常· 加个符号反过来就行了。也可以将传感器数据反过来,也可以把传感器焊背面  ...

,非常感谢。我知道,软件加个负号修正,控制板方向方过来安装,都可以解决问题。我只是奇怪怎么就反了呢!研究了很久,没整明白根源。

出105入79汤圆

 楼主| 发表于 2014-2-22 00:14:34 | 显示全部楼层
williamzhang533 发表于 2014-2-21 23:08
,非常感谢。我知道,软件加个负号修正,控制板方向方过来安装,都可以解决问题。我只是奇怪怎么 ...

你把那段程序一个不漏读懂就知道啦,就是四元数坐标转换欧拉角的公式上,自由度很大。所以不要纠结。

出0入0汤圆

发表于 2014-2-22 19:53:32 | 显示全部楼层
今晚继续调试楼主的算法. 在桌面上做水平运动加速的时候,运动方向的倾角有+ -3度的波动误差. 水平运动时,运动方向的倾角应该是保持不变化才合理.
附上调试图:

绿色的是沿X轴运动加速,对应的PITCH有 上下3度波动. 红色是沿Y轴,对应ROLL角波动. 调整KI,KP,HalfT参数,都没效果.不知道楼主是怎么处理这种波动的.
还望指点,非常感谢!

本帖子中包含更多资源

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

x

出105入79汤圆

 楼主| 发表于 2014-2-22 20:19:37 | 显示全部楼层
williamzhang533 发表于 2014-2-22 19:53
今晚继续调试楼主的算法. 在桌面上做水平运动加速的时候,运动方向的倾角有+ -3度的波动误差. 水平运动时,运 ...

减小内部PI滤波的P,并且一定要保证陀螺仪数据的质量。

出0入0汤圆

发表于 2014-2-24 17:39:58 | 显示全部楼层
qwe2231695 发表于 2014-2-22 20:19
减小内部PI滤波的P,并且一定要保证陀螺仪数据的质量。

非常感谢!楼主的算法很棒,静态误差在0.02以内,动态误差已经减小到+-0.8了.

出0入0汤圆

发表于 2014-3-13 11:26:35 | 显示全部楼层
mark  imu.c代码

出0入0汤圆

发表于 2014-3-26 20:42:53 | 显示全部楼层
williamzhang533 发表于 2014-2-22 19:53
今晚继续调试楼主的算法. 在桌面上做水平运动加速的时候,运动方向的倾角有+ -3度的波动误差. 水平运动时,运 ...

熟悉的Labview 界面= =  后来通过调整P I 参数把运动加速度的影响减小了?

出0入0汤圆

发表于 2014-3-27 19:43:44 | 显示全部楼层
含金量很高的帖子,感谢,收走了

出0入0汤圆

发表于 2014-3-27 22:41:05 | 显示全部楼层
我特别喜欢航模,交流一下

出0入0汤圆

发表于 2014-3-28 15:39:07 | 显示全部楼层
mark!以后慢慢研究

出0入0汤圆

发表于 2014-4-2 23:09:58 | 显示全部楼层
不错,学习了

出0入0汤圆

发表于 2014-4-18 21:44:15 | 显示全部楼层
厉害,我落后了很多啊

出0入0汤圆

发表于 2014-4-19 20:04:16 | 显示全部楼层
我是来学习的。顺便帮楼主顶

出0入0汤圆

发表于 2014-4-21 16:49:53 | 显示全部楼层
楼主有试过不用加速度校正陀螺仪数据,直接用陀螺仪数据去更新四元数?我试着把校正的代码注释了,和没注释的基本一致,开动电机不抖也不漂(过了好几分钟)。。。用的是MPU6050,我还把低通滤波都关了

出0入0汤圆

发表于 2014-4-21 17:19:34 | 显示全部楼层
学习一下,虽然什么都不懂。纯顶!

出0入0汤圆

发表于 2014-4-25 21:44:37 | 显示全部楼层
学习,imu.c

出50入255汤圆

发表于 2014-5-8 00:47:44 | 显示全部楼层
看了一遍,没有看懂,先收藏

出0入0汤圆

发表于 2014-9-17 20:08:17 | 显示全部楼层
好贴,必须顶!

出0入0汤圆

发表于 2014-9-20 14:26:00 | 显示全部楼层
为什么我的加速度曲线上下波动很大,没楼主光滑。我也做了平均滤波了。
还有怎么看曲线响应的很好了呢?

出0入0汤圆

发表于 2014-11-26 12:02:00 | 显示全部楼层
halfT=(float)time; //得到采样时间
        
gx*=0.0174;gy*=0.0174;gz*=0.0174;//转换为弧度

请问楼主:为什么陀螺仪角度在这里要转换成弧度呢??

出0入0汤圆

发表于 2014-11-26 12:22:16 | 显示全部楼层
不明觉厉,顶!

出0入0汤圆

发表于 2014-11-26 12:38:39 | 显示全部楼层
祝一切顺利。。。。

出0入0汤圆

发表于 2015-4-6 16:03:50 | 显示全部楼层
搂住太厉害了,有思路了

出0入0汤圆

发表于 2015-4-6 23:09:18 | 显示全部楼层
马住关注一下,imu,楼主加油

出0入0汤圆

发表于 2015-4-17 08:21:10 | 显示全部楼层
期望自己的四轴早早飞起来

出0入0汤圆

发表于 2015-4-22 21:48:17 | 显示全部楼层
值得学习,谢谢楼主。

出0入0汤圆

发表于 2015-5-15 08:35:21 | 显示全部楼层
楼主的这个IMU算法我也在用,但有个疑问,6050出来的数据是直接进这个函数呢还是滤一下波(均值、卡尔曼之类的),我直接进这个函数,但效果不好

出0入0汤圆

发表于 2015-5-21 10:21:56 | 显示全部楼层
williamzhang533 发表于 2014-2-24 17:39
非常感谢!楼主的算法很棒,静态误差在0.02以内,动态误差已经减小到+-0.8了.

...

你好 你是用imu.c的程序调的么?你是如何提高动态精度的?

出0入0汤圆

发表于 2015-5-21 16:48:00 | 显示全部楼层
捷联导航,留个记号

出0入0汤圆

发表于 2015-7-17 16:50:27 | 显示全部楼层
楼主真厉害,几天就能搞定!

出0入0汤圆

发表于 2015-9-2 09:37:02 | 显示全部楼层
楼主能不能传一份6050完整的代码,调了好几天始终有问题,谢谢了

出0入0汤圆

发表于 2016-5-30 11:03:07 | 显示全部楼层
学习一下 !!!

出0入0汤圆

发表于 2016-11-24 14:31:58 | 显示全部楼层
好贴,学习,帮顶!!!

出0入0汤圆

发表于 2019-1-31 11:14:10 | 显示全部楼层
有没有用mpu6050做惯性动捕的?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 12:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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