学生休息室

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

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

今天的嘉宾帖子来自布兰登·史蒂文斯.布兰登是一个欧洲经委会的研究生谁担任推进控制和建模领导阿拉巴马大学(UA) EcoCAR移动挑战赛团队.这竞争挑战11所北美大学,建立并开发节油混合动力原型车的代码SAE 2级无人驾驶汽车具体来说,2019款雪佛兰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启动和关闭任务.我们在Projects中的启动和关闭任务列表中添加了不同的MATLAB脚本;这意味着在打开项目文件时,启动脚本将在工作空间中预加载一些关键变量,并确保我们的MATLAB环境被正确设置。如果我们的一个开发人员正在做一些工程课程,他们可以打开项目文件,他们正在做的任何事情都不会干扰到EcoCAR模型,当他们关闭项目时,EcoCAR模型也不会碍事。这些设置任务极大地加快了我们团队开发人员的入职速度;新成员只需要打开项目文件,这些脚本将自动运行以设置环境,此外还将所有相关的Simulink和MATLAB文件添加到MATLAB路径。金宝app前面显示的那些项目快捷方式意味着可以很容易地进入正确的模型来工作或运行模拟。几年前,我们控制团队的新成员“训练”是弄清楚如何设置和运行模型,现在这已经不是问题了。
项目还包括图形用户界面(GUI),用于与大多数常见的版本控制系统(如Git)交互。我们曾经尝试过用Git控制我们的Simulink模型,并且仅仅通过命令行工具进行交互。金宝app这意味着它对我们的大多数工程成员来说是不直观的,而且很少使用。对于一个结构良好的项目,我们能够利用项目GUI正确地使用Git,并使其非常容易实现。
我们的团队使用一个大学托管的GitLab服务器来管理我们的Git存储库和正在开发的项目工作。这个功能强大的Projects Git界面系统和简单易用的GUI意味着每个开发人员都在功能分支上工作,他们会被“压缩和合并”到一个主开发分支上。现在我们的模型被划分了,我们为每个特性合并和维护文件变更列表的过程也被简化了。下面是项目源代码控制GUI的一部分,它显示了在将版本控制移动到项目UI之前和之后将特性分支合并到主分支的更改日志。
项目和版本控制GUI使我们能够构建这个,拥有这些更改历史和有用的Git提交消息是非常有帮助的。每次在添加新代码之前,我们都会比较文件,看看它是如何通过比较工具变化到最新版本的。在处理某些代码时,我们还可以查看文件的历史,以帮助确定是谁做了更改,以及为什么某些系统像现在这样工作。

下次见…

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

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。