无人船项目-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8952|回复: 8

[报名] 无人船项目

 关闭 [复制链接]
发表于 2015-9-9 09:28 | 显示全部楼层 |阅读模式
参赛项目:
       无人船项目

参赛组员:
人数  4
蒋子正和龙晟熹——船模组装以及软件调试
苏彤和赖劲——电子器件组装调试以及硬件调试
广州 中山大学

项目简介:

        想做一个无人船,可以利用GPS来全球定位,利用PID控制算法来控制无人船的前进后退转弯等等。由于水会时刻流动以及其他众多不确定因素,会导致船在水中波动很大,所以如何控制小船的平衡,走直线等等要求会比小车的难度大很多。当然如果时间允许我们还会尽量多的实现其他功能,比如识别海上灯塔功能,避障功能,寻路功能等等。

预计完成时间:
       9月20号之前

联系方式:
      邮箱: jiangzz199@vip.qq.com


发表于 2015-9-17 12:05 | 显示全部楼层

感谢您参加本次比赛,请参照   项目提交要求 http://www.arduino.cn/thread-17410-1-1.html
按时提交项目
 楼主| 发表于 2015-10-9 16:20 | 显示全部楼层
C:\Users\upon\Desktop\boat
 楼主| 发表于 2015-10-9 16:31 | 显示全部楼层
首先来总体说一下我们的项目       我们所做的是一艘无人船,除了底部的船体是加工好的,其他的软硬件全部是由我们组独立完成的。
       目前我们完成了直线航行(主要运用PID控制算法),以及自动巡航的功能(GPS和APM协同工作)。
       本想实现自动停泊的功能,可惜实在太难,所以放弃了。。。

在游泳池中进行测试

在游泳池中进行测试

这是船的整体,我们对外观进行了喷漆,同时在学校的游泳池中进行相关的测试。。。

船体

船体


船体,大约有1米长,我们给他起名为ZENAS。

黑盒子(后续会介绍)

黑盒子(后续会介绍)

船体的黑盒子,稍后会进行详细的介绍。

船体硬件

船体硬件


船体内部的马达以及舵机,舵机由于被我玩坏了。。。所以只能用AB胶黏住凑合着用。。。



 楼主| 发表于 2015-10-9 17:01 | 显示全部楼层
关于黑盒内部
hezitu.png



单看这个电路图,感觉比较复杂,分解来看就比较有条理啦。
首先电路部分以APM为中心,分为【电调、电机和舵机】组成的动力模块,【OSD与摄像头与图传】组成的视频模块,【遥控器接收端与数传GPS】组成的数据传输模块。如下图所示:


①动力模块

动力模块

动力模块




②视频模块
2.png


③数据传输模块
3.png



我们组装船的过程中主要的问题出现在视频模块和数据传输模块上
我们所使用的飞控是APM 2.8,新版本的APM是在其背面上短接MUX_TXO/OSD端口的,否则OSD与APM之间是无法通信的,获取不到飞控给的飞行数据,在拿到第一块APM的时候我们按照说明书接线并且短接了焊盘上的点,在连接显示屏上却没有任何OSD信息,于是我们认为是OSD的固件出现了问题,并且控制变量从别的组借来了OSD发现可以使用。列出所有可能原因:
1、OSD的接线与串口模块的接线没接好,接反,或者接错,供电不正常等 【重新检查接线,供电】
2、OSD的固件丢失了【需要用串口线重刷OSD固件】
3、OSD的bootloader底层固件丢失了【需要用AVR编程器重新刷写Bootloader】
4、OSD已经损坏,烧毁等【维修OSD,更换新的OSD】
5、串口模块问题等【更换串口模块、检查串口驱动】
用排除法排除故障原因,从网上购买了USB转TTL的工具,并开始刷OSD的固件,并同时发现读取OSD的固件失败,于是按照刷固件顺序从底层开始刷固件。烧写完之后连接之后仍然没有改善,于是再次检查接线,在做出多种尝试之后,在检查APM是否焊好时发现APM的接口脱焊了,导致APM与OSD不能通信,在更换APM之后即可。除此之外还有一个需要注意的点,实验室分发的摄像头器材是自带12V转5V的一个芯片的,但是一旦为了将摄像头伸出船体剪掉了转换口需要再在电路中接一个12V转5V的UBEC,否则摄像头将工作不正常。之后我们在模友之吧发现,将APM拆下来后,将背后的_MUX_TXO_OSD铜片短路,就可解决OSD的问题。


数据传输模块由各个功能不同的部件组成,其中问题出的比较多是在GPS和数传中。在Mission Planner 中初始化外置罗盘后并且预先加载好地图,当将小船放置在游泳池边上,GPS的定位总是会存在误差,经查阅资料知道GPS在运动中相比于静止时的定位会更加准确,但还是会存在误差如图所示:此时小船头朝向应正垂直于岸边。
4.png
在更换地图以及重新校准罗盘后,综合多方面因素,误差在可允许范围内。
还存在一个比较严重的问题就是数传。数传,顾名思义,就是实现APM与地面站之间通信的途径,可以实时将小船的信号反馈给地面站从而能够控制船体的行走路线,但是一旦数传掉线了,那么在地面站的我们将得不到任何来自小船的信息反馈,同时小船也会无法定位以及控制了。这也是无人船的重点关注问题以及主要攻克难度,在实际应用中,地面站是不可能跟着无人船进行移动的,一旦断开连接,那么可以说这一艘船就是完全失踪了的。在泳池这一可控范围内,不同组都发生了程度不同的失联,需要用遥控器或者人工去拉回来,这对应用于现实以及拓展发展是非常不利的。而目前我们对于数传掉线问题,更多的是在处理硬件方面问题,比如重启APM开关,或是用USB转TTL去更新数传的固件,乃至于更换整一个数传,但是这是不理想不现实的。显然这不是一个稳定的系统,我们小组也一直在攻克这一问题,对于数据传输的稳定性以及距离增幅带来的不稳定性,我们也查阅了各式论文。但是最终还是没有详细的解决该问题,但是我们初步认为出现此问题的原因是由于黑盒内各种导线的所引起的微小磁场导致GPS定位方向并不如我们想象的那么准确。




 楼主| 发表于 2015-10-9 17:04 | 显示全部楼层
船体组装部分

11.jpg
船体组装部分包括:1. 舵机组装 2. 马达组装 3. 螺旋桨组装 4. 上方船体拼装 5. 防水及防锈工作
感觉船体拼装会简单一些,但是事实证明我们想多了。。。
船体拼装有以下难点:
1.  舵机的问题,相对于别的组来说,我们组的舵机安装极为困难,因为其中一个舵的螺丝孔是略大的,而且角度不对,导致不可能直接将舵的连接杆给固定住,如果直接装上不管它,那么将会有一个舵机无法左右摆动。最初的时候,我组尝试了用两个螺丝将其从两边施加压力固定的方法,开始有效,但是时间长了之后,总会有再次松动,所以,最后我们在其顶部涂抹了强力胶,并且用螺丝从两边向中间对其施加压力,才可以使舵机转动而且不松动。图片解释如下所示:

12.png 同时,在舵机安装的时候,银色的螺母需要拧松一些,黑色的螺丝需要拧紧一些,那样才能保证舵机在转动的时候灵活自如。
2.  马达和螺旋桨的难点,马达和螺旋桨是通过一个连杆相连的,中间还有一个固定舵,是为了让螺旋桨,固定舵,马达三个物品在同一直线上,保证船体螺旋桨的对称,那样在船体开动的情况下,才能保证船走直线,但是这里恰恰又有个难题,如下图所示:船体本身的模具就是不对称的,固定舵①的下放的卡槽是不对称的,同时②的开口左右两边也是不对称的,我们的船体是左边的有一些偏差,如果我们一定要将固定舵卡入卡槽,那么连杆就会适当变弯曲,同时和①②两个地方摩擦力特别大,导致了螺旋桨转速变慢。我组想,如果这样会导致在开船的时候船体会不自主的向右边转弯,所以我们做了一个尝试,将马达、连杆、固定舵、螺旋桨先那样安装好,但是不把固定舵插入卡槽中,同时拨转两边的螺旋桨,看看是否摩擦力足够小,等调节到一个合适的位置的时候,就将固定舵与船底黏住,这样可以保证两个螺旋桨在旋转的时候保持一样的转速,不会导致它由于摩檫力过大的原因而使船体左右摇摆。
3.  在解决完马达,舵机的问题后,我们发现我们的连杆(螺旋桨与马达相连的杆)已经生锈了,这会导致摩擦力增大。我组想了一个办法,因为小时候看过钥匙锁如果生锈了,就抹一些铅笔灰在上面,可以润滑。于是我们就将连杆拆下,将锈迹用锉刀慢慢擦去,然后用我们平时用的铅笔芯,在连杆上抹上厚厚的一层铅笔细末。这样我们的船在试水结束后,还能保证没有锈迹,同时与下图①②处的摩擦力很小。

13.png
4.  上船体拼装中,最大的问题就是上船体的精度不够,有些零件长了,有些零件又断了,导致我们需要不断的裁剪,拿美工刀慢慢的刻下来,由于AB胶粘合固定的时间比较慢,所以每两个片之间的粘合,需要先用502胶准确的定型,然后再用AB胶慢慢粘合,这样可以保证船体防水且稳固。
5.  最后就是防水防锈的工作了,在防水的过程中我们发现,其实还是AB胶比防水胶更加防水,因为AB胶的边界也是密封的,防水胶边界很厚,很难做到密封这一说。所以我们就用了AB胶为船底的连杆,固定舵做防水工作。防锈工作,我们在连杆上涂抹了铅笔粉末,保证了摩擦力小的同时,也防了锈。对于船体的其他部分,我们用了喷漆来防水防锈,也取得了不错的效果。

 楼主| 发表于 2015-10-9 17:13 | 显示全部楼层
船体安装部分讲完了后,说说我们要实现的内容我们要实现的内容是走直线,船体本身由于做工的原因,并不是很对称,所以,走直线只能通过PID控制算法来调试,我们用了MISSION PLANE软件来将我们的PID调试内容不断输入,基于最小二乘法来用最快的速度修改最合适的PID控制算法,最后终于可以走直线了。。
虽然写起来和容易,但是PID控制真的是在太阳底下调了一个星期才完成的。。。
20.png
根据船体航行时候的变换来确定到底要如何调整。

21.png
mission plane 中初始默认的PID值


22.png

我们最后调节得出的PID值

23.jpg
有一部分代码是从GIT上下载的。。导入APM后,设置自动巡航,可以看出走的还是挺贴近的。。。
因为毕竟有风,水面的干扰,不可能像在路面上那么精确。
不过我们已经很满意了。。。

点评

hi,少年,需要重新开个帖子介绍你的项目具体内容,详见: http://www.arduino.cn/thread-17410-1-1.html  详情 回复 发表于 2015-10-9 19:43
发表于 2015-10-9 19:43 | 显示全部楼层
蒋子正 发表于 2015-10-9 17:13
船体安装部分讲完了后,说说我们要实现的内容我们要实现的内容是走直线,船体本身由于做工的原因,并不是很 ...

hi,少年,需要重新开个帖子介绍你的项目具体内容,详见:
http://www.arduino.cn/thread-17410-1-1.html
 楼主| 发表于 2015-10-9 19:56 | 显示全部楼层
奈何col 发表于 2015-10-9 19:43
hi,少年,需要重新开个帖子介绍你的项目具体内容,详见:
http://www.arduino.cn/thread-17410-1-1.html ...

跪谢!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-9-21 00:33 , Processed in 0.083429 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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