楼主: zkcaptain
收起左侧

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

[复制链接]

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-10-22 12:27 | 显示全部楼层 |返回版面
trickbb 发表于 2013-10-22 10:04
非常感谢楼主,有个小问题,那个旋转矩阵,最后一个为什么跟前面两个符号不一样,前面两个应该都是按楼主右 ...

找了半天没找到你说的“那个旋转矩阵”,可否详细描述一下,或者截个图之类的?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

10

帖子

30

积分

实习生

发表于 2013-10-22 14:27 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-10-22 12:27
找了半天没找到你说的“那个旋转矩阵”,可否详细描述一下,或者截个图之类的? ...

就是在你帖子里介绍欧拉角和四元数时候的三个方向余弦矩阵,就是用来坐标变换的,前两个矩阵是按楼主所指的旋转正方向来的,但是第三个确实按照逆方向来的,为什么不统一呢。我最近在看秦永元的惯性导航一书,里面也是这么做的,但是他图示的明明是三个轴都是正方向旋转,但是旋转矩阵有一个却是逆向的,不知道我说清楚了没有
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

10

帖子

30

积分

实习生

发表于 2013-10-22 14:31 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-10-22 12:27
找了半天没找到你说的“那个旋转矩阵”,可否详细描述一下,或者截个图之类的? ...

能加个qq么,
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

2

帖子

6

积分

实习生

发表于 2013-10-22 16:33 | 显示全部楼层 |返回版面
我这几天也在调试,读不到gyro, accel, quat,好愁啊!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-10-23 09:25 | 显示全部楼层 |返回版面
trickbb 发表于 2013-10-22 14:27
就是在你帖子里介绍欧拉角和四元数时候的三个方向余弦矩阵,就是用来坐标变换的,前两个矩阵是按楼主所指 ...

你说的是这个三个坐标变换矩阵吧:




你是说最后一个绕y轴的Roll表示的是逆向旋转?我看过秦永元和邓正隆这两本书,没发现有错误的地方,其他文献和文章里面也是这么用的,你是怎么推到出来是逆向的呢?我看下你的推导过程。

本帖子中包含更多资源

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

x
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

10

帖子

30

积分

实习生

发表于 2013-10-23 09:45 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-10-23 09:25
你说的是这个三个坐标变换矩阵吧:

秦永元的惯性导航我又看了遍,他的没有错误,他的那个飞机的示意图确实是按Z轴逆向,X轴正向,Y轴逆向来的,我也看过很多文献,里面的示意图都是按正向来的,但是公式里却有逆向的矩阵(正向就是按你那个右手定则来的)。你给出的这三个方向余弦矩阵,前两个都是正向的写法,但是最后一个是逆向的,我想问为什么不统一都用正向的,可能这对后面的姿态解算并不影响,关于逆向矩阵的推导,你只要把正向矩阵求个逆矩阵就行了,能加我个QQ么?495196424,我还有很多问题想请教你,谢谢
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
     

17

主题

454

帖子

1460

积分

助理工程师

发表于 2013-10-23 11:18 | 显示全部楼层 |返回版面
学习~~~~
要怎么收获,先那么栽。

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-10-23 13:59 | 显示全部楼层 |返回版面
trickbb 发表于 2013-10-23 09:45
秦永元的惯性导航我又看了遍,他的没有错误,他的那个飞机的示意图确实是按Z轴逆向,X轴正向,Y轴逆向来 ...

他的推导过程相信你也看了,这三个矩阵的推导,定义的是绕一个固定轴旋转a角度,而这里并没有规定符合右手法则的就是正向,不符合右手法则的就是逆向,概念不要搞混了,这里的a角度按你的理解就是可正可逆,作者那图仅仅是为了图示表达的更清楚,这不影响公式的推到,而对应每一个欧拉角的方向余旋矩阵有且仅有1个,不存在正向矩阵和逆向矩阵之说,换句话说,不管你怎么转,这三个矩阵公式不会变。可变的就是你的旋转顺序,也就是说你是按X-Y-Z来旋转还是按Z-X-Y来旋转,这决定了你三个矩阵的乘积的先后顺序以及欧拉角转四元数的公式。

不过我还真没看到过你说的方向余旋矩阵的“正向矩阵和逆向矩阵”,可否截个图或者给我个出处,我看一下正向矩阵和逆向矩阵都是什么样的。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

10

帖子

30

积分

实习生

发表于 2013-10-23 14:16 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-10-23 13:59
他的推导过程相信你也看了,这三个矩阵的推导,定义的是绕一个固定轴旋转a角度,而这里并没有规定符合右 ...

你大概还没明白我的意思,就先不管正向逆向,绕一个轴旋转,肯定有顺时针和逆时针之分,你会发现,两种旋转方式会得到两个不同的旋转矩阵,就在sinα的符号上,我理解的是其实不管用哪个旋转矩阵,只要规定了方向,都一样,加上旋转的顺序不一样,那么最终的旋转矩阵就有好多种了,应该是有48种
能加一下我QQ不
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-10-23 15:15 | 显示全部楼层 |返回版面
trickbb 发表于 2013-10-23 14:16
你大概还没明白我的意思,就先不管正向逆向,绕一个轴旋转,肯定有顺时针和逆时针之分,你会发现,两种旋 ...

你再看看秦永元那本书的第5页到第7页,sina的正负号是由a决定的,再细一点表示出来就是sina或者sin(-a),而不是-sina,a本身代表了正或者负,是含正负号的,所以旋转矩阵的公式就只有1个。

举个例子对于(a乘以b乘以c等于d)来说,你不用关心a、b或者c的正负号,只需要得到d的正负号即可,也就是那句话:不管你用的旋转顺序和旋转方向是什么,得出的最后的旋转结果都是一样的,也就是说你从位置A旋转到位置B,不管你中间公式的正负号和旋转顺序如何,只要你把那三个公式按你的旋转顺序相乘,最后算出的结果都是B的位置。

对于你说的应该有48种旋转矩阵,我觉得你理解错了。
我平时都上不了qq的,有问题这里讨论吧,好处就是别人也能帮到你,或者纠正我的错误。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

10

帖子

30

积分

实习生

发表于 2013-10-23 16:37 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-10-23 15:15
你再看看秦永元那本书的第5页到第7页,sina的正负号是由a决定的,再细一点表示出来就是sina或者sin(-a), ...

那三个矩阵里,类型都一致就行了啊,既然你前面已经规定了正方向,那就按那样的旋转方向为正得出一个旋转矩阵就好了,为什么还弄三个形式不一样的呢?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-10-23 16:52 | 显示全部楼层 |返回版面
本帖最后由 zkcaptain 于 2013-10-23 17:12 编辑
trickbb 发表于 2013-10-23 16:37
那三个矩阵里,类型都一致就行了啊,既然你前面已经规定了正方向,那就按那样的旋转方向为正得出一个旋转 ...
既然你前面已经规定了正方向

前面规定的这个正方向是指:x、y、z这三个轴的轴向要满足右手定则,也就是你的传感器的xyz轴的轴向要满足右手定则,而不是说旋转方向对应的旋转矩阵也要满足右手定则,轴向的定义跟旋转方向没有关系。不管你怎么旋转,那三个方向余旋矩阵是不变的。会变的只有他们三个之间乘积的顺序。也就是说,不用关心其中一个会往哪边旋转,而只需要关心先绕哪个轴来转就行了。关联到矩阵上就是,你不用关心sina的正负号,只需要关心三个矩阵哪个先乘哪个后乘。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

10

帖子

30

积分

实习生

发表于 2013-10-23 17:37 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-10-23 16:52
前面规定的这个正方向是指:x、y、z这三个轴的轴向要满足右手定则,也就是你的传感器的xyz轴的轴向要满足 ...

你的意思是方向余弦矩阵必须是你那三个吗?我觉得应该是我们只要知道自己规定的正方向,把负号提出来或者不提出来都不影响最后的计算
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-10-23 17:43 | 显示全部楼层 |返回版面
本帖最后由 zkcaptain 于 2013-10-23 17:45 编辑
trickbb 发表于 2013-10-23 17:37
你的意思是方向余弦矩阵必须是你那三个吗?我觉得应该是我们只要知道自己规定的正方向,把负号提出来或者 ...

必须是那三个,不然你算出来的大的旋转矩阵,是错的,正负号是含在角度a里的,不是你提取出来的。

你多看看其他书的推导过程,都没有提到旋转方向的问题,只是默认旋转的一个角度,至于往哪转,无所谓。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

10

帖子

30

积分

实习生

发表于 2013-10-23 18:02 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-10-23 17:43
必须是那三个,不然你算出来的大的旋转矩阵,是错的,正负号是含在角度a里的,不是你提取出来的。

你多看 ...

不对,你看秦永元书里,那个大的旋转矩阵,其中三个小的就跟你上面提到的不一样的
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-10-23 18:03 | 显示全部楼层 |返回版面
trickbb 发表于 2013-10-23 18:02
不对,你看秦永元书里,那个大的旋转矩阵,其中三个小的就跟你上面提到的不一样的 ...

哪一页?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

10

帖子

30

积分

实习生

发表于 2013-10-23 18:08 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-10-23 18:03
哪一页?

第八页,06年第一版的
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
     

19

主题

494

帖子

1514

积分

助理工程师

发表于 2013-10-24 09:40 | 显示全部楼层 |返回版面
不错,我也在着手玩四轴了!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-10-24 10:47 | 显示全部楼层 |返回版面
本帖最后由 zkcaptain 于 2013-10-24 10:57 编辑
trickbb 发表于 2013-10-23 18:08
第八页,06年第一版的


我仔细看了一下,你说的对,这三个旋转矩阵的角度是有正负之分,而且需要表现在矩阵元素的正负号上,不过我推导了一下,这不影响你最后结果的正确性,只会影响你结果的正负号,改变下正负号即可。

原理是这样的,如果你在这三个旋转矩阵中规定了往哪个方向旋转为正,那么你后面的有四元数结算出的欧拉角的正负也要与这个旋转方向一致。

一般情况下,就像秦的这本书里,他规定Yaw是从北往东转为正,pitch是机头朝上为正,roll是右翼往下为正,他书里的公式也都是对的,你按他的规定来就行。或者你可以自己规定你的正方向,然后变换下矩阵元素的正负号。

而我这里规定的是Yaw从北往西转为正,因此yaw的那旋转矩阵里跟他差了一个正负号。

你比我细心,哈哈:lol
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

10

帖子

30

积分

实习生

发表于 2013-10-24 21:10 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-10-24 10:47
我仔细看了一下,你说的对,这三个旋转矩阵的角度是有正负之分,而且需要表现在矩阵元素的正负号上,不过 ...

嗯,我也是这个意思,只要知道自己规定的正方向,对结果是没有影响的,姿态是唯一的。后面的四元数和姿态解算,以及最后的PID算法,我可要经常请教你哦
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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