设计一款用于发现火源点的自动地面漫游车
扫描二维码
随时随地手机看文章
2025年1月初,在参加这次比赛之前,我正在看有关南加州野火的新闻。当时,数十万人被疏散。看到人们的房屋和财产被烧毁,而他们却站在一旁,无助地看着,这是毁灭性的。消防队员已经筋疲力尽,日以继夜地工作,但大火仍在蔓延,吞噬了它所能到达的每一寸土地。
在想要在消防行业有所作为的强烈愿望的驱使下,我开始研究野外消防是如何工作的。令我惊讶的是,我了解到,由于长途徒步旅行和崎岖的地形,大多数消防员只能使用手动工具。推土机和链锯等重型设备在这些条件下使用有限。这大大减缓了火线的建设,而且依赖空中支援可能要花费数千到数百万美元。据估计,运营一架747超级油轮每天的成本高达25万美元!
出于一种紧迫感,我开始考虑设计一种自动地面漫游车,它可以直接帮助消防员,提高他们的态势感知能力。最终,尽管这是一项困难而复杂的挑战,但开发一种能够自主构建防火线的系统可以显著降低消防员的生命风险。
1. 研究与开发(R&D)
2024年,美国面临6万多场野火,烧毁了800多万英亩土地。美国国家航空航天局的数据显示,烧焦的地区逐年攀升。由于工作人员人手不足,我开始问自己一个简单的问题:一个小型的便携式机器人能减轻他们的工作量,让他们更安全吗?
当我深入研究野火战术时,一种方法不断涌现——建立一条火线。消防员剥去植被,使火焰耗尽燃料,停止蔓延。它是有效的,但它需要重型机械或累人的手工工具。
这引发了一个想法。如果一个自主机器人可以卷到火场边缘,发现热点,并雕刻出一个迷你火线,甚至可以自己扑灭小火焰,那会怎么样?
在阅读农民如何在土壤中挖洞的过程中,我意识到同样的挖掘技巧可以帮助机器人挖出一条狭窄的防火沟,而且只要几个喷嘴,甚至可以沿着这条路喷洒水或阻燃剂。
2. 认识一下《卫报》
“守护者”是我的自动地面漫游车,专为野外工作人员设计。即使在这个早期的原型中,它也可以:
•自动驾驶到GPS航路点,
•用机载视觉发现一个火源或热点,然后
•解决火灾有两种方法:一种是划出一条细细的火线,另一种是用内置的水泵扑灭小的火苗。
探测器的核心是粒子硼404X。多亏了它的5G调制解调器,我可以在手机网络覆盖的任何地方查看机器人。粒子云仪表板可以让我在一个地方观看遥测、发送命令和推送无线固件更新。
更好的是,硼的GPIO引脚和片上微控制器让我可以直接控制马达、传感器和泵——不需要额外的电子设备堆栈。
说得够多了,让我们深入研究一下构建过程。
我最初计划从头开始3d打印整个履带式底盘。后来,一位朋友给了我一套他不再需要的备用曲目,于是我抓住了它,节省了几周的工作。动力传动系统安装完毕后,我所要设计的就是一个坚固的3d打印平台,电子设备和车载电脑可以整齐地固定在上面。(如果你感兴趣的话,我之前发现了一些3D打印的:3D打印机器人坦克底盘,GrabCAD的3D打印坦克底盘)
然后我可以使用PCBWay或其他打印服务来做平台的3D打印,以容纳我的传感器和电子设备。
底盘准备好了,我跳到有趣的部分,使一切都与粒子硼404X移动。我首先拿了一个旧的Arduino来快速测试每个电机、伺服和水泵;眨眼和旋转几下后,我知道线路是可靠的。从那里,将草图移植到硼几乎是一个复制和粘贴的工作-编码风格非常接近Arduino的IDE,转换需要几分钟。
以下是总体流程:
•杰森·奥林——“大脑”。它处理来自摄像头、GPS和IMU的数据,找出下一步行动,并将这些命令传递给下游。
•粒子硼404X——“手和脚”。它接受Orin的指令,驱动马达,控制伺服系统,启动水泵。
•5G链路——反向通道。当硼忙于运行硬件时,它也通过5g LTE与粒子云保持联系,所以我可以在任何地方通过手机服务推动机器人或更新其固件。
简而言之:奥林认为,硼在行动,而云让我们保持联系。
下面是它的简要介绍和接线图:
两个11.1V的LiPo电池为驱动履带车轮的电机控制器供电。该系统还提供5V电源,为4通道继电器、水泵和伺服供电,因为硼只提供3.3V电源。硼通过TX引脚发送TTL信号到电机控制器来调节车轮的速度和方向。它还通过数字引脚(高或低)发送数字信号来控制操作水泵和伺服的继电器通道。
2.1使用粒子控制台设置云解决方案
硼控制台是提供的网络平台,以监测您的粒子设备。
登录后,您必须设置链接您的产品,在我的情况下,硼404x,然后您将获得一个产品ID链接到Visual Studio代码。以下是登录后的界面片段,您将看到设备的“健康”和连接情况。它甚至为你提供地理位置。
您还可以执行无线代码更新,以及触发专用函数。这里我创建了两个函数Command Movement和Send Waypoint,当被调用时,它将发送命令逻辑给Guardian上的硼来执行任务。
通过智能手机控制台指挥守护者的现场演示
除此之外,控制台还内置了其他一些指标,如手机数据使用量(每月100 mb免费!)、电池寿命等等。它还带有webhook集成,我非常兴奋将来能在其他项目中使用它。
使用Visual Studio Code中的现有扩展,我们可以快速设置设备并开始在此页面内开发:
以下是要遵循的一般顺序:
登录并设置设备后,您将将本地项目设备名称链接到控制台上的相同设备名称,然后您可以创建项目,该项目将为您提供与Arduino平台相同的所需库。(更多安装说明:Manual setup, Getting Started)
代码总结:
•云钩子。两个粒子函数——用于快速操纵杆式命令的manualmove()和用于纬度/经度的sendWaypoint()——可以让你从粒子控制台或杰森的高级规划器中戳机器人。
•路标的传递。当一个新的航路点到达时,硼会通过它的USB串口向杰森喷射一个很小的JSON数据包(^{…}$)。这使得高性能计算机负责全球导航。
•电机控制。Jetson然后回复单字符驱动代码(如b / l / s),硼的autoMove()将其转换为serial1 (Sabertooth电机驱动器的封装串行接口)上的一字节速度命令,因此不需要在微型上进行PWM时序。
•挖掘和喷洒。一对GPIO线翻转一个用于挖掘电机的继电器和另一个用于水泵的继电器;辅助函数(shouldDig(), shouldWater())切换它们并强制30秒的安全超时。
•心跳故障保险。如果硼在半秒内没有听到驱动角色的声音,或者在30秒内没有听到挖/喷刷新,它就会把所有东西都降到安全的停止状态。
到目前为止,你应该已经能够通过粒子控制台指挥机器人!!
2.2编程杰森·奥林
现在我们已经介绍了硼,我们的二号人物,让我们介绍我们的一号人物:杰森奥林Nano。这个主要的大脑控制着整个机器人,从感知到导航。从今年开始,Orin (Super) Developer Kit的性能升级了一倍,而价格却降到了原来的一半。
•Jetson Orin上有三个节点在运行
•摄像头(Oak-D Pro W),通过ROS 2中间件发送RGB图像,用于火灾探测
•操纵杆控制器,接收操纵杆输入,用于手动驾驶守护者和控制水泵,倾斜伺服器
•Guardian导航节点,接收来自GNSS/IMU的传感器数据,通过比较目标航路点来执行导航校正
joy_to_serial_node.py
完整的代码:
guardian_nav_node.py
camera_detect_node.py
3. 让它自治!
最初,我打算使用Arduino Giga板,因为它已经有可用的GPS和IMU库进行开发。但是,由于我无法获得一个,所以我使用了我自己的ESP32并对其进行了修改。
简而言之,它通过ESP32将实时GNSS和IMU数据发送到我们的主大脑(Jetson Orin Nano),我们将利用它来告诉机器人如何到达指定的航路点。
3.1航路点任务
为了让机器人明白从当前位置到下一个航路点要走到哪里。它需要知道它目前的位置(当前的纬度和经度),以及机器人在地球上的方向(方位角)。
(方位角是一个更具体的绝对方向,而方位可以相对于一个点或一条线)
通过这些测量从GPS/IMU传感器。我们只要在守护者的当前位置和航路点的位置之间画一条假想的线。这条线与守护者当前的标题相比较,告诉我们我们需要转向多少才能面对航点,然后我们只需命令它向前移动,直到我们到达航点位置(当守护者的经纬度=航点的经纬度)。
您可以从前面发布的guardian_nav_node.py中引用确切的代码。
3.2训练AI探测火灾
我最初认为我可以利用北欧nrf9151-DK并运行边缘脉冲进行视觉分类(检测边缘设备上的火),但经过进一步研究,似乎边缘脉冲是通过云运行的,我找不到关于如何实现它的进一步信息。由于时间有限,我决定在Jetson Orin上运行。
通过Jetson Orin上的YOLO11进行目标检测
利用人工智能的目标是识别烟雾和火灾等危险。值得庆幸的是,YOLO和RoboFlow社区已经拥有数千个数据集,我们可以训练我们的人工智能模型来识别和部署。
YOLO (You Only Look Once)是一系列以速度和准确性著称的目标检测模型。它们是单镜头探测器,这意味着它们一次处理整个图像来识别和定位物体。YOLO使用卷积神经网络(CNN)对对象边界框和类概率进行预测。
Roboflow是一个可视化人工智能工具平台,它简化了模型部署并增强了特定用例的性能。我们将利用社区标记的可用数据集。
该数据集由带有火焰和烟雾的图像组成,并为训练目的进行了标记。
然后,我们将转到数据集并选择下载数据集。
解压缩数据集,您应该看到数据。Yaml和其他testtrainvliad文件夹
配置数据Yaml有前3行来硬编码全局路径。(您可以通过在该文件夹的终端上运行pwd来找到全局路径)
到:
然后我们将通过YoLo 11开始训练
对于我来说,我在速度和准确性之间找到了一些平衡:
4.1迁移到nRF9151-DK
北欧的nRF9151-DK与硼404x相比是一个超级升级。它还包括一个机载GNSS,以及大量的GPIO和核心访问,使其强大而强大,适用于各种应用。然而,设置它是相当具有挑战性的。
4.2粒子硼404x与北欧nRF9151-DK
当比较两种硬件时,硼很容易设置和已经可用的arduino风格的开发。粒子控制台非常适合在任何我喜欢的地方监控设备,所以我总是知道守护者在哪里!
另一方面,nRF9151-DK在开发方面具有挑战性,而且现成的功能也少得多,但如果时间允许,它绝对是非常强大的。
本文编译自hackster.io