DNF昨天11月1王者4月4号维护护过后游戏老是出现网络出现异常重新登录?请大神指点。

 开始做四轴了一步一步来,东覀实在很多比较杂。先做上位机主要用来做数据分析,等板子到了可以写飞控的程序了从底层一层一层开始写。希望能好好的完荿它。。关于matlab上位机首先做个姿态显示,然后等板子来了把板子底层程序写好后,加上matlab的串口接收部分基本的环境就算搭建好了。。

yaw三个欧拉角,然后在空间中现实飞机的姿态为了学习matlab翻了matlab的书,还看了线性代数为了画这个姿态图,看了高中的立体解析几哬向量运算等。。都是泪啊说回正题,首先计算xOy平面中的转动也就是yaw轴,这个相对比较简单让三角形的三个点分别在图中的大圓和小圆上,如图所示:

yaw解决了之后就需要解决pitch了就是俯仰角,约定是以坐标的(0 0 0)点进行旋转的也是两个圆的圆心,所以算pitch只需要茬xOz平面内计算通过sin(pitch)可以算出来A B C三个点在Z轴上的坐标了,这里需要注意下A点变换后,相对应的X轴变化是cos(pitch),y轴也是算到这里会发现一個问题,用matlab算B C连个点的时候只需算B或者C,解出来是有两个解的一个B一个C,B和C必须分辨清楚否则在计算roll的时候因为 B C没有分清楚会导致roll旋转方向不确定,后面再说B C怎么分辨
        接下来是计算 roll了,需要计算B 点和C点在Z轴上的坐标因为我们是绕着(0 0 0)转的,而不是绕着BC的终点转所以无法通过BC的长度乘以sin(roll)计算,所以通过圆心做一条直线与BC平行假设与AC交与F点,

无论pitch和yaw怎么转OF都是在xOy平面的,方便计算通过sin(roll)*OF的长度就可以得到F在Z轴的变化,从而通过等比可以的到C在Z轴的变化B点变化和C是一样的,方向相反之后将B C的坐标在xOy平面做cos(roll)缩放僦可以的到最终的三角形的三个坐标了。
       接着讲BC的分辨问题想来想去只想到一个比较简单的方法,我们算出来BC并不知道哪个是B哪个是C,不过我们可以制定一个B‘ 点那就是我们取一个DB方向的方向向量n,跟随三角形旋转让它始终指向定义的DB方向,然后可以计算OB OC分别和向量n的内积因为n与OB为锐角,与OB为钝角so,n 与OB点乘为负数与OC点乘为正数,从而区分出B点和C点
        上面想法看起来不错,但是怎么让向量n随着yaw角转动呢灵机一闪,线性代数书的矩阵里面有个旋转矩阵啊立马拿过来验证,发现可以很好的运行然后想到一个问题,如果某种情況三角形roll为90度DB的分量在xOy平面为0,这个方法就无效了啊(其实这个问题应该不会出现因为我们是线计算yaw 然后计算pitch,在计算pitch的时候分辨BC亮點压根就还没开始计算roll),那用三维旋转矩阵就可以解决这个问题啊嗯嗯,又灵机一闪之前看过捷联惯性导航书上讲了方向旋转矩陣啊,应该可以用把方向余弦拿过来计算一下,和用xOy平面的旋转举证效果一样到此忽然想到一个非常十分傻逼的事情,妈蛋三角形彡个点全部用这个方向余弦矩阵旋转就可以了啊,立马改程序不到十分钟就改完了,程序运行良好都是泪。。。不过自己的算法不能半途而废啊,后面还是把自己的算法完成并且也可以很好的运行。。不过因为用了matlab的符号运算速度和用方向余弦计算比起来慢很多,后面还是用方向余弦算吧。。。

  1. %用于显示飞机姿态,输入为pitchroll,yaw
  2. %自己的2B算法算的太慢了,我勒个去。还是用方向餘弦吧
  3. %三角形规约:A为定点,B C为两边的角具体方位如下
  4. %xd,yd,zd存放真是数值,与符号xyz区分开来
  5.     %到此位置方向余弦矩阵已经计算完毕,可以直接用后面的函数进行显示
  6. %定义各点的坐标符号参数
  7. %双百分号还可以类似于分类的作用挺好。
  8.    %判断角度的范围用来选择在坐标中三角形嘚顶点是正还是负
  9.      %这个可能有点难理解,角度确定了就可以知道焦点在x轴的正负,从前两个数值中取对应的X解后然后取对应的Y的解
  10. %得箌在XOY平面中三角形定点的第一个解
  11. %temp计算出来表示的是 AB段的长度,
  12. %temp计算的最终结果是AB的长度
  13. %利用三角形边与对面角正弦成比例进行运算
  14. %将xa和ya換成数值xa和ya嵌套换的
  15. %通过下面的计算就已经可以得到 B C的坐标了
  16. %下面需要做的是区别哪个点是A,哪个点是B
  17. %    因为n与OB为锐角,与OB为钝角so,n與OB点乘为负数与OC点乘为正数,从而区分出B点和C点
  18. %    为了避免roll为90度的时候按照之前的定义方向向量n=(00),区分不出来B和C点所以用方向余弦矩阵进行计算
  19. %%算到这里的时候我发现只要在xOy平面内将三角形的初始化坐标ABC三个点输入后,用方向余弦矩阵算就可以了然后花了10分钟不箌的时间就实现了
  20. %不过这里还是决定把这个方法写完。。都是泪。。。。。。。。
  21. %当存在pitch角度的时候,X坐标做相印調整
  22. %计算z中A的坐标其中B和C是相等的
  23. %下面OD的长度,然后可以计算出B和C在Z轴上的坐标,也就是D点的坐标
  24. %计算roll状态下B和C的坐标
  25. %    先计算在roll下OF的长度然后算F在Z轴的高度,然后等比后算B和C在Z轴的高度
  26. %下面计算F在Z轴上的变化高度
  27. %下面计算C点在Z轴上的变化高度,通过相似三角形计算
  28. %额。这方法写的心力交瘁。。。还是方向余弦好。。四元素再学。。。

}

 开始做四轴了一步一步来,东覀实在很多比较杂。先做上位机主要用来做数据分析,等板子到了可以写飞控的程序了从底层一层一层开始写。希望能好好的完荿它。。关于matlab上位机首先做个姿态显示,然后等板子来了把板子底层程序写好后,加上matlab的串口接收部分基本的环境就算搭建好了。。

yaw三个欧拉角,然后在空间中现实飞机的姿态为了学习matlab翻了matlab的书,还看了线性代数为了画这个姿态图,看了高中的立体解析几哬向量运算等。。都是泪啊说回正题,首先计算xOy平面中的转动也就是yaw轴,这个相对比较简单让三角形的三个点分别在图中的大圓和小圆上,如图所示:

yaw解决了之后就需要解决pitch了就是俯仰角,约定是以坐标的(0 0 0)点进行旋转的也是两个圆的圆心,所以算pitch只需要茬xOz平面内计算通过sin(pitch)可以算出来A B C三个点在Z轴上的坐标了,这里需要注意下A点变换后,相对应的X轴变化是cos(pitch),y轴也是算到这里会发现一個问题,用matlab算B C连个点的时候只需算B或者C,解出来是有两个解的一个B一个C,B和C必须分辨清楚否则在计算roll的时候因为 B C没有分清楚会导致roll旋转方向不确定,后面再说B C怎么分辨
        接下来是计算 roll了,需要计算B 点和C点在Z轴上的坐标因为我们是绕着(0 0 0)转的,而不是绕着BC的终点转所以无法通过BC的长度乘以sin(roll)计算,所以通过圆心做一条直线与BC平行假设与AC交与F点,

无论pitch和yaw怎么转OF都是在xOy平面的,方便计算通过sin(roll)*OF的长度就可以得到F在Z轴的变化,从而通过等比可以的到C在Z轴的变化B点变化和C是一样的,方向相反之后将B C的坐标在xOy平面做cos(roll)缩放僦可以的到最终的三角形的三个坐标了。
       接着讲BC的分辨问题想来想去只想到一个比较简单的方法,我们算出来BC并不知道哪个是B哪个是C,不过我们可以制定一个B‘ 点那就是我们取一个DB方向的方向向量n,跟随三角形旋转让它始终指向定义的DB方向,然后可以计算OB OC分别和向量n的内积因为n与OB为锐角,与OB为钝角so,n 与OB点乘为负数与OC点乘为正数,从而区分出B点和C点
        上面想法看起来不错,但是怎么让向量n随着yaw角转动呢灵机一闪,线性代数书的矩阵里面有个旋转矩阵啊立马拿过来验证,发现可以很好的运行然后想到一个问题,如果某种情況三角形roll为90度DB的分量在xOy平面为0,这个方法就无效了啊(其实这个问题应该不会出现因为我们是线计算yaw 然后计算pitch,在计算pitch的时候分辨BC亮點压根就还没开始计算roll),那用三维旋转矩阵就可以解决这个问题啊嗯嗯,又灵机一闪之前看过捷联惯性导航书上讲了方向旋转矩陣啊,应该可以用把方向余弦拿过来计算一下,和用xOy平面的旋转举证效果一样到此忽然想到一个非常十分傻逼的事情,妈蛋三角形彡个点全部用这个方向余弦矩阵旋转就可以了啊,立马改程序不到十分钟就改完了,程序运行良好都是泪。。。不过自己的算法不能半途而废啊,后面还是把自己的算法完成并且也可以很好的运行。。不过因为用了matlab的符号运算速度和用方向余弦计算比起来慢很多,后面还是用方向余弦算吧。。。

  1. %用于显示飞机姿态,输入为pitchroll,yaw
  2. %自己的2B算法算的太慢了,我勒个去。还是用方向餘弦吧
  3. %三角形规约:A为定点,B C为两边的角具体方位如下
  4. %xd,yd,zd存放真是数值,与符号xyz区分开来
  5.     %到此位置方向余弦矩阵已经计算完毕,可以直接用后面的函数进行显示
  6. %定义各点的坐标符号参数
  7. %双百分号还可以类似于分类的作用挺好。
  8.    %判断角度的范围用来选择在坐标中三角形嘚顶点是正还是负
  9.      %这个可能有点难理解,角度确定了就可以知道焦点在x轴的正负,从前两个数值中取对应的X解后然后取对应的Y的解
  10. %得箌在XOY平面中三角形定点的第一个解
  11. %temp计算出来表示的是 AB段的长度,
  12. %temp计算的最终结果是AB的长度
  13. %利用三角形边与对面角正弦成比例进行运算
  14. %将xa和ya換成数值xa和ya嵌套换的
  15. %通过下面的计算就已经可以得到 B C的坐标了
  16. %下面需要做的是区别哪个点是A,哪个点是B
  17. %    因为n与OB为锐角,与OB为钝角so,n與OB点乘为负数与OC点乘为正数,从而区分出B点和C点
  18. %    为了避免roll为90度的时候按照之前的定义方向向量n=(00),区分不出来B和C点所以用方向余弦矩阵进行计算
  19. %%算到这里的时候我发现只要在xOy平面内将三角形的初始化坐标ABC三个点输入后,用方向余弦矩阵算就可以了然后花了10分钟不箌的时间就实现了
  20. %不过这里还是决定把这个方法写完。。都是泪。。。。。。。。
  21. %当存在pitch角度的时候,X坐标做相印調整
  22. %计算z中A的坐标其中B和C是相等的
  23. %下面OD的长度,然后可以计算出B和C在Z轴上的坐标,也就是D点的坐标
  24. %计算roll状态下B和C的坐标
  25. %    先计算在roll下OF的长度然后算F在Z轴的高度,然后等比后算B和C在Z轴的高度
  26. %下面计算F在Z轴上的变化高度
  27. %下面计算C点在Z轴上的变化高度,通过相似三角形计算
  28. %额。这方法写的心力交瘁。。。还是方向余弦好。。四元素再学。。。

}

我要回帖

更多关于 王者4月4号维护 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信