背景
在2019年11月之前,我是几乎不知道版本控制软件的存在,在学校里的项目可能都是拿着U盘到处拷贝粘贴,每个小组的成员都会修改,最后改成什么样了也不清楚。正式听到这个词的时候是去年11月在珠海参加FSAC比赛的静态答辩的时候被评委问到了,答曰:我们用U盘拷,突然感觉到好low。后面下来看电脑里文件很多,keil里的C代码各种日期命名,Simulink模型也是如此。最近,让团队所有成员必须全部用Git对各自负责的项目进行版本控制,当然SVN也用的很广泛,看各位的需求。
因为我是负责控制策略的,所以主要的工具就是Matlab/Simulink/Stateflow。偶然间突然发现这个除了不能生孩子的软件果然可以进行版本控制,那何必还在Git bash中敲代码呢(最烦写代码)。这几天研究了一下,发现真的很强大。这里也是分享一下如何使用。
所需要的硬件&软件
1.电脑一台。
2.Matlab/Simulink。
配置Git环境
如果您从来没有接触过Git这类的版本控制软件,可以到搜索引擎中进行一些查询,可能写代码比较多的同学对这个比较熟悉,类似我们车辆工程专业的可能就不是很熟悉。
第一步安装Git命令行,下图我是从Matlab help中找到的。如果您从来没用接触过,可以搜素廖雪峰的Git教程,那是相当不错的,教程会手把手教你如何安装Git。当然我们平时不会使用到太深的Git技能,只需要掌握基本的就可以了。
当Gitbash安装完成后,打开MATLAB,在命令行窗口输入
1 | !git; |
然后弹出如下窗口就代表您配置完环境了。您可以在matlab环境中使用Git,也可以在Simulink Project使用Git。这里我主要介绍如何在Simulink中使用。
如果您有任何问题可以输入如下代码,查看帮助文档
1 | doc git |
第二步,去最大的xx网站Github注册个账号,因为需要把本地卡push到远程库,所以需要在Github建立自己的远程仓库。如下图所示。
这个倒是很简单,建完就算配置完环境了。需要复制下网页地址。一会儿会让Simulink链接到远程库。
版本控制
1.提交到本地仓库
接下来进入正题。点击Simulink按钮,新建一个Simulink项目。==这里说一下,个人建议开始干活之前建立项目,而不要直接建立模型,最后一个文件夹全是各种模型,没法管理。==但是这里需要选择Project from Git,意味着把远程库克隆下来。您可以新建一个项目,在进行版本控制,最后推送到远程库,都是可以的。这里我直接把仓库克隆下来。
然后在黄色箭头输入刚才您远程库的网址,绿色箭头是一个空文件夹。最后点击蓝色箭头按钮。接着需要输入账号密码和您的项目名称。
您可以看到折腾完以后当时在远程库新建的README文件就直接克隆下来。接下来,您需要添加您的模型,脚本之类的文件。当然如果是项目开始,就在里面从头做起!
这里,我将前次博客中的PID模型拿过来做一个版本控制的例子。把几个模型拖进文件夹。我一个拖了三个文件,分别是整体的模型,模型引用子系统和数据字典。然后将左边红色箭头三个文件拖入右边箭头的区域。这个时候系统会让您把这个文件路径拖入到项目路径,点击Move and Update。这个时候您发现在Git那一栏显示的是加号,那说明已经将模型和文件add进来了,这个时候您点击Commit就可以把您的项目上传到本地仓库了!
请写好您的注释,这是非常重要的!每次提交的时候请认真写注释!
提交完成后,可以看到git状态显示为绿色,表示没有修改。说明已经上传到本地仓库了!
2.版本更改与回退
版本控制意在我想在我第一次提交和最后一次提交的任何版本的,切换自如,想在哪个版本就在哪个版本。
这个时候我修改模型,把模型的采样时间全部改成0.01s。并且修改PID控制器参数。过程我就不演示了,非常简单的更改过程!
当我们更改完成后,点击保存,Git的状态变为蓝色矩形,说明已经修改了,并没有提交。然后我们Commit本次修改。
我觉得最强大的地方就在于类似模型对比的功能,您可以把当前的模型和之前提交的版本进行对比,方法如图。
在上图您看到我有多个版本,是因为我自己在尝试的时候提交了多个版本,这里我只展示一下对比后的结果!如果您只是修改了 采样时间和控制器参数并成功提交,那么这里只有两个版本,您只需点击第一个版本,然后点击Compare to Local。会显示如下图所示的界面。
是不是很熟悉的界面!模型比较,大家都常用到的一个工具!,左边是历史版本,右边是我的当前版本。只要您修改了的地方,都会进行一个对比,并且弹出对应的窗口高亮对应的部分!如果对于简单模型您会轻易找到,那么数十层的模型,您改变一个Gain值没有对比的情况下是非常难定位的。这时采样时间是0.01s,并且PID参数改变了。当然M文件和txt文件也是可以精确对比的!这里我就不示范了,您可以自己尝试下。
这个时候我们需要回退到第一个版本,怎么做呢?
按下图操作即可。
选择您想回退的版本即可,最后点击Revert
这里我把模型引用的子系统和整体模型全部回退。然后重新打开文件,就可以看到参数已经回退到之前了。
最后点击Commit。完成最后的提交。
3.推送到远程库
推送到远程库也很简单,点击Push就可以了。然后输入账号和密码。就完成了。
最后我们点开Github网站,刷新一些远程库,就可以看到我们的项目了!
针对目前的项目需求来说,简单的使用Git已经可以满足当下的需要了,各位还需要视自己情况而定。
总结
版本控制软件的重要性我也是在实践中得出的,大量的文件以时间命名根本无法管理。后续我也会继续研究git的使用,当您在使用Matlab有问题的时候请记住,百度,谷歌都不及Matlab的help文档。如果本次博客的内容有错,请您批评指正!也欢迎各位一起交流,共同进步!