导航基本算法.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
导航基本算法 有了位置、高度、地速、空速、姿态,我们就可以根据这些参数来进行计算,控制飞机给出 相 应 舵 面 , 实 现 导 航 、 定 高 的 目 的 。 最简单的导航算法只考虑当前飞机所在点和目标点。设想一下,飞机在空中飞行时,当前点和目标点的连线指定了飞机应该飞行的航向(即目标航向) ,如果要使飞机朝向目标点飞行,必 须 控 制 飞 机 转 弯 , 使 飞 机 航 向 与 目 标 航 向 一 致 。 为了准确描述航向,我们定义以正北为 0 度,顺时针起航向与正北的夹角为正, 逆时针起航向与 正北的夹角为负,这样将航向定义在 -180 度到+180 度之间。这样,上例中,飞机的航向为 90 度, 目 标 航 向 为 120 度 左 右 。 好了,当前飞机的航向我们可以从 GPS 航向里提取,我们记其为 Hangxiang 。下面我们怎么根据目标点和当前点的坐标来计算目标航向呢? 我们把目标航向记为 beta, 于是航向偏差为beta-Hangxiang 。 记当前的经纬度为 CurLongi 、CurLatti ,单位为度;目标点经纬度为 tgtLongi 、tgtLatti,单位为 度。由平面几何的知识,我们计算反正切 atan((tgtLongi-CurLongi)/(tgtLatti-CurLatti)) ,再经过象限处 理 , 就 可 得 到 目 标 航 向 。 在 实 际 程 序 中 , 我 们 是 这 样 做 的 : vectorLatti = vectorLongi = tgtLatti tgtLongi CurLatti; CurLongi; beta = CalAtanVector(); // 计 算 vectorLongi 、 vectorLatti 向 量 与 正 北 的 夹 角 而 CalAtanVector ( ) 函 数 如 下 : float CalAtanVector(void) //计算 vectorLongi/vectorLatti 的反正切函数,返回范围在 -PI~PI 之间 { float float if(vectorLatti beta; lTemp; > 0) bNorth = 1; else bNorth = 0; if(vectorLongi bEast = > 0) 1; else bEast = 0; vectorLatti vectorLongi = fabsf(vectorLatti); = fabsf(vectorLongi); vectorLongi if(vectorLongi = vectorLongi > * COS_FACTOR; vectorLatti) { lTemp = vectorLongi; vectorLongi = vectorLatti; vectorLatti = lTemp; bGT45 = 1; } else { bGT45 = 0; } if beta= atan(vectorLongi/vectorLatti); //0~PI/4 (vectorLatti!=0) 范 围 else beta = PI/2; if(bGT45) beta = PI/2 - beta; //PI/4~PI/2 范 围 if(bNorth && bEast) beta = beta; //0~PI/4 范 围 if(bNorth && !bEast) beta = 0 - beta; //-PI/4~0 范 围 if(!bNorth beta = beta && - PI; //-PI~-3PI/4 范 !bEast) 围 if(!bNorth && bEast) beta = PI - beta; //3PI/4~PI 范 围 return beta; } 其中出现了一个因数 COS_FACTOR,这是当前纬度的余弦值。这是因为两点经度之差要乘以当前纬度的余弦值,才代表了两点水平距离之差。 也就是说,同样的经度差,在赤道附近表征很大的 距 离 , 而 在 北 极 附 近 表 征 的 距 离 就 相 对 较 小 , 这 一 点 大 家 应 该 能 理 解 。 好了,现在已经得到了 alpha = beta –Hangxiang ,即为当前航向与目标航向的偏差角, 当不需要压航线进行控制的时候,比如进行所点即所到、临时改变航点的时候,就可以用 alpha 作为 PID 控制的误差输入量,去计算应该给出的方向舵控制量(方向舵转弯时) 或横滚坡度量(副翼转弯 时 ) 了 。

文档评论(0)

mph + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海谭台科技有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7CY11Y3K

1亿VIP精品文档

相关文档