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