2010年7月28日 星期三

將iPhone畫面抓到LabVIEW裡做即時影像分析

最近又完成了一個突破性的實驗,上次跟各位分享有關iPhone的加速規跟LabVIEW的結合,我一直很好奇,不知道其他iPhone也可不可以帶進來到LabVIEW裡使用,於是先從影像方面下手,看起來iPhone的相機畫面也可以帶進來到LabVIEW使用!

步驟很簡單:

1. 下載一個叫做iWebcamera的app,雖然不是免費的($4.99USD),但是這是現在目前我找到唯一能夠讓Windows的DirectX界面直接抓到iPhone的相機畫面。下載到iPhone之後,記得在Windows那端還要在安裝它的一個小小driver才能用。

http://itunes.apple.com/us/app/iwebcamera/id369617568?mt=8

對應Windows driver下載點:

http://www.drahtwerk.biz/EN/Products/iPhone/iWebcamera/Drivers.aspx

這個App原本是讓電腦上沒有安裝webcam的朋友們也可以透過這個app來用iPhone的相機來替代webcam,所以有了這個app,就直接可以用iPhone的畫面來接到MSN或skype來進行時訊。如果有灌NI Vision Acquisition Software的話,DirectX的相機應該也可以被MAX偵測到。以下則是我MAX的畫面:

未命名

沒想到MAX有抓到,並且按Grab也可以很順利的將畫面抓進來。

DSC00918

接著就把MAX關掉,直接用以前LabVIEW寫好的物件顏色追蹤程式來測試。這時候我是用IMAQdx的含式來寫的,相機指向MAX裡面所偵測到的相機名稱就好了。例如,抓紅色物件:

未命名2

從iPhone看到的畫面:

DSC00923

看來iPhone也是適合開發機器人的平臺! 很可惜,現在只缺一些I/O訊號,要不然iPhone就真的可以拿來當機器人的核心!

-John

2010年7月14日 星期三

RST非官方說明手冊 Part 4: 軟體設定與測試

現在,我們需要將所有的元件的軟體都安裝並設定好。我們先把焦點放在無線AP上,就像在家裡設定無線網路一樣,你可以將筆電和AP先用網路線對聯起來,或者是用筆電的無線網路搜尋這個AP的SSID然後跟它連線。無論用哪種方法,到最後都可以用瀏覽器指向它的預設IP http://192.168.11.1,這樣就可以進入AP的設定畫面。WCR-G54的預設username為”root”,密碼為空白。以下則是WCR-G54的設定畫面。

註: 不同廠商的AP會有不同預設IP和密碼,詳細規格請以廠商提供之文件為主。

clip_image002

在設定畫面裡,我們就可以更改AP的IP,或者改它廣播的SSID,以及是否要不要加密。我讓IP保留為預設的192.168.11.1,不過為了未來搜尋這個AP比較方便,我將SSID改為”RST Robot”,這樣就不會跟家裡或者學校其他無線網路搞混。

clip_image004

設定完成之後,就會看到像這樣的確認畫面:

clip_image006

接下來要為CompactRIO設定IP,請用桌面上的Measurement & Automation工具(簡稱MAX)來進行設定:

clip_image008

將MAX開啟,應該就會在左半邊的畫面看到Remote Systems»0.0.0.0。這是CompactRIO的預設IP,現在我們就把它改為跟AP一樣的subnet,也就是說,IP address前三碼一樣,最後一碼不一樣。例如,在IP address的欄位,直接填入192.168.11.3,subnet mask填入255.255.255.0,gateway和DNS Server都可以留空白,設定完成了之後就可以按Apply按鈕來讓新IP地址生效。

image

接下來,需要下載這個小工具,它是一個精靈安裝程式,可以快速的完成CompactRIO剩下的設定。下載點:

NI Robotics Hardware Setup.zip

開啟RoboticsHWSetup.exe,看到了以下第一個畫面,就可以按Next繼續。

clip_image012

Step 2會詢問現在你的硬體是不是NI的Robotics Starter Kit,這裡的格子不要勾。

註: NI Robotics Starter Kit為NI的小型機器人平臺學習套件,有興趣可以到http://sine.ni.com/nips/cds/view/p/lang/zht/nid/208010多加了解。

clip_image014

Step 3會自動偵測網路subnet裡的CompactRIO系統,給它幾秒鐘來掃描,偵測到了之後就可以進行下一步。

clip_image016

Step 4將會把一些CompactRIO本身需要的軟體核心灌進CompactRIO裡,這部份可能要等一兩分鐘才會完成。

clip_image018

完成了之後,可以查看CompactRIO的第四個LED是否有在閃爍,若有,代表安裝程序正確!

clip_image020

最後Step 5會問你要不要用LabVIEW開一個Project,這個不用勾,直接按Exit就可以了。

clip_image022

接著我們也要把AXIS 206的IP設定一下。AXIS 206背面有貼一個貼紙,上面寫著它的預設IP以及Username/Password。例如,我手上這款是192.168.0.112,Username為root,密碼為pass。

clip_image024

用瀏覽器指向http://x.x.x.x,然後以提供的帳戶和密碼登錄,就會看到相機的即時影像。

clip_image026

選擇右上角的Setup選項,再點選左邊的TCP/IP選項,就可以設定AXIS 206的IP。我把它設為192.168.11.4,subnet mask 255.255.255.0。設定好了之後,再按最下面的Save按鈕。

image

再來還有一個選項要處理的,就是點選左邊Users選項,然後把Enable Anonymous Login選項打勾。這會讓以後我們要用相機的時候,不用每次都要key in帳戶和密碼。設定好了之後,再按最下面的Save按鈕。

image

終於,這一切都設定完了之後,可以開始用LabVIEW來測試一下一切是否正常。這裡有個我寫的LabVIEW測試程式,各位可以從這裡下載:

RST Robot 6.10.2010.zip

請開”RST Robot 2010”的LabVIEW Project檔,開啟了應該會看到像這樣的畫面:

clip_image032

接著,開啟CompactRIO底下的Motor Remote Control Main.vi。在執行的時候,這個程式會讓CompactRIO接收由PC筆電傳來的馬達速度指令。按下左上角的執行按鈕,程式就會下載到CompactRIO並執行。

image

接下來,再開啟My Computer底下的Joystick Control.vi。這個程式負責從一個USB搖桿擷取指令,然後把馬達速度傳給CompactRIO來執行。一樣,按下左上角的執行按鈕,程式就會執行。這時候你就可以用你的USB類比搖桿,來控制RST平臺的前進,後退,左右轉,並且還可以依據你類比搖桿的位置來控制RST平臺的相對移動速度。

clip_image036

最後一個程式則是RST Object Tracking Vision Demo.vi,這個程式會利用AXIS 206所擷取到的影像來做顏色辨識,並將RST平臺左右移動,讓RST平臺可以將物件鎖定在正前方。執行之前先把Joystick Control.vi停止,這樣兩個程式才不會衝突到。更多有關這個Vision程式的原理以及操作說明可以參考我之前的文章:

HSL 色彩空間原理

AXIS 206 Camera 測試

clip_image038

好啦,如果這兩個demo程式跑起來順利的話,表示我們所有的線路和軟體設定都已經處理好了。接下來,就等著你去發揮你的創意,來挑戰IROHCS 2010大專盃的機器人競賽!

補充一下,在提供的範例Project裡,有一個資料夾叫做RST Control VIs,這裡面是些基本的RST平臺控制subVI,方便我們去進行程式撰寫或修改,先解釋一下這些VI的用途:

clip_image002[1]

clip_image004[1]

Open RST: 開啟對RST平臺的連線。在針對RST平臺下任何指令之前,一定要先執行這個VI。

Control Axis 1: 控制左邊馬達的速度(單位是deg/s來算,正數為前進方向,負數為後退。)

Control Axis 2: 同上,不過控制右邊馬達。

Control Both Axes: 同上,不過同時控制左右馬達

Stop Axis 1: 停止左邊馬達。

Stop Axis 2: 停止右邊馬達。

Stop Both Axes: 同時停止左右馬達

Close RST: 釋放RST平臺的連線,準備結束程式。

祝各位一切順利,馬到成功,最重要的是: Have fun!

-John

2010年7月13日 星期二

RST非官方說明手冊 Part 3: 控制訊號和通訊

好,所有的元件都有了電之後,接下來我們要把RST平臺的控制架構建立好。這個階段分為兩個部份: 從CompactRIO接訊號到馬達驅動器,以及把每個元件的網路通訊連接起來。

clip_image002

首先我們先了解一下,RST平臺的伺服馬達控制方式。它的馬達出廠的時候是設定為位置控制模式,換句話說,驅動器可以接受0V-5V脈衝的訊號,驅動器每偵測到一個脈衝(pulse),馬達就會移動一步。RST馬達出廠設定為一圈12,500步,所以當我們送一個12,500 Hz的方波訊號給驅動器的時候,馬達就會以每秒一圈的速度在跑。同理,如果方波訊號頻率是25,000 Hz,那就是每秒兩圈的速度。

那要如何從CompactRIO送方波訊號給馬達驅動器呢? NI 9403這個模組是個標準0V-5V DIO模組,它具有32個channel,透過LabVIEW的程式設定我們就可以控制它輸出的方波頻率。不過LabVIEW的部份我們先不談,首先我們要先把一些線接好。從9403到馬達驅動器有四個訊號是一定要接的:

註: 為了方便,我們就把左邊馬達稱為AXIS 1,右邊馬達稱為AXIS 2

  • AXIS 1的 STEP (PLS) 訊號
  • AXIS 1的 DIR 訊號
  • AXIS 2的 STEP(PLS) 訊號
  • AXIS 2的 DIR 訊號

STEP(PLS)為脈衝訊號,DIR為馬達轉向控制(正轉或反轉。) 這裡是馬達驅動器與9403的pin圖:

image

於是先從AXIS 1而言,我們要把從9403的P0.0接到馬達的PLS+,P0.1接到馬達的DIR+,9403的COM再接到PLS-和DIR-。AXIS 2也是一樣。為了方便,我建議用個37-pin 公對母的cable接到一個37-pin的接線盒,然後再從接線盒把線接到馬達驅動器。或者如果沒有一個接線盒的話,也可以考慮直接用杜邦線來接。

image

到時候就拉兩個37-pin的公接頭出來,兩邊馬達各一個。

clip_image008

再把37-pin cable的另外一頭從RST平臺機身的鐵板拉上來到第二層,這時候我們就準備要把當初拆下來的第一層鐵板裝回去了…

clip_image010

不過在裝回去之前,可以先在AP上接兩條網路線,插到哪個插孔無所謂,這兩條一條是要接CompactRIO,另外一條接AXIS 206相機。

clip_image012

把第一層鐵板鎖回去之後,記得把所有的相關的線材都拉出來到最上層。

clip_image014

把37-pin接到CompactRIO的9403模組,網路線和電源接上CompactRIO,然後把AXIS 206的網路線和電源也接上。再用一些雙面膠把相機和CompactRIO固定在鐵板,恭喜你,控制訊號和通訊的架構就搞定了!

clip_image016

呼,玩了老半天,都沒有開始碰到軟體的部份。下個階段就要把每個元件的軟體先設定好,然後再用LabVIEW程式來做基本測試嘍。

-John

2010年7月12日 星期一

RST非官方說明手冊 Part 2: 其他配件電力整合

好吧,上回我們已經把CompactRIO的電力系統準備好了,接下來我們可以準備其它配件的供電方式。由於Wireless AP以及AXIS 206相機都是使用5V的電源,這時候就需要在RST平臺上多加一個DC-DC Converter來幫我們做電壓轉換。

clip_image002

(在上一步已經接好的CompactRIO,其實在這個階段可以先拔掉,等我們把這些配件的電力都準備好了之後可以再放回去。)

我們選擇的這款DC-DC Converter是VIA PWM-M120G,原用途是小型電腦的電壓轉換器,不過拿來做RST機器人的電力配件也不錯。它可以接受12V-24V的電壓輸入,然後同時提供3.3V,5V以及12V的電壓輸出。它有包含一個DC插頭轉接板,以及一些ATX主機板的電線。

clip_image004

clip_image006

光看power board的話,它有一個標準ATX 20-pin的接頭,以及一個4-pin的接頭。Pin圖如下:

                clip_image008                   clip_image010

在使用之前,PW_ON和GND一定要先短路,否則power board是不會有電壓輸出的(這應該是個安全措施吧。)要短路很簡單,只要用條杜邦線把兩個pin接起來就好。

clip_image012

接下來,要將這個power board連接到RST的電力有很多方法,不過我想最簡單的是從提供的4-pin cable下手。將其中一頭剪掉 …

clip_image014

我們只需要一條紅線,一條黑線,所以我把中間兩條也剪掉了。我在線上加了兩個Y形端子,方便我們來接到配電盤。

clip_image016

準備一片厚紙板,剪成剛好power board的尺寸,然後再用雙面膠帶把厚紙板黏在power board下面。這是為了避免power board跟鐵的RST平臺機身短路。

clip_image018

再用雙面膠把power board和厚紙板的組合黏在RST平臺上(如圖),然後將剛才的Y型端子接上配電盤,最後將4-pin接頭接起來。

clip_image020

如果暫時把RST開關打關的話,用電表來量power board的電壓輸出就會看到一些反應了。我剛好量了一下5V的pin,看起來電壓是OK的。Power board整合完畢!

clip_image022

接著剩下來的配件就簡單了。我們先從無線AP開始。這款Buffalo WCR-G54是市面上算比較小的一款AP,穩定度也不錯,除了提供無線網路以外,並同時提供1+3個有線LAN接頭,所以擴充性也很高。它的包裝:

clip_image024

盒子裡面包含: AP,網路線,還有變壓器。

clip_image026

變壓器以後就可以收起來了,因為我們要直接用power board給的電。這時候就要把一些DC插頭拿出來跟變壓器的DC插頭尺寸比對一下,最好是能夠找到最相似的。如果可以找到圖中像左邊的這種DC插頭延伸線,那會更方便。

clip_image028

拿出好用的雙面膠,在AP的下面貼幾條,然後再把AP貼上RST平臺吧!

clip_image030clip_image032

接著再將DC延伸線的正負端接上power board其中一組5V和GND電源輸出。如果需要的話,可以用剝線鉗剝掉一公分的線,然後再壓兩個杜邦接頭。記得要確認DC接頭到底是「內正外負」,還是「外正內負」,如果正負接錯的話,搞不好會把AP燒壞。

clip_image034

接上的模樣:

clip_image036

保持整齊,把一些線用膠帶固定住。這時候可以再把RST平臺開關打開測試一下,AP上的LED應該就會亮起來嘍!

clip_image038

最後,來把乙太網路攝影機的電力也加上去吧。這是AXIS 206的包裝。註: 據說AXIS這款相機已經快面臨停產,不過其他AXIS系列相機也可和CompactRIO相容,本人有測過206的替代品AXIS M1011相機,一樣也是可以用。

clip_image040

裡面有相機和變壓器,簡簡單單的。

clip_image042

一樣把變壓器拿出來看看,找一個跟它一樣大小的DC接頭。

clip_image044

就如AP那樣,把相機的DC線接到power board的另一組5V輸出。RST平臺開關打開,相機前面的紅色LED就會亮個幾秒鐘(這代表相機啟動狀態),接著它就會以綠色LED顯示(代表相機持續運作狀態。)

clip_image046

恭喜嘍,這時候所有的基本配件都已經有了電。接著在下一個章節,我們要來看這些配件之間的通訊該如何串起來!

-John