本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Seeed Studio Wio终端的刺猬机器人

发布时间:2022-08-15
分享到:

基于Seeed Studio Wio终端的刺猬机器人

发布时间:2022-08-15
分享到:

我构建了一个机器人刺猬,它可以四处行驶(通过浏览器控制),并且可以识别多达 5 种不同的气味。

背景

刺猬每晚步行几英里寻找食物,这要归功于它们敏锐的嗅觉。他们需要增加临界体重以应对冬眠,这使他们面临许多危险,包括农药中毒。

这个设计是游戏的一部分,旨在教育普通观众,尤其是孩子了解刺猬在城市和郊区面临的危险,以及努力保护它们的重要性。

该项目使用 WIO 终端、多通道气体传感器和边缘脉冲来训练 TinyML 神经网络以识别咖啡或面包等气味,本文重点介绍机器人的机器人设计和编程可以四处行驶并对不同的气味进行分类。

刺猬壳
我们将外壳设计为激光切割,因为这比 3D 打印选项更快、更容易获得。为此,我们使用了 SOLIDWORKS。该模型设计为从胶合板的 1/8 切割,但可以修改设计以使用不同规格的木材。

该组件的形状完全适合刺猬毛绒玩具。它由 10 个“肋骨”组成,由 3 个“脊椎”连接在一起。这可以与底部底座互锁,底部底座是所有硬件的主要安装板。

可以在毛绒玩具的底部开一个足够大的孔让外壳穿过。然后可以从毛绒玩具中取出填充物,使其为空。然后可以将外壳推入该皮肤。

在板的底部,伺服器可以热粘合到前面,脚轮可以拧在后面。

在连接电池的情况下安装 WIO 比较棘手,因此我们设计了一个可以拧到主板底部的小板。这由每个角落的四个螺钉固定,将 WIO 固定在板下方的偏移处。WIO 和电池可以滑过板上的孔,并通过靠在面板上的重力来固定。这允许在组装机器人时访问显示器、按钮和端口。

板的顶部只有 WIO 电池和气体传感器。气体传感器安装有两个螺母,模块朝下。我们钻了一些孔来给电线供电。它们可以连接到 WIO 端口或电池扩展端口。

这两部分可以放在一起。为了给 WIO 电池充电或取用某些东西,可以很容易地卸下顶部外壳。在常规操作期间,它被重力压住。

编程
刺猬组装完成后,就该对其进行编程了。下载HedgehogMain.ino代码并下载 Arduino IDE。在继续之前必须满足一些先决条件:

  • 按照此链接中的说明更新您的 WIO 固件
  • 使用 .zip 文件安装SAMD_ISR_Servo 库
  • 使用 Arduino 库管理器安装Arduino_KNN 库
  • 安装气体传感器 V2 库
  • 安装LCD 库

完成所有这些后,您可以在 Arduino IDE 中打开代码。您可以输入您的 WiFi SSID 和密码。

确保 WIO 终端安装在板下,并且选择了正确的板和板,以便您可以开始上传。

上传代码后,机器人就可以使用了。默认情况下,它加载了一个简单的 K 最近邻算法,用于分类多达 5 个类。您可以改变代码中使用的邻居数量。

现在可以从机器人上拔下 USB 电缆,然后可以打开电池为其供电。显示屏将打开,一旦成功连接到 WiFi,它将显示机器人的 IP 地址。

WIO 正在运行一个网络服务器,可以从同一网络上的任何浏览器访问该服务器。在任何 Web 浏览器中输入 WIO 屏幕上显示的 IP 地址以访问用户控件。

浏览器控制
网页有两个部分,运动控制和训练控制。每个移动按钮使机器人沿标记的方向移动。由于此机器人通过 WiFi 工作,它有时会变得无响应,在这种情况下可用于停止机器人的停止按钮。

一旦机器人被驱动到气味源,您可以选择您正在训练的课程并单击训练。这将记录该类的数据。收集到足够的数据点后,您可以将机器人移至其中一个来源,然后单击分类以对其当前闻到的气味进行分类。重置按钮可用于删除所有训练数据并在需要时创建新模型。

该机器人可在此默认设置中使用,您可以在此处停止,但如果您想使用不同的模型或尝试使用神经网络,您可以使用以下集成指南。

边缘脉冲设置

首先,您可以在这里https://www.edgeimpulse.com/边缘脉冲帐户,因为大多数步骤都需要一个帐户。然后你需要设置一个数据转发器来使用你的 WIO 气体传感器收集数据。

设置数据转发器。首先按照链接的说明安装 edge-impulse-cli 。

要将数据从 WIO 发送到边缘脉冲,您需要通过串行端口打印它。使用 Arduino IDE 将名为 EdgeImpulse_DataCollection 的程序上传到您的 WIO。

#include <Multichannel_Gas_GMXXX.h>
#include <Wire.h>
GAS_GMXXX<TwoWire> gas;


void setup() {
  // put your setup code here, to run once:
  gas.begin(Wire, 0x08); // use the hardware I2C
  Serial.begin(115200);
}

void loop() {
  
  String NO2 = String(gas.getGM102B());
  String C2H = String(gas.getGM302B());
  String VOC = String(gas.getGM502B());
  String CO = String(gas.getGM702B());
  Serial.println(NO2+","+C2H+","+VOC+","+CO);

  delay(10);

  
}

一旦安装了包括 nodejs 要求的 edge-impulse-cli 并且您的 WIO 准备就绪,打开您的命令提示符并运行以下行:

edge-impulse-data-forwarder

然后将提示您输入您的帐户信息。输入您之前的边缘脉冲帐户信息。

出现提示时输入传感器轴:

NO2,C2H5CH,VOC,CO

为您的设备输入一个名称,您将连接到 edge-impulse。

数据采集

现在可以开始数据收集了。在边缘脉冲中为您的项目打开数据采集选项卡。您将在设备下看到您的数据转发设备名称。

可以设置样本长度,即您将为每个样本记录的毫秒数,以及作为该特定样本的类标识符的标签名称。

选择您的分类器设置,如下所示:

生成您的模型和特征:

在部署选项卡中,将您的模型导出为 Arduino 库。

您现在可以从 github 加载另一个名为 hidehogEdgeImpulseMain 的代码,其中包括边缘脉冲支持。安装 your.zip 库并将其包含在代码中,如图所示。根据需要进行更改。

这个网页界面只有一个分类按钮。单击此按钮时,将调用边缘脉冲分类器并且可以使用预训练模型。

本文中所用到的一些代码

如果您对此项目有任何想法、意见或问题,请在下方留言。

以上内容翻译自网络,原作者:aashirjalal,如涉及侵权,可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论