MATLAB支持树莓派,第2部分:在树莓派上部署MATLAB算法
从系列:MATLAB支持树莓派
MATLAB®树莓派™支持包使您能够从您的计算机交互控制树莓派™。学习如何开发和原型MATLAB®使用支持包的树莓派™算法。您还将学习如何使用MATLAB Coder™将MATLAB算法部署为独立的应用程序。在视频中介绍的LED闪烁和文件操作示例指导您逐步完成工作流程。
发生什么事了,各位。我是Meeshawn,欢迎来到这个关于如何在树莓派上部署MATLAB算法的视频。有一段时间,我们一直在把Simulink的算法部署到树莓派上。在本视频中,我将向您展示如何将您的MATLAB代码部署到树莓派硬件上。我将用一个简单的LED闪烁的例子帮助您开始。我将向您展示如何编写MATLAB代码在树莓派上部署它。稍后,我将展示一个更复杂的边缘检测示例。
让我们快速看看你需要的东西——一个由微USB线供电的树莓派板,和以太网电缆,一个USB网络摄像头,这是一个支持v4l2的网络摄像头,当然,还有MATLAB。您可以使用您的MATLAB版本支持的任何树莓派板。然而,这个例子要求您拥有MATLAB版本2018或更高版本。在这个视频演示中,我使用了树莓派3 B型板。网络摄像头将用于视频最后讨论的边缘检测示例。您还需要MATLAB Coder产品,以及用于代码生成的MATLAB。
好了,现在我们知道了前提条件,让我们开始用MATLAB。为了在MATLAB中使用树莓派,您首先需要安装树莓派的MATLAB支持包。支持包使您能够从运行MATLAB的计算机与树莓派硬件远程通信。它包括一个MATLAB命令行接口,用于访问硬件的外设和通信接口。要了解更多关于支持包的信息,请在此命令的帮助下参考本文档。
让我们从创建一个树状结构对象开始,从MATLAB连接到硬件。如果这是您第一次连接树莓派硬件,那么可能会提示您输入IP地址、用户名和密码。通过该接口,可以收集通过SBI和I2C总线连接到树莓派硬件上的传感器的数据,并在MATLAB和树莓派硬件上的实际设备中进行处理。
例如,您可以使用所写的方法设置板载绿色LED灯的开启或关闭。简而言之,支持包允许您从MATLAB中交互式地控制树莓派硬件。树莓对象还提供了在树莓派硬件上执行Linux命令的方法。
好了,现在让我们用这个命令创建一个脚本来闪烁LED。除此之外,让我们在树莓派硬件上执行一些文件操作。为此,让我们创建一个空文本文件。W在这里表示写权限。
接下来,让我们写一个for循环,让LED闪烁七次。让我们使用pause函数实现一个一秒的周期。暂停功能是Codegen兼容的Linux板。在循环结束时,我们将眨眼操作的计数写入刚刚创建的文件。循环结束。现在,在写入数据之后,让我们关闭文件并保存脚本。我们称它为blinkNWrite,因为我们同时进行LED闪烁和文件写入操作。
好了,现在让我们来看看在树莓派硬件上部署算法的典型工作流程。工作流的第一步是创建一个MATLAB函数。我们刚刚创建了一个MATLAB脚本。现在我们将在顶部添加关键字function,后面跟着函数的名称。
为了将算法部署到树莓派硬件上,我们需要将脚本作为MATLAB函数实现。目前,从MATLAB 2019b开始,您可以在没有任何输入/输出参数的情况下部署MATLAB函数。好了,我们工作流程的下一步就是执行这个MATLAB函数。点击红色按钮或按F5将在MATLAB中运行函数,并根据函数实现的逻辑控制板载LED树莓派。
好的,现在我们可以看到在当前目录下创建了一个文件sample。txt。正如你看到的,LED已经开始闪烁。它刚刚完成了7次。现在,我们打开这个文件。闪烁板上LED计数等于1到7。完美的。所以我们的MATLAB函数只是切换LED并在MATLAB的当前工作目录中创建了一个文件。让我们先删除这个文件。
这就是连接的I/O工作流,其中MATLAB交互并控制树莓派硬件的外围设备,在这种情况下就是树莓派硬件的板载LED。接下来,我们看看如何将这个MATLAB函数部署到硬件上。在这个工作流程中,MATLAB编码器将把MATLAB函数转换成等价的c++代码,然后在硬件上进行构建、加载和执行。这个可执行文件将独立于MATLAB运行,也称为独立执行。
我们首先在函数签名之后添加pragma %#codegen指令,以表明我们打算在硬件上部署MATLAB函数。添加此指令将指导MATLAB代码分析器帮助您诊断和修复部署过程中可能导致错误的违反。Analyzer在编辑器窗口的右上角提供了一个指示器。绿灯表示没有检测到任何问题。
如你所见,绿色显示在我们函数的顶部。因此,我们可以进行下一步。请注意,代码生成并不支持所有函数调用。因此,我们的下一个目标是检查是否支持代码生成。
要修复不支持的函数调用错误,可以将函数声明为编码器。外部的,或者用代码生成支持的等价函数调用替换函数。有关编码器的更多信息。外部的,通过键入doccodeer .外部的在文档中搜索。
要获得支持的函数调用列表,请在文档中键入文档语言支持代码生成搜索。要查看用于部署的树莓派外围函数列表,请搜索文档中支持部署的文档函数。幸运的是,在我们的例子中,没有任何不支持的函数调用。
接下来,我们将讨论两个重要的函数,这将帮助我们在硬件上部署独立的MATLAB函数,这是我们的最终目标。我们首先使用函数目标硬件创建一个硬件配置对象。例如,要为树莓派硬件创建一个配置对象,输入目标对象等于目标硬件树莓派。
创建的对象帮助配置部署的各种选项,例如硬件设备地址、用户名和密码。默认用户名为“Pi”,默认密码为“Raspberry”。其他选项包括设置硬件上的Build Directory位置、部署的构建操作首选项(例如构建、加载和运行,或仅构建),以及在硬件打开后自动执行函数的RunOnBoot选项。所有这些都可以在将MATLAB函数部署到硬件之前进行配置。
现在我们准备将我们的MATLAB函数部署到树莓派硬件上。我们将在deploy函数的帮助下做到这一点。该函数将MATLAB函数部署为硬件上的独立可执行文件。它还生成一个部署报告,其中包含关于部署状态的信息。
如果在部署过程中产生任何错误,您可以使用该报告来调试该函数,并验证该函数是否适合部署。此外,我们还必须注意,要部署的MATLAB函数在MATLAB 2019b版本之前不能有任何输入或输出参数。部署,目标对象,blinkNWrite。
这个函数需要两个参数,即硬件配置对象和要部署的MATLAB函数的名称,在本例中是blinkNWrite。执行此命令将在树莓派硬件上部署MATLAB函数。代码生成成功,生成代码生成报告。正如你在这里看到的,LED正在闪烁。
文件sample.txt将在Linux目录中返回,该目录在目标硬件配置对象的Build directory中指定。注意,文件sample.txt现在是在树莓派上生成的,不像连接的I/O工作流,它是在MATLAB工作目录中生成的。我们现在可以通过执行这些命令将文件从硬件复制到MATLAB中——r等于raspi, getfiler, Build Directory location。
正如您在这里看到的,该文件在Working Directory中弹出。让我们打开这个文件。闪烁板上LED,计数为1至7。
好了。到目前为止,我们已经开发了一个MATLAB函数,最初在MATLAB中使用连接的I/O工作流执行它,然后成功地部署到树莓派硬件上。由MATLAB函数生成的代码在硬件上运行,并独立于MATLAB对LED进行操作。
现在让我们回顾和理解到目前为止讨论的两个工作流,连接I/O和部署。连接I/O可以让您从MATLAB中与硬件及其外围设备进行交互。您可以从传感器收集数据,在MATLAB中处理它,并相应地控制执行器。而在部署中,代码是由MATLAB函数生成的,在硬件上加载并执行,以便独立执行。
连接的I/O工作流更适合调试,编译时间更短,因此对于快速原型开发非常有用。然而,由于它的栓系操作模式,物理连接总是需要的。这是为了在连接I/O工作流中方便MATLAB和树莓派之间共享按需请求响应。因此,每个计算步骤都有一个周转时间。
另一方面,部署与生产工作流相匹配,其中代码必须独立于MATLAB和用于设计项目的主机运行。执行是实时的,因为部署的代码不必等待MATLAB的每一步计算。但是它确实涉及到编译和部署,这对于调试和快速原型设计来说不是很理想。
好了,这就是到目前为止讨论的两个工作流的总结。在下一集视频中,我们会看一个更专门的应用,也就是边缘预测算法。更多有趣视频,请访问www.MathWorks.com/videos。谢谢你!
相关产品2022世界杯八强谁会赢?
了解更多
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。