MWC开发_GPS篇(一).pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MWC开发_GPS篇(一)

MWC的 GPS内容作为开发的相关内容,会结合着具体程序以及 相关的一些算法原理,分成几部分写出来。 怎么看待 GPS?我个人认为 GPS属于无人机的记载设备,而并 非无人机本身的一部分。喜欢遥控飞行的人,可以不安装 GPS,换句 话说,GPS并非是无人机的必要组件。但毫无疑问的是,GPS会让 无人机变得很酷!DF飞享屋的社区朋友们也是对 GPS最感兴趣。 要说明 GPS是无人机的机载设备,也就是说各位社区同仁,如 果想要设计属于自己的无人机(无论什么目的),不要在 GPS上扎的 太深,毕竟这些已经模块化了,我们只要根据目的选择自己使用的 GPS,能够提取,处理,使用这个设备提供的数据就可以了。 如何提取数据,请认真阅读所购 GPS的说明书。这确实不是开 玩笑。认真的工程师都会明白说明书(或者硬件手册)的重要性,如 果新手没有这个习惯————请养成阅读硬件说明书的习惯。 如何处理 GPS送来的数据呢?首先要明白 GPS送来的是什么数 据。 在MWC主程序,MultiWii.cpp中有哪些信誉好的足球投注网站 GPS,能看到 altitude,speed, 等很多的变量。这些变量先放一边,看函数主要有哪些,这要进入主 循环中有哪些信誉好的足球投注网站。下面将写出涉及的主要内容,并在每段程序结尾进行概 括。 847行: #if GPS GPS_reset_home_position(); 重置 GPS原点。 1038行: #if GPS static uint8_t GPSNavReset = 1; if (f.GPS_FIX GPS_numSat = 5 ) { if (rcOptions[BOXGPSHOME]) { // if both GPS_HOME GPS_HOLD are checked = GPS_HOME is the priority if (!f.GPS_HOME_MODE) { f.GPS_HOME_MODE = 1; f.GPS_HOLD_MODE = 0; GPSNavReset = 0; #if defined(I2C_GPS) GPS_I2C_command(I2C_GPS_COMMAND_START_NAV,0); //waypoint zero #else // SERIAL GPS_set_next_wp(GPS_home[LAT],GPS_home[LON]); nav_mode = NAV_MODE_WP; #endif } } else { f.GPS_HOME_MODE = 0; if (rcOptions[BOXGPSHOLD] abs(rcCommand[ROLL]) AP_MODE abs(rcCommand[PITCH]) AP_MODE) { if (!f.GPS_HOLD_MODE) { f.GPS_HOLD_MODE = 1; GPSNavReset = 0; #if defined(I2C_GPS) GPS_I2C_command(I2C_GPS_COMMAND_POSHOLD,0); #else GPS_hold[LAT] = GPS_coord[LAT]; GPS_hold[LON] = GPS_coord[LON]; GPS_set_next_wp(GPS_hold[LAT],GPS_hold[LON]); nav_mode = NAV_MODE_POSHOLD; #endif } } else { f.GPS_HOLD_MODE = 0; // both boxes are unselected here, nav is reset if not already done if (GPSNavReset == 0 ) { GPSNavReset = 1; GPS_reset_nav(); } } } } else { f.GPS_HOME_MODE = 0; f.GPS_HOLD_MODE = 0; #if !defined(I2C_GPS) nav_mode = NAV_MODE_NONE; #endif } #endif 在这里对两种模式进行判断,并给出优先级次序,并在判断后对模式 涉及的内容进行初始化。这里有 waypoint的相关注释。 1112行: #if GPS if(GPS_Enable) GPS_NewData(); break; #endif 判断,并执行 GPS_NweData,请注意句函数的位置,是在 RC回路 之外,属于任务处理部分,也就是无论遥控器的情况如何,这一句都 会按照相应的逻辑进行。GPS_NewData就是控制芯片接收新数据的 函数。 1205行: #if GPS if ( (f.GPS_HOME_MODE || f.GPS_HOLD_MODE) f.GPS

您可能关注的文档

文档评论(0)

l215322 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档