为了使光电传感器能够在程序中被识别,因而在Mototr and Sensor Setup中A/D Sensors选项单的S1处,即NXT控制器输入端口1中设置所要使用的光电传感器,同时,要吧给该传感器取名为ligtSensor。如此一来,在以后的程序编写中只须引用Sensor Value(lightSensor)命令便可实现对该光电传感器的访问,当完成了所有的这些设置后,软件自动地会在程序的开头处生成一段与用户所定义传感器相对应的C语言代码。
在完成了前面机器人感知部分的设计之后,接下来的工作就是要能够给机器人配备一个输出执行机构,即电机马达,为了能控制机器人前进和后退,我们就需要编写指令来开户我们事先所设定的马达,在RobotC中我们可以使用Motor[]指令来完成这一操作。
Motor[mororA]=75;
Motor[mororB]=0;
在Motor指令的括号中,参数motorA代表设置在NXT控制器A输出端口的马达,motoB代表B输出端口的马达。马达的功率级别用-100到100来表示。
步骤3:编写控制语句并完成程序
在编写程序前,我们不妨先考虑一下,完成这么一个任务需要让机器人进行哪些“思考”。在黑线跟踪这一任务中,机器人所要“思考”的内容很简单,即机器人的传感器检测到黑线之后使之远离黑线,当传感器脱离黑线的范围时,设法让机器人靠近黑线,这样一来,在机器人高速的运行中,就可以顺利地跟随黑线实现前行。与Robolab编程中的分支条件相似,在这里采用IF语句让机器人进行判断,而IF语句判断的条件则是光电传感器光值变化。我们不妨可以先设定一个门槛阀值,当从光电传感器中探得的光值小于这个指定值时,可以认为机器人探测到了黑线,则差速控制马达使机器人向线外偏移,当该值大于指定值时,则认为机器人离开了黑线,这时与前者相反,差速控制马达使用机器人向黑线靠拢,编写这一程序,实现判断功能,具体程序代码如下:
我们都知道,计算机之所以有用武之地,一个重要的方面是因为其高速的运算能力。同样,在我们NXT控制器中的微电脑芯片也具有较高的运算速度,对于上面编写的判断语句,机器人只需要几个毫秒的时间便可以执行完成。因此,为了能够让机器人持续地将这些语句执行下去,就必须在其外面增加一条循环语句使其能反复地被执行。在RobotC中,我们可以采用While()语句来完成这一功能,值得注意的是,While()的执行也是有一定条件的,当括号内的条件成立时,便进行循环,当该条件为假时,则程序跳过While后的小括号中填入true使其条件为真,则程序就能得以永久地在While的循环控制中运行。完整的程序代码如下:
步骤4:机器人的调试与运行
完成上述步骤之后,最后就要编译并且下载这个程序到NXT的控制器中,并且调试和运行程序。
在Robot菜单下选择Compile and Download Program 选项,或按F5直接下载程序。
下载了成功后,在NXT控制器的My Files 菜单的Software Files子菜单中可以找到以该程序名称命名的程序文件,通过NXT控制器来启动这个程序。同样,我们也可以通过前面提到的Debugger调试窗口中的Start 按钮来遥控机器人程序的运行与停止,作为机器人制作中必不可缺的调试步骤,我们也能利用RobotC中提供的众多调试工具来对NXT机器人进行程序调试。例如,可以通过Robot菜单的NXT Brick子菜单中的Poll Brick选项来实时采集当前传感器的读数,从而选择一个较为合适的数值来定义黑线的判断阀值。
另外,联机调试NXT机器人时,在代码编辑窗口中能够同步看到用绿色指示条提示的语句,该语句就是当前系统所正在执行的程序语句,这一点对我们进一步研究机器人的运行情况提供了极大的便利,这也是RobotC软件的优点所在。
本站内容未经许可,禁止任何网站及个人进行转载。