楼主: zkcaptain
收起左侧

[小应用]GD32F103+MPU9150 四轴飞行器第一步:9DOF姿态融合

[复制链接]

0

主题

56

帖子

168

积分

中级技术员

发表于 2014-1-8 15:31 | 显示全部楼层 |返回版面
mark一下    后续有资金了    自己也整一套玩玩
     

3

主题

229

帖子

690

积分

高级技术员

发表于 2014-1-10 10:11 | 显示全部楼层 |返回版面
标记,对飞行器很感兴趣,但是自己做不了飞行员,只能努力当个驾驶员

0

主题

5

帖子

15

积分

实习生

发表于 2014-1-11 21:33 | 显示全部楼层 |返回版面
楼主作的很棒, 我对9150也很感兴趣, 楼主的代码得我帮助很大, 非常感谢.楼主可否开源一下电路图, 对照电路图看代码会更容易些. 再次感谢搂主.
     

10

主题

251

帖子

799

积分

高级技术员

发表于 2014-1-13 10:14 | 显示全部楼层 |返回版面
楼主,你的资料很详细,代码写得非常清晰,谢了!!
My favorite programming language is ... solder.
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-1-13 10:34 | 显示全部楼层 |返回版面
ZZ4903 发表于 2014-1-11 21:33
楼主作的很棒, 我对9150也很感兴趣, 楼主的代码得我帮助很大, 非常感谢.楼主可否开源一下电路图, 对照电路 ...

这一版的电路图我就不发了,没什么东西,就1个I2C,1个串口,1个灯而已,下一版再说

这一版:
PB11:SDA
PB10:SCL
TX:PA2
RX:PA3

0

主题

2

帖子

6

积分

实习生

发表于 2014-1-13 19:36 | 显示全部楼层 |返回版面
小白正在学习中,谢楼主分享!

0

主题

5

帖子

15

积分

实习生

发表于 2014-1-14 21:02 | 显示全部楼层 |返回版面
感谢楼主的回复,因为我是个初学者,对9150只是一知半解,我想问的是:例程中9150是否只用了I2C的两引脚,其他引脚如INT、AD0、FSYNC等都没接到CPU上?
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-1-15 11:18 | 显示全部楼层 |返回版面
ZZ4903 发表于 2014-1-14 21:02
感谢楼主的回复,因为我是个初学者,对9150只是一知半解,我想问的是:例程中9150是否只用了I2C的两引脚, ...

只用了I2C,AD0我直接接的地,其他的脚都引出来了,想用可以直接飞线

0

主题

5

帖子

15

积分

实习生

发表于 2014-1-15 13:21 | 显示全部楼层 |返回版面
谢谢楼主!

4

主题

57

帖子

174

积分

中级技术员

发表于 2014-1-19 19:42 | 显示全部楼层 |返回版面
好强大的作品

4

主题

97

帖子

294

积分

中级技术员

发表于 2014-1-19 19:58 | 显示全部楼层 |返回版面
是从蝴蝶系列转过来了?

0

主题

26

帖子

78

积分

初级技术员

发表于 2014-1-23 15:30 | 显示全部楼层 |返回版面
你好,lz,我在调void init_quaternion(void)这个函数时,读取dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);进不了加速计的开启状态。我使用的版本就是你的旧版本,就是GD32F103CB IMU.rar,在void init_quaternion(void)之前的都通过了。
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-1-23 16:43 | 显示全部楼层 |返回版面
本帖最后由 zkcaptain 于 2014-1-23 16:49 编辑
baoliguo 发表于 2014-1-23 15:30
你好,lz,我在调void init_quaternion(void)这个函数时,读取dmp_read_fifo(gyro, accel, quat, &sensor_t ...

“进不了加速计的开启状态”是什么意思?debug一下看哪地方没过,新版本我测试过,应该没问题的

旧版本的话,我旁边有注释://循环20次是因为第一次执行dmp_read_fifo时,无法进入if(sensors & INV_XYZ_ACCEL),需要多循环几次

难道你的意思是执行完dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);以后不会进入if(sensors & INV_XYZ_ACCEL)里面的代码?


0

主题

26

帖子

78

积分

初级技术员

发表于 2014-2-9 14:04 | 显示全部楼层 |返回版面
最近我调程序有一些进展,使用dmp,当使用selftest程序后,校准的加速剂的值为:-17600 26204 -17920,陀螺仪的:-5202 -32051 18407
后来进入到初始化四元数的函数中,经过20次读,读到两组加速剂的值:6 -680 -7176;28 -676 -7119
我想问楼主,这个值可以吗?这个值显示我的dmp工作正常吗?
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-2-10 13:47 | 显示全部楼层 |返回版面
baoliguo 发表于 2014-2-9 14:04
最近我调程序有一些进展,使用dmp,当使用selftest程序后,校准的加速剂的值为:-17600 26204 -17920,陀螺 ...

如果加了自校准功能,并且还是用DMP读出来的.

那么加速度计在水平放置状态下,正负4g的测量范围内,其理论值应该是0 0 8192;
以此类推加速度计在水平放置状态下,正负8g的测量范围内,其理论值应该是0 0 4096;

陀螺仪在静止不动的状态下,其理论值应该是0 0 0

0

主题

26

帖子

78

积分

初级技术员

发表于 2014-2-10 14:12 | 显示全部楼层 |返回版面
zkcaptain 发表于 2014-2-10 13:47
如果加了自校准功能,并且还是用DMP读出来的.

那么加速度计在水平放置状态下,正负4g的测量范围内,其理 ...

按照正负4g的量程,加了自校准功能,并且还是用dmp读出的两组加速剂数据,6 -680 -7176;28 -676 -7119。这数据与标准数据比较发现,x轴差的不多,但y,z轴差距很大。附加说明一下,没有开启磁传感器。我还想问,是否可以修准接近到理论值?
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-2-10 15:28 | 显示全部楼层 |返回版面
baoliguo 发表于 2014-2-10 14:12
按照正负4g的量程,加了自校准功能,并且还是用dmp读出的两组加速剂数据,6 -680 -7176;28 -676 -7119。 ...

跟磁力计没什么关系,修正是可以修正的,用零漂校准(水平静止时的读数偏差)和零点校准(同一个轴正负1g的读数的绝对值是否相等)。

DMP不是很好用,之前我用的dmp,后来还是自己弄了。

1

主题

20

帖子

60

积分

初级技术员

发表于 2014-2-11 18:28 | 显示全部楼层 |返回版面
楼主,我使用你提供的方法使用dmp库,读出的四元数经过计算得出欧拉角。我将mpu6050模块在桌子上放平,然后慢慢抬起(只动pitch),在pitch角大于80°时,就会导致yaw和roll角度非常不准确。请问你知道是什么原因吗?怎么能解决这个问题?
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-2-12 09:13 | 显示全部楼层 |返回版面
本帖最后由 zkcaptain 于 2014-2-12 09:15 编辑
wuzhiliang1234 发表于 2014-2-11 18:28
楼主,我使用你提供的方法使用dmp库,读出的四元数经过计算得出欧拉角。我将mpu6050模块在桌子上放平,然后 ...

当pitch等于正负90度时,会出现欧拉角的奇异点,这个奇异点是欧拉角本身的缺陷造成的,有个名词叫什么来着?万向节死锁?也就是说用欧拉角来控制四轴,如果不在代码上做全角度欧拉角处理,那么就不能使用欧拉角使四轴进行全姿态飞行。我主楼帖子里有说,至于你说pitch=80度就会出现这个现象是因为加速度计没校准,校准以后会在pitch=90度附近出现这种情况

一般飞行时,pitch最多也就是个正负20-30多度左右,会在pitch和roll上做角度限制,不然四轴容易失控。我没飞过,只是猜想。

1

主题

20

帖子

60

积分

初级技术员

发表于 2014-2-12 10:28 | 显示全部楼层 |返回版面
本帖最后由 wuzhiliang1234 于 2014-2-12 10:30 编辑


我用的mpu6050没有磁力计,以下是我向上抬起mpu6050,理想的结果是只有pitch从0°~90°增长,但是在pitch超过80°后,yaw和roll就会有很大的增量。我的陀螺仪和加速度计都经过    run_self_test();成功校准过的。还是不行,结果在pitch从80°到90°变化时yaw,pitch,roll角度都不能使用,以上是我的截图:

本帖子中包含更多资源

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

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

本版积分规则

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