之前有个朋友问了我这个问题。
他的疑惑是,他在程序里看到一段磁力计倾斜补偿的算法,跟自己推导出来的算法不一致。
之前推导出来的算法为:
可以看到两个算法的形式完全不一样,但是我们之前说过,这种算法是有隐藏条件的,与使用的坐标系,使用的旋转矩形顺序都有关系,因为他用的程序我没看过,也就没办法推导。
但是我找到了磁力计手册
他给出的算法形式就是类似于程序里使用的算法,并且给出了清晰的坐标定义,我就可以通过推导来判断手册中算法的正确性。
已知,传感器坐标定义,和机体坐标定义
可以看出机体坐标系为 前右下 传感器坐标系为 前左上,所以 传感器(sensor) 坐标系到 机体(body)坐标系 需要乘以 矩阵:(把传感器的坐标转换到与机体坐标一致)
_^. # () ↩
根据之前的推导,需要转换到水平状态下:
_^. # () ↩
所以:
_^. # () ↩
可以看出,这个公式与之前的推导只是有些符号上的不同,但明显跟手册上的结论不一致,所以我认为手册写错了
这里主要想跟大家分享的
1.知道了思路,遇到不同情况,怎么分析
2.验证算法的思路是掌握正确的方法,用正确的方法推导,而不是试图去推导一个错误的答案。
其实正确的思路我之前就查到了,也推导过,但是我看见手册上给出的算法不一致的时候,我首先想到的是推出手册中的算法,这样就可以看看这个计算过程中哪有问题。
结果花了很多时间都推不出这个手册上的算法,才反应过来我明明已经知道了正确的思路,只需要按照正确思路推导一遍就行了,才想起来以前也犯过类似的错误,想证明什么错了,就想推导出这个错误,去证明它错了,其实我们学习的目的是学会正确的思路,有了正确的思路进行正确的推导就行。
希望能帮你避开一些坑。