学生休息室

分享学生如何在日常项目中使用MATLAB和Simulink的技术和现实例子#studentsuccess万博1manbetx

万博1manbetxSimulink学生挑战赛获胜者2019

这周的帖子是由Owen Paul发布的,他在MathWorks学生竞赛项目团队工作。

介绍

许多公司都在使用Simulink万博1manbetx尤其是在汽车、机器人和航空航天领域,用于基于模型的设计。但我敢打赌如果你调查大多数工科学生关于什么的话万博1manbetx是指他们可能不知道说什么。这也是我们每年举办Simulink学生挑战赛的主要原因之一。万博1manbetx我们MathWorks希望强调使用Simulink的学生,并鼓励您在项目中使用Simulink。万博1manbetx尽管如此,你可能已经准备好退出这个博客了,因为你认为我会花接下来的1000字来说服你为什么你应该参加这个比赛。不!在本博客中,我将讨论2019年Simulink学生挑战赛的两个一等奖视频,并讨论这些学生正在做的酷项目。万博1manbetx

但在我深入研究这些项目之前,我必须先简要地讨论一下Simulink挑战,以提供一些背景知识。万博1manbetxSimu万博1manbetxlink学生挑战赛是MathWorks每年举办的一项在线竞赛。在这个挑战中,我们向世界各地的大学生提出一个简单的问题。你如何使用Simulink?万博1manbetx为了回答这个问题,学生们制作了一个简短的视频,展示了他们使用Simulink的一个项目,然后将其发布到YouTube上,标签是#SimulinkChallenge2019。万博1manbetx然后,我们根据三个方面对这些视频进行评判:参赛作品是否符合竞赛主题,视频的创意和原创性,以及挑战方案中展示的产品知识的深度。现在你知道挑战是什么了,让我们开始吧!?

使用先进数字滤波器的测速仪(维德)

如果你买了一辆崭新的汽车,几天后你注意到一扇乘客车门上有一个肿块,你会有什么感觉?可能不是很开心。为了避免这种愤怒和挫折感,材料的质量测试非常重要。首先,第一名的获胜者有一个解决方案,可以帮助这个质量保证。菲利克斯•施奈德波鸿应用科学大学正在开发一种名为“VADER”的高精度光学长度和速度传感器。“这个VADER传感器包括一个明亮的LED来照亮物体的表面,以及一个线相机来拍摄移动的表面(图1)。

gif

图1:维德传感器

高水平工作的方式是金属板以一定的速度在装配线上移动。VADER传感器面向金属板放置,线摄像头位于金属板移动方向。当材料在相机上移动时,空间滤波测速技术就会发现缺陷。如果这听起来还不够复杂,Felix还必须考虑这样一个事实,即相机记录数据的速率高达1.6 Gbs/sec,而且这些数据必须经过预处理和过滤。为了解决这个复杂的问题,Felix求助于Simulink。万博1manbetx

为了处理来自VADER传感器的数据,滤波是在使用现场可编程门阵列(FPGA)的定制电路板上完成的。该FPGA有三个主要用途;解码来自线摄像机的数据,过滤数据,并处理数据输出到德州仪器(TI)开发板。具体地说,一个TI板与数字信号处理器芯片(DSP)。为了解决所有这些任务,Felix在Simulink中对FPGA系统进行建模,将每个任务划分为子系统(图2)。万博1manbetx

万博1manbetx仿真软件模型

图2 FPGA板的S万博1manbetximulink模型

我发现在这个模型中特别有趣的是过滤子系统。这就是实现前面提到的空间过滤的地方。因为Felix需要使用8个并行空间滤波器,所以他使用了一个对于每个子系统块; 允许他仅使用一个块自动通过过滤器运行数据8次。

在滤波子系统中还增加了边缘检测算法,用于检测材料开始和结束的时间。根据这些信息,你可以很容易地推导出材料的长度以及它的运动速度。为了实现边缘检测,Felix首先使用了Simulink逻辑块(图3),他说这是一个“难以验证的大型万博1manbetx设计”。

万博1manbetx仿真软件模型

图3:使用Simulink逻辑的边缘检测万博1manbetx

在发现这一点后,他转向Stateflow,“这使事情变得更容易。”乍一看,我们已经可以看到该模型使用了Stateflow(图4)使用更少的块,更易于阅读。但真正让Felix更好的是,他可以验证边缘检测的输出是正确的响应。通过这种新的实现,创建了显示边缘检测算法应用前后数据的图。从这些图可以直观地解释材料的开始和结束。

Stateflow形象

图4:使用Stateflow的边缘检测

如前所述,FPGA板必须处理高速数据,但也必须与TI板接口。Simulink测试用于确保在制造FPGA板或在任何硬件上测试之前,可以调试模型中的任何问题或bug。通过Simulink测试,Felix能够将真实或模拟的摄像机数据输入模型万博1manbetx,并测试结果的准确性以及可能出现错误的位置。

一旦模型经过了适当的测试,Felix知道它可以工作,是时候开始为硬件编写C和HDL代码了……哦,等等,不,他们不需要写任何代码?没错,没写一行代码是因为HDL编码器也用于将FPGA Simulink模型部署到FPGA板上。万博1manbetxFelix还为他使用的TI板建立了万博1manbetx一个Simulink模型嵌入式编码器部署C代码。Felix说HDL编码器可能是在这个项目中使用Simulink的最大好处。他说,,万博1manbetx

“在HDL项目中手工开发测试台是非常累人的,相反,在Simulink中,我可以绘制每个信号,并且,在大多数情况下,可以很快地从波形中发现错误。万博1manbetx如果没有HDL-Coder / Simulink Coder,整个项目就不可能完成。”万博1manbetx

通过观看视频了解有关此项目的更多信息在这里!一定要关注他的工作,因为根据菲利克斯目前的模拟,“可能很快就会有一个新版本的VADER,它的测量误差远低于商业可用的传感器。”

安全城

下一位冠军得主让我们得以一窥不久的未来无人驾驶汽车。穆斯塔法·萨拉奥卢在Technische Universität网站上,德雷斯顿正在寻找创建一个“安全城”,车辆可以了解彼此的位置,并根据这些信息调整它们的方向。但这个问题有两个主要因素。第一个是自动驾驶汽车元素,即车辆必须沿着道路行驶,同时避开其他车辆。另一部分是交叉点。当一辆车到达十字路口时,它如何知道什么时候还有其他车辆在路口以及谁应该先走?

为了解决第一个问题,使用Simulink和Stateflow开发了一个自主车辆模型。然而,这个模型不是从头开始建造的。穆斯塔法的团队从一个万博1manbetx简单的直线跟踪示例团队正在使用的乐高MINDSTORM EV3机器人。从这里开始,添加一个PID控制器,并对参数进行调整,直到团队对车辆的性能满意。之后,添加statflow模型来控制以下模式的切换:跟线、停车、过路口。Mustafa告诉我们,使用Simulink进行控制是万博1manbetx关键,因为他们“可以使用各种不同的控制器,并在需要时进行快速评估、调整或改变(他们的)方法。(他)想不出另一个如此适合如此快速发展的环境了。”

对于第二个问题,一个摄像头被放置在“城镇”上方,以跟踪乐高机器人的位置和识别路口。利用图像识别算法在地图上识别乐高机器人。为了创建这个算法,穆斯塔法的团队首先使用地面真相标签应用程序在视频的任意一帧中识别一个乐高机器人。机器学习算法如R-CNN, Fast R-CNN, Faster R-CNN和ACF随后在MATLAB中使用地面真相标记应用程序生成的数据进行训练。然后使用地图上多个乐高机器人的样本预录制视频对这些算法进行测试(图5)。使用该视频,穆斯塔法的团队找到了最佳算法,ACF探测器,在本项目中使用并调整参数,以确保算法准确识别乐高机器人、交叉口以及交叉口处何时有乐高机器人。使用Simulink模型a中开发的图像识别算法万博1manbetxMATLAB功能块被使用了。

gif

图5:使用机器学习识别机器人和交叉口

现在,我们已经看到穆斯塔法的团队如何解决所确定的两个主要问题,还有一个更重要的因素需要考虑。表达摄像机工作站可以识别乐高机器人何时在十字路口,但现在它必须告诉机器人他们该等还是该走。此通信通过使用用户数据报协议(UDP)的Wi-Fi完成。集成UDP变得更容易,因为有预先为此创建的块。乐高机器人在中提供了UDP Simulink块万博1manbetx乐高EV3机器人硬万博1manbetx件支持包.对于摄像头工作站来说,UDP协议是一个瓶颈仪器控制工具箱被使用。安装了这些附加组件后,所有要做的就是将这些UDP块拖到它们的模型中,并设置地址和端口。

看完视频后,我对这个项目的背景产生了好奇。当被问及安全城项目时,穆斯塔法说,

“SafeTown是一个非常有用的项目,学生可以在真实的硬件上测试和尝试他们的算法。这也有助于全面理解与控制和自动化工程相关的概念。我一直想知道控制理论在现实生活中是如何运作的,因为我还是一个单身汉。所以现在,把这个机会给本科生,和他们一起做这样的项目,让我感到很开心和满足。我希望随着新同学的加入,我们可以在不同的方面进行改进,共同增加价值。”

要了解有关此项目的更多信息并观看乐高机器人的动作,请单击在这里

最后,观看其他获奖视频或找到更多有关比赛的点击在这里

想自己学习如何使用Simulink吗?免费万博1manbetx万博1manbetxSimulink入匝道也许明年我会写你的Simulink项目?万博1manbetx

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。