Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 3995|回復: 0
打印 上一主題 下一主題

實驗機器人"小強一號"製作過程3

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-19 13:34:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗機器人「小強一號」製作過程(3)
作者:Mindroid 發佈時間:2008-05-09 02:39:56 來源:http://www.mindroid.com/

軟件設計
思路   
在進行代碼編寫之前,想找到一種簡介的實現低級智能機器人的方式。目前的工業機器人採用的是精確控制的方法,在程序中固化

每種處理邏輯。用程序員的思維來完成對機器人的操作。
對於程序員來說,機器人無非就是外接了物理傳感輸入和運動控制輸出的一台電腦,不管是64位多核CPU或者8位單片機,只是性能

的不同而已。理論上,都能通過程序設計來達到預定的目標。如果按照計算機上的普通程序來設計,那麼大量的功能代碼會相互耦

合,每次為了增加一個新的運動功能或者任務,都需要編製新的代碼,而新的代碼給原來的環路反饋系統帶來新的邏輯分支,所有

的步驟都得經過程序員的驗證和設計。這樣的設計對於精確計算的PC程序或者擅長固定場景精確動作的工業機器人來說,都沒有問

題。但是對於這裡要實現的「小強一號」機器人,是處在一個動態的變化環境當中,如果按照傳統的軟件設計邏輯,會存在大量耦

合的邏輯分支,導致程序擴展性很差。舉例來說,為了完成一個沿牆壁行走的功能,必須對各種傳感器輸入情況進行判斷,然後做

出預置的動作序列。



如果要執行的動作和需要判斷的情況很多,那麼程序邏輯分支就比較複雜,擴展性也比較差,有沒有更好的適合機器人軟件設計的

方法呢?
換一種思維來思考的話,我們要做的不是電腦程序,只是一個實驗機器人。這個實驗機器人能做到自然界昆蟲級的「智能」就很不

錯了。 試想,一隻螞蟻,一隻蟑螂會去思考這麼複雜的邏輯分支嗎?去考慮各種情況下應該採取的動作? 不太可能。我們用了複雜

的想法去解決簡單的事情。
機器人和計算機的主要區別在於,計算機是按照預先規劃的指令運行,而機器人需要根據變化的環境選擇合適動作。我們首先可以

簡化動作模型,我把機器人的執行任務分成3個層次:任務-》行為-》動作



任務——機器人完成的一個期望目標,比如「在一個範圍內收集地面上的垃圾」可以界定為一個機器人的任務。
行為——行為是對任務的分解,行為是機器人根據環境變化選擇要做什麼。比如碰到牆壁需要進行躲避。電源不足需要充電,就可

以劃分為一個行為。
動作——機器人最終控制電機等輸出設備做出的動作,比如前進,後退,轉彎。轉動攝像頭都可以劃分成一個動作單元。
說明:任務由一系列的行為構成;行為有一個或者多個動作組成,動作是立即執行的最小單元。在任意一個時刻,只有一個動作可

以得到執行。
軟件實現的對象就是分解出簡單的行為,針對每個行為單獨實現,互相之間無干涉、無耦合。當多個行為要輸出互相矛盾的動作時

,通過一個行為優先級表來決定優先級高的行為來做出動作。在這個思路中,參考了基於行為編程的理論,關於詳細的基於行為編

程的描述,可以在網上搜索「Behavior-based robotics」。
    通過這種設計思路,可以實現對動物反射特性的模擬,不需要把精力放在複雜的邏輯處理上,只需要根據分解出的基本行為實

現一個一個小的行為單元。每個行為單元只關心自己的傳感輸入和需要輸出的控制動作就行了。確定了設計思路,下一部分開始針

對小強一號來設計軟件了。

參考資料,有興趣的可以閱讀:
http://www-robotics.usc.edu/~maja/publications/mitcs.ps.gz   (這篇文章描述了如何分解行為,需要安裝 GSView)
http://www.research.ibm.com/people/j/jhc/pubs/jhc-design.pdf
http://www-robotics.usc.edu/~maja/bbs.html
《基於行為的機器人實戰指南》 中譯版

[ 本帖最後由 uucww 於 2008-5-19 18:26 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-24 02:10 , Processed in 0.174274 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表