个人信息
李子岳 经71 2017012781
Day 1
•报名初期
选择报名机器人的挑战单元还是做了充分的思想准备的。首先,是觉得能多学点知识,对于没有明确发展方向的我来说,也很有很大的帮助;其次,我认为自己的动手能力一直没有得到很好的锻炼,这是因为自己的理学方面比工学方面更加突出,所以也想看一下自己在工科方面有没有发展的可能;最后,据说只要能完成这些项目,课程的成绩就有A-,所以这也算是证明自己是否有能力的一次机会。还有,可以和更多优秀的同学一起交流,这也是很宝贵的经历。
•体验开始
出乎我意料的是,我们拿到的是一个很完整的机器人,并不是一堆的零部件,所以我不用从最底层做起了。当然老师上课的演示和自己的操作也是很好玩的。但是,不知怎的,对我来说,那种新奇的感觉过一会就消散了。我也没想到的是,我们对机器人的编程是建立在许多已经做好的工作之上的,比如说,我们拿到的有一些现成的src文件等,我们第一节课也不用从最原始的代码开始,这也稍微舒缓了一些我的紧张情绪。
•想法畅谈
起初,觉得这个乐聚机器人16个舵机已经很高级了,但是随着编程与操作的进行,我产生了一种对人体敬佩的心理。人的身体存在着更多类似的“舵机”,而且它们更加灵活。
我希望随着体验的进行,自己能够更好的操控这个机器人。因为,每次听到机器人开机的声音“主人,你好”时,我都有种说不出的感觉,或许那是人类强大的一种表现,人类制造出了这样的产品,而它就在为我们服务罢了。
Day 2
•新的体验
今天主要是自己对一些动作的编写,例如“金鸡独立”,“俯卧撑”等,我认为这就是写像昨天那样的底层的src文件,但这个困难性是随着操作的进行而进一步显现出来的。我喜欢理论层面的一些东西,那么就先从理论方面简单分析一下。之前我选择挑战单元的时候,有特意问过徐老师:这个单元除了编程,是否还需要其他必要的基础,徐老师说主要就是编程,那时候的我并不会想到,现在的我所编写的内容,并不是我所想象中的那样。第一,编写“动作”给了我们很大的自由度,当然这个自由度有好有坏,好处显而易见,这给了我们更多操作的可能性,或许能发现更多的精彩。但是,稍不小心,就会损坏机器人,这也是我始料未及的;当然,关键帧寻找的不易操作性等等一系列的问题也会随之产生。第二,说是主要靠编程,我觉得还有从小时候积累的对机械部件的理解与感知能力以及对于美学动作或者建筑结构的认知与把控能力。因为,我们要编写机器人动作,其实就是写出一些关键帧,而这些关键帧的寻找并不属于狭义上的编程的范畴。老师说是对重心的认识,我觉得并没有这么简单。要在老师所说的“关键帧越少越好”的前提下完成任务,这在某种程度上来说需要尝试,可能还有点运气的成分。但本质上应该是一个数学建模的问题,我也相信这个过程完全可以建构数学模型,或者可以通过虚拟的软件来完成(当然这对于3D的操控的理论难度来说,我想不是几个参数就能解决的问题)。无非就是从一帧过渡到另一帧时的几个“约束条件”——不能倒(当然并不包括做俯卧撑等的一些动作)、在运动过程中的重心始终在受力面之内、运动过程中各部件不能发生冲突(甚至对于SPEED函数都应该有一定的认识)等,以此来达到在自动生成最佳不冲突变换路径的过程之中添加关键帧以改变最终呈现效果的作用。
•糟糕的回忆
不幸的事情还是发生了,这也使我不自觉的回忆起小时候妈妈说我做事很粗糙的时候,我甚至在想我是否能继续从事相关的工作。但是,我做人的原则就是,不惧怕任何问题,要分析问题解决问题。我的问题就是,在操作机器人的过程中,连接机器人与电脑的USB线接口被强行弯折而导致USB接口断裂。和上面分析的类似,我没有很好的预测到关键帧的动作及其变换过程对于连接线的影响。刚开始弄坏机器人我是十分惊恐的,也很不好意思,但是我应该勇敢的面对这件事情。那时候的我只有一个念头:我以后一定要把它改进成使用蓝牙或者其他连接机器人与电脑的装置,而不是USB线。
•问题
1. 为什么关键帧越少越好?这让我不得不联想到插值多项式的知识,一般多项式的最高次数就是2、3,而不会到很高的次数10等等,我想这里也是一个道理。在插值多项式中是使用了类似最小二乘的算法,但是机器人的关键帧寻找呢?我或许只能使用工科思维,手动调整系数操作出来了。
2. SPEED函数的理解对机器人动作的编写会有影响吗?是否可以同时控制不同舵机的速度?现在来说,只能规定一个动作的SPEED,而老师说的这个SPEED对应的是最慢的舵机转动完成的时间。那么,是否可以使用函数控制每个舵机?还是说没有这个必要,因为这会增加关键帧的个数与程序的复杂度?
3. 在机器人大赛中如何利用红外装置走迷宫?我想,这个可能要模仿人的动作,需要转头看看,才能获取信息(盲人另说)。机器人的距离探测在胸前,而不在头上,所以需要机器人转身才能达到这一目的。但是,限于舵机的条件,机器人转身时脚不得不动,这就导致较大的偏差。另外,即使编写了让机器人获取前方的所有“点”的距离信息并经过调整得到一个数值,也需要数学建模等等一系列的操作,这个“简化版”就完不成任务了。
我认为,要想让机器人完成任务,一定是一个交互操作的过程,需要不断从传感器获取信息,然后加工处理。但是传感器并不在教学范围之内,我们也并没有做一些这种高级的操作,还是有一些可惜的。当然,仅仅依靠FOR循环也没有IF函数等等要做到这些确实几乎是不可能的。
•总结与期待
我希望今后都不再出现类似今天把机器人搞坏的事情,我会更加小心。虽然可能这会减慢我的编程速度,但是我想这也是安全操作所必须的。最后还是得心疼机器人一会。另外,我希望今天的事情不要打击我的信心,而我能够为机器人编舞和足球比赛做的更好。
Day 3
自编舞蹈
今天的任务是编写一个舞蹈,要求有BGM。
•个人作业
首先,我尝试着自己编写动作,因为直接看已有的src文件、在上面加工感觉会被其他同学瞧不起,但事实上后来发现也有同学是参考src文件的,其实,这大大简化了任务的难度,只要在每个src的关键帧DELAY,然后加入动作,或者几个简单的FOR&ENDFOR语句就可以形成舞蹈了。我感觉这样会被老师瞧不起,所以我尽量增加更多自己的东西。例如,我先看src文件的动作效果,然后在根据动作的效果来思考这段动作适合加在歌曲的哪个地方,并尝试想如果自己跳舞会增加哪些创意。老师拷在U盘里的有现成的一些音乐,我选择了See You Again,因为自己很喜欢,也认为效果会很不错。
•扬长避短
由于我们还要进行足球比赛,但是遥控器界面并没有很好的转向程序,所以我有点担心。但是看到我的队员们都编写了含有转向的舞蹈,我非常开心,虽然不知道他们是怎样做到的,但是至少这说明这并不是做不到的。我特意放慢速度观看了一位同学的舞蹈,在蹲下的时候还可以边转向边站立,我是很佩服的,但是我也相信自己能写出来。我对清华精神的理解是:“清华人不是靠膜出来的,而是靠做出来的。”我选择通过不停的尝试,做出更好的作品。
我的舞蹈的不足之处也是显然的。我仔细观看了其他同学的编舞。A同学的动作更加活泼,B同学通过踏步使得动作更加有韵律,C同学的横向位移和转向则表现很突出,D同学对倒地动作的把控更好,E同学的腿部移动非常丰富;以上所有同学动作都有个特点,就是机器人脚上都有转向或向前的位移,但我的动作却没有(只有一个小碎步转向),这是我需要努力做到的。