立体仓库分拣机器人在本文中,我将在Wio终端上制作一个带有内置麦克风的声控机器人车,以通过TinyML识别行驶、停止和背景噪音。
使用由EdgeImpulse提供支持的Codecraft训练了一个唤醒词识别模型!
在这篇详细的博客文章中,我将介绍以下内容:
什么是UART串行通信?
Wio终端和uKit之间的UART串行通信探索
1.0使用Codecraft训练嵌入式机器学习模型
2.0Arduino文本代码修改
3.0对机器人汽车进行编程(uKit探索-基于ArduinoMega2560)
4.0预期结果
什么是UART串行通信?
通俗地说,UART允许嵌入式设备通过TX线将数据发送到另一个Arduino,如下所示。
举一个具体的例子:
ArduinoUNO没有内置的WiFi,因此不可能做IOT相关的项目。通过了解基本的UART串行通信,我能够利用ESP8266/ESP32作为ArduinoUNO的协处理器,以便从连接到ArduinoUNO的传感器收集的数据将发送到ESP8266/ESP32发送转移到云平台,例如Web服务器、Blynk或FAVORIOT。
Wio终端和uKit之间的UART串行通信探索
Wio终端的TX和RX引脚在引脚8和10上可用。
TXD-引脚8
分拣机器人是什么样子的RXD-引脚10
而对于uKitExplore,引脚D0和D1上也有可用的TX/RX引脚。您可以在此处查看完整的uKit探索引脚排列
垃圾分类分拣机器人简介RX0-D0
TX0-D1
对于硬件连接,基本上,您只需要如下连接:
Wio终端到uKit探索-TXD到RXD
Wio终端到uKit探索-RXD到TXD
我将详细解释软件编程如何在3.0ProgramtheRobotCar(uKitExplore-ArduinoMega2560based)上完成。
第1步:使用Codecraft训练嵌入式机器学习模型
在第一部分中,我们的目标是使用Codecraft平台创建一个嵌入式机器学习模型。
使用Codecraft训练嵌入式机器学习模型涉及4个步骤。
1.创建“唤醒词识别”模型
2.数据采集
3.培训和部署
4.编程与模型使用
点击左中嵌入式机器学习框上的“模型创建”。然后选择“Wake-UpWordsRecognition”,如下图。根据需求输入模型名称。
点击确定,窗口会自动切换到“数据采集”界面。
第2步:数据采集
系统会自动为您创建3个默认标签(hiwio、background和其他词)。
智能分拣机器人功能除非您想为标签使用不同的名称,否则您可以不加任何更改地使用它。就我而言,我更改了两个默认标签,如下所示:
hiwio删掉
分拣机器人有哪家企业制造其他词改成停止
重要提示:现在,您必须记住更改默认数据采集程序上的标签以反映正确的修改标签
连接Wio终端和上传数据采集程序。
垃圾分拣机器人发展历史注意:您需要下载“CodecraftAssistant”才能在Codecraft在线IDE上连接和上传代码。
数据采集:在右上角的超链接中,您将找到数据采集的分步介绍。按照说明根据修改后的标签收集数据。
第3步:培训和部署
点击“TrainingDeployment”,您将看到如下图所示的模型训练界面。
选择神经网络和参数。选择合适的神经网络大小:小、中、大
设置参数:
训练周期数,
学习率
最小置信度
接口提供了50个训练周期的默认参数值,但是准确度不是很好。因此,我将训练周期更改为100。
点击“开始训练”。单击“开始训练”时,窗口将显示“正在加载。”!等待训练完成!
观察模型性能以选择理想模型。在“模型训练报告”窗口中,您可以观察训练结果,包括模型的准确率、损失和性能。
在“模型训练报告”窗口中,点击“模型部署”。部署完成后,单击“确定”进入“编程”窗口,这是我们将模型部署到Wio终端之前的最后一步。
第4步:编程和模型使用
好的,现在我们完成了使用UART通信协议将人工智能与机器人集成的模型和有趣的部分。
这是从块编程接口创建的示例程序:
我们使用if-else条件语句来评估标签的置信度。
如果“go”的置信度大于0.8,我会在串口终端打印“1”。
如果“停止”的置信度大于0.8,我会在串口终端上打印“2”。
否则,如果“背景”的置信度大于0.8,我会在串口终端上打印“0”。
好的,所以现在,只需记住3个不同的条件:
“go”》0.8,命令为‘1’
“停止”》0.8,命令为“2”
“背景”。命令是‘0’
2.0Wio终端Arduino文本代码修改
好的,所以请注意以下两个重要发现,因为这将是我们项目的关键部分!
您可以从WioTemrinal的40针接头访问的串行线是Serial1,而不是通常的Serial,后者基本上通过串行终端显示输出。
我们在引脚8和10上提供了TX/RX引脚,可用于连接到另一块电路板。
如果我们查看相应块代码的文本编码,您会注意到没有使用Serial1行。因此,这导致我们进入第二步,即继续在ArduinoIDE上进行编码以进行定制。
切换到文本代码区域并复制文本代码
在文本代码区域,按CTRL+A复制所有代码以选择所有代码。
打开ArduinoIDE,创建一个新文件,按CTRL+V将代码粘贴到空草图中。继续以所需名称保存草图。
复制EdgeImpulseTinyMLArduino库
导航到C:\Users\《User_Name》\AppData\Local\Programs\cc-assistant\resources\compilers\Arduino\contents\libraries
找到与Arduino文本代码顶部的EdgeImpulse头文件具有相同编号的文件夹名称。
复制整个ei-project_47606文件夹并将其粘贴到C:\Users\《User_Name》\Documents\Arduino\libraries\
修改函数
改为将函数修改为。
上传代码
确保您已安装Wio端子板支持包。如果没有,请参阅SeeedWiki上的“Wio终端入门”指南。
在将代码上传到Wio终端之前,请确保选择了正确的板和COM端口。
第4步:对机器人汽车进行编程(uKit探索-基于ArduinoMega2560)
我们将对基于uKitExplore的RobotCar进行编程。
uKit简介探索
让我让您了解一下这个uKitExplore的内容。
uKitExplore是UBTECHRobotics制造的机器人套件,它基于Arduino生态系统(芯片组为Arduino2560)。
“uKitExplore有一个主控箱,配备Arduino开源平台,提供来自全球用户贡献的大量电子和编程学习资源。”
编程uKitExplore以读取UART数据
现在,我们需要对RoboCar进行编程,使其在收到来自WioTerminal的命令“1”、“2”和“0”时根据不同的条件采取行动。
这里的关键概念是,如果它包含任何数据,我们将需要让uKitExplore继续侦听串行线。如果它确实包含串行数据,则串行读取数据并将其分配给一个变量。最后一步是我们将比较变量并执行不同的操作。
对于我们的案例,当uKit探索
收到命令“1”,RoboCar将向前移动;
收到命令‘2’,它将停止;
物流分拣机器人logo收到命令‘0’,它也会停止。
上传代码
最后,我们将代码上传到板上。与往常一样,请确保在上传之前选择了正确的板和COM端口。
最后,RoboCar可以通过语音“go,go,go”激活,并通过“stopppps.。。。”或“background”停止。达到我们想要的目标!
智能分拣机器人市场需求广州高速分拣机器人快递分拣机器人缺点