智能機(jī)器人學(xué)習(xí)教程_第1頁
智能機(jī)器人學(xué)習(xí)教程_第2頁
智能機(jī)器人學(xué)習(xí)教程_第3頁
智能機(jī)器人學(xué)習(xí)教程_第4頁
智能機(jī)器人學(xué)習(xí)教程_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

智能機(jī)器人?學(xué)習(xí)教程第1章預(yù)備知識虛擬機(jī)器人?的結(jié)構(gòu)與功?能身體結(jié)構(gòu)在VJC1?.5中,有五種型號?的機(jī)器人:AS-M、AS-MII、AS-UII、AS-InfoX?和AS-InfoM?。圖1-1是虛擬機(jī)?器人的外形?。虛擬機(jī)器人?的身體結(jié)構(gòu)?跟真實(shí)的能?力風(fēng)暴智能?機(jī)器人是相?似的。本書中的范?例采用的機(jī)?器人型號均?為AS-MⅡ。設(shè)置機(jī)器人?型號的方法?參見附錄B?。ASAS-MII(AS-M/AS-UII)AS-AS-InfoX?AS-InfoM?虛擬機(jī)器人?外形感覺器官能力風(fēng)暴智?能機(jī)器人的?感覺功能,是由機(jī)器人?的傳感器實(shí)?現(xiàn)的。能力風(fēng)暴機(jī)?器人身上安?裝的傳感器?有以下幾種?:紅外傳感器?紅外傳感器?由紅外發(fā)射?器和紅外接?收器兩部分?組成。一旦程序中?發(fā)出“紅外測障”的指令,紅外發(fā)射器?就開始發(fā)射?紅外線。紅外線遇到?障礙物會反?射回來,被紅外接收?器接收,從而機(jī)器人?就能判斷出?障礙物所在?的方位。虛擬機(jī)器人?能夠檢測左?、右、前三個方向?的障礙物,跟真實(shí)的能?力風(fēng)暴智能?機(jī)器人基本?相同。發(fā)射紅外線?的虛擬機(jī)器?人如圖1-2所示。機(jī)器人發(fā)射?紅外線示意?圖光敏傳感器?光敏傳感器?能夠檢測光?線的強(qiáng)度,檢測到的值?為0~255之間?的整數(shù)。光線越亮,檢測到的數(shù)?值越?。还饩€越暗,檢測到的數(shù)?值越大。此項(xiàng)功能跟?真實(shí)的能力?風(fēng)暴智能機(jī)?器人是一樣?的碰撞傳感器?虛擬機(jī)器人?的碰撞傳感?器能夠檢測?左、右、前、后四個方向?的碰撞,型號為AS?-InfoX?的機(jī)器人只?能檢測前、左、右三個方向?的碰撞。如前所述,虛擬機(jī)器人?共分五種,它們的的區(qū)?別主要就體?現(xiàn)在碰撞檢?測功能上。所以讀者在?打開程序時?,無論是例程?,還是自己編?寫保存的程?序,如果涉及到?“碰撞檢測”,必須先設(shè)置?相應(yīng)的機(jī)器?人型號(參見附錄B?),然后再打開?程序、仿真運(yùn)行。例如:打開例程“自由行走 (M).flw”時,由于名稱后?面帶有M,故須先將機(jī)?器人型號設(shè)?置為AS-M,然后再打開?程序文件、仿真運(yùn)行。打開例程“自由行走 (Info).flw”時,最好先將機(jī)?器人型號設(shè)?置為AS-InfoM?,然后再打開?程序文件、仿真運(yùn)行。在碰撞檢測?功能方面,虛擬機(jī)器人?跟真實(shí)的能?力風(fēng)暴智能?機(jī)器人有較?大差別(參見附錄C?、D)。聲音傳感器?聲音傳感器?能夠檢測聲?強(qiáng)大小,檢測到的值?為0~255之間?的整數(shù)。數(shù)值越小,聲音越低;數(shù)值越大,聲音越響。此項(xiàng)功能跟?真實(shí)的能力?風(fēng)暴智能機(jī)?器人是一樣?的。地面灰度傳?感器地面灰度傳?感器能夠檢?測地面的灰?度,檢測到的值?為0~255之間?的整數(shù)。地面顏色越?深,灰度值越大?;地面顏色越?淺,灰度值越小?。此項(xiàng)功能跟?真實(shí)的能力?風(fēng)暴智能機(jī)?器人基本相?同。編程語言能力風(fēng)暴智?能機(jī)器人的?編程語言是?VJC1.5,由機(jī)器人C?語言(簡稱JC)和流程圖編?程語言兩部?分組成。讀者使用仿?真版的時候?,可以用流程?圖編程。在用流程圖?編程的同時?,VJC1.5自動生成?JC代碼,便于讀者觀?察、解釋或修改?程序,參見圖1-3。在圖1-3中,左邊是流程?圖,右邊是JC?代碼。在流程圖編?輯界面中,點(diǎn)擊工具欄?上的“JC代碼”快捷按鈕,即可看到當(dāng)?前程序的J?C代碼。機(jī)器人走正?方形的VJ?C程序

VJC1.5仿真版能?做什么為機(jī)器人編?寫程序在VJC1?.5仿真版中?,可以用流程?圖編寫機(jī)器?人程序,同時自動生?成JC代碼?。但不能直接?用JC代碼?為機(jī)器人編?寫程序。在仿真版中?編寫的程序?對真實(shí)的能?力風(fēng)暴機(jī)器?人也是適用?的。創(chuàng)建環(huán)境可以自由創(chuàng)?建環(huán)境,是VJC1?.5仿真版的?一個突出優(yōu)?點(diǎn),這往往是使?用真實(shí)的機(jī)?器人時所做?不到的。在VJC1?.5仿真版中?,讀者可以利?用光源、聲源、障礙物和彩?色圖帶創(chuàng)建?各種環(huán)境,如房間、迷宮、排雷場地等?。下面的圖1?-4就是用仿?真版創(chuàng)建的?一個環(huán)境――“篝火晚會場?地”,場地左下方?是虛擬機(jī)器?人。篝火晚會場?地仿真運(yùn)行仿真運(yùn)行就?是進(jìn)入仿真?環(huán)境,讓虛擬機(jī)器?人按照程序?指令進(jìn)行運(yùn)?動。編好程序、創(chuàng)建環(huán)境之?后,就可以仿真?運(yùn)行了。因此,在仿真版中?,讀者能夠直?觀地看到機(jī)?器人運(yùn)行的?效果。

初試身手走正方形項(xiàng)目內(nèi)容:為機(jī)器人編?程,使之能走一?個正方形。走的時候顯?示軌跡。走正方形相關(guān)模塊:直行、轉(zhuǎn)向。難度等級:●○○○○項(xiàng)目解析:編寫“走正方形”程序可參照?圖1-1編寫,項(xiàng)目的難點(diǎn)?在于要反復(fù)?調(diào)整“轉(zhuǎn)向模塊”中轉(zhuǎn)向時間?和速度,以便機(jī)器人?正好轉(zhuǎn)90?°。“直行”、“轉(zhuǎn)向”模塊的參數(shù)?設(shè)置方法可?參考“幫助”電子文檔――“執(zhí)行器模塊?”。走六邊形項(xiàng)目內(nèi)容:為機(jī)器人編?程,使之能走一?個六邊形。走的時候顯?示軌跡。要求使用“多次循環(huán)”模塊。相關(guān)模塊:轉(zhuǎn)向、直行、多次循環(huán)。難度等級:●●○○○項(xiàng)目解析:所有的程序?都能用“順序結(jié)構(gòu)”、“選擇結(jié)構(gòu)”以及“循環(huán)結(jié)構(gòu)”來表示。本項(xiàng)目中的?“循環(huán)結(jié)構(gòu)”是程序設(shè)計(jì)?中重要的結(jié)?構(gòu),故須認(rèn)真掌?握。“多次循環(huán)”模塊在“控制模塊庫?”中。將“多次循環(huán)”模塊拖到流?程圖生成區(qū)?后,在模塊上右?擊鼠標(biāo),打開參數(shù)設(shè)?置對話框,即可輸入循?環(huán)次數(shù)。另外要注意?的是,使用多次循?環(huán)模塊的時?候,須將待循環(huán)?的內(nèi)容放在?循環(huán)體內(nèi)部?。

走五角星項(xiàng)目內(nèi)容:為機(jī)器人編?程,使之能走出?一個五角星?的形狀。走的時候顯?示軌跡。要求使用“條件循環(huán)”模塊。五角星相關(guān)模塊:直行、轉(zhuǎn)向、條件循環(huán)、計(jì)算。難度等級:●●●○○程序設(shè)計(jì)通過該項(xiàng)目?的學(xué)習(xí)可熟?悉VJC1?.5仿真版中?引用變量、變量百寶箱?的概念以及?“條件循環(huán)”和“計(jì)算”模塊的使用?。“條件循環(huán)”模塊在“控制模塊庫?”中。從圖2-8可以看到?,要畫出一個?五角星,需重復(fù)五次?“前進(jìn)、右轉(zhuǎn)”的動作,右轉(zhuǎn)的角度?為1440?。五角星的大?小由前進(jìn)的?距離所決定?。在本例中,要求使用“條件循環(huán)”模塊,我們可以將?其中的條件?表達(dá)式設(shè)置?為整型變量一?<5在程序中,讓整型變量?一從0開始?變化,每循環(huán)一次?,就令整型變?量一增加1?。當(dāng)整型變量?一等于0、1、2、3、4時,條件表達(dá)式?都能滿足;當(dāng)整型變量?一等于5時?,條件表達(dá)式?不再滿足。于是循環(huán)將?進(jìn)行5次,然后就跳出?循環(huán),程序結(jié)束。參見圖2-9。五角星例程?參數(shù)設(shè)置最初的“計(jì)算”模塊:計(jì)算表達(dá)式?為整型變量一?=0“前進(jìn)”模塊:速度80,時間2.0秒??勺孕姓{(diào)整??!坝肄D(zhuǎn)”模塊:相對速度1?00,時間0.4秒??勺孕姓{(diào)整?。“條件循環(huán)”模塊:條件表達(dá)式?為整型變量一?<5循環(huán)體中的?“計(jì)算”模塊:計(jì)算表達(dá)式?為整型變量一?=整型變量一?+1第二個“計(jì)算”模塊參數(shù)設(shè)?置的方法如?下面a)-d)所述:在“計(jì)算”模塊上右擊?鼠標(biāo),打開參數(shù)設(shè)?置對話框(圖2-10);計(jì)算模塊的?參數(shù)設(shè)置對?話框在圖2-10中,選擇右上角?的“引用變量”,這時會出現(xiàn)?變量百寶箱?(圖2-11)。變量百寶箱?在變量百寶?箱中點(diǎn)擊一?下“整型變量一?”,在整型變量?一右邊就會?出現(xiàn)一把小?鑰匙,表明整型變?量一被選中?了。點(diǎn)擊“確認(rèn)”。寫出完整的?計(jì)算表達(dá)式?“整型變量一?=整型變量一?+1”計(jì)算表達(dá)式?仿真運(yùn)行程序編好后?,就可以仿真?運(yùn)行了。點(diǎn)擊工具欄?中的“仿真”快捷按鈕,進(jìn)入仿真環(huán)?境主界面,選擇“顯示軌跡”,然后點(diǎn)擊“運(yùn)行”鍵,得到一個虛?擬機(jī)器人,將虛擬機(jī)器?人放在運(yùn)行?區(qū),就能看到機(jī)?器人走出的?軌跡。計(jì)算機(jī)執(zhí)行?程序的過程?如下:首先將“整型變量一?”賦值為0,然后進(jìn)入條?件循環(huán)。每循環(huán)一次?,機(jī)器人前進(jìn)?一段距離,并右轉(zhuǎn)一個?角度,畫出五角星?的一條邊,同時整型變?量一增加1?。故整型變量?一從0依次?變?yōu)?、2、3、4。當(dāng)整型變量?一等于5的?時候,條件表達(dá)式?不再滿足,條件循環(huán)中?止,程序就結(jié)束?了。

奧運(yùn)五環(huán)項(xiàng)目內(nèi)容:為機(jī)器人編?程,使之走出一?個奧運(yùn)五環(huán)?。走的時候顯?示軌跡。奧運(yùn)五環(huán)相關(guān)模塊:啟動電機(jī)、延時等待、停止電機(jī)、轉(zhuǎn)向。難度等級:●●○○○項(xiàng)目解析:設(shè)置本項(xiàng)目?為了學(xué)習(xí)加?固“啟動電機(jī)”模塊的使用?方法,同時熟悉仿?真環(huán)境中“顯示軌跡”和“保留原軌跡?”設(shè)置方法。小技巧:在仿真環(huán)境?中通過點(diǎn)擊?鼠標(biāo)右鍵可?調(diào)整機(jī)器人?的初始角度?。汽車項(xiàng)目內(nèi)容:用機(jī)器人做?一個汽車。前進(jìn)、后退、轉(zhuǎn)彎、劃弧線、停止、亮車燈等動?作任意組合?。車燈可用機(jī)?器人的眼睛?代替。相關(guān)模塊:直行、轉(zhuǎn)向、啟動電機(jī)、延時等待、停止電機(jī)、眼睛。難度等級:●●○○○動態(tài)字符項(xiàng)目內(nèi)容:機(jī)器人顯示?字符“ABCD”,并且字符從?左向右運(yùn)動?。仿真界面中?的顯示屏相關(guān)模塊:顯示、延時等待、永遠(yuǎn)循環(huán)。難度等級:●○○○○項(xiàng)目解析:在本例中,可以這樣來?設(shè)計(jì)程序:用13個顯?示模塊,分別將“ABCD”顯示在不同?部位,如圖2-21/22所示。其中,前一個“顯示”模塊與后一?個“顯示”模塊之間插?一個“延時等待”模塊,延時等待的?時間取0.2秒鐘。當(dāng)程序運(yùn)行?的時候,就會產(chǎn)生動?態(tài)的效果。ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD動態(tài)字符的?設(shè)計(jì)方法穩(wěn)步前進(jìn)彩色地毯項(xiàng)目內(nèi)容:機(jī)器人在彩?色地毯上行?走,遇到不同的?顏色能發(fā)出?不同的聲音?。相關(guān)模塊:地面檢測、直行、轉(zhuǎn)向、發(fā)音、永遠(yuǎn)循環(huán)、條件判斷。難度等級:●●○○○創(chuàng)建環(huán)境――彩色地毯。參見幫助電?子文檔/環(huán)境編輯/圖帶和地毯?。項(xiàng)目解析:“地面檢測”模塊用于對?地面的灰度?進(jìn)行檢測,檢測到的值?為0~255之間?的整型數(shù),數(shù)值越大,地面顏色越?深;數(shù)值越小,地面顏色越?淺。在正式編程?之前,先編寫一個?地面灰度檢?測小程序(參見圖3-22),檢測一下地?毯不同部分?的灰度。然后再構(gòu)思?本項(xiàng)目的解?決方案。百米賽跑項(xiàng)目內(nèi)容:開始時,機(jī)器人站在?跑道的起點(diǎn)?處等待起跑?。一旦聽到發(fā)?令槍響,就立刻沿著?跑道向終點(diǎn)?沖過去。在跑的過程?中機(jī)器人不?能越出跑道?。百米賽跑場?地相關(guān)模塊:地面檢測、聲音檢測、條件循環(huán)、直行。難度等級:●●○○○項(xiàng)目解析:在很多比賽?中要求聲控?啟動,當(dāng)機(jī)器人聽?到聲音后才?能運(yùn)動。這個項(xiàng)目主?要演示在場?地中添加聲?源,具體方法可?參見“幫助”電子文檔/環(huán)境編輯/聲源。仿真運(yùn)行時?,先把機(jī)器人?放在跑道的?起點(diǎn)處,然后添加聲?源。

計(jì)算走過的?距離項(xiàng)目內(nèi)容:計(jì)算機(jī)器人?走過的距離?。相關(guān)模塊:直行、轉(zhuǎn)向、轉(zhuǎn)角檢測、顯示。難度等級:●●●○○程序設(shè)計(jì)在本例中,我們讓機(jī)器?人先走一段?直線,接著走一段?弧線,然后再走一?段直線。最后,調(diào)用兩個轉(zhuǎn)?角檢測模塊?,分別檢測左?輪和右輪的?轉(zhuǎn)角,并顯示出來?,例程如圖3?-16所示。轉(zhuǎn)角檢測例?程參數(shù)設(shè)置“轉(zhuǎn)角檢測”模塊:打開“轉(zhuǎn)角檢測”模塊的對話?框,如圖3-17所示。轉(zhuǎn)角檢測模?塊的參數(shù)設(shè)?置對話框之?一在圖3-17對話框?中選擇“左輪、編碼器檢測?”,就會彈出如?下對話框:轉(zhuǎn)角檢測模?塊的參數(shù)設(shè)?置對話框之?二在其中選擇?“轉(zhuǎn)角變量一?”,確定。用同樣的方?法,將第二個“轉(zhuǎn)角檢測”模塊的參數(shù)?設(shè)置為“右輪、編碼器檢測?、轉(zhuǎn)角變量二?”?!帮@示”模塊:選擇“引用變量”,在兩行中分?別顯示“轉(zhuǎn)角變量一?”和“轉(zhuǎn)角變量二?”。仿真運(yùn)行仿真運(yùn)行時?,顯示軌跡,可以看到機(jī)?器人走過一?條曲線,最后在右上?角的顯示屏?上顯示出左?右輪的轉(zhuǎn)角?數(shù)。機(jī)器人的輪?子轉(zhuǎn)一圈,機(jī)器人的光?電編碼器接?收到33個?脈沖,轉(zhuǎn)角計(jì)數(shù)為?33。真實(shí)的能力?風(fēng)暴機(jī)器人?輪子的直徑?d=64mm。您可以根據(jù)?檢測到的左?右輪平均轉(zhuǎn)?角數(shù),用如下公式?計(jì)算出機(jī)器?人走過的平?均距離:您還可以在?以上例程中?添加一段程?序,計(jì)算機(jī)器人?走過的距離?,并將計(jì)算結(jié)?果顯示出來?。不過,用上述公式?計(jì)算出的結(jié)?果適用于真?實(shí)的機(jī)器人?,與仿真界面?上的標(biāo)尺不?一定吻合。小知識:光電編碼器?光電編碼器?是靠發(fā)射與?接收紅外光?來工作的,由碼盤和光?電編碼模塊?組成。碼盤安裝在?機(jī)器人的輪?子上,隨輪子一起?轉(zhuǎn)動。光電編碼模?塊則裝在輪?子的支架上?。碼盤上共有?66個輻條?,黑白相間。光電編碼模?塊同時具有?發(fā)射與接收?紅外線的功?能,參見圖3-19。無返回信號?有返回信號?光電編碼器?的工作原理?圖從圖中可以?看出:紅外線照射?在黑色輻條?上時沒有反?射信號,因?yàn)榧t外光?大部分已經(jīng)?被黑色輻條?吸收;當(dāng)紅外線照?射在白色輻?條上時有反?射信號,因?yàn)榧t外光?在白色輻條?上反射強(qiáng)烈?。于是,當(dāng)機(jī)器人運(yùn)?動時,光電編碼器?就能接收到?脈沖信號。輪子每轉(zhuǎn)一?圈,共產(chǎn)生33?個脈沖。光電編碼器?有計(jì)數(shù)功能?,能累加接收?到的脈沖數(shù)?。秒表項(xiàng)目內(nèi)容:讓機(jī)器人在?顯示屏上顯?示時間,可以當(dāng)作秒?表來使用(圖3-20)。顯示時間相關(guān)模塊:系統(tǒng)時間、顯示、永遠(yuǎn)循環(huán)。難度等級:●○○○○項(xiàng)目解析:在本書中很?多項(xiàng)目可用?于機(jī)器人比?賽,比如走迷宮?、滅火。進(jìn)行機(jī)器人?比賽,就需要計(jì)算?所花的時間?。VJC1.5仿真版提?供了“系統(tǒng)時間”模塊,能滿足程序?設(shè)計(jì)的需要?。風(fēng)扇定時項(xiàng)目內(nèi)容:用機(jī)器人做?成一個電風(fēng)?扇,來回?cái)[動著?吹。并且有電風(fēng)?扇的定時功?能,吹一段時間?就停下來。相關(guān)模塊:轉(zhuǎn)向、啟動電機(jī)、停止電機(jī)、系統(tǒng)時間、條件循環(huán)。難度等級:●●○○○程序設(shè)計(jì)要讓風(fēng)扇定?時,則須調(diào)用“系統(tǒng)時間”模塊。在程序中,控制風(fēng)扇運(yùn)?行的時間可?以用條件循?環(huán)來實(shí)現(xiàn)。程序一開始?,首先啟動擴(kuò)?展電機(jī),然后進(jìn)入條?件循環(huán),條件表達(dá)式?為:時間變量一?<10.0000條件循環(huán)的?內(nèi)容為:左轉(zhuǎn)、右轉(zhuǎn)、檢測系統(tǒng)時?間,并將它在顯?示屏上顯示?出來。一旦檢測到?系統(tǒng)時間超?過10秒鐘?,就跳出條件?循環(huán),停止擴(kuò)展電?機(jī),程序結(jié)束。參見圖3-21。參數(shù)設(shè)置“啟動電機(jī)”模塊:選擇“擴(kuò)展電機(jī)”,而將左右電?機(jī)的功率均?設(shè)置為零。“條件循環(huán)”模塊:條件表達(dá)式?為時間變量一?<10.0000“系統(tǒng)時間”模塊:變量選擇“時間變量一?”?!巴V闺姍C(jī)”模塊:停止擴(kuò)展電?機(jī)。仿真運(yùn)行點(diǎn)擊“仿真”快捷按鈕,進(jìn)入仿真環(huán)?境主界面,點(diǎn)擊“運(yùn)行”鍵,將虛擬機(jī)器?人放到運(yùn)行?區(qū)就可以了?。運(yùn)行時可以?看到右上角?顯示屏上有?時間顯示。風(fēng)扇定時例?程醉漢項(xiàng)目內(nèi)容:機(jī)器人模仿?醉漢的姿態(tài)?,跌跌撞撞地?走。如果碰到人?或障礙物,就轉(zhuǎn)過身,繼續(xù)走。相關(guān)模塊:直行、轉(zhuǎn)向、碰撞檢測。難度等級:●●○○○創(chuàng)建環(huán)境――設(shè)置一個房?間,在房間里擺?一些障礙物?。小知識:碰撞傳感器?在此,我們簡要介?紹機(jī)器人的?碰撞傳感器?,以型號為A?S-MII的真?實(shí)機(jī)器人為?例。碰撞傳感器?是感知碰撞?信息的傳感?器。在能力風(fēng)暴?智能機(jī)器人?的左前、右前、左后、右后部位設(shè)?置有四個碰?撞開關(guān),它們與碰撞?環(huán)共同構(gòu)成?了碰撞傳感?器(圖3-26)。碰撞開關(guān)及?碰撞環(huán)碰撞環(huán)與機(jī)?器人底盤柔?性連接,在受力后與?底盤產(chǎn)生相?對位移,觸發(fā)固連在?底盤上的碰?撞開關(guān),使之閉合。從而機(jī)器人?就能感知來?自不同方向?的碰撞。參見圖3-27。機(jī)器人的碰?撞傳感器示?意圖根據(jù)接收到?的開關(guān)信號?,機(jī)器人能夠?判別八個方?向的碰撞(見圖3-28)。前左前右后左后左前右前左前左前右后左后左前右前左碰撞方位在VJC1?.5仿真版中?,虛擬機(jī)器人?至多只能識?別前、后、左、右四個方向?的碰撞。自由行走項(xiàng)目內(nèi)容:機(jī)器人在空?間漫步,有時候會停?下來,欣賞欣賞風(fēng)?景,唱唱歌,然后又繼續(xù)?走。遇到障礙物?能自動避開?,但不會撞上?去。相關(guān)模塊:轉(zhuǎn)向、直行、紅外測障、碰撞檢測、條件判斷、發(fā)音。難度等級:●●●○○創(chuàng)建環(huán)境――自由創(chuàng)意。趨光的飛蛾?項(xiàng)目內(nèi)容:機(jī)器人模仿?飛蛾,一旦發(fā)現(xiàn)光?,就會向著光?走過去。相關(guān)模塊:亮度檢測、啟動電機(jī)、延時等待、停止電機(jī)、永遠(yuǎn)循環(huán)、條件判斷。難度等級:●●●○○機(jī)器人趨光?的方式程序分析問:機(jī)器人如何?才能朝著光?源走過去?答:可以采用比?較機(jī)器人左?右眼的亮度?值的方法。如果左眼的?亮度值小于?右眼的亮度?值,說明機(jī)器人?的左眼接收?到的光線較?強(qiáng),離光源較近?;而機(jī)器人的?右眼接收到?的光線較弱?,離光源較遠(yuǎn)?。這時就讓機(jī)?器人逆時針?劃一段弧線?,目的是讓機(jī)?器人的右眼?離光源更近?些。類似地,如果右眼的?亮度值小于?左眼的亮度?值,則說明機(jī)器?人的左眼離?光源較遠(yuǎn),這時就讓機(jī)?器人順時針?劃一段弧線?。通過逆時針?劃弧線和順?時針劃弧線?的交替,機(jī)器人就可?以逐步接近?光源了。參見圖3-29。問:機(jī)器人怎樣?才不會撞上?蠟燭?答:如果機(jī)器人?左眼或右眼?的亮度值小?于某一個值?,比如20,就停止電機(jī)?。這樣,機(jī)器人走到?蠟燭跟前就?會停下來,而不會撞上?蠟燭。參見圖3-30的例程?。參數(shù)設(shè)置第一個“亮度檢測”模塊:方式選擇“左”,變量選擇“亮度變量一?”。第二個“亮度檢測”模塊:方式選擇“右”,變量選擇“亮度變量二?”。第一個“條件判斷”模塊:條件表達(dá)式?為條件一:亮度變量一?<20。條件二:有效,亮度變量二?<20,條件邏輯關(guān)?系“或”。第二個“條件判斷”模塊:條件表達(dá)式?為亮度變量一?<亮度變量二?。其下的“啟動電機(jī)”模塊:左電機(jī)功率?20,右電機(jī)功率?80。第三個“條件判斷”模塊:條件表達(dá)式?為亮度變量二?<亮度變量一?。其下的“啟動電機(jī)”模塊:左電機(jī)功率?80,右電機(jī)功率?20?!把訒r等待”模塊:時間設(shè)為0?.1秒。仿真運(yùn)行仿真運(yùn)行時?,在運(yùn)行場地?中央添加光?源,光源半徑設(shè)?為180,漸變值設(shè)為?30。然后將虛擬?機(jī)器人放在?光圈的邊緣?,機(jī)器人就會?向光源中心?走過去。走到蠟燭跟?前,機(jī)器人會自?動停下來。趨光的飛蛾?例程鼴鼠項(xiàng)目內(nèi)容:機(jī)器人模仿?鼴鼠,在地洞中來?回走動,如發(fā)現(xiàn)光就?轉(zhuǎn)身鉆進(jìn)地?洞里躲起來?。參見圖3-31。鼴鼠場地相關(guān)模塊:亮度檢測、紅外測障、碰撞檢測、啟動電機(jī)、延時等待、停止電機(jī)、永遠(yuǎn)循環(huán)、條件判斷。難度等級:●●○○○越障跑項(xiàng)目內(nèi)容:在跑道上有?一些障礙物?,機(jī)器人的任?務(wù)是聽到發(fā)?令槍后,以最快的速?度從起點(diǎn)跑?到終點(diǎn),途中要避開?障礙物。越障跑示意?圖相關(guān)模塊:轉(zhuǎn)向、直行、紅外測障、條件判斷、地面檢測、永遠(yuǎn)循環(huán)。難度等級:●●●○○項(xiàng)目解析:這個項(xiàng)目與?“短跑比賽”類似,但增加了難?度,障礙物檢測?可用“紅外測障”模塊,也可用“碰撞檢測”模塊。跑道可以自?行設(shè)計(jì)。太陽能電池?項(xiàng)目內(nèi)容:用機(jī)器人模?擬太陽能電?池。當(dāng)有光照著?機(jī)器人的時?候,機(jī)器人的眼?睛就亮起來?,就象太陽能?電池點(diǎn)亮燈?泡一樣。相關(guān)模塊:亮度檢測、眼睛、永遠(yuǎn)循環(huán)、條件判斷。難度等級:●○○○○仿真運(yùn)行:在機(jī)器人運(yùn)?行場地中間?,添加光源,光源半徑1?80,漸變值30?。然后將機(jī)器?人放在光圈?中即可。

挑戰(zhàn)自我填字游戲項(xiàng)目內(nèi)容:在機(jī)器人運(yùn)?行場地上,有若干個顏?色各別的圓?形圖帶,分別代表不?同的英文字?母。請您設(shè)計(jì)一?個程序,開始時讓機(jī)?器人顯示一?個英文單詞?,但缺少一個?字母。如果將機(jī)器?人放在代表?正確字母的?圖帶上,機(jī)器人就會?顯示出完整?的單詞,并高興地唱?歌、眼睛放光。如果將機(jī)器?人放在代表?其他字母的?圖帶上,機(jī)器人則會?發(fā)出另一種?聲音,提示“錯誤”。相關(guān)模塊:地面檢測、條件判斷、顯示、發(fā)音。難度等級:●●●○○創(chuàng)建環(huán)境――在機(jī)器人運(yùn)?行場地上設(shè)?置若干個圓?形圖帶,按照灰度值?從小到大的?順序排列,分別代表英?文字母ab?cdefg?……如圖4-1所示。程序分析首先編一個?地面灰度檢?測的程序,用以檢測圓?形圖帶的灰?度。其次進(jìn)入仿?真環(huán)境主界?面,創(chuàng)建填字游?戲場地。然后編寫填?字游戲的程?序。在例程(圖4-2)中,顯示的單詞?是doct?or,缺少字母c?。填字游戲場?地中三排圓?形圖帶的灰?度值分別為?0、43、63、85、106,127、128、149、170、191,202、213、234、255,依次代表a?bcdef?ghijk?lmn等1?4個字母。故程序運(yùn)行?時,將機(jī)器人放?在第一排第?三個圖帶上?,就可以得到?正確的結(jié)果?,顯示出完整?的單詞,并唱歌。而放在其他?的圖帶上則?會提示錯誤?。填字游戲場?地填字游戲例?程臺球項(xiàng)目內(nèi)容:在一個空房?間里,機(jī)器人不停?地撞過來撞?過去,就象臺球一?樣。房間里可以?有一些障礙?物。機(jī)器人反彈?的角度應(yīng)盡?可能合理。相關(guān)模塊:碰撞檢測、直行、轉(zhuǎn)向、永遠(yuǎn)循環(huán)、條件判斷。難度等級:●●●○○臺球場地示?意圖程序分析要讓機(jī)器人?象臺球一樣?運(yùn)動,則當(dāng)前方發(fā)?生碰撞時,機(jī)器人應(yīng)向?后方運(yùn)動;當(dāng)后方發(fā)生?碰撞時,機(jī)器人應(yīng)向?前方運(yùn)動;當(dāng)左方發(fā)生?碰撞時,機(jī)器人應(yīng)右?轉(zhuǎn)90度,然后繼續(xù)向?前運(yùn)動;當(dāng)右方發(fā)生?碰撞時,機(jī)器人應(yīng)左?轉(zhuǎn)90度,然后繼續(xù)向?前運(yùn)動;當(dāng)前后左右?都沒有發(fā)生?碰撞時,機(jī)器人就保?持向前運(yùn)動?的狀態(tài)。參見圖4-4和圖4-5。“臺球”主程序“臺球”子程序參數(shù)設(shè)置主程序“條件判斷”模塊:按照從上至?下的順序,四個條件判?斷模塊的參?數(shù)設(shè)置如下?表所示。條件表達(dá)式?碰撞變量一?==前碰撞變量一?==后碰撞變量一?==左碰撞變量一?==右“左轉(zhuǎn)”模塊:速度80,時間0.3秒。“右轉(zhuǎn)”模塊:速度80,時間0.3秒。“向前”子程序“前進(jìn)”模塊:速度100?,時間0.05秒?!芭鲎矙z測”模塊:選擇變量“碰撞變量一?”。“條件循環(huán)”模塊:條件表達(dá)式?為碰撞變量一?==無“向后”子程序“后退”模塊:速度-100,時間0.05秒?!芭鲎矙z測”模塊:選擇變量“碰撞變量一?”。“條件循環(huán)”模塊:條件表達(dá)式?為碰撞變量一?==無仿真運(yùn)行仿真運(yùn)行時?,創(chuàng)建一個單?房間場地,里面放一些?障礙物,如圖4-3所示。然后將機(jī)器?人放到房間?里,機(jī)器人就會?象臺球一樣?運(yùn)動起來。彈球游戲項(xiàng)目內(nèi)容:在一個房間?里有若干柱?子(圓形障礙物?),房間門口用?白色圖帶表?示。機(jī)器人在房?間里運(yùn)動,象皮球一樣?彈來彈去,檢測到柱子?下面的圓形?彩色圖帶可?得分(紅色10分?,黃色8分,藍(lán)色6分,綠色4分,紫色2分)??礄C(jī)器人在?彈出房間以?前能得幾分?,并且將分?jǐn)?shù)?顯示出來。相關(guān)模塊:碰撞檢測、直行、轉(zhuǎn)向、計(jì)算、顯示、條件循環(huán)、地面檢測。難度等級:●●●○○創(chuàng)建環(huán)境――設(shè)計(jì)一個空?房間,里面有幾個?圓形障礙物?,放在圓形彩?色圖帶上。如圖4-9所示。彈球游戲場?地隨機(jī)走項(xiàng)目內(nèi)容:機(jī)器人隨機(jī)?行走,有時前進(jìn),有時后退,有時左轉(zhuǎn),有時右轉(zhuǎn)。行走的距離?和轉(zhuǎn)彎的角?度要有變化?,強(qiáng)調(diào)隨機(jī)性?。相關(guān)模塊:直行、轉(zhuǎn)向、計(jì)算、永遠(yuǎn)循環(huán)、條件判斷、碰撞檢測、紅外測障。難度等級:●●●○○程序分析要實(shí)現(xiàn)隨機(jī)?行走,須考慮以下?幾個方面:避免碰撞。機(jī)器人在行?走的過程中?,如果發(fā)生了?碰撞,則后退一點(diǎn)?,并掉轉(zhuǎn)方向?。紅外避障。機(jī)器人邊行?走邊進(jìn)行紅?外探測,如果發(fā)現(xiàn)左?、右、前任一方向?有障礙物,就轉(zhuǎn)向。前進(jìn)。設(shè)置前進(jìn)的?參數(shù)時,將時間取為?0.05秒或0?.1秒,可以使紅外?探測和碰撞?檢測的周期?較短,從而令機(jī)器?人具有較高?的靈敏度。優(yōu)先級。優(yōu)先級的設(shè)?置為:避免碰撞的?優(yōu)先級最高?;其次紅外避?障;前進(jìn)的優(yōu)先?級最低,如果沒有發(fā)?生碰撞,也沒有發(fā)現(xiàn)?障礙物,才前進(jìn)。隨機(jī)性。隨機(jī)性體現(xiàn)?在行走的距?離和方向上?,距離應(yīng)有時?長有時短,方向應(yīng)忽左?忽右、忽前忽后。以方向的隨?機(jī)性為例,我們可以通?過“計(jì)算”模塊,計(jì)算機(jī)器人?轉(zhuǎn)向的次數(shù)?。如果右轉(zhuǎn)了?3次,就左轉(zhuǎn)一次?;如果左轉(zhuǎn)了?4次,就右轉(zhuǎn)一次?;如果前進(jìn)了?5次,就后退一次?,等等。機(jī)器人的運(yùn)?行環(huán)境??梢约虞d環(huán)?境――迷宮、單房間場地?或標(biāo)準(zhǔn)滅火?場地等(參見幫助電?子文檔/環(huán)境文件管?理)。也可以自己?創(chuàng)建一個環(huán)?境。

沿墻走項(xiàng)目內(nèi)容:機(jī)器人沿著?墻壁行走(采用左手規(guī)?則或者右手?規(guī)則)。相關(guān)模塊:啟動電機(jī)、延時等待、停止電機(jī)、紅外測障、碰撞檢測、直行、轉(zhuǎn)向、永遠(yuǎn)循環(huán)。難度等級:●●●○○程序分析沿墻走,顧名思義,即機(jī)器人靠?近墻壁行走?。采用左手規(guī)?則時,墻壁在機(jī)器?人的左邊;而采用右手?規(guī)則時,墻壁在機(jī)器?人的右邊。下面以左手?規(guī)則為例加?以說明。沿墻走示意?圖如圖4-10所示,要實(shí)現(xiàn)沿墻?走,機(jī)器人可以?采取劃弧線?的方法,邊前進(jìn)邊檢?測墻壁。機(jī)器人如果?發(fā)現(xiàn)前方有?障礙物,說明正對著?墻壁了,就右轉(zhuǎn)約9?0度;如果發(fā)現(xiàn)左?方有障礙物?,說明機(jī)器人?左側(cè)對著墻?壁了,就右轉(zhuǎn)約6?0度;否則就劃弧?線前進(jìn)。有時候機(jī)器?人會撞上墻?壁,為此機(jī)器人?還需具有處?理碰撞的功?能。在程序中,我們讓機(jī)器?人一旦檢測?到碰撞,就后退一點(diǎn)?,并右轉(zhuǎn)約6?0度。沿墻走的例?程如圖4-11所示。沿墻走例程?參數(shù)設(shè)置“紅外測障”模塊:檢測完成后?,進(jìn)行條件判?斷,條件表達(dá)式?為紅外變量一?==左“條件判斷”模塊:條件表達(dá)式?為紅外變量一?==前“啟動電機(jī)”模塊:左電機(jī)功率?20,右電機(jī)功率?30?!把訒r等待”模塊:時間0.05秒?!芭鲎矙z測”模塊:條件表達(dá)式?為碰撞變量?。綗o其余模塊的?參數(shù)自行設(shè)?置,并需反復(fù)調(diào)?整,直至滿意為?止。仿真運(yùn)行仿真運(yùn)行時?,加載單房間?場地、標(biāo)準(zhǔn)滅火場?地、走迷宮場地?均可。讀者也可以?自己創(chuàng)建一?個場地,讓機(jī)器人在?其中運(yùn)行。

點(diǎn)歌臺項(xiàng)目內(nèi)容:用機(jī)器人做?一個點(diǎn)歌臺?,當(dāng)前、后、左、右四個方向?發(fā)生碰撞時?,能分別唱不?同的歌曲。歌曲以子程?序的形式調(diào)?用。相關(guān)模塊:直行、轉(zhuǎn)向、碰撞檢測、永遠(yuǎn)循環(huán)、條件判斷、子程序。難度等級:●●●○○創(chuàng)建環(huán)境――在機(jī)器人運(yùn)?行場地中設(shè)?置一些障礙?物。回音壁項(xiàng)目內(nèi)容:機(jī)器人根據(jù)?檢測到的聲?音強(qiáng)度,發(fā)出相近的?聲音。比如檢測到?聲音強(qiáng)度為?180,就發(fā)音(音頻為17?4.6)。相關(guān)模塊:聲音檢測、條件判斷、發(fā)音、永遠(yuǎn)循環(huán)。難度等級:●●○○○仿真運(yùn)行:在機(jī)器人運(yùn)?行場地中添?加聲源。查找最大值?項(xiàng)目內(nèi)容:給出一組數(shù)?,讓機(jī)器人從?中找出最大?值,并顯示出來?。相關(guān)模塊:計(jì)算、條件判斷、條件循環(huán)、顯示。難度等級:●●●○○項(xiàng)目解析:“查找最大值?”項(xiàng)目需要設(shè)?計(jì)算法。下面給出了?一個簡單的?例程,你也可以設(shè)?計(jì)自己的算?法。還可以自己?設(shè)計(jì)類似的?項(xiàng)目,然后自己編?程實(shí)現(xiàn)。本例中給出?了六個整型?數(shù)5、8、-12、3、64、81,由六個計(jì)算?模塊分別賦?給整型變量?一、整型變量二?、整型變量三?、亮度變量一?、亮度變量二?、亮度變量三?(見圖4-12中的前?六個藍(lán)色矩?形“計(jì)算”模塊)。查找最大值?的過程實(shí)際?上是條件判?斷的過程(見圖4-12中的紅?色菱形“條件判斷”模塊),我們選用整?型變量一與?其它變量逐?一進(jìn)行比較?,如果整型變?量一小于與?之相比較的?變量,就將后者賦?給整型變量?一(見圖4-12中條件?判斷下的“計(jì)算”模塊),否則整型變?量一保持不?變。最后得到的?整型變量一?就是最大值?,將它顯示出?來就可以了?(見圖4-12中最后?的“顯示”模塊)。對照圖4-12流程圖?右邊的JC?代碼可以更?清楚地理解?上述過程。查找最大值?例程排序項(xiàng)目內(nèi)容:給出一組數(shù)?(例如3個整?數(shù)),讓機(jī)器人將?其從小到大?排列,并依次顯示?出來。相關(guān)模塊:計(jì)算、條件判斷、條件循環(huán)、顯示。難度等級:●●●○○項(xiàng)目解析:“排序”是計(jì)算機(jī)數(shù)?據(jù)結(jié)構(gòu)中重?要的內(nèi)容,通過VJC?1.5仿真版能?完成較簡單?的數(shù)據(jù)排序?,通過“排序”項(xiàng)目,能鍛煉自己?程序設(shè)計(jì)能?力。最大公約數(shù)?項(xiàng)目內(nèi)容:求兩個正整?數(shù)的最大公?約數(shù),并顯示出來?。相關(guān)模塊:計(jì)算、條件判斷、條件循環(huán)、顯示。難度等級:●●●○○程序分析求兩個正整?數(shù)的最大公?約數(shù),可用輾轉(zhuǎn)相?除法(參見后面的?小知識)。編程計(jì)算時?,須注意到C?語言中整型?數(shù)的特點(diǎn),兩個整型數(shù)?相除得到的?商仍為整型?數(shù),小數(shù)部分被?忽略。參考程序如?如圖4-13所示。參數(shù)設(shè)置條件循環(huán)之?前的四個“計(jì)算”模塊:計(jì)算表達(dá)式?如下表所示?整型變量一?=255(被除數(shù))整型變量二?=60(除數(shù))整型變量三?=整型變量一?÷整型變量二?(得到商)整型變量三?=整型變量一?-整型變量二?×整型變量三?(得到余數(shù))“條件循環(huán)”模塊:條件表達(dá)式?為整型變量三??。?循環(huán)體中的?四個“計(jì)算”模塊:計(jì)算表達(dá)式?為整型變量一?=整型變量二?(除數(shù)升級為?被除數(shù))整型變量二?=整型變量三?(余數(shù)升級為?除數(shù))整型變量三?=整型變量一?÷整型變量二?(得到商)整型變量三?=整型變量一?-整型變量二?×整型變量三?(得到余數(shù))“顯示”模塊:顯示信息為?“整型變量二?”。求最大公約?數(shù)例程小知識:最大公約數(shù)?和輾轉(zhuǎn)相除?法兩個正整數(shù)?的最大公約?數(shù),是指能整除?這兩個整數(shù)?的最大的整?數(shù)。例如:18和45?的最大公約?數(shù)是9。求最大公約?數(shù)的標(biāo)準(zhǔn)方?法是輾轉(zhuǎn)相?除法。設(shè)有兩個整?數(shù)和,且,它們的最大?公約數(shù)為d?,用輾轉(zhuǎn)相除?法求最大公?約數(shù)d的算?法如下表所?示:

表達(dá)式步驟被除數(shù)=除數(shù)×商+余數(shù)1=×+2=×+3=×+┊┊┊┊┊┊┊┊=×+=×+=×+0第1步,以作被除數(shù)?,作為除數(shù),得到的商為?,余數(shù)為。第2步,將升級為被?除數(shù),將升級為除?數(shù),得到商為,余數(shù)為。其余的步驟?依此類推。從第1步開?始,在每一步的?表達(dá)式中,由于被除數(shù)?和除數(shù)都能?被d整除,故余數(shù)(=被除數(shù)-除數(shù)×商)也能被d整?除。在上述過程?中,由于除數(shù)小?于被除數(shù),余數(shù)又小于?除數(shù),故余數(shù)越變?越小。又由于余數(shù)?不能小于d?,否則會導(dǎo)致?矛盾,于是最后必?定可以得到?余數(shù)為零,如下式所示?:此即為表中?第n步的式?子,該式中的除?數(shù)就是所要?求的最大公?約數(shù)d,即【證明】由于第n步?中整除,從表格倒推?上去可知,也能整除、、……、、故

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論