5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
楼主: 切风40.83
打印 上一主题 下一主题

GPS 罗盘 四轴导航(这几天风大,做了个地面站界面)

[复制链接]
21
发表于 2011-12-1 12:10 | 只看该作者
点击查看详情
9自由度的好多人都有,
  MWC 飞控的一个传感器,  国内、 玉兔,
mwc  都用的这个

欢迎继续阅读楼主其他信息

22
 楼主| 发表于 2011-12-4 05:18 | 只看该作者
今天测试了下测量模块,效果非常好。得到了方向和地理坐标。这天气真是冷啊。

374331_297228986976694_100000687866636_954606_829756189_n.jpg (93.27 KB, 下载次数: 117)

374331_297228986976694_100000687866636_954606_829756189_n.jpg

381958_297229786976614_100000687866636_954609_621610483_n.jpg (55.3 KB, 下载次数: 115)

381958_297229786976614_100000687866636_954609_621610483_n.jpg
23
 楼主| 发表于 2011-12-4 05:23 | 只看该作者
下面室外导航就指日可待了啊。
24
 楼主| 发表于 2011-12-5 08:29 | 只看该作者
为了保证程序没有问题。 我专门做了这个导航测试台。 等到个好天气到外面测试。

[ 本帖最后由 切风40.83 于 2011-12-5 08:34 编辑 ]

373846_298037313562528_100000687866636_956800_1702408148_n.jpg (61.35 KB, 下载次数: 86)

找了个纸盒子,把所有东西用热熔胶粘了上去

找了个纸盒子,把所有东西用热熔胶粘了上去

377037_298037526895840_100000687866636_956801_1559708210_n.jpg (49.44 KB, 下载次数: 102)

测量单元,包括GPS,罗盘 和 气压计

测量单元,包括GPS,罗盘 和 气压计

387712_298038266895766_100000687866636_956806_1290612509_n.jpg (60.37 KB, 下载次数: 99)

用ESC和电池供电

用ESC和电池供电

393724_298037736895819_100000687866636_956803_1514801430_n.jpg (75.98 KB, 下载次数: 113)

接收机

接收机

388894_298037930229133_100000687866636_956804_973860229_n.jpg (62.79 KB, 下载次数: 92)

单片机

单片机

385085_298038096895783_100000687866636_956805_2056762111_n.jpg (52.85 KB, 下载次数: 89)

测试的时候,就看这两个舵机反应如何了

测试的时候,就看这两个舵机反应如何了
25
 楼主| 发表于 2011-12-6 11:58 | 只看该作者
最新进展
我用ARDUINO 进行了 室内模拟计算。 也就是输入了伪坐标,让它试运行。

392664_298816376817955_100000687866636_958924_1511462709_n.jpg (78.02 KB, 下载次数: 94)

输出的结果是 滚转 和 俯仰的 结果是比率控制量。

输出的结果是 滚转 和 俯仰的 结果是比率控制量。
26
发表于 2011-12-6 13:36 | 只看该作者
:em26: 期待成品啊~
27
发表于 2011-12-6 15:51 | 只看该作者
顶一下
楼主是想利用自己的板子控制四轴的导航
只需要接在接收机和飞控板之间吧
28
发表于 2011-12-6 16:36 | 只看该作者
我准备下学期用单桨直升机加GPS做个自动飞的。暂时准备在平地,无障碍物的地方测试。
29
发表于 2011-12-7 13:51 | 只看该作者
我昨天才想到这个方法,没想到楼主已经实施了!支持一个!我认为是可行的。这样可以加装在任一个有自稳功能的四轴上面实现导航。
30
发表于 2011-12-7 22:46 | 只看该作者
顶楼主,进展如何
31
 楼主| 发表于 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


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

[ 本帖最后由 切风40.83 于 2011-12-11 05:39 编辑 ]

378021_301840756515517_100000687866636_965823_215036095_n.jpg (58.26 KB, 下载次数: 94)

378021_301840756515517_100000687866636_965823_215036095_n.jpg

393730_301840399848886_100000687866636_965815_152134298_n.jpg (68.99 KB, 下载次数: 107)

后面两个数字是离目标点的差距,前面两个数字是根据方向计算出的比率控制量

后面两个数字是离目标点的差距,前面两个数字是根据方向计算出的比率控制量
36
发表于 2011-12-11 20:29 | 只看该作者
:em26:
37
发表于 2011-12-12 16:17 | 只看该作者
顶切风兄,希望切风兄能顺利完工!
38
 楼主| 发表于 2011-12-13 05:00 | 只看该作者
做个几号:下周是期末考 试,比较忙,暂停更新两周。 我会抽空看看 中断 怎么在这上面实现。
39
发表于 2011-12-18 22:37 | 只看该作者
楼主可以先在matlab上面先仿真。这样会少走弯路
40
 楼主| 发表于 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);
}
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /2 下一条

快速回复 返回顶部 返回列表