指挥中心需要知道他们的人员在哪里以及哪里存在危险并且可能正在接近他们。
无人机有机载传感器,其数据实时映射,包括二氧化碳、氧气、温度、湿度、气压和光照水平。备用接地垫被重新指定为着陆平台。在接地垫上创建了使用三种不同颜色块的着陆标记,并教 Pixycam2 识别和报告每个块的 xy 坐标边界。
Pixycam2 连接到 FMU66 I2C 连接器。我们想将红外“激光雷达”距离传感器连接到 FMUK66 上的 Telem2 UART,但不幸的是,这个端口被用作通过 USB 接口连接到 Coral-dev 板的 Mavlink 远程端口。因此,我们通过 PL2303 USB 转 UART 电缆将向下的距离传感器连接到 Coral 上的备用 USB 端口,并使用 mavlink 协议将数据发送到 PX4 固件。
该系统的功能类似于 IR-LOCK 着陆系统,该系统使用原始的 Pixycam 并剥离了 IR 过滤器。Pixycam2 协议与原始的 Pixycam 不同,我们的系统可以识别多个物体,以便在着陆时更精确的 xy 方向,并允许我们创建高度的 z 坐标估计。我们使用备用接地垫作为我们的着陆平台,并使用彩色胶带创建三个 10 厘米见方的方块。
因为我们知道 Pixycam2 识别的彩色块的尺寸,所以我们可以将其用作距离标记。TFMini“激光雷达”系统(不是真正的激光雷达,而是一个飞行时间红外传感器)是多余的,但添加了额外的高度数据,这些数据是我们的 Pixycam2 PX4 驱动程序的平均高度数据。我们训练 Pixycam2 识别带有“顶部”、“右”和“左”标签的块。
我们重新分配了 IR-LOCK PX4 驱动程序的原始代码,针对 Pixycam2 协议对其进行了修改,并添加了代码以根据三个可识别的色块而不是 IR-LOCK 的单一目标在 xy 坐标中定位无人机。我们还添加了代码以使用 Pixycam2 的 xy 坐标计算 z 坐标,这为我们提供了接近着陆台时识别块的大小。此 z 距离用于增强从 Coral Dev 板配套计算机通过 Mavlink 发送的 TFMini“激光雷达”传感器数据。
Pixycam2 自动着陆系统的 C++ PX4 驱动程序代码可在我们的 Hovergames PX4 git repo fork 中获得。
我们收到了带有 hovergames 套件的基本锂聚合物充电器,可通过 4 针或 5 针连接器为 3 节或 4 节锂聚合物电池充电。我们的无人机由 3 节锂聚合物电池供电,该电池使用四根电线进行充电。我们使用铜带在 Pixyxam2 着陆垫上创建了四个着陆垫,这些着陆垫与无人机起落架上的四个铜带部分相匹配。
Pixycam2 着陆系统的分辨率约为 10 厘米(2.5 英寸),因此我们创建了四个 10 厘米见方的铜箔充电垫,并通过我们在着陆垫上铺设的铜带走线将它们反馈回充电器。当 Pixycam2 精密着陆系统采取将无人机放置在着陆垫上,它还将充电触点置于充电垫的中心。当无人机着陆时,它会自动开始为下一个任务充电。
该系统的完全运行版本可以使用两架无人机,其中一架始终在空中,而另一架则为其电池充电以提供连续的机载覆盖。理想情况下,它们将通过 W-Fi 网状网络连接(Coral Dev 板上的 QCA6174 Wi-Fi 芯片支持网状网络),传入的无人机可以向其合作伙伴发出接管信号,因此无人机始终在空中提供覆盖。
飞思卡尔和谷歌创建了 Coral 开发板,该开发板还具有高清摄像头和传感器板作为选项。Coral 开发板在 PCB 上包含一个 Google Tensorflow 处理单元或 TPU,通过 PCIe 总线连接到 i.MX8 M 四核 ARM Cortex-A53 CPU。Google 和 Freescale 为这个名为 Mendel 的开发板创建了一个 Debian 10“Buster”派生的 Linux 操作系统。Coral 开发板由 USB-C 连接器供电,因此我们创建了自己的电缆,通过无人机电池为开发板供电。
我们将 Coral 开发板的 QCA6174 Wi-Fi 芯片重新指定为接入点。我们修改了 dnsmasq 以自动将任何 Web 请求重定向到我们为此项目创建的板载 Python Web 服务器代码,因此对 http:// 的 Web 请求将重定向到我们的 Python Flask 本地 Web 服务器。这些摄像头安装在连接到 Coral 开发板的 I2C 引脚的低成本 Pimoroni 云台 HAT 上。移动云台 HAT 的代码已添加并合并到我们的 Python 网络服务器代码中,因此用户可以从网页上移动摄像机。
Coral 传感器板带有温度、湿度、压力和环境光传感器。我们将 O2、CO2 和 CO 传感器添加到传感器板上的 Grove 连接器,并编写 Python 代码来记录无人机周围空气中的 O2 百分比和 CO2、CO 和挥发性有机化合物的百万分率。这些传感器对于感测消防员周围的危险区域并报告该数据的实时流至关重要。
我们使用了在 Thingiverse 找到的珊瑚开发板 3D 打印外壳,并修改了适合珊瑚开发板的珊瑚传感器板的顶部。此功能提供紧急服务人员或紧急情况下需要帮助的人员位置的实时报告。TPU 运行谷歌 Tensorflow 机器学习框架的嵌入式版本,称为 Tensorflow Lite。我们在带有 Nvidia GPU 的工作站上设置了 Tensorflow 训练系统。我们使用位于http://host.robots.ox.ac.uk/pascal/VOC/index.html的 Pascal 视觉对象类 (VOC) 数据集来训练我们的系统识别物体和人。
Coral-Dev 板上的 TPU 支持 Tensorflow 深度网络拓扑的一个子集。我们选择了 mobilnet_v1_ssd 拓扑,因为它直接映射供 TPU 使用。训练系统是用Tensorflow Python编写的,将VOC数据集上的网络训练成.pb文件。我们使用 TensorFlow Lite 工具将 .pb 深度网络转换为 Tensorflow Lite 结构,然后使用 TPU 实用程序对其进行编译,以便在 Google TPU 芯片上使用。该系统通过高清 Coral Dev 摄像头识别并计算它看到的人数。每次飞行都会维护此计数,因此查看无人机网页的人可以看到在最近一次飞行中看到的累积人数。当无人机从头顶飞过时,在地面上识别出的人类周围绘制了方框。
Google 已经创建并预训练了用于对象检测和分类的 Tensorflow 模型,因此您不必从头开始构建模型。请参阅预训练模型下的Coral Docuemention页面。我们使用 Google 说明在台式机 Intel i7 CPU 和运行 Tensorflow 的 Nvidia GTX 1070 GPU 上设置基于 VOC 数据集图像的模型重新训练。
使用 VOC 数据集重新训练现有的 Tensorflow 模型
1) 确保 CUDA 已安装并正在运行。您可以通过运行“nvcc -V”来测试它,它会输出 cuda 编译器版本。
2)混帐克隆https://github.com/tensorflow/models.git
注意:不要按照说明安装 pycocotools -> 请改用 pip3 install pycocotools
4) 运行测试,确保全部返回 OK
5) 克隆https://github.com/PINTO0309/TPU-MobilenetSSD.git
6) cp -Rf TPU-MobilenetSSD/colaboratory/gpu/* models/research/object_detection/
7) chmod 0755 *.py *.sh
8) rm 配置 && mkdir 配置 && cd 配置 && unzip../collab.zip && cd..
9) ln-s。对象检测
10)./prepare_checkpoint_and_dataset.sh --network_type mobilenet_v1_ssd --train_whole_model false
11) rm -Rf object_detection/学习/训练
12)部分模型再训练:
NUM_TRAINING_STEPS=500 && NUM_EVAL_STEPS=100 && ./retrain_detection_model.sh \
--num_training_steps ${NUM_TRAINING_STEPS} \
--num_eval_steps ${NUM_EVAL_STEPS}
注意:忽略有关已弃用 API 的警告
在我们的 GTX 1070 上,这个过程运行了四天。拥有重新训练的网络后,您需要将其转换为 Coral Dev 板上的 Google TPU 芯片可用的格式。训练完成后,最后一行将列出您需要转换为 TensorflowLite 的 .pb 文件的位置,作为在 Coral Dev board 的 TPU 上运行的预备步骤。
将 .pb 文件转换为 TensorflowLite
使用https://coral.ai/docs/edgetpu/models-intro/中的说明,我们将 .pb 文件转换为 TensorflowLite 格式。
./convert_checkpoint_to_edgetpu_tflite.sh --checkpoint_num 500
按照说明安装 edgetpu 编译器。运行以下命令将 TensorflowLite 文件转换为 TPU 版本。
edgetpu_compiler output_tflite_graph.tflite
将文件 output_tflite_graph_edgetpu.tflite 和labels.txt文件复制到您的 Coral Dev 开发板根文件系统,以便我们可以运行模型来检测高清摄像机流中的物体和人类。
运行模型:
edgetpu_detect_server --model ./output_tflite_graph.tflite --labels ./labels.txt
高清摄像机流将显示在 Web 端口 4664 上,并在检测到的人和物体周围带有标记框。
我们购买了一个 Coral 传感器板,它是带有 Google TPU 的 Coral 开发板的子板。
将红外摄像机添加到 PanTiltHat
我们从 GroupGets 网站上挑选了一个带有微型 USB 连接器的微型 FLIR 红外摄像机。显示的传感器数据是温度、湿度、气压、氧气水平、二氧化碳水平、挥发性有机化合物水平以及以勒克斯为单位的周围光照强度的实时视图。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !