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


《仿人機器人原理與實戰》一1.5 反射弧“小魔怪”

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

1.5 反射弧“小魔怪”

如上所述,這裏給出的是最簡單的機器人電路。你也許注意到例子裏並沒有用中斷或者複雜的算法。毫無疑問,將大量代碼減少到幾行是有可能的,且能夠實現位翻轉操作,希望你能做到。但是,對我們的目的來說,用簡單的整數運算就能達到目的了。
然而在實踐中,即使簡單的機器人也會被貼上“多學科綜合”和“問題重生”的標簽。因此,機器人偶爾也會有小故障。假設一個舵機在不規律地運行,有時會產生流暢的反射,有時隻是跳動幾秒鍾。代碼可能是完美的,布線也是無可挑剔的。以上這些條件對於一個機器人的完全正常工作是必要的,但卻不是充分條件。
在編程中0和1都是相當標準的,但是每一個物理裝置都是獨一無二的,甚至是一個瞬時接觸開關。此外,即使是最簡單的操作方法在操作的前幾毫秒內也會出現混沌。拿瞬時按鈕S1來說。當按鈕處於按下狀態時,電觸點相互之間勐烈撞擊之後快速反彈,在前幾毫秒內形成約100多次電弧。如果微控製器采樣頻率足夠高,它就會記錄下相互矛盾的數據,例如第一次讀數為開,接下來的兩次或三次讀數為閉。
可以用硬件方法或軟件方法防止開關反跳,從而減少讀數抖動。在硬件方麵,按照電阻–電容(RC)濾波器的形式增加電阻和電容,可以節省處理器時間,但需要電路板空間和額外的器件花銷。在軟件方麵,隻需要開關穩定下來,我們可以編寫一個單獨的延遲(delay)聲明來實現。然而,當一個反射弧涉及多個傳感器時,僅僅等待微控製器完全關閉並不是最好的方法。
當機器人工作異常時,另一個需要檢查的是電源供應。來自舵機的故障會影響微控製器的供電嗎?如果你不確定,可以考慮在Arduino的電源接點上安裝旁路電容器或者給舵機和微處理器單獨供電。
最重要的是要知道一些簡單的零件並不是完美的,更不用說複雜的傳感器。當你調試仿人機器人或其他機器人的電路和軟件時,要研究和理解零件的運行原理,特別是在打開和關閉時,算法往往容易出錯。

最後更新:2017-06-21 10:02:16

  上一篇:go  想和太陽肩並肩?扒一扒那些上天入海的阿裏小二
  下一篇:go  《仿人機器人原理與實戰》一1.4 反射弧實驗進階