2011年1月25日 星期二

會馬殺雞的機器人─WheeMe

 

文章來源:Yahoo!奇摩 發表時間:2010/12/03

會馬殺雞的機器人─WheeMe

當你倒臥在沙發上看電視、或趴在軟墊上聽音樂時,如果有人貼心地幫你按摩一下,那肯定是種無上的享受。當然,如果有人願意做這件事,那是再好不過了;假如眼前沒有這樣的志願者,別擔心,就讓機器人來幫你按摩一下吧!

WheeMe是個會讓你通體舒暢的機器人

別以為這時候會走出一個巨大的人形機器來虐待你,畢竟如同某手機大廠的名言:科技始終來自於人性。由DreamBots公司所推出的WheeMe,是個手掌般大小、有如可愛小瓢蟲一般的機器人,它能在你的背上或腹部四處遊走,以十分溫柔與緩慢的速度,很有耐心地按摩它所經過的每一個地方;在為你服務的時候,WheeMe會十分地安靜,而且你也不必擔心它會摔落到地面,因為在斜度過大的地方,它會自己倒退回安全處。

三顆3號電池就可以驅動WheeMe

或許你會以為,WheeMe是以自身的重量來產生按壓的效果;其實WheeMe並不重,只有300多克而已。它之所以能夠讓你通體舒暢,主要是它會產生震動,並透過輪子上的薄片施壓,產生按摩的作用。官方表示,WheeMe適用於身體上有著大塊平面的部分,像是你的背部或是腹部等位置。WheeMe的動力是來自於三顆3號電池,因此沒有電線等惱人的束縛。而這玩意兒也不需要搖控器,因為它會隨機性地四處遊走,因此並不需要另一個人協助操作。而且保養的方式也很簡單,只要用乾布清潔一下輪子就可以了。

不需要別人幫忙,WheeMe就能幫你按摩

在官網釋出的見證影片中,每個試用者都笑開懷;雖然我們難以體會實際的效果,不過這樣的按摩機器人還是蠻討喜的。心動嗎?明年初就會正式開賣了唷~

圖片來源:DreamBots公司官網

2011年1月19日 星期三

Visual Servoing: 利用LabVIEW進行影像軌道追蹤

 

天啊,沒想到時間過得真快,一下子就跨到2011年來,John真的是很慚愧,好像最近blog都沒有在update,不過為了幫各位準備很棒的內容,我還是希望能夠秉持先求質,再求量的原則。這次為大家準備的是我最近在研究的機器人影像處理專題,希望對大家有所幫助。

我們都知道,網路上已經有很多有關循跡機器人(Line-following robot)的範例,大部份其實都是用LEGO NXT和光感應器來做循跡的動作。原理很簡單,假設地上貼了一條黑色膠帶,當往地面指的光感應器經過了這條黑線,光感應器就會回傳不同的反應值,由此機器人就可以判斷左右行走的策略。一般的程式應該會有像這樣的邏輯:

while

if (lightsensor <= threshold)

turn left

else

turn right

當然,只用光感應器會有一些限制…光感應器的感測距離沒有很遠,接收器離地面的距離通常要在5cm以內才能擷取到有意義的反應。換言之,機器人必須已經接近軌道才能去追隨它。假設機器人離軌道還有一段距離,那這該怎麼辦呢?

理想中,如果我們有個相機能夠往前方拍攝,這樣機器人說不定就能夠「預測」軌道的位置,如果機器人離軌道還有一段距離,它就可以自主搜尋軌道方向並往其方向前進。(*為達到這目的當然還有很多其它做法,不過以這次的分享我們先以影像來探討解決方案。)

用相機來拍聽起來很簡單,但是整個演算法計算過程其實是有很多要考量的。我們可以先把這問題先簡化 … 在之前的文章我有分享過用LabVIEW做影像物件追蹤 (ex 1 2。) 基本概念是,如果可以取得物件的X座標,那麼我們可以拿這座標和畫面的中心點做比對,例如一張640x480的畫面的橫軸中心點為320 (因為640/2=320),如果物件的X座標是400,那機器人應該要往右轉,若座標為200,那就應該要左轉,這時候機器人的行為就會像之前的LEGO NXT循跡機器人,它會隨著物件的相對位置來調整它的行走方向。

如果我們要追蹤的是一條線而不是一個單一物件,我們必須要先對畫面做些前處理。在之前的物件範例,我們把物件的位置收斂成畫面上的一個單一中心點。以線來講的話,我們可以抓這條線與畫面下方的交叉點為機器人的行走方向。為增加此範例的複雜度,我們乾脆用兩條平行的線來做示範。

在這兒先給各位看我是如何從彩色畫面中抓到線與畫面下方的交叉點位置。首先這是原始畫面(我在書房地板上貼了兩條平行的白膠帶):

original

1. 先進行色彩HSL二值化,將白色的物件先獨立出來。二值化的參數則是可以從Vision Assistant的互動式界面來調的。若不了解怎麼調參數,請參考這篇文章: http://riobotics.blogspot.com/2009/06/hsl.html

 threshold

2. 畫面中難免會有一些其它相同顏色的物件,這時候再用個Convex Hull函式,把小物件和雜訊添滿。

morphology

3. 看起來我們的「線」和其它的物件有個很明顯的差異,「線」看起來都是細細長長的,只要不是「線」的物件都看起來圓圓肥肥的。NI Vision的particle filter函式裡面有個篩選條件叫做elongation factor,意思是說,越細越長的物件,它的elongation factor的分數會越高。我們可以用particle filter把elongation分數較低的物件濾掉。

particle filter 1

4. 嗯,看起來偶爾還是會有漏網之魚。左邊多出來的物件應該可以靠它的高度(Height)把它濾掉,也是一樣用particle filter。

particle filter 2

5. 呼,畫面經過了一番處理,終於只剩下我們需要的兩條線了。我們可以再用Particle Analysis的Max Feret Diameter Start和Max Feret Diameter End把線的兩端X,Y回傳回來。如果需要的話,可以再加一個Bisecting Line含式來計算兩條線之間的中心線。再加一些overlay的含式,就可以把這些資料重疊在畫面上。現在所回傳的三個數據是線與畫面下方邊緣交叉的X座標。

image

現在是還沒有時間把這個演算法套在一個實際車體上來測試,不過近期之內應該會完成,到時候會拍幾個影片給大家參考。基本上,只要把中心線的X座標鎖定在畫面的中心320,車體就會隨著軌道的方向進行了。

軌跡追蹤 Vision Assistant 範例.zip

軌跡追蹤 LabVIEW 範例.zip

(這個LabVIEW的檔案會比較大,差不多80MB,因為我有附了一些測試的AVI影片)

-John

(4/14/2011 更新:)

以上演算法實際上到底跑起來效果如何呢? 我們在一個小型的機器人平臺上 Easy Robot來驗證演算法這個演算法的實用性。我們先用一條線來代表軌跡。在影片裡,請注意當機器人尋找軌跡時,後面的惰輪幾乎是完全壓在線上的,代表此機器人的準確度。

嗯,測試結果比想像中的還好。可以出貨了!

-John