VEX遥控器主要为机器人提供实时的操作控制。遥控器有2个2轴模拟摇杆、4个触发按钮和2个4键方向盘,以及内置一个加速度计,可以探测遥控器前后左右的倾斜状态。
遥控器不断地将信号发送到抓手机器人上,即可控制抓手机器人的运动。下面将给出用2,3通道的摇杆控制机器人运动的程序示例,如下图所示。
(1)while(1==1)表示循环的条件是1等于1,由于1永远等于1,所以该条件永远满足,这相当于一个无限循环。它有一些其他等价写法,如while(1)、while(true)。
(2)vexRT[Ch数字]是读取摇杆数值的命令。单个摇杆有两个运动方向,即x轴和y轴。不论是在x轴还是y轴,利用该命令读取到的数值范围都是-127~+127,这与电动机功率的最大数值与最小数值相对应。
有时候为了降低摇杆的灵敏度,会将读取到的摇杆数值做除以2的处理,该程序如下图所示。
这里的“/”表示除的意思,关于其他RobotC的编程语言数学运算符可以查阅知识拓展部分。
VEX控制器内置了4个计时器,在程序中分别用T1、T2、T3、T4来表示。计时器可以在跟踪时间的同时运行其他代码。在控制电动机运动的时候已经使用过它,之前程序中的wait1Msec命令就是给了机器人运动一定的时间限制。这里将计时器作为一只秒表来使用,即用它来限制遥控机器人的时间长度。下图是参考代码。
(1)clearTimer(T1)用于对计时器T1清零,这个过程相当于对秒表进行重置。
(2)timer1(T1)是读取计时器数值的命令。
这个程序将遥控程序控制在90s内,超过90s,机器人将停止运动。在遥控器上除了摇杆,还有一些按键,这些按键相当于一个个开关,当按键被按下或被释放时,遥控器将向机器人发送信号。下面通过一个程序示例来学习对按键的编程控制,如下图所示。(www.daowen.com)
这个程序是在之前的遥控程序上添加了一个while空循环,循环的条件是松开5D这个按键。所以当按下5D这个按键的时候,将结束这个空循环,开始执行下面的程序。其作用相当于一个触发开关。
(1)vexRT[Btn按键编号]用于读取遥控器按键的当前状态值(没有按为低电平0,按下去为高电平1)。
(2)按键编号的规则是通道数加上按键位置的英文单词首字母。如上述程序中的5D指的是通道5中的下(Down)的按键。其他的按键表示类似,如上(Up)、左(Left)、右(Right)。
现在编写一个完整的遥控机器人行走和机械臂抓取东西,以及机械爪开合的程序。示例程序如下图所示。
该程序使用了一种新的if-else语法结构,即在if-else语法下的else语句里又嵌套了一个if-else语句。相当于先做一次判断,看看该通道的一个按键是否被按下,如果是则让电动机正转,如果不是则去做另外一次判断,看看该通道的另外一个按键是否被按下,如果是则让电动机反转,如果也不是,则相当于两个按键都没有被按下,此时应让电动机停止转动。
如果没有参考这个编程示例,在编写控制机械臂和机械爪的程序时,常常会编写出如下图所示的Bug(漏洞)程序。
这个程序的问题在于,两个else情况会出现干扰。因为按住6U这个按键时希望机械爪合上,而下面的if-else语句中的else里面的电动机控制语句则希望电动机停止运动,所以这两种情况互相干扰,导致机械爪不动。这种程序Bug是在编程中要尽力避免的。
通过上面的学习,就可以很好地遥控抓手机器人运动并抓取东西了。为了检验我们的程序,已搭建抓手机器人的读者可以下载去检验一下自己的程序,没有搭建抓手机器人的读者可以编写一些其他程序到虚拟世界中练习一下。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。