機(jī)器人編程第二步:具體問(wèn)題具體分析

經(jīng)過(guò)第一步分解任務(wù)后,接下來(lái)就要具體分析每一步是如何實(shí)現(xiàn)。
基本上到這里,孩子們都喜歡直接沖到電腦前開(kāi)始寫(xiě)程序,但是呢,往往一堆問(wèn)題,復(fù)雜點(diǎn)的任務(wù)更是寫(xiě)著寫(xiě)著就懵了。
雖然我們已經(jīng)分解了任務(wù),但只是一個(gè)初略的分解,具體每一步的如何實(shí)現(xiàn),前面的分解步驟是否有紕漏,是否合理,這些是需要我們具體來(lái)分析一下的。
這一步我們需要寫(xiě)出每個(gè)步驟的具體完成動(dòng)作,是那個(gè)傳感器在發(fā)揮作用,各個(gè)馬達(dá)應(yīng)該如何運(yùn)轉(zhuǎn)。如下入所示。


image.png

下面我們來(lái)具體分析一下。
記得還在初中的時(shí)候,在《智慧背囊》(暴露年齡了)里有這么個(gè)故事:有個(gè)記者采訪一個(gè)滑雪冠軍,問(wèn)他怎么學(xué)好滑雪,冠軍說(shuō):你要先知道怎么停下來(lái)。
就像永動(dòng)機(jī)是個(gè)偽命題一樣,我不認(rèn)為這世上有永遠(yuǎn)沒(méi)有結(jié)束的事,大到太陽(yáng),看似永恒,可是50億年后也會(huì)因?yàn)閮?nèi)部的氫元素全部耗盡,導(dǎo)致核心將發(fā)生坍縮。小到我們每天吃飯,我們不會(huì)一頓飯從早吃到晚,從今天吃到明天,當(dāng)我們飽了,不想吃了,或者飯吃完了,吃飯這個(gè)事也就結(jié)束了。
所以對(duì)于我們機(jī)器人任務(wù)的每一步,“你要先知道怎么停下來(lái)”,我們需要知道這一步什么時(shí)候結(jié)束。
以上節(jié)課的巡線任務(wù)為例。
第一步是直行。具體任務(wù)描述是從起點(diǎn)巡線到A點(diǎn)。這里其實(shí)有兩層含義:一個(gè)是巡線,一個(gè)是這一步的結(jié)束標(biāo)志是到達(dá)A點(diǎn)。如果不去關(guān)注每一步的結(jié)果,就會(huì)導(dǎo)致程序停留在這一步,無(wú)法結(jié)束。
那怎么判斷到達(dá)A點(diǎn)呢,A點(diǎn)處是一個(gè)直角,可以用光電來(lái)做遇黑判斷,單光電遇黑時(shí),就可以停下來(lái)結(jié)束這一步了。
然后在考慮巡線,巡線可以用單光電巡線來(lái)完成,一般到這個(gè)地步的孩子對(duì)單光電巡線都不陌生,不過(guò)這里就還是多啰嗦一下,因?yàn)閱喂怆娧簿€看似簡(jiǎn)單,但是還是很容易出錯(cuò)的。
單光電巡線根據(jù)光電在黑線的左邊還是右邊會(huì)有不一樣的走法,在左邊時(shí),遇黑要左轉(zhuǎn),否則右轉(zhuǎn),在右邊則是反過(guò)來(lái)。
上面這個(gè)過(guò)程看似復(fù)雜,但是我把這個(gè)過(guò)程總結(jié)為三個(gè)問(wèn)題:是我是誰(shuí)?我從哪里來(lái)?要到哪里去?開(kāi)玩笑的,是:終止條件是什么?終止?fàn)顟B(tài)是什么?這一步要干嘛?這是那個(gè)問(wèn)題又可以叫做三板斧,我自嗨一下,不用在意。

終止條件:右光電遇黑
終止?fàn)顟B(tài):停下
這步干嘛:黑線右邊巡線

弄清楚這三個(gè)問(wèn)題后,再具體看下這步干嘛怎么做

黑線右邊巡線:
          左光電遇黑則右轉(zhuǎn)
          否則左轉(zhuǎn)

文章剛開(kāi)始我說(shuō)這個(gè)環(huán)節(jié)我們要具體到每個(gè)光電每個(gè)馬達(dá)的狀態(tài),所以這步干嘛還要在細(xì)化:

黑線右邊巡線:
          左光電遇黑則右轉(zhuǎn)(左馬達(dá)動(dòng),右馬達(dá)不動(dòng))
          否則左轉(zhuǎn)(左馬達(dá)不動(dòng),右馬達(dá)動(dòng))

于是我們就可以把任務(wù)分析表給填好了,就是最開(kāi)始那張表。
有學(xué)生會(huì)說(shuō):老師,搞這么復(fù)雜干嘛?
因?yàn)榍懊娌贿@么分析的細(xì)致一點(diǎn),所有最后調(diào)試遇到的問(wèn)題都在這些細(xì)節(jié)里,馬達(dá)轉(zhuǎn)動(dòng)方向不對(duì),光電跟馬達(dá)的配合不當(dāng),等等。其實(shí)都可以通過(guò)這一步的分析來(lái)避免的。
按照上面的套路,我們把第二步的任務(wù)分析表也整出來(lái)。


image.png

這時(shí)候我們對(duì)比一下第一步跟第二步的終止條件會(huì)發(fā)現(xiàn),兩個(gè)都是右光電遇黑,這就意味著第二步的右轉(zhuǎn)在開(kāi)始的時(shí)候就結(jié)束了。真是出師未捷身先死,尷尬了。這里其實(shí)就是一個(gè)光電狀態(tài)的問(wèn)題,我們可以在第一步跟第二步之間增加一個(gè)小的環(huán)節(jié),讓光電離開(kāi)黑線上的狀態(tài)。


image.png

這里呢,有些學(xué)生喜歡把前沖這個(gè)動(dòng)作放在第一步的終止?fàn)顟B(tài)里,不是不行,但是我建議單獨(dú)設(shè)置一步,這樣使整個(gè)分析結(jié)果更加清晰明了,遇到問(wèn)題容易定位也容易修改。所以我們第一步的分解步驟,在這里就要做修改。
前進(jìn),前沖,右轉(zhuǎn),前進(jìn),前沖,左轉(zhuǎn),前進(jìn),前沖,右轉(zhuǎn),前進(jìn),停留2秒,后退,掉頭,前進(jìn),前沖,右轉(zhuǎn),前進(jìn)。
前三步的任務(wù)分析表如下圖所示,后面的步驟跟前面大同小異,用相同的辦法分析就行了。


image.png

限于篇幅,這里稍作補(bǔ)充下,對(duì)于經(jīng)驗(yàn)豐富的學(xué)生,他們其實(shí)會(huì)發(fā)現(xiàn),第一步的巡線其實(shí)可以從起點(diǎn)一步到B點(diǎn)的,因?yàn)閷?duì)于直角彎,單光電巡線完全可以在外側(cè)直接通過(guò),不需要分解成兩段直線。只要把雙光電放在黑線左側(cè),用右光電來(lái)巡線就行了。如果是這樣的話,我們的任務(wù)分解又要做修改了,我要去給老婆做飯了,沒(méi)時(shí)間了,這里就偷懶一下啦,還是按前面的步驟來(lái)吧。
下一篇就是要開(kāi)始寫(xiě)程序啦,下周見(jiàn)。

老規(guī)矩,可子鎮(zhèn)樓。


可子3.jpeg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • PID控制器是一種常用的控制技術(shù),常用于多種機(jī)械裝置(如車(chē)輛、機(jī)器人、火箭)中。用數(shù)學(xué)方式來(lái)描述PID控制器是非常...
    云淡天空閱讀 6,674評(píng)論 0 11
  • 這是如何用機(jī)器人編程教授計(jì)算思維的第一篇,今天我們來(lái)講講分解在機(jī)器人課堂的應(yīng)用。機(jī)器人是嚴(yán)格按照程序設(shè)計(jì)來(lái)運(yùn)行的,...
    Karen隆閱讀 1,549評(píng)論 1 2
  • 今天我們彩泥課上那叫一個(gè)開(kāi)心!這是開(kāi)學(xué)第一個(gè)彩泥課! 今天是我們李老師給我們上的彩泥課,老師交我們...
    dongyunhao閱讀 313評(píng)論 0 0
  • 題記:在這個(gè)社交為王的虛擬世界里,信任來(lái)的是那么得不易…… 劉寧還在思忖著自己入金的事,他想著報(bào)銷一回來(lái)就先入50...
    挫折當(dāng)存折閱讀 247評(píng)論 0 0
  • 在工作當(dāng)中我經(jīng)常會(huì)接觸到很多朋友,對(duì)于個(gè)人征信、信用卡的使用、互聯(lián)網(wǎng)貸款、包括個(gè)人融資等等工作和生活當(dāng)中的許多經(jīng)濟(jì)...
    o奚溪o閱讀 2,196評(píng)論 0 0

友情鏈接更多精彩內(nèi)容