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