最近好久没写东西了。这个是选修“机器人创新设计与实践”时候制作机器人的感想。
我们组在最后这次大实验中制作了一个自动关机机器人。这次实验是自己想题目,自己制作。这可难为了一向喜欢接受“任务”的我们。我们小组就选题迅速展开了讨论,作为组长,我深知只有一开始对任务有着深刻的讨论和理解,同时预估所有可能遇到的困难,并且时刻注意项目的进度,这样我们才有可能成功。正因为如此,我们小组讨论了很长时间,很多创意在讨论中被提出。最后我们选择了自动关机机器人,首先我认为制作一个可以做实际事情的机器人将会非常具有挑战性,而且相对来说在思考问题的时候我们就必须将实际同理论结合起来,而如果只是制作一个模型机器人,我认为不免显得过于理想化,而且没有操纵它实际完成任务时的成就感——很多时候,正是成就感促使我们不断完善我们的作品。再者,我们是测控专业的学生,在机构设计方面不算是强项,我们的强项在检测和控制的编程方面。所以一个通过复杂的程序来控制的能够检测周围环境的自动关机机器人自然是最好的选择。
小组成员在经历了上次实验后,在实际制作时已经能够很好的配合。因为是自己选题,自己制作,没有任务指导书可供参考,所以我们的各个部件机构都是亲自设计完成。好在经过了上次的实验,我们对各个部件的作用已经非常熟悉,对于部件的组装也显得胸有成竹。小组成员经历了讨论制作,再讨论,再优化的过程。在我们的目标变得模糊时,我作为组长主动将自己的想法和小组成员进行讨论与沟通,鼓励她们将任务细化,并且实施逐个击破的策略。因此,在整个制作过程中,每个小组成员都能积极的提出各种解决问题的方案,使得我们的整个制作过程显得很平稳。
在制作机器人的时候,我们组的步骤是先制作各个执行机构,之后再将执行机构放到智能机器人小车的上面。在执行机构制作的过程中,我们组在制作过程中曾犯了一个严重的错误——没有考虑各个机构的结合方法,我们在有了统一的想法之后便开始分别制作各个机构,而到最后的时候发现每个机构组装在一起的时候会出现很多没有想到的问题。比如原来运行很正常的丝杠进给机构在经过组装以后竟然不能正常运行了,比如有些机构突出的部分和其他机构碰到了一起,没法放到一起…..等等,好在大家意识到问题后迅速进行沟通讨论,之后再次修改,终于我们组的整体上部执行机构最终组合在了一起。
机构制作完成后我们组就要面临最困难的编程阶段,相对来说,我们制作的机器人的机构的设计并不复杂。因为关机只是涉及到很少的动作,我们制作的整个机构也只有一个运动是用来关机的,大多数运动都是编程用来辅助进行环境检测的。如果说制作机构的过程显得一帆风顺,那么后面编程便似噩梦一样。因为我们机器人要实际去关机,所以我们不能像其他组的模型那样只进行又炫又酷的“表演”,我们必须要考虑非常实际的问题——如何找到电源开关,如何确保机器人走到电源开关前,如果出现了偏差如何校正,如何确保机器人的手放到了电源开关上,如何走到下一台电脑上,怎么确定电脑确实已经彻底关上了…等等等等,这些非常现实的问题想乌云一样笼罩在了我们小组的头上。那段时候,我们组早上第一个到实验室调试小车更改程序参数,晚上回到宿舍我还要在网上搜索别人的JC程序代码,学习别人的编程思想,小组的其他成员也是脑子里想着各种解决问题的“点子”入睡的。为了更好的分工合作,节省时间,我们小组又重新部署了各自的任务。首先是擅于C编程的我主要负责机器人的核心编程,其他组员负责用流程图编写上部机构执行的一套程序(编写完后我会将转换的JC代码加入到我们工程的总体程序文件当中),我们通过分工,避免了重复劳动,同时因为我来负责最终的代码安排,使得我们在编程时没有出现程序各个版本不匹配的问题。同时模块化的编程方式也使得我们可以同时在两台电脑上对上部机构,下部的机器人小车进行编程而不会引起冲突。在编程的过程中,我采用了数组结构,对各种光敏数据进行存储,使得我们的程序的可读性良好,可扩展性很强,避免了用流程图进行硬编码产生的许多问题。
另外值得一提的是程序编写完后的调试过程。一到实际调试的时候,我才发现原来电脑程序应用到实际的时候需要解决的问题比我预想的要多的多。比如最简单让机器人小车走直线,似乎一个函数drive()就能搞定,但实际上那样走出来的根本就不是直线。小车的各个轮子和地面之间会产生偏角,当行驶的时间变长后,初始的微小偏差便会被无限放大,最后变为严重的错误。于是我思考了很多的解决方法,比如引入PID算法重写drive()函数。同时我们为了测试追光程序,不得不在黑暗中用手机照明进行反复尝试。每一次机器人错误的追光都得要微调程序。终于经历了一次又一次精益求精的调试过程之后,我们组的机器人终于可以较为准确的追逐光亮,但是好景不长,我们第二天又发现,当将沉重的进给机构放到机器人小车上面后,原有的程序再一次“失灵”了——系统又引入了新的误差,原有的参数不能再继续使用了。在这个时候,我真的感到很失落,不过很快我就想到了解决的办法——让一组成员去修改并完善机器人机构和小车之间的固定和重心落点的问题,目标是让小车能够像之前一天那样能够正常的前进转弯,然后我再同时调整程序,争取能使程序代码能适应“模糊”控制。结果是:我写的“模糊”控制程序失败了,但是小组成员通过对机构的调整以及我后来拆除了连接件中的一些冗余的部分后,惊奇的发现机器人整体又变得非常灵敏了。而这个时候离最后展示的时间已经不远了,于是我迅速将其他部分的程序写好,同时为了防止演示时出现意外情况而加入了人工的微调部分,并开始了最终的整体调试。之后,一切顺利。
当我听到老师说“你们这一组通过了”的时候,才终于松了一口气,几天的奋战终于划上了一个圆满的句号。
最后,也许我们组制作的机器人并不是非常美观,也许它还不能精确地去找到最终的关机按钮,也许….但这些都不重要了,这几天的奋斗,一个一个问题的解决,小组成员之间相互信任,相互理解,这些都将成为我未来生活中一笔宝贵的财富。