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