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

2010年11月14日 星期日

龍的氣功在哪裡? - 用LabVIEW擷取龍的波動拳位置

最近年底在趕一些LabVIEW的案子,LabVIEW已經寫的不眠不休了,昨天晚上還做到有block diagram的惡夢,好像是老天爺在跟我講要放輕鬆吧。不過身為一個新世代宅男,平常我們舒解壓力就應該是靠打電動吧,不過在舒解壓力的同時,當然也不能忘了秉持分享LabVIEW的宗旨,所以剛好索性拿了個剛借來的EasyCap影音擷取卡,然後跟最近不常玩的Xbox360做一個展示。這個EasyCap真的很棒,才兩三百塊而已,就可以把AV訊號抓進來到Windows,MAX也有支援哦!

image

通常龍的氣功顏色都是一個很鮮艷的藍色,我們正是可以靠這樣鮮艷的顏色和背景的對比把這個氣功的面積給抓出來。詳細步驟請看以下影片。

 

我承認,這個LabVIEW程式真的蠻無聊的,不過至少各位可以發揮想像力,其實像這種物件追蹤的應用還蠻多的。下次教影像分析的課程,我應該會把Xbox也帶進來,如果我講的太無聊的話,至少還有Xbox可以玩,呵呵。

大家對EasyCap這個東西有興趣的話,也可以看看他的開箱文。

開箱文- EasyCap 影音擷取卡- 開箱& 測試-

-John

2010年11月7日 星期日

TIROS 2010 機器人展覽照片

上個月除了機器人競賽圓滿落幕以外,TIROS展覽這邊我們倒是看到蠻多各式各樣的機器人,在這邊John把私藏的圖片放下來給大家看,等之後有時間再一個一個跟大家好好講解吧!

tiros-05 tiros-07 tiros-09 tiros-13 tiros-14 tiros-16 tiros-21 tiros-22 tiros-23 tiros-24 tiros-27 tiros-32 tiros-33 tiros-34 tiros-42 tiros-01 tiros-02 tiros-03

-John

2010年10月31日 星期日

iPhone也可以跑LabVIEW?

最近John真的是迷上了愛瘋的千奇百怪的功能,之前已經驗證出如何把iPhone的加速規資料傳送到LabVIEW(請看這兒),但是可惜啊,Apple的作業系統還是很封閉,當然我是很想直接把LabVIEW程式放到iPhone裡讓它去跑,可是好像這一部份一直沒辦法實現 …

直到今天!

睿柏科技隆重推出: LabVIEW for Apple iPhone Module 2010!

所有各位所熟悉的LabVIEW函式,都能夠在iPhone環境開發並執行!

建議售價: NTD XXXXX

預購專線: 請直接在部落格上留言,會有客服人員跟您聯絡!

 IMG_0676 IMG_0677

IMG_0678

有看到破錠嗎?

眼快的同學從以上的圖片中可能已經看出了我的漏洞,其實市面上已經有很多付費以及免費的遠端桌面軟體,是可以讓iPhone直接連上一個正在跑LabVIEW的電腦。用遠端桌面連上電腦的話,我們就不用擔心iPhone能不能支援LabVIEW,在這樣的應用下,iPhone只不過是個遙控器,讓我們可以操控華麗的LabVIEW人機界面。不過缺點當然是,程式還是在PC端執行,所以還是要有臺PC才能玩,iPhone不能獨立作業。

以機器人的控制而言,這又多添加了一些有趣的機器人操控方式。如果有臺iPad的話,哇,那螢幕又不是更大了嗎? 可惜手邊沒有臺iPad啊,殘念。

需要免費的遠端桌面軟體,可以看看www.teamviewer.com,他們還有直接做iPhone和iPad的相關app,我就是用這個在外面「行騙」的,呵呵 :-)

-John

2010年10月25日 星期一

IROHCS 2010 機器人競賽賽後轉播

各位久違了,最近真的是當了一個很不盡責的站長,好像離上一次的文章發表已經有足足一個月多的時間,不過各位放心,John都有在偷偷的做筆記,在為未來的文章內容做準備。上個禮拜真是忙翻了,不但是有台北的機器人展覽要顧,同時禮拜五又是IROHCS 2010大專盃的總決賽,John的電話量瞬間暴增,每天手機都要早晚充電一次才夠用。上禮拜五真是精彩啊! IROHCS 籃球機器人總決賽賽,由初賽的12組當中,有4組晉級到決賽,再加上大會邀請了兩組大陸隊伍(北京清華大學,上海交通大學),由這六組來決一勝負,爭奪前三名的名次和獎金。今年的題目,除了包含機器人自主取球並傳遞至球員以外,還有個特別加分題,就是將一個排球射進一個小型的籃框。當John幾個月前看到題目時,真的是有點傻眼,要機器人傳球就已經很困難了,還要射球?! 這根本是難上加難。

不過,今年度倒是新增了一些蠻有創意的作品。去年冠軍隊伍台大電機系使用的是拋球的機構,在今年份我們也看到了許多類似的設計。其實這個競賽比較有趣的部份是,機器人的穩定度不是唯一奪冠的要素,競賽有一部份的分數還是要靠人把籃球射進籃框。現在就讓我們來看看,這次競賽的作品吧!

崑山科技大學: 感覺上來勢洶洶,機器人上準備了一些超大的馬達,好像除了籃球以外,真正的石頭也可以投。很可惜這參加隊伍沒有仔細看機器人重量的限制,他們的機器人雖然力道很強,但是還是被取消了得分資格。

IMG_0641IMG_0642

明新科技大學: 這臺機器人採用的不是一般鏟球的方式來取球,而是將手臂放下來用夾的方式。

IMG_0644

義守大學: 為節省成本,這組採用LEGO NXT為控制核心,然後以TETRIX擴充套件來添加手臂。

IMG_0650

台灣大學: 上一次競賽的衛冕者,這次修改了機構,採用比較長的手臂設計,若馬達力量足夠,能夠將籃球拋出更遠的距離。

IMG_0651

建國科技大學: 這應該是我看過線最多的一個作品,他們在機器人上背了一罐壓縮空氣,成為他們機器人的射球動力來源。不過好像後來,真的有一條線不小心掉了…

IMG_0652

台灣科技大學: 機構採取木板組裝,取球的時候,球會「坐電梯」來到機器人的上方,然後再經由彈簧拋出去。

IMG_0655

上海交通大學: 這可能是我看過最專業的作品,連他的馬達都用的是諧和式減速機(harmonic drive)在跑,連手臂降下來的時候都會嗡嗡做響,讓我差點以為變形金剛來了!

IMG_0662

在決賽的最後幾會合裡,分數已經幾乎不分上下,上海交通決定挑戰加分會合: 將排球射進籃球框裡! 以下是剛好捕捉到的影片,真是令人熱血沸騰的一刻!


經由這次競賽,我們看到了很多隊伍的技術突破,希望在明年度的競賽能夠再看到精彩的機器人脫穎而出!

-John

2010年9月11日 星期六

做系統整合商的宿命

睿柏科技創立以來三個月,這段期間對我來說應該是一連串的震撼教育…之前有許多朋友一直警告我,你確定你要創業嗎? 你的獲利模式有沒有想清楚? 當時抱著滿懷的衝勁,秉持著「船到橋頭自然直」的理念,只能一直跟自己說沒關係,反正失敗也是一種嘗試,大不了回去找工作就好,當時的我還是很鐵齒,反正大家都抱著等看好戲的眼光,就好像電影情節裡的年輕人從鄉下跑到都市裡闖天下一樣,無論多失敗,總不能輕易的就這樣回家吧? 然而,電影和現實生活總有一段距離,我承認我是個浪漫主義的人,但是最近的種種真的讓我看清了商場上的一些人情冷暖。

今天剛好在我家附近的一家麵線攤排隊買麵線 (我跟我老婆都叫這攤ㄎˉㄤ ㄎˉㄤ,因為老闆以前都在下午的時候把攤子在馬路上推來推去然後一邊敲鐵碗,反正我們只要聽到ㄎˉㄤ ㄎˉㄤ就知道麵線出來賣了。) 最近老闆看起來臉很臭,可能是因為最近他已經改租了個小店面吧,不用在馬路上閃卡車。生意還是一樣很好,可是排他的麵線要排超久的,他平均撈一碗麵線至少要好幾分鐘,我後面排了一大堆人,每一個跑來就直接跟他喊要什麼要什麼,他一個人也記不清楚,時常把不同人要的東西搞混,他也沒請人幫忙,我就這樣眼睜睜地的看著他錢越收越多,可是臉卻越來越臭。或許他曾經愛賣麵線吧? 或是曾經他都會對客人笑? 現在跟他買麵線都是一種折磨,站在那邊等又沒冷氣,終於等到的時候還怕他加錯料,付錢的時候還要看他兇巴巴的,所以現在除非我老婆叫我買,我幾乎都不去那攤光顧了。

後來想想,我會不會有一天也落成同樣的下場? 會不會光是公司瑣碎的事情,打報價單,開發票,記帳,跑客戶,寫proposal,也一樣把我的臉拖垮? 現在開始體會到,以前公司付你薪水,你的時間是公司的。現在客戶給你錢賺,你的時間是客戶的。除此之外,還會有一大堆意想不到的狀況等著你去救火,還好現在是忙到沒什麼時間來反省,不過等到事情少一點的時候,我覺得那時候才開始會發現自己經營模式的缺陷。

最近在談一個案子,客戶委託他比較熟的一個老業務來跟我談細節,我跟他素不相識,毫無瓜葛,他來見到我劈頭就罵我這個人有多爛多爛,規劃什麼鳥案子,害客戶送上去給老闆看被打回來…我說好,我該怎麼修正呢? 結果又是一連串的惡言伺候,沒想到這年頭罵人還可以外包,早知道我們公司也來接這塊業務算了,說不定還比較好玩。

於是,最近在揣摩的想法是,到底客戶等於或不等於朋友? 或許這就像老闆是不是朋友一樣的概念,保持表面的和平但永遠是皮笑肉不笑。等到那一天你為客戶無私的付出,哪天他為了自己利益把你賣了你還在幫他數錢,我想這才是最高境界的經營方式,就是當個默默付出的小女人而不求回報,如果這樣公司都還能活下來,那才真的很神,不如去開慈善基金會算了。

發洩完畢,繼續寫程式。

2010年8月22日 星期日

機器人組BAND

慘了,有人已經開始用機器人來組BAND了,不知道那天周董會被機器人取代掉,請看: