目录

  • 1 前言
  • 2 选题
  • 3 技术选型
  • 4 研究过程
  • 5 毕业答辩
  • 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仿真(动图太大上传不上来,放一张图片):

抽奖送书

本期图书推荐:《人机物融合群智计算》

【书籍简介】

  • 今天的信息世界已经与一人一机组成的、分工明确的人机共生系统不同,而是一个多人、多机、多物组成的动态开放的网络社会,即物理世界、信息世界、人类社会组成的三元世界。人工智能与物联网、边缘计算和数字孪生等技术的快速发展及深度融合,可为智慧城市、智慧社区、智能制造等领域提供高度集成的智慧空间环境,人、机、物等要素在其中彼此交互与激发,将构建更加组织灵活、行为自适、自主演化的空间。
  • 《人机物融合群智计算》作为全球首本人机物融合著作,既可以为物联网、人工智能、工业互联网、智慧城市、智能制造等领域的科研人员和IT从业者提供创新的发展视角及相关理论、方法与技术支撑,也可以作为高年级本科生或研究生的参考教材。

【抽奖方式】

  1. 关注博主,点赞收藏文章,并做出有效评论
  2. 根据评论记录随机抽取2位用户赠送实体图书
  3. 截止日期:7.3日晚8点,届时通过blink公布获奖信息,请中奖用户及时私信

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


更多精彩专栏

  • 《ROS从入门到精通》
  • 《机器人原理与技术》
  • 《机器学习强基计划》
  • 《计算机视觉教程》

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