更改

饶淙元

添加3,678字节2018年9月7日 (五) 01:27
/* Day 4 */
=====Day 4=====
 
<font size='1' color='brown'>loading......</font>
<font face = "kaiti">
<!--此处为日后写正文的位置--今天我们先给了一小段时间编写踢球的动作,然后讲解了教育版的用法以及传感器的使用。 我们组内进行分工后,我负责的是试图写出一个右前快走和左前快走,希望机器人在这个状态下可以走出一个近似的圆形轨迹,以求在球场上达到很好的拐弯效果。为了做出这个效果,我在原有的向前快走的基础上进行调试,主要调整行走时的脚步动作来达到收脚后朝向改变的效果。仔细观察自带的拐弯动作,可以发现这些拐弯主要还是出脚时控制好脚的方向,真正拐弯发生在最后收脚的时候。循着这个思路,我试图先写出一个左前行进的动作,我将快走时机器人的脚踝处舵机和大腿处舵机进行细致调整。 这个过程并不容易,主要是自带的快走动作如果逐帧调试,会发现这些动作并不都是平衡动作,换言之我在调试动作库里的快走时机器人会失去重心摔倒。但是可以注意到,库里的动作调节速度是很频繁的,并且某些动作试图把速度调到100,通过速度来弥补临时的重心不稳。这样做对于调试来说负担很大,但是在行进时看上去并没有什么问题。经过无数次调节,我终于调好了一个看上去没有问题的左前快走,并且在地面上进行测试,然后尴尬的一幕发生了:下达左前快走指令后,机器人没有像我想象的那样向左前画个逆时针方向的圆,而是向右前画了个顺时针的圆!并且在一次循环后机器人的偏转角度基本是理想的45°,所以我顺势把这个原计划的左前快走改名为右前快走。在做完这个事情后,我试图把程序中的A和B反转、C和D反转使得舵机角度左右对称过来,希望通过这样的方式直接完成左前快走,然而果然如同第一节课上老师所说那样,不同舵机零点不同,动作移植可能需要全部重新调参:右前快走的参数转移到左前快走后,机器人不但直行不拐弯,而且收脚时直接摔了一跤。 很快到了讲教育版软件的时候,和我第一天的印象一样,这是一个框图控制的程序,但是从授课内容中,我知道了更多之前没有注意到的细节,比如遥控器的调用方式等。操作方面我们完成的主要工作是对某几个传感器的使用,包括最初用地磁传感器来完成机器人定向移动、用火焰传感器和风扇完成自动灭火的动作。在这个过程中,我注意到这个程序所暴露出的一个不足之处:判断句语法似乎有所缺陷。比如之前就注意到的FOR只能给出具体数字,但今天看见的更麻烦的问题是IF的判断不能在判断符号右边写表达式。比如以下就是软件支持的和不支持的语法例子: //以下为支持语法 INT A A = 3 IF A >3 THEN //条件体 ENDIF  //以下为不支持语法 INT A A = 3 INT B B = 2 IF A > 3 + B THEN //条件体 ENDIF 好消息是我发现教育版是可以不理会框图,直接对代码框进行编辑的!这就意味着教育版几乎可以当作专业版使用——除了不支持GOTO语句。这样做的后果是代码将无法通过软件的文件保存,但是可以自己另行写文档进行保存,每次烧程序时再将代码复制到代码框里,这样一来几乎就是C一般的码代码了,并且和专业版一样是支持函数式编程的,用JUMP可以调用不同的函数。这个软件不支持定义数组,并且变量只支持整型,但是对这个机器人的编程来说完全足够了。我想,通过灵活的程序编写,在最终的足球赛中我们可能能在软件层面取得一定的优势。
</font>
----
 
=====Day 5=====
20
个编辑