|
正文共:6186字 35图
预计阅读时间:16分钟
前段时间,美国东北大学学生就水质探测机器人相关传感器问题向我们咨询,Rockets & Youyou热情地为他们提供了解决方法,并以公司名义赞助了两枚传感器(Arduino的模拟溶解氧传感器/仪表套件、Arduino的模拟浊度传感器),现在他们小组的毕业答辩结束了,而且最终在全校20多个小组中获得第一!让我们一起来看看他们的成果吧!
信天翁计划
利用半自主水上机器人进行水下数据采集
团队成员
- Steven Seeberger
- Dave Evans
- Patrick Gannon
- Nick Sullo
- Connal West
导师
- Bahram Shafai
- Ethan Edson
研究背景
信天翁计划是应日益提升的水质监测需求而发展起来的。
如今,气候变化带来的海平面上升、海洋酸化、水体中塑料污染的猖獗蔓延、以及其他有害的环境问题,让我们比以往任何时候都更需要了解水体的健康状况。信天翁计划就是为了帮助解决这个问题。
其实使用机器人进行水质测量并不是一个全新的概念。早在2000年初,自主水下航行器(AUV)如Remus和各种水下无人船就已经投入使用。然而,它们有一些不足之处。
首先是:贵!
并且一般只在某次特定的研究中使用。使用它们的机构们要么自己开发这些产品,要么有充足的资金可以购买这些产品。
一般比较小的研究机构或公司(如预算较少的大学、游艇停泊港、非营利的野生动物协会等)往往因为这个原因不会购买,转而仍依赖于老式手动采集数据的方式。
手动数据采集需要一组人员坐到船上手动放置CTD模块(电导率,温度和深度传感模块)到不同位置的不同深度的水里。
当然,相对于使用机器人获取数据来说,这其实更耗时耗力。
此外,手工采集数据时,通常为了在一定的时间范围内覆盖更大的水域,两个采样地点之间的距离会很大。数据点之间的这种广泛分布导致产生的数据集也非常稀疏,当把这些数据用于辨别分析趋势时经常会受到混叠的影响。
最后,因为CTD设备在给定位置更容易垂直落到不同深度,所以手动采集数据采集到的主要是水体垂直方向的数据,同一位置水平方向的数据往往不易测量,这将导致测得的数据与实际数据存在较大偏差。
回到当前的机器人应用本身,显然,无人船AUV(Autonomous underwater vehicles )测量能力强,因为它们可以采集大范围深度(有时高达数千米)的数据。相比之下,另一类无人船ASV(Autonomous surface vehicle)只能在水面上移动和收集数据。
然而,虽然AUV提供更好的测量,但射频(RF)通信(目前最快和最发达的无线通信形式)在水下不起作用。
因此,大多数无人船AUV必须在给定的多个测量点处浮出水面来将信息无线地中继回地面控制站。这会非常浪费时间和精力,而且无法进行任何实时数据的分析。不过,好在无人船ASV可以始终使用无线电通信,因为它们在水面上运行。
所以,此项目的核心思路是:
组合ASV-AUV系统!
集合两者的优点,平衡无人船的测量能力与无人船同地面控制站进行实时无线电通信的能力。
“我们不是第一个提出组合ASV-AUV系统的团体。在这个研究之前也有一些类似的产品。但是,我们希望开发一种低成本,开源,完全模块化和直观易用的系统,包括定制构造,硬件设计和软件设计。我们的目标是生产一个系统,让任何人都能以低于1500美元的价格建造和使用该系统,以激励世界各地的小型团队开始更准确,更轻松地进行相关的水质测量。因此,诞生了信天翁项目。”
整体设计思路
最终实物效果图
系统设计的基础知识如下:
1、制作ASV
制造无人船ASV(Autonomous surface vehicle)的车架采用T型开槽铝挤压件。原因是铝重量轻,坚固,成本相对较低,并且耐腐蚀和防锈。采用T字型铝型材能够在不使用任何焊接或专用电动工具的情况下制造所需的框架。
6个Home Depot 5加仑桶装有防漏盖,用于为框架提供浮力。使用海洋密封剂(称为弹性密封剂)将盖子密封到桶上。密封剂固化24小时将盖子固定到铲斗上后,可以使用12英寸钢管夹紧和定制T型槽铝配件将铲斗连接到框架上。
然后使用定制切割的丙烯酸安装座将电机连接到垂直框架杆上。舱底泵用于推进电动机。在设计中使用了6个电动机(图中示出了4个电动机,但后来又添加了两个),并且所有电动机都安装在无人船ASV的船尾。
Sterilite Gasket Box作为无人船ASV的主要电子外壳。通过在底部钻四个孔并将其拧入板中将它固定在木板上。箱子的放置在这里是关键,因为一旦将重型电子设备(主要是电池)放入壳体中,无人船ASV仍需要在水中保持平衡。较小的防水电子设备外壳也被用于更精致的电子设备(Pixhawk和Raspberry Pi)。在无人船ASV前部垂直向上添加一个长T字型开槽铝条,将无线电天线安装到上面。从车辆的船尾添加两个长度约为18英寸的T字型开槽铝条,用于以后固定将ASV连接到AUV的线缆。
下图显示的是测试的无人船ASV。它可以在水中保持平衡,并且能够支撑用于为马达提供动力的两个12V/35Ah密封铅酸可充电电池的重量。
2、配置Pixhawk以正确运行电机
构建ASV后,下一个主要步骤是为应用程序配置Pixhawk。
由于Pixhawk将自动控制ASV,它将充当Rover风格的机器人。因此,将ArduRover固件下载到Pixhawk,并使用Mission Planner软件将其配置为无人船流动站。选择Mission Planner作为地面控制站,因为它包含最多的功能,用于配置和监控Pixhawk控制的机器人,并且在线提供最多的开发支持。
Mission Planner对机器人任务的实时监控示例如下所示 :
3、连接ASV电机电路
为了将舱底泵正确连接到Pixhawk,必须实施一个包含两个继电器、两个HiLetgo BTS7960电机驱动器、两个缓冲电路和三个不同电源电压电平的电路。得到的电路如下图所示。
如图所示,需要两个继电器在来自Pixhawk控制前向运动和反向运动的信号之间切换。在电机驱动器上,RPWM引脚用于顺时针旋转(使用螺旋桨向前)控制电机,而LPWM引脚用于逆时针旋转控制它们(使用螺旋桨反向旋转)。Pixhawk主输出上的引脚1用于驱动右侧电机(连接到电机驱动器1的电机),主输出上的引脚3用于驱动左侧电机(连接到电机驱动器2的电机)。因此,通过使用继电器来控制这些信号是否被发送到RPWM引脚或驱动器上的LPWM引脚,Pixhawk可以根据需要在正向和反向运动之间进行切换。如前所述,Pixhawk的Aux Out上的Pin 6控制右侧电机继电器的翻转,而Aux Out上的Pin 5则控制左侧电机继电器的翻转。
接着是设置遥测无线电并调整Pixhawk的PID控制器和自主运动算法,为数据传输构建自定义消息后,可以成功地将数据从Raspberry Pi发送到Pixhawk,并通过无线电链接发送到Mission Planner,以便可以实时保存并显示给地面操控者!
在编码剩余的通信链后,达到的总体效果是,AUV中的一个Arduino将专门用于控制步进电机功能以进行浮力控制,而另一个Arduino将专门用于获取水质传感器数据。
传感器Arduino将通过串行通信线路(购买的ROV线缆)与顶部的Raspberry Pi通信,并且它还将通过软件串行连接与浮力控制Arduino通信。软件串行连接是一种利用库(AltSoftSerial库)在Arduino Uno上创建第二个串口的连接。
以这种方式,当深度/温度传感器连接到浮力控制Arduino以便它可以更快地进入深度测量时,可以将深度和温度测量值发送到浮力Arduino - >传感器Arduino - > Raspberry Pi,并且时刻保持深度数据的更新。
水上无人航行器
4、制作AUV
pH传感器的适配器(最右边的孔)
配件概述:
蓝色ROV线缆、黄色ROV线缆、深度/温度传感器(红色)、浊度传感器(背面)、电导率传感器(左上)和溶解氧传感器(右上)
浊度传感器安装在收集器适配器壳体上
传感器全部连接上后的效果图
完成AUV外部装置的最后一步是制造和安装机翼。
机翼旨在稳定航行器,防止航行器在水中移动时过度滚动。机翼本身由从Home Depot购买的两块薄铝板制成。将1/4英寸厚的铝条拧入翼板中,为其提供额外的支撑。基于前面提到的开源水下无人船的设计,使用两个3D打印的机翼安装架将机翼安装到无人船AUV。
最终的AUV外部结构
接下来在AUV的内部需要进行水质测量和控制潜水器浮力两项繁重工作。
首先是浮力控制,采用的是,针筒!
经过一系列复杂的计算,最后选用了三个150 mL注射器进行浮力控制。
两个3D打印的支架将连接到注射器主体的前部和后部,以将它们牢固地保持在适当位置。另外的3D打印支架将牢固地连接到注射器柱塞的背面。因此,将第一个3D打印的支架保持在适当的位置并拉动第二个3D打印的支架,使得注射器柱塞被拉出。
该注射器主体和注射器柱塞3D打印安装系统如下图所示。
为AUV选择的步进电机是Nema 23步进电机。
开发了一种3D打印底座,用于将步进电机固定到位。此外,还开发了一种有趣的3D底座,用于固定两个Arudinos、电机驱动器和四个传感器接口板。
该支架采用三角形棱柱的形式,具有中空的中心和圆形边缘(与圆形管表面齐平)。两个棱镜面用于安装两个Arduinos,而另一个面用于安装三个传感器接口板(电导率,溶解氧和pH传感器板)。电机驱动器和最后一个传感器接口板(浊度板)安装在其中一个内表面上。
这种安装设计使得可以在非常小的空间内有效地放置大量元件(安装座长度只有4英寸),可以在下面看到。
在注射器系统的前部使用乳胶管将三个注射器尖端连接到一个中心管,该中心管可以连接到主PVC管壳体中的进气孔。
另外,安装了两个按钮以用作注射器柱塞安装件的末端止动件。一个按钮安装在面向柱塞安装座的步进电机壳体上,另一个按钮安装在面向注射器体安装座的柱塞安装座中。如果步进电机意外地试图将柱塞拉动/推动超过其在任一方向上限定的运动范围,则这些终点挡板将发挥作用。如果按下一个终点停止按钮,控制步进电机的Arduino将停止正在发生的任何动作,并根据按下哪个按钮了解柱塞的位置。终点挡块也可用于在启动时校准柱塞定位。通过将柱塞一直向前移动直到启动时按下前按钮,浮力控制器Arduino将能够知道柱塞始终在启动的位置,然后根据此点的已知运动计算出柱塞位置。
随着这些设计的实施,AUV内部结构已经完成。下面附有内部AUV系统的一些附加图像。
5、将AUV连接到ASV
为了将AUV连接到顶部ASV,使用了两种线缆。
蓝色线缆是用于为步进电机供电的动力缆。
黄色线缆(Blue Robotics缆)用于为两个Arduinos(其电流限制约为800 mA)供电,并用于在ASV上的Raspberry Pi和传感器控制Arduino之间建立串行通信连接。
一个12 V可充电电源连接到ASV上的总线,通过黄色线缆将12 V电源分配到两个Arduinos(使用两对双绞线)上。升压转换器也连接到此12 V总线,以将电压升高至24 V,通过蓝色线缆发送至步进电机电源输入。
6、编程和校准传感器
随着AUV的完全构建,是时候编程和校准传感器了。
该项目中使用了5个传感器来测量水质参数:
深度/温度传感器
电导率传感器
溶解氧传感器
pH传感器
浊度传感器
除了深度/温度传感器由Blue Robotics生产外,其余4枚传感器均由DFRobot生产!
K = 10模拟电导率传感器
https://www.dfrobot.com/product-1797.html
模拟溶解氧传感器
https://www.dfrobot.com/product-1628.html?search=dissolved%20Oxygen
模拟pH传感器
https://www.dfrobot.com/product-1110.html
模拟浊度传感器
https://www.dfrobot.com/product-1394.html?search=turbidity%20sensor
所有使用的传感器都包含开源代码示例和库,用于校准传感器并使用传感器进行的测量。因此,在校准传感器和编写Arduino ino文件以便与它们进行接口时,能够大大利用这些代码示例和库。
通过利用可用的开源代码,这些传感器都非常容易设置,几乎可以立即使用。
传感器全部设置好并准备开始进行重要的水质测量!
自主水下航行器
7、对步进电机功能进行编程并调整浮力控制PID控制器
传感器Arduino正在编程时,浮力控制器Arduino也必须进行编程,以控制步进电机并与传感器Arduino进行通信。因此,浮力控制Arduino主要处理深度与水温测量值,将这些测量值每秒发送到传感器Arduino一次(浮力控制Arduino采样深度和温度测量速度超过1 Hz,以实现更精细的PID控制器,但传感器Arduino仅以1 Hz采样测量,因此每秒只需要进行一次深度/温度测量),检查传感器Arduino是否有新的深度值供浮力系统维持,然后运行下一次迭代PID回路根据当前深度测量更新步进电机位置。
8、向Mission Planner添加数据可视化选项卡
此时,整个系统已创建并按设计工作。因此,我们在进行最终系统测试之前完成的最后一步是向Mission Planner GCS应用程序添加数据可视化选项卡。该数据可视化选项卡的目的是让用户可以实时看到AUV搜集的水质数据。
因此,我们希望此可视化选项卡包含有数量的时间图、一个数量与另一个数量的散点图、AUV经过的地理位置上一定数量的热图、以及一定数量的常见统计数据(平均值 、最大值和最小值)。
完工!
测试数据中
创建的数据可视化选项卡的示例图像(显示了最终测试的实际数据)如下所示。
数据处理
整体结果
最后,水上水下航行器可以在不同的路线行驶下成功回到原点,并在“航行”过程中实时向岸上传送关于不同深度水温、电导率、溶解氧、pH和浊度等信息,工作人员可以在电脑上非常直观看到这些数据的情况。
至此,一个水域的水质情况就能清楚获知了,工作人员可以很方便地根据数据,结合当地实际情况对水域进行针对性的治理。
项目圆满成功,合照纪念下
看了别人的毕业设计,想想自己当初做的,哎…
(转自 DF创客社区) |
|