閱讀976 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《仿人機器人原理與實戰》一2.4 行為鏈實驗進階

本節書摘來異步社區《仿人機器人原理與實戰》一書中的第2章 ,第2.4節,作者布萊恩·伯傑倫(Bryan Bergeron) 托馬斯B. 塔爾博特(Thomas B. Talbot) 王偉 魏洪興 劉斐 譯, 更多章節內容可以訪問雲棲社區“異步社區”公眾號查看。

2.4 行為鏈實驗進階

操作機械臂的一個挑戰是我們想要通過機械臂完全感知外界環境。由於實驗平台非常靈活和開放,人們會不由自主地增加顏色、聲音、震動或其他傳感器。下麵將選取一些值得考慮的改進方案。

2.4.1 絕對誤差參照

熱敏電阻T1很適合快速測量相對溫度。然而你可能需要對準確的絕對溫度進行測量,當溫度達到預設限定值上下(比如說2攝氏度的範圍)時觸發行為鏈。這個方案可以通過為一個熱敏電阻創建查詢表來實現。一個很簡單的方法是將熱敏電阻T1替換成固態絕對溫度傳感器,例如TMP36。圖2-9是用TMP36進行升級的原理圖。

9


TMP36的安裝就像塑封晶體管一樣再簡單不過了:一端接+5V,一端接地,中間端接模擬量輸入A1。圖2-10展示了裝在夾持器一個顎上的TMP36。注意為了安裝穩定起見,TMP36的扁平麵應與顎正對,或者扁平麵也可以朝內安裝以最大化接觸麵積,促進與物體的熱傳導。如果你選擇後一種朝向,那麼當物體不在平麵的絕對中心位置時,你必須在顎上做一些調整以防止TMP36滾動。

10


TMP36是一個隨溫度而變化的電位計,溫度的變化與電位器上觸點位置的變化成正比。中間端的輸出電壓與所測溫度成正比,比例係數是10 mV/°C,如下麵的公式所示:
溫度 (°C) = [Vout (mV) – 500]/10
在25°C 室溫下,傳感器供電為5V,輸出電壓是750 mV。在測試TMP36時,如果有一罐壓縮空氣會很棒,你能夠在兩秒鍾內釋放壓縮空氣以將TMP36從30°C降低到0°C,注意,將噴罐倒置可以使冷卻速度最大化。
你隻需要把之前的基於熱敏電阻的例子中的代碼做少量更改就能用於TMP36。更改後的代碼如清單2-2所示。
清單2-2 使用TMP36傳感器的行為鏈的Arduino代碼
q6
q7
q8
q9
q10

從上到下依次來看,程序的主要改變在於增加了TargetTMPC和CurrentTMPC兩個變量,都聲明為單精度浮點型變量。TargetTMPC是用攝氏溫度表示的目標溫度值,一旦達到目標溫度被夾物體就應被扔掉。就像前麵使用熱敏電阻時一樣,扔掉物體的有效溫度可以通過P1或P2來調整,P1和P2分別代表“皮質”抑製和“腎上腺素”激勵。
與在初始化時設定基準溫度不同,當前溫度被反複測量並與目標溫度相比較。溫度檢查函數TMPCheck()先將傳感器的輸出電壓轉換為溫度,然後將當前溫度與目標溫度相比較。比較結果用來設置溫度標誌位TMPFlag的值,當達到目標溫度時,標誌位置1。
與上一段代碼中應用的10kΩ熱敏電阻相比,TMP36更不穩定,它會偶爾輸出錯誤的過高或過低的值。TMP36的使用說明書要求我們在設備電源的+5V和地間連接一個0.1mF陶瓷盤式電容,但是這對於虛假讀數無濟於事。而且我們對許多TMP36設備做了測試,他們的表現都很類似。有一個改進辦法是在每次讀取溫度值時加一個5ms的延時,但這個方案的缺點是它或多或少會降低夾持器的閉合速度。
暫不考慮缺陷,準確檢測夾持物體的能力在很多條件下都有應用意義。除了安全方麵的應用,考慮一下一個有溫度測量能力的家政服務機器人的價值,它隻需接觸一下皮膚就能夠測出溫度,或者能夠在一個小數點範圍內確定你的洗澡水溫是否合適。

2.4.2 貓頭鷹

你想構建一個行為鏈,使夜間仿人機器人在黑暗環境中比在有光環境中反應更快嗎?用一個硫化鎘(CdS)光傳感器和一個10kΩ分壓電阻代替P2,如圖2-11所示。把光傳感器CdS1裝在一個不透明的容器中,這樣你就可以很容易地控製光強。在實驗過程中,開關小容器的蓋子與開關室內的燈相比更為方便也不易製造混亂。盡管在改進後的原理圖中應用的是熱敏電阻,但光傳感器既可以與熱敏電阻T1一同使用也可以與固態溫度傳感器TMP36一同使用。

11


CdS傳感器在黑暗中呈現的電阻阻值在300kΩ左右,在光照時則隻有10Ω左右。因此當CdS傳感器在光照條件下時,分壓電阻R3兩端的電壓最大。你可以不改變代碼的整體架構,而是通過改變光強來改變對扔物體行為的激勵作用。很可能需要改變P2Value的映射函數:
q11

與把輸入電壓映射到1~10這種粗略的範圍不同,需嚐試把CdS電壓映射到0~50或0~100。根據光源和環境光強,你會發現映射到一個更大的範圍能夠提高機器人對較小光強的敏感度。
如果使用Grove擴展板,增加CdS傳感器一個的簡單方法是用一個Grove光傳感器模塊,如圖2-12所示。除了標準的CdS傳感器,模塊有一個內置電阻和主動緩衝區,不需要外界電阻就可以直接讀取測量值。

12


如果你的電路要工作在光強變化較大的條件下,如打開和關閉裝著CdS傳感器的不透明的盒子,那麼你應當嚐試檢測光照的微弱變化。這裏我們就要用到最小可覺差(JND)的概念。你麵臨的挑戰是調整CdS傳感器的輸出權重,這樣以50%的概率恰可感知的光照變化能夠產生一個可比較的CdS輸出。
在這個實驗中,你應當使用暗室和單色光源,例如紅色的發光二極管和光強計(可以是電子測量儀的插件或獨立的光學模塊)。把最小可覺差映射到CdS傳感器的挑戰是電阻和光強之間的關係不是線性的,並且非線性關係與絕對光照強度有關,如圖2-13所示。

13


當然,如果你開始既改變光的顏色又改變光強(通常用人造光源),那麼你有另一個變量要考慮。人眼就像一個CdS單元,對於不同波長的光反應不同。因此可以用紅色、綠色或藍色的LED來減小光譜變化對光強變化的影響。
記住,目標是建立一個映射或者表格來模仿人眼的最小可覺差。如果這個任務在此時看上去有點困難,你可在閱讀完第4章關於光傳感器與眼睛的內容後再來考慮這個挑戰。

2.4.3 姿態調整

這個模塊需要一些想象力。根據性格坐標,設備的姿態和響應速度與控製力有關。例如性格強勢的機器人,其操作中或操作後的姿態應當在控製力上得分較高,在責任心上為負值,在情緒穩定性上居中,在坦率上是很小的負值。我們應如何用一些裝有電機和電子係統的塑料塊來實現這個功能呢?
這比你想象得更為簡單。晃動一下手臂,想象一個強勢、激進的人可能做出的反應。如果那個人撿起一個物體然後由於反射作用扔掉物體,她不會大叫 “啊”然後蜷成一團。相反,她可能會罵一兩句髒話(為負值的責任心),下意識地攥起拳頭準備進攻(控製力),然後忍著疼痛撿起物體(可能為負值的情緒穩定性)。
跳過那些髒話吧!我們繼續研究其他行為鏈。我們有必要用“拉–返回”的行為來替換“收回–延時–返回”的行為。另外,我們有必要擺出一個進攻性姿勢,而不是簡單地扔掉滾燙的物體。
用控製器和機械臂控製庫函數,為你的機械臂定義一個看上去有進攻性的姿態,例如夾持器向前、機械臂收緊、像蛇一樣準備進攻。當你完成這些後,再為性格中性軟弱的機器人做同樣的工作。圖2-14展示了我們定義的姿態。

14


用Dynamixel舵機很容易完成這方麵的設置,因為你可以將機械臂移動到喜歡的姿態,然後從舵機中讀取位置值。Lynxmotion的姿態應用也具有同樣功能。

最後更新:2017-06-21 10:32:20

  上一篇:go  《仿人機器人原理與實戰》一2.5 行為鏈“小魔怪”
  下一篇:go  澳洲大藥房天貓618戰績:爆款麵霜銷量夠一個妹子用13個世紀