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