学生休息室

分享学生如何在日常项目中使用MATLAB和Simulink的技术和现实例子#studentsuccess金宝app

金宝appSimulink模型组件化与阿拉巴马大学EcoCAR

今天的客座文章是由布兰登·史蒂文斯.布兰登是一个欧洲经济学院的研究生,担任推进控制和建模的领导阿拉巴马大学(UA) EcoCAR移动挑战团队.这竞争挑战11所北美大学,为高效燃料的混合动力原型车构建和开发代码SAE 2级无人驾驶汽车具体来说,2019款雪佛兰开拓者(Chevrolet Blazer)进行了重新设计,包括高压电机系统、新的发动机和变速器,以及新的摄像头和传感器,以帮助实现纵向和有限横向控制。为了实现这些控制,在车内安装一台新的计算机,以提供对其他车辆部件的监督控制。本博客由两部分组成:在我们的第一篇文章中,Brandon将讨论为什么他的团队需要改进他们的控件开发,并详细说明他们如何使用MATLAB项目,在我们的后续文章中,他将介绍他们的团队如何使用版本控制,并将他们的模型组件化以更容易地开发。
UA团队在三年级比赛中获得了总冠军,并赢得了最佳推进控制和建模展示,在行业dSPACE验证奖中获得了第一名,在MathWorks基于模型的奖中获得了第二名。在这篇博客中,Brandon描述了团队如何使用MathWorks工具来组织他们复杂的MATLAB和Simulink代码,以实现团队范围内的协作和成功。金宝app

团队介绍&组件化的需要

为了开发我们的控制代码,团队使用基于模型设计的MathWorks工具来设计、迭代、测试、模拟,并自动生成进入车载计算机的代码。对于我们的大学团队来说,这不是一个简单的任务,也不是一个人的任务,因此UA EcoCAR团队目前共有65名成员。控制团队有13名成员,除了提高驾驶质量、燃油效率和安全性外,他们还负责开发连接和控制汽车的软件。一个软件项目是一个庞大的学生设计团队,我们使用基于模型的设计来完成所有的项目。
随着团队的不断壮大和越来越多的开发人员,我们意识到我们创建Simulink模型的老方法已经不能胜任了。金宝app当我们只有2个开发人员时,用zip文件备份将最新的代码保存在一台计算机上是很容易的。手动运行一些MATLAB脚本来设置一些变量并不是什么大问题。我们主要在一个大的Simulink模型中工作,我们没有办金宝app法真正检查代码中到底发生了什么变化。
随着我们团队在去年的成长,当我们尝试合并代码更改或划分软件任务时,我们的简单系统遇到了大问题。我们真的不知道如何在MATLAB和Simulink中有效地作为一个团队工作,所以我们花了一些时间学习和应用更好的软件实践和我们的代码结构,使它更容易。金宝app我们从许多方面升级了我们的代码,以改进我们的工作流程,并消除了试图将所有人的代码集成在一起的许多令人头疼的问题,使人们能够尝试新事物。
首先,我们用项目组织我们的模型,使它非常容易与新成员分享我们的模型。新的开发人员只需要打开项目文件,所有的设置步骤就会自动完成。我们添加了项目快捷方式,在MATLAB中提供一个按钮,点击它就可以打开他们想要工作的正确的Simulink文件。金宝app
项目还为版本控制软件(如MATLAB中的Git)提供了很好的内置图形用户界面(GUI)。利用这个GUI意味着新成员不需要学习如何导航命令行界面(CLI)来在我们的模型上使用Git,我们开始真正使用Git并看到版本控制的好处。团队成员能够有效地在我们团队的办公室,以及他们的公寓或在学校休息的家里工作。此外,随着现代版本控制的使用,我们也开始采用其他更新的软件开发原则。
最后,我们重构了我们的代码,将其组件化,或者将我们的一个大的Simulink模型(包含数千个块)分解成许多个块,每个块由不同的功能块组成。金宝app这对我们的团队来说是革命性的,让更多的开发人员在早期参与进来,并允许在支持协作、重用代码、加速测试和自动代码生成过程方面进行巨大的改进。例如,我们没有将大的控制器代码放到一个子系统中,而是将代码拼接到各种模型参考中,这些模型参考可以自行编辑和运行。我们喜欢用颜色标记这些,下面是一些。

MATLAB的项目

项目是今年我们对工作流程最简单、可能也是最有影响力的改进。项目文件包装了我们所有的数据文件、测试、MATLAB和Simulink代码,以自动化我们使用的许多工作流程,包括金宝app启动和关闭任务.我们在项目中添加了不同的MATLAB脚本到启动和关闭任务列表中;这意味着在打开项目文件时,启动脚本将在工作区中预加载一些关键变量,并确保我们的MATLAB环境被正确设置。如果我们的一个开发人员正在做一些工程课程,他们可以打开项目文件,他们正在做的任何事情都不会干扰到EcoCAR模型,当他们关闭项目时,EcoCAR模型也不会成为阻碍。这些设置任务对于加快团队开发人员的入职速度非常有效;新成员只需要打开项目文件,这些脚本将自动运行来设置环境,除了添加所有相关的Simulink和MATLAB文件到MATLAB路径。金宝app前面显示的那些项目快捷方式意味着可以很容易地进入正确的模型来开始工作或运行模拟。几年前,我们的控制团队新成员的“培训”是弄清楚如何设置和运行模型,而现在这已经不是问题了。
项目还包括图形用户界面(GUI),用于与大多数常见的版本控制系统(如Git)交互。我们以前尝试过用Git控制我们的Simulink模型的版本,并且仅仅通过命令行工具进行交互。金宝app这意味着它对我们的大多数工程成员来说是非直观的,而且很少被使用。有了一个结构良好的项目,我们能够利用Projects GUI正确地使用Git,并使其非常容易实现。
我们的团队使用一个大学托管的GitLab服务器来管理我们的Git存储库和正在开发的项目工作。这个功能强大的Projects Git界面系统和易于使用的GUI意味着每个开发人员都在处理他们“压缩并合并”到主开发分支上的特性分支。随着模型的划分,我们为每个特性合并和维护文件更改列表的过程也得到了简化。下面是项目源代码控制GUI的一部分,它显示了我们的更改日志,以及在将版本控制移动到项目UI之前和之后将特性分支合并到我们的主分支。
项目和版本控制GUI使我们能够构建这些,拥有这些更改历史和有用的Git提交消息非常有帮助。每次在添加新代码之前,我们都会通过比较工具比较文件,看看它是如何变为最新版本的。在处理一些代码时,我们还可以查看文件的历史,以帮助确定是谁进行了更改,以及为什么某些系统像现在这样工作。

下次见…

在第2部分中,Brandon将介绍他的团队如何将大型模型分解为组件,以帮助他们进行版本控制过程。
|
  • 打印
  • 发送电子邮件

댓글

댓글을남기려면링크를클릭하여MathWorks계정에로그하거나계정을새로만드십시오。