花了6个月时间完成本科优秀毕业设计,我做了什么?

在这里插入图片描述

1 前言

从去年12月开题到今年6月结束,整整半年时间都在处理毕业设计的项目。好在取得了一个比较好的结果,遗憾的是没能推荐为校级优秀。本文记录一下毕业设计和答辩完成的过程。考虑到论文的保密性,隐去部分技术细节,但不影响理解。

在这里插入图片描述

2 选题

我的毕业设计选题是《某环境下多机协同系统设计》,为什么选择这个题目呢?我出于以下考虑:

  • 可以锻炼全技术栈能力
    系统涉及底层硬件控制,也是我所在的控制系的老本行;算法设计,主要包含任务调度和路径规划算法;软件设计,包含可视化界面(Web)、控制服务器、算法工程化等内容。总之,这是一个包含前后端、软硬件的综合性项目,既然本科阶段做不到深入,那就把面铺开
  • 涉及大量通识技术
    什么叫通识技术?就是那些课上一般不教(默认会),且将来一定用得到的技术。举例而言,ROS对于从事机器人控制、自动驾驶等方向的来说就是一种通识技术。既然早晚都得会,不如用毕业设计的时间来学。
  • 多机协同是复杂任务处理的趋势
    随着智能化水平的提高,越来越多的复杂任务都期望实现自动化,大多数情况下,这类复杂任务交付多机协作的效率会远远超过单机,所以了解和学习多机协作有必要性。
  • 其他题目没啥意思

因为疫情影响没能部署到实体,最后就在下图所示的Gazebo环境里实现了一下多机协同,文末放演示动图。

在这里插入图片描述

3 技术选型

  • 硬件
    工业界用的比较多的是AGV——一种轮式机器人,所以毕设里我就采用通用轮式移动机器人,建立运动学模型即可。机器人上包含激光雷达、RGB摄像头、里程计等传感器,这部分内容我都写在《ROS从入门到精通》
  • 控制服务器
    为了更好协调多个机器人,设计了一个主控平台,也是系统的后端,负责调用智能算法、发布任务包、作为中继协调底层和前端的数据流动等。本设计采用Flask做服务端,用蓝图管理API。其实做服务器还是得用java,flask显得比较轻量
    在这里插入图片描述
  • GUI
    用VUE+ElementUI设计前端Web界面,因为重点不在前端,所以简单设计了登录注册、机器人管理、地图预览、用户管理这些最基本的功能
  • 插件
    选择PostgreSQL作为数据库、ROS3d.js实现前端三维渲染、ROS-Bridge作为前端和ROS服务器的通信插件
  • 算法
    改善了传统A*路径规划算法并增加局部协作;改善了传统任务调度算法。

4 研究过程

以我目前的眼界来看待研究过程:

  1. 查阅文献,了解某个问题在领域内的主流解决方案
  2. 复现别人的算法,控制领域主要用Matlab
  3. 发现别人算法的不足,改进它,设计自己的算法(哪怕是很小的改进)
  4. 比较算法的性能,并进行多次测试
  5. 确认算法设计无误后,进行工程化,简单说就是将Matlab脚本转换为C++代码
  6. 将多个工程化代码集成为若干个模块
  7. 将若干个模块集成为一个系统

举个例子,我毕设中用到了路径规划,最简单的算法就是A*算法,它部署到ROS上是下面这个样子,紫色的区域是搜索空间

在这里插入图片描述
改进后算法的如下所示,简单说就是计算出相同最优路径的前提下,改进后算法搜索空间远远小于传统A*算法,改善了算法效率。这个改进就是“查阅+复现+对比”的结果,大概仿真了5种算法进行优势互补。

在这里插入图片描述
Mark一下,等研究生毕业回来看看这套方法论有没有需要完善的地方。

5 毕业答辩

经过指导老师和评阅老师同意后,可以进行毕业答辩。在答辩前对着PPT练了二十遍左右,练的时候不是单纯背稿,而是看看阐述过程中有没什么Bug,我大概列举了18个可能会问的问题,虽然最后一个也没问到,但是思考的过程会改善答辩的效果。

真正答辩的时候,对于本科生来讲,只要论文是自己写的、答辩老师和指导老师没仇,一般不会为难你,问的也都是论文本身的问题,可能是技术问题,也可能是那种主观性很强的问题,结合我所听到的,列举一些主流问题在下面,有需要可以收藏:

  • 为什么选择这个题目? / 选题的意义是什么?
  • 你的方案和现有方案比,有什么优势?
  • 论文的创新点是什么?
  • 设计过程中遇到最大的难点是什么?(这个问题要注意,老师会顺着你说的难点考察你的解决过程,务必仔细思考)
  • 算法为什么这么设计?
  • 原理性问题
  • 做出的假设是否合理?对实际应用有什么要求?
  • 为什么不考虑xxx的影响?
  • 你的主要工作是什么?

对论文写作有问题的同学可以参考我的这两篇文章

6 效果展示

最后是结果的简单展示,欢迎从事相关领域的同行来交流~

前端展示:

在这里插入图片描述
标注好任务点后点击发布任务,任务包就会传到后端进行调度,然后分发到底层机器人。

Matlab仿真:

在这里插入图片描述
Gazebo仿真(动图太大上传不上来,放一张图片):

在这里插入图片描述

学习与项目交流请加微信 yhd13950307060


🔥 更多精彩专栏


👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年2月25日 上午11:56
下一篇 2023年2月25日 上午11:57

相关推荐