5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: GPS 罗盘 四轴导航(这几天风大,做了个地面站界面) [打印本页]

作者: 切风40.83    时间: 2011-11-28 05:53
标题: GPS 罗盘 四轴导航(这几天风大,做了个地面站界面)
用GPS 和 罗盘 也许还会加上气压计 给四轴飞碟导航。 这些不算是什么新鲜玩意儿。市场上买的具备同种功能的导航模块 也非常便宜。

经常看我帖子的人应该对我很熟悉吧。


我最先开搞的是 超声波定高。
http://bbs.5imx.com/bbs/viewthread.php?tid=472214&extra=page%3D2
那时候我刚接触AVR 才两个星期。 一开始纯粹是在乱搞,最后的结果还凑活。 虽然不能像一块砖头掉在地上一样稳定,但是不会偏差目标高度3里面。




后来为了熟悉GPS。 我搞了个 GPS 导航小车。 这个是我搞过最为顺利的一个。
http://bbs.5imx.com/bbs/viewthread.php?tid=497415&extra=page%3D2
最后效果非常满意,小车可以自己开回来。 但是毕竟自动驾驶小车不是最终目标,而且也没什么挑战性。 所以没有继续优化下去。学到该学的知识就够了。


再后来搞了罗盘。 前后也比较曲折。
http://bbs.5imx.com/bbs/viewthread.php?tid=500271&extra=page%3D2
主要是为了学习怎么接受罗盘的信号,再进行一些计算,控制伺服电机。


再再后来 搞了 四轴飞碟红外线壁障
http://bbs.5imx.com/bbs/viewthread.php?tid=548570&extra=page%3D1
这个我就不多说了,主要是为了证明 我的算法 可以用来改变四轴的位置。


在搞这些项目的时候 遇到了很多困难, 但是我发誓 我头脑里从来没有一丝放弃的念头。
在之前的这些基础上,终于开始搞GPS 罗盘 四轴导航系统了。 希望一切都能和我预想的一样顺利。 更加希望能有更多的朋友加入我的行列,一起搞。这样会更加有意思。

[ 本帖最后由 切风40.83 于 2011-12-26 11:37 编辑 ]
作者: NeoLu    时间: 2011-11-28 06:36
:em15:
作者: luopeixuan    时间: 2011-11-28 07:08
高技术!
作者: oppop    时间: 2011-11-28 11:03
我有兴趣,请问怎嘛合作?
作者: 切风40.83    时间: 2011-11-28 11:56
自己有什么特长就都拿出来  有什么建议都提出来 这就是最大的帮助了
作者: javajtg    时间: 2011-11-28 14:19
强烈支持,
作者: javajtg    时间: 2011-11-28 14:23
可以和MWC的合作一下,
    弄个MWC中 国版,好像你的片子和MWC是一个平台的, 用户很多,   测试也方便
作者: javajtg    时间: 2011-11-28 14:25
可以和MWC的合作一下,
    弄个MWC中 国版,好像你的片子和MWC是一个平台的, 用户很多,   测试也方便
作者: feng235    时间: 2011-11-28 17:26
楼主终于开新贴了,再来顶楼主,不知楼主怎么联系?想跟你学学!
作者: 切风40.83    时间: 2011-11-29 03:07
前两天 感恩节 学校放假,门不开。 今天一开门 我就做了这个测量单元。 上面有GPS 倾斜补偿罗盘 还有气压计。 暂时先不考虑气压计的问题。 应为要涉及到和超声波测距 数据融合的问题。 我的想法很简单, 读取GPS坐标→ 储存到单片机 →  读取接收机输出的 pitch and roll → 通过罗盘测出角度 → 磁偏角补偿 → 读取GPS 地理坐标 → 计算 → 输出 pitch and roll → 卡尔曼滤波 → 输出到YF90Q。 第四通道还是手动控制。

[ 本帖最后由 切风40.83 于 2011-11-29 03:22 编辑 ]
作者: 切风40.83    时间: 2011-11-29 05:02
回复楼上各位关于 合作的问题:

如果给位真有兴趣的话,不放买一些和我一样的板子 或者传感器。 帮我测试我的源代码。 我最希望听到的是各方面的意见。 这些板子和传感器都不贵 全部加起来 也不会超过 400 人民币。 甚至可以和我造一个差不多的四轴飞碟,然后进行像我这样的改造。
作者: 超音速    时间: 2011-11-29 09:41
标题: 关注
有时间我们试试:loveliness:
作者: hammer11    时间: 2011-11-29 10:05
刚买了 GPS 模块还在路上
不过是打算做个OSD模块的
导航 自动控制 我等业余人士 等等再看哈
作者: 切风40.83    时间: 2011-11-29 11:45
我在这里简单的说明我的导航方法。非常非常简单,而且很容易理解。 只需要高中的数学知识就够了。
楼上说的OSD,我是根本不懂怎么通过单片机弄出来的。我觉得搞辅助飞行最简单也是最有效的办法,是把飞机的姿态和位置信息通过数传模块发送回来,而不是叠加在视频上。

过两天等不下雨了,我打算搞个简单的测试系统 来测试各方面的可靠性。测试系统包括几两个舵机,一个单片机 和 我做的这个测量单元。拿在手上,在外面走在,看看舵机的反应是否正确。如果有问题的话,可以便于排查。 确保地面测试没有问题之后,才会在空中测试。 同时我非常希望有热心人能够帮我进行单项测试。我这儿的冬天实在是太冷啦。


更正:
最后式子是错的,后来贴出来的源代码也有很多BUG。唉,当时犯糊涂了。
正确的式子如下:
r = cos(bearing)*(lat0-latc)-sin(bearing)*(lon0-lonc);
p = sin(bearing)*(lat0-latc)+cos(bearing)*(lon0-lonc);


[ 本帖最后由 切风40.83 于 2011-12-6 11:54 编辑 ]
作者: ggggso007    时间: 2011-11-29 12:39
:em23: :em23: 我们这里也冷起来了,今天温度0度。。。
作者: b57835o    时间: 2011-11-29 16:45
我也在自己研究楼主正在研究的东西,我的电邮通过消息给你了,希望可以一起交流。
作者: hammer11    时间: 2011-11-29 20:56
标题: 回复 14楼 切风40.83 的帖子
其实OSD 也没什么难的 也就是现成的方案,使用MAX7456的方案,可以说什么都是现成的,只需要制版,焊接,烧程序就行。 不过我只是加一点自己的程序进去而已
作者: mltttt    时间: 2011-11-29 23:01
不知道楼主手里有没有一个叫做9自由度的模板 是3轴陀螺仪+陀螺仪加速传感+气压+磁定 4合一的  几成的模块有:九自由度惯性测量传感器包括ITG3200三轴数字陀螺仪,BMP085气压传感器,BMA180数字三轴加速传感器,HMC5883L三轴磁感应传感器【电子罗盘】可以采集加速度,角速度,高度以及角度的信号。

现在还能实现Carefree
我也刚买的还在路上 测试完给你数据

[ 本帖最后由 mltttt 于 2011-11-29 23:44 编辑 ]
作者: 切风40.83    时间: 2011-11-30 00:35
回复楼上:

我几个美国同学手上有9自由度的测量单元。 陀螺(角速度传感器),加速度计 和 HMC5883(磁阻)。 如果你需要的话,我可借来测试,其实我也很想测试。 那几个美国同学是学电子工程专业的,大四,刚开始搞四轴飞控。他们PID算法都还没听说过呐。 :em14:
作者: 切风40.83    时间: 2011-12-1 09:15
准备等我的ARDUINO UNO 到了之后 对代码问题进行仔细排查
作者: javajtg    时间: 2011-12-1 12:10
9自由度的好多人都有,
  MWC 飞控的一个传感器,  国内、 玉兔,
mwc  都用的这个
作者: 切风40.83    时间: 2011-12-4 05:18
今天测试了下测量模块,效果非常好。得到了方向和地理坐标。这天气真是冷啊。
作者: 切风40.83    时间: 2011-12-4 05:23
下面室外导航就指日可待了啊。
作者: 切风40.83    时间: 2011-12-5 08:29
为了保证程序没有问题。 我专门做了这个导航测试台。 等到个好天气到外面测试。

[ 本帖最后由 切风40.83 于 2011-12-5 08:34 编辑 ]
作者: 切风40.83    时间: 2011-12-6 11:58
最新进展
我用ARDUINO 进行了 室内模拟计算。 也就是输入了伪坐标,让它试运行。
作者: wmw    时间: 2011-12-6 13:36
:em26: 期待成品啊~
作者: hammer11    时间: 2011-12-6 15:51
顶一下
楼主是想利用自己的板子控制四轴的导航
只需要接在接收机和飞控板之间吧
作者: cqzk    时间: 2011-12-6 16:36
我准备下学期用单桨直升机加GPS做个自动飞的。暂时准备在平地,无障碍物的地方测试。
作者: zengxushen    时间: 2011-12-7 13:51
我昨天才想到这个方法,没想到楼主已经实施了!支持一个!我认为是可行的。这样可以加装在任一个有自稳功能的四轴上面实现导航。
作者: zengxushen    时间: 2011-12-7 22:46
顶楼主,进展如何
作者: 切风40.83    时间: 2011-12-8 02:39
今天打算到室外用真GPS信号测试下输出控制量。

基于大家经常问我设备的问题 我就把设备型号在这里统统报下:

单片机 ARDUINO UNO 一个 目前用于测试GPS和罗盘 输出控制量
单片机 auduino duemilanove * 2 目前用于 超声波定高 和 红外测距仪 壁障

超声波测距仪 最一般的 五个脚的那种
红外测距仪   夏普 GP2Y0A700K 就是测距范围最大的那种

GPS          SKYLAB 目前淘宝上没有和我一摸一样的型号 但是大多数TTL的GPS都是通用的
罗盘         CMPS10 自带加速度传感器 和 倾斜补偿功能 输出的方向就是倾斜补偿过的, 不需要任何计算直接可以用。 同时还能输出 PITCH 和 ROLL。

数传模块     Xbee900 pro * 2 目前数传模块只是用来做定向天线用,还没有发挥它真正的作用。据说传输距离有15英里 也就是差不多28公里。

遥控系统     Futuba 10CG 和 7 通道接收机。 用7通道接收机是应为 它 1~5 通道信号不是同时发出的,而是按照顺序一个接一个发出的。
平衡仪       FY90Q 没什么好说的,带加速度传感器。 不错。

马达         950KV
电调         某杂牌电调,30A 效果还可以。 以后打算换上 好赢 FUNFLY 系列。
电池         某杂牌 5000mah 30c


就这些了,还有神马问题 可以到我群里去问。
作者: 切风40.83    时间: 2011-12-8 02:41
哦 忘记气压计了  BMP085 效果怎么样还不知到,我买来到现在还没测试过。
作者: 切风40.83    时间: 2011-12-8 05:52
刚才的室外测试不算很顺利,一个GPS不工作了。 幸好有一个备用的GPS。 测试结果是 运算速度很快,但是抓包很慢。 所以每次输出坐标信息, 都会用掉半秒钟的时间。:em22:  如果 FY90 平衡仪在接收不到 控制信号的状态下会出什么状况?
作者: javajtg    时间: 2011-12-8 18:17
过来顶帖的
作者: 切风40.83    时间: 2011-12-11 05:36
今天进行了最后一项模拟测试。哈哈,快了。

[ 本帖最后由 切风40.83 于 2011-12-11 05:39 编辑 ]
作者: qazwsx521521    时间: 2011-12-11 20:29
:em26:
作者: feng235    时间: 2011-12-12 16:17
顶切风兄,希望切风兄能顺利完工!
作者: 切风40.83    时间: 2011-12-13 05:00
做个几号:下周是期末考 试,比较忙,暂停更新两周。 我会抽空看看 中断 怎么在这上面实现。
作者: oppop    时间: 2011-12-18 22:37
楼主可以先在matlab上面先仿真。这样会少走弯路
作者: 切风40.83    时间: 2011-12-25 05:38
A#2 的程序 和接线方法。
目前程序还没有融入任何高度控制, 这个过两天再考虑。

预计的效果是这样的:

1. 通道六开关,关闭。

2. 启动后 等半分钟,给GPS充分的时间启动。

3. 手动起飞。

4. 通道六开关, 打开。

5. 这时候 飞碟是混控的, 你可以强行控制飞碟。 如果你放开操纵杆, 飞机会自动飞回到你拨开关时候的位置。( 这样也是为了安全考虑。 之前的红外壁障功能也是样的。第四通道也是手动控制的。但是不管飞碟头朝哪个方向,都能自己飘回来)

如果关闭开关,飞碟又回到手动控制模式

代码:
#include <Servo.h>
String readString;
Servo roll;
Servo pitch;
Servo throttle;

int mode = 0;
int R;
int P;
long ch1, ch2, ch3, ch6;
int p = 1500;
int r = 1500;

void autopilot();
void output();

void setup(){

  pinMode(3,INPUT);
  pinMode(4,INPUT);
  pinMode(5,INPUT);
  pinMode(6,INPUT);
  pinMode(11,OUTPUT);

  roll.attach(7);
  pitch.attach(8);
  throttle.attach(9);

  ch1 = pulseIn(3,HIGH);
  ch2 = pulseIn(4,HIGH);

  Serial.begin(9600);

}


void loop(){

  if(ch6 > 1500){
    digitalWrite(11,HIGH);

    ch1 = pulseIn(3,HIGH);
    ch3 = pulseIn(5,HIGH);
    p = ch1;

    output();
    autopilot();

    /*------------------------------------------------------------------*/

    ch2 = pulseIn(4,HIGH);
    ch6 = pulseIn(6,HIGH);
    r = ch2;

    output();
    autopilot();

  }

  else{                    //(else) lasts 40ms

    ch1 = pulseIn(3,HIGH);
    ch3 = pulseIn(5,HIGH);
    r = ch1;

    output();

   /*------------------------------------------------------------------*/

    ch2 = pulseIn(4,HIGH);
    ch6 = pulseIn(6,HIGH);
    p = ch2;

    output();  

  }

}

void autopilot(){
  if (Serial.available()) {
    delay(10);
    if (Serial.available() >0) {
      char c = Serial.read();
      readString += c;
    }
  }

  if (readString.length() == 6) {
    Serial.println(readString);
    R = (readString.charAt(1)-48)*10 + (readString.charAt(2)-48) - 50;   
    P = (readString.charAt(4)-48)*10 + (readString.charAt(5)-48) - 50;
    r = ch1 + R;
    p = ch2 + P;
    readString="";
  }


}

void output(){
  roll.writeMicroseconds(p);
  pitch.writeMicroseconds(r);
  throttle.writeMicroseconds(ch3);
}
作者: 切风40.83    时间: 2011-12-25 05:48
还有什么问题到我群里去问。

其实我早就不像在这个论坛发帖子了,这个论坛和几年前相比真是差远了。

但是为了兑现诺言,我还是会把这个帖子更新到这个项目结束为止。
作者: a5696530    时间: 2011-12-25 21:36
定你楼主,希望能出个成品卖
作者: chnca    时间: 2011-12-25 22:03
期待,果然很补错~
作者: 切风40.83    时间: 2011-12-26 06:34
今天天气不好, 我的四轴扛不住风。 所以没有测试。 但是我把代码又改进了许多。
作者: 切风40.83    时间: 2011-12-26 09:31
没测试得了, 反正闲着也是闲着,于是就做了个地面站。 我四轴上的GPS坐标传回来,地图上就会出现白点,表示飞碟的位置。 用的IDE 是 processing, 也是开源的。
界面就是一张地图 和一个白点。 至于方向啊,速度啊, 海拔之类的以后再慢慢加上去。

[ 本帖最后由 切风40.83 于 2011-12-26 11:18 编辑 ]
作者: chnca    时间: 2011-12-26 10:40
学习了,顶起来~~~
作者: 切风40.83    时间: 2011-12-27 08:16
今天场外测试了下。 纠正了些小错误。 但是还是飞不了,我的四轴抗风能力太弱了。

我知道大家看了代码就头疼,我也一样。 A#1通过串口发出的信息如下:

.5050.5050   如果要需要向前方飞的话 .5023.5023

A#2 解码后 R=0, P=0  如果往前飞的话: R=0, P=50-23=27
作者: hammer11    时间: 2011-12-28 20:15
楼主 我顶你
因为我也在搞这个东西:em15:
四轴的导航
作者: hammer11    时间: 2011-12-28 20:17
不过俺是业余的
目前还在初步测试GPS和AVR的计算能力
打算先用M8+3310+瑟夫3带的GPS 做个自己走路的导航
也就是在3310上面显示GPS信息 和离家距离 以及回家方向
类似于FPV中OSD的功能
作者: 切风40.83    时间: 2011-12-29 06:14
原来楼上也是同行啊。 幸会:em00:
不妨到我群里聊聊。

我的四轴已经做了十几次地面测试了,能想到会出问题的地方都进行了单向测试。 就等哪天没风,空中测完了好给大家交差。往后就永久潜水了。:em15:
作者: top-one    时间: 2011-12-29 09:18
我也在玩,难道你们的姿态融合和PID控制都做出来了吗?
作者: hammer11    时间: 2011-12-29 09:24
标题: 回复 53楼 切风40.83 的帖子
:em00: :em00:
呵呵 目前的计划是先给行人导航
然后安装到四轴上 给四轴导航
四轴用的是玉兔的飞控 还算不错
目前的方案是用模拟开关CD4066控制遥控接收机或者单片机控制板对飞控板的控制权
飞控板上安装了无线透明串口(号称1.5公里的距离)气压计+数字指南针模块+GPS
主控目前用的是AVR的M8 估计是不够用 ,但是目前仅仅是开发GPS的导航 所以应该是够了。
过几天回了家就改成M16
作者: b57835o    时间: 2011-12-31 08:54
楼主的群号多少?
作者: 切风40.83    时间: 2012-1-4 07:13
号: 三宜三舅四舅溜溜
作者: 切风40.83    时间: 2012-1-4 07:16
今天没风,室外温度零下6,出去测试。

结果接收机脉冲采样有严重的干扰。 不知道哪里来的干扰。 以前出现过一次。 又没测试得了。 :em25:
作者: 破百    时间: 2012-1-5 15:27
机架木质 哈哈
作者: 安徽小谢    时间: 2012-2-21 19:15
:em16: 头大了
作者: 最后的骑兵    时间: 2012-2-21 20:39
强烈支持
作者: 20082330    时间: 2012-2-22 23:20
接收机做通讯的话会不会占用单片机很多硬件资源啊?用无线串口会不会好点?
作者: 可乐不加冰    时间: 2012-2-28 23:46
支持,学习,顶!
作者: wxwdsj    时间: 2012-10-17 19:09
现在我又回到学校了,又有时间研究大学未完成的UAV,希望能一起交流,这次我打算用SOPC,来全把它整合在一起,做个UAV系统
作者: 我是你好王新建    时间: 2012-11-10 23:04
来学习l~ 像抄袭楼主的小车~ 呵呵~ 给指导哈~
作者: 茶禅一味    时间: 2012-11-18 04:17
楼主目标跟我一样,但是我没有时间和经济支撑;
作者: ECE走到黑    时间: 2013-4-1 07:33
看到你那个超声波测试的四轴,突然想起来前几天youtube上看的zerangu就是你啊。哈哈。那个引导地面站很帅

作者: 樱花流    时间: 2013-4-9 22:20
新人报道!请问楼主那个地面站界面怎么做的啊?
本人大四即将毕业学生,毕业设计就是做无人机。悲催的我从没做过,求楼主指导一下。
过了两年了,不知楼主还在否





欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://5imx.com./) Powered by Discuz! X3.3