為了使光電傳感器能夠在程序中被識別,因而在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軟件的優點所在。
本站內容未經許可,禁止任何網站及個人進行轉載。