通过请教组员一些组件的作用以及他们之间的连接关系后,参考论文,模仿建立出初始 PID 控制模型,并对各个部分都有了一定认识。下面是小编带来的大学生计算机专业暑期科研营心得体会,赶紧学习看看吧。
参加这个项目之前,自身的项目背景几乎为零,当在第一天下午的各自自我介绍中,看到各位同学的项目背景时首先感受到的是惊讶,然后想到的是接下来自己还有很多事情要去尝试和实践。在各位同学的自我介绍内容中,除了专业知识外,还有很多很重要的东西去学习,比如发言表达能力与做 PPT 展示能力等等。
在正式上课之前,自身对于这个涉及无人机项目的认识是用某一门编程语言去编写程序去控制无人机按照要求飞行。当涉及到自动控制方面的知识时,意识到完全和我想象的不一样。由于自身时计算机专业,对于自动化控制方面的知识比较有限,所以只能一边听老师讲解,一边去查阅各种资料基本知识以及问同一小组地同学。所以自动控制方面的知识感觉收获良多,从自动控制理论中形成一种建立模型的意识。当在对无人机进行建模时,接受起来比较容易,并对整体控制模型结构能够有一个较好的理解。
在本项目中,感觉较为困难的是对四旋翼飞行器模型建立之后的参数调试以及对模型适当修改以及加上干扰因素。参数的调试一开始处于效率低的阶段,参考了有关论文的参数,以及使用了老师说的先调 P,再调 I 或 D 的方法,但感觉还是调出来还是不太理想,出现超调过大,时间过长,振荡较大的单个或几个一起的问题。于是一直和组员一起讨论这个问题,也一起查阅了一些有关论文,想出了一些方法,但还是处于瓶颈位置时间较长。同时也同其他小组讨论过这个问题,发现也是卡在了这个问题上。之后老师介绍了 PSO 算法,发了参考代码给我们。我对这个算法还是可以理解,但对于结合到参数优化方面就感觉有点困难,在与组员的讨论中才明白 PSO 与 PID 参数优化的结合。然后跟着组长学习使用PSO 算法在 PID 上的应用。先把代码大致看明白,然后对粒子以及各种参数和函数的设置,虽然得出过许多组非常奇怪的数据,但最后还是得到了部分想要的结果,但每次调试都需要以小时为单位进行计算。虽然对模型有一定的理解,但在转化到 Simulink 时还是思考了一段时间来想明白内环,外环,反解算以及飞行器模型的建立,其中还要包含反馈。通过请教组员一些组件的作用以及他们之间的连接关系后,参考论文,模仿建立出初始 PID 控制模型,并对各个部分都有了一定认识。
接下来,浦老师还讲解了遗传算法。对于这个算法,没什么了解,待老师讲解后有了一定认识,并产生了兴趣。虽然对这个算法有一个基本的了解,但对于如何应用遗传算法这个问题上还是有些疑问。只好通过网络资源,查看了一些博客文章才开始知道如何应用。有一篇博客举了一个袋鼠跳的例子。有一个图像含有许多极值的函数,目标就是在一定区间范围内寻找到最大值,然后运用遗传算法来寻求最优解。对于代码实现遗传算法的解决,目前还在研究中。然后就是朱老师讲解了人工神经网络,开始对运用机器模仿人脑解决问题有了一个概念。人工神经网络的应用感觉以后可以用在很多不同的邻域。期间,朱老师还推荐了DSST 算法。这个算法我在看有关论文或解释时,很难理解的是一些数学上的式子,但对整体概念还是有一定的了解。在大致看懂下载下来的代码后,尝试去实现自己录制视频然后识别。录制视频不是很困难,但问题是如何按一定频率截取图片,一开始想到的是用 Matlab 加载一段视频,然后输入参数截取并修改好名称保存到一个文件夹内。但由于时间比较有限,所以从网络上下载了一个自带连续截图并能设置参数功能的播放器。但当几百张图片截取完后对其按照运行代码格式改名比较困难,我想到的是用 Matlab 写一个程序批量改名,还有另一个方法是改代码中的文件名,最后我采取的是第一个方法。然后设置好两个 txt 文件就成功演示出像事例视频中的一样。但后来发现了一个问题,就是当原物体被遮挡时,会自动识别到遮挡物,这是一个比较有趣的地方,也是算法中的一个存在的一个问题。
这次的项目经历有一个很重要的地方便是团队合作。一个人的能力和精力是有限的,在思考问题时很容易陷入一个局部。而跟组员讨论会容易避免片面,并且可以从不同角度去思考和切入问题。结合各个方面,得出一个比较优的解决方案。我感到在所处小组内就经常是这个样子。在一个团队里面对自身很大的帮助之一就是可以向不同专业的组员学习对于自身来说新的知识,例如我所在的小组里面有位同学是电子专业的。在老师布置的一项作业中,我所在小组选择了一个包含有滤波方面知识的题目,而我在滤波方面的认识较为浅薄,在网络上查阅资料的时候又遇到许多疑问,便只好向他学习。这位同学没有跟我说太多的定义方面的专业语言,而是举出一些实例然后加以一些公式来向我讲解。虽然这些知识在书面看起来比较枯燥,因为好多都需要数学基础和严密的数学推导,但结合到生活中的一些例子,感觉使用起来特别有趣。同时,在和同学讨论到涉及编程时,由于是计算机专业,平时涉及编程比较多,也会尽量使语言表达清楚,表义清晰去说出自己的想法。面对这个项目所涉及的任务,对于一个人来说会很巨大,很容易放弃懈怠或顾此失彼。在一个团队中,由组长的领导下,各组员按照各项相对较少的任务去完成,然后最终拼接起来,效率会比较高,并且如果出现某些环节有所落后,而另外一些进展较快的同学可以去帮忙,这个自身很有体会,因为很多东西我一直在学习。这有点像把全局分割,各局部处理好,那全局便会像预期所想,类似于问题模块化。
在最后上台展示的时候,一开始不太自信在大家面前。但由于是讲 DSST 的演示,而我又刚好是组内负责这个方面,所以组长安排我去代表小组展示。一开始由组长说明了一些基本情况,然后我来解释。当开始解释的时候,一直想的是表达逻辑清晰,不能有含糊的地方。当老师向我提问的时候,我尽量把我自己找到的一个解决方法步骤都一一表达清楚。展示结束后,感觉松了一口气,总算没有表达的太不如人意。
在这次的项目过程中,我学习到了很多东西,但感觉知识开了个头,以后还有很长的一段路在等着我去探索。同时也学到了很多非专业也很重要的东西,那就是和别人合作以及向他人提问学习。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。