Tag Archives: processing

[Processing匯入OpneCV視覺函式庫] 臉孔追蹤小專題

作者/攝影  曾吉弘
時間  3小時
成本
  • Webcam
難度  * * * *
材料表
  • 個人電腦
  • Webcam 或筆電內建攝影鏡頭
  • Processing IDE

本文要介紹如何在 Processing 中匯入OpenCV視覺函式庫,並做到臉孔追蹤的效果。

 

這比建置完整的OpenCV環境做法簡單多了,但是功能相對也會比完整的openCV環境來得少,就看您個人的需求囉。其實 Processing 的程式碼都很簡潔,也很容易做出漂亮的介面,是阿吉老師上課很喜歡的。Processing結合Arduino也很簡單。

 

硬體

請將#1伺服機的訊號腳位接到Arduino的#9腳位,用於控制PTZ平台的水平方向移動(Pan)

請將#2伺服機的訊號腳位接到Arduino的#11腳位,用於控制PTZ平台的垂直方向移動(Tilt)。其餘分別接電接地完成即可。

View post on imgur.com

示意圖(圖片來源 adafruit 與 sparkfun.com):

View post on imgur.com

View post on imgur.com

您可由 thingiverse這樣的網站找到更多的PTZ平台設計

 

Processing設定

1.下載Processing

2.開啟 Sketch → Import Library…   Add Library:在跳出選單中下載openCV, processing video函式庫

View post on imgur.com

View post on imgur.com

View post on imgur.com

3.下載Arduino函式庫,完成之後可以在 File → Examples 看到相關範例,都可以直接玩玩看喔

 

View post on imgur.com

4.開啟範例程式:LiveCamTest,就可以直接追蹤臉孔囉,以下是我們加入Arduino相關控制碼

import gab.opencv.*;
import processing.video.*;
import java.awt.*;
import processing.serial.*;
import cc.arduino.*;

int center_x, center_y;
Arduino arduino;

Capture video;
OpenCV opencv;

void setup() {
  size(640, 480);  
  video = new Capture(this, 640/2, 480/2);
  opencv = new OpenCV(this, 640/2, 480/2);
  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);  
  println(Arduino.list());

  arduino = new Arduino(this, Arduino.list()[0], 57600); 
  //0代表第一個COM裝置,請根據實際狀況修改
  arduino.pinMode(9, Arduino.SERVO);     //#1 servo 水平
  arduino.pinMode(11, Arduino.SERVO);   //#2 servo 垂直
  video.start();
}

void draw() {
  scale(2);
  opencv.loadImage(video);

  image(video, 0, 0 );

  noFill();
  stroke(0, 255, 0);
  strokeWeight(2);
  Rectangle[] faces = opencv.detect();   //偵測是否有臉
  println(faces.length);                            //偵測到幾張臉

  for (int i = 0; i < faces.length; i++) {    //根據臉孔數目來跑迴圈
    println(faces[i].x + "," + faces[i].y);    //顯示臉的座標
    rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height); //畫長方形把臉框出來
    center_x = faces[i].x + (faces[i].width/2);   //起始點x + 0.5*寬
    center_y = faces[i].y + (faces[i].height /2);  //起始點y + 0.5*高
    print(center_x); 
    print(", "); 
    println(center_y);
    ellipse(center_x, center_y, 10, 10);
    arduino.servoWrite(9, int(map(center_x, 100, 270, 0, 180)));  
    //本組數值是center_x 於畫面之左右極值,需依照實際情況調整
    arduino.servoWrite(11, int(map(center_y, 80, 250, 0, 180)));  
    //本組數值是center_y 於畫面的上下極值,需依照實際情況調整
  }
  delay(100);
}

void captureEvent(Capture c) {
  c.read();
}

執行

 

由console的訊息可以看到以下訊息:

 

OpenCV for Processing 0.5.4 by Greg Borenstein http://gregborenstein.com

Using Java OpenCV 2.4.5.0

Load cascade from: C:/Users/user/Documents/Processing/libraries/opencv_processing/library/cascade-files/haarcascade_frontalface_alt.xml

Cascade loaded: haarcascade_frontalface_alt.xml

 

代表在此的臉孔追蹤還是用到了Haar分類演算法,點選連結可以看到關於本分類法的數理基礎。

 

執行畫面如下,可以看到畫面會把偵測到的臉孔標出來,也會在console中顯示偵測到的臉孔張數與座標

View post on imgur.com

View post on imgur.com

相關文章:

 

 

 

 

 

 

[技術教學分享] Processing、RaspberryPi 與 Arduino 於教學上的應用

本文要告訴您什麼是 Processing?為什麼要結合 Processing 與 Raspberry Pi?兩者可以做到那些事情?以及如何在 Raspberry Pi 上安裝 Processing 開發環境

作者/攝影  曾吉弘
時間  3小時
成本
難度  * *
材料表
  • 個人電腦 (作業系統可用 Windows, Mac OSX 與 Linux,本範例使用 Windows 7)
  • Raspberry Pi 3 單板電腦

Processing 與 Arduino 的淵源相當深,簡單來說 Arduino IDE 繼承了 Processing IDE 簡單易用,範例豐富等優點。CAVEDU 以往曾經開設過許多Processing 結合 Arduino、Kinect、openCV(以上 C3取2可以開三種課程呢!)的課程,也運用了 Processing 上的 Android mode 將 Processing 視為一種 Android 開發環境,總之就是有很多把戲可以變就對了啦!
安裝 Processing 非常簡單,只要到 Processing 官方網站按照您的作業系統下載對應的安裝黨就可以了。也請看看CAVEDU的相關 Pricessing教學文章

接著是本文的兩個重點:

為什麼要用 Processing 結合 Arduino呢?

Arduino沒有介面的概念,任何資料的呈現都只能透過 Serial Monitor,要實體顯示的話就接個 16 x 2  LCD模組(您該不會想要接七段顯示器吧…),再高級一點就是 OLED 模組囉,但不管怎樣都是要外接一個東西,且這個螢幕絕不會太大。如果可以在 Pi 上執行的話,1920 x 1080 Full HD 的螢幕、投影機(ASUS Tinker 可以支援 4K 顯示,好威啊!) 現在都不算太貴,可以作為中大型專題的視覺呈現方案。

為什麼麼 Rasberry pi 上可以執行 Processing 讓阿吉老師這麼感興趣呢?

先說結論:這樣就是一台可獨立執行的互動裝置了,以往要在 PC 端執行的事情,現在在 Pi 上就可以做到,程式碼還不用改,聽起來就很吸引人,不是嗎?

想一下這個情境:

執行在 Raspberry Pi 上的Processing 可透過 Serial port 去控制/讀取接在 USB port上 Arduino的狀態,藉此進行各種視覺化的呈現

 

  • 偵測到人臉,呼叫webcam 拍照
  • 觸碰螢幕上的m x n 的按鈕,點選之後去觸發 m x n 的 LED 矩陣(豪華一點就自己做燈磚)

一切都很美好,真的。原本一定要接一台電腦(桌上型很笨重不好攜帶,筆記型電腦又怕不見…) 才能做到的事情,只要一片 Pi 就搞定。別忘了,設定好 Pi 的遠端登入之後,您可以遠端桌面來控制Pi,這樣就可以省下一套鍵盤滑鼠與螢幕了。

Raspberry Pi 在上課時(尤其是第一堂課)難免會像這樣子弄得滿桌都是,老師們也要花相當大的功夫帶學生認識 Linux 的桌面系統與基礎的 command line 指令,但我想 Rpi 與許多周邊軟硬體的結合在教學上所呈現的豐富程度,是值得您這麼做的。

在Raspberry Pi 上安裝 Processing

請在您的 Raspberry Pi 終端機介面中輸入: (教學)
curl https://processing.org/download/install-arm.sh | sudo sh

安裝完畢之後就可以在選單的 Programming 下看到 Processing 了。點兩下開啟即可:

請由 File/Examples 中選一個喜歡的範例直接執行吧,這是 Input / Clock 範例

最後附上相當人氣的教學投影片: openCV 與 Raspberry Pi,歡迎您照著做做看喔!


 

相關文章:

[程式教學] Arduino 101結合 Processing 互動滾球遊戲

本文章要告訴您如何結合 Processing IDE 與 Arduino 101 開發板來設計一個滾球遊戲。藉由 Arduino 101 開發板上的加速度計與陀螺儀感測器來感測板子於空間中的傾斜、位移與轉動的狀態,藉此控制球在畫面上的四處移動,就好像零食乖乖附贈的小玩具一樣。

作者/攝影曾吉弘
時間  2小時
成本  ❊ Arduino101開發板  $1,575  (購買連結)
難度 * * * * * *
材料表❊個人電腦 (作業系統可用 Windows, Mac OSX 與 Linux,本範例使用 Windows 7)

❊Processing IDE  (2.0 or 3.0 皆可,本範例使用 2.2.1)

❊Arduino IDE 1.6.x 版以上

Arduino 101開發板

 

本範例是阿吉老師於海洋大學機械系學期課程的課堂小挑戰,修改 Arduino官網的範例來製作一個滾球遊戲,藉由搖擺 Arduino 101 開發板來控制 Processing 畫面上的球移動,這運用到了Arduino 101的加速度計與陀螺儀感測器,並理解如何透過序列通訊讓 Arduino 與 Processing (您的PC) 彼此溝通,後續要改成藍牙也是沒有問題的。

這類型的遊戲通稱為 labyrinth,玩法都差不多就是控制球走到終點,iOS 或 Android 都有非常多可以下載,您可以多載幾個來玩並把一些可怕的功能加入本範例中。

Continue reading

[Processing] 簡易七彩畫筆

Processing 一直是我在上課時很喜歡的內容之一,原因很簡單,因為它效果強大,程式碼又簡潔,還可以結合 Arduino、Kinect 來做各種實體互動。可以補強 Arduino 在資料呈現上的不足。

CAVEDU 研究室的 Processing 介紹

CAVEDU 的 Processing 教學放在本文末 (Slideshare平台),歡迎分享~

來看看這個可愛的小範例吧,在滑鼠座標處畫圓。圓的顏色會隨機變換,這樣就是一隻色彩繽紛的數位畫筆囉!

001


void setup() {
  size(600, 600);
}

void draw() {
  //background(255);
  noStroke();
  line(300, 300, mouseX, mouseY);
  int r = int(random(255));
  int g = int(random(255));
  int b = int(random(255));
  fill(r, g, b);
  ellipse(mouseX, mouseY, 30,30);
  delay(10);
}
Processing 七彩畫筆

 

150613 海洋大學微處理機課程 期末展示-使用 LinkIt ONE

今年的海洋大學微處理機課程順利完成了,本文要來看看各位同學的作品。與去年不一樣的是,今年使用 LinkIt ONE (去年是 Arduino UNO),因此上課內容針對物聯網所需之WiFi、藍牙與GPS (GPRS需要SIM卡所以沒有使用) 都設計了不同的專題讓同學可以逐步學習。當然也必須要整合到期末專題中喔。再次感謝 MediaTek Labs 贊助上課所需的 LinkIt ONE 開發板 (看到這句話的老師,您也可以向他們提出教學計畫來申請板子喔!

認識阿吉的師長朋友們都知道,我希望學生能夠具備一定的口頭表達能力,因此每一位同學都一定要開口講話,也要說明在組裡的分工(變成吉祥物就不好了…)。畢竟你得先打造一個夢,或是現實生活中的某個問題。接下來才是為了做到這件事,我需要怎樣的技術以及過程所碰到的困難等等。所以報告時不要拿一堆程式碼出來嚇人啊,嚇不倒我的。

在這些過程中,你一定會有很多想法與錯誤的累積,好好把他們記錄下來吧,這就是別人拿不走,屬於你的養分。總有一天這些隱性的東西會大大幫你一把的。

另一方面,在一組裡面一定有人投入多,有人會找機會摸魚(說不定還會捅你一把)。如何學習人和,這也是之後出社會的真實縮影,試著體會吧。

學無速成,重在踏實

Continue reading

150618 元智藝術設計系期末demo

這學期感謝元智大學藝術設計系林楚卿老師邀請,有一學期的時間可以與藝術設計系的同學們好好相處。系上分為藝術組與設計組,基本上現在系上都會要求設計組同學的作品必須具備一定的互動性。

也感謝MediaTek Labs 贊助本學期上課所需的 LinkIt ONE開發板。不過說真的,要導入物聯網的概念真的很不容易啊。但我也從這群同學身上學到了很多東西,他們與CAVEDU 大部分看事情的角度都不一樣 (我們都是從機器人來切入, 怎麼做都很難脫開遙控機器人的影子)。同學們有很多互動上的想法,只是對於硬體/通訊技術的掌握度還差一點而已。

所以囉,會寫手機與Arduino程式的設計師,怎麼聽都很厲害,快點加入CAVEDU啊!

基本上我們這學期的課程分成四段:

  1. Arduino 基礎 (使用 LinkIt ONE開發板)
  2. 聯網功能:LinkIt ONE 的WiFi 與 GPS 功能,並結合 MCS 雲端服務(GPRS  因為要額外準備 SIM卡所以沒用到)
  3. Processing + Arduino 互動應用
  4. App Inventor 手機程式設計:介面設計、Google API、LinkIt ONE的藍牙通訊以及 open Data應用(youbike 與紫外線兩個範例)

學期專題展示頁面請點我(可以下載word, ppt, code)

IMG_1765 - 複製


 

第一組:寵物追蹤器。做一個背在寵物背上的小背包(雷射切割木板),當寵物離開主人一定距離的話,就會馬上通知主人,也會定期將寵物位置(LinkIt ONE GPS) 發送到 MediaTek Cloud Sandbox 雲端服務上。

這位就是 parker,有著可愛暴牙的小公貓,看似凶狠其實非常乖。

IMG_1675

03

 


第二組:貓車,可透過手機來控制的小車子,上面有一根逗貓棒。不過跑起來聲音很大又橫衝直撞, parker 有點害怕的樣子啊

IMG_1698 IMG_1707


第三組:奉茶機器人。可以跟著指定路線(就是黑膠帶囉)走的機器人,當拿起水杯與放下水杯時都可以感應到。

IMG_1731

IMG_1736


第四組:Color maker。敲擊鐵琴時可以發出不同顏色的光芒。概念與 Makey Makey 相當類似。建議可以加入線性電位計來做出像 DJ 的混音效果。在此總共連接七個琴鍵,每個琴鍵都會有對應的顏色出現,請看以下影片

IMG_1716


 

第五組:霧霾中 In Maze。機構簡單但是效果相當有趣,使用 Maxuino 這套軟體,當進入 PIR sensor 偵測範圍就會讓影片產生類似光圈變化的效果。讓畫面中的人(白衣女子) 看的不太清楚,類似眼花的感覺,呈現出如夢似幻的效果。

之後改用超音波或紅外線測距感測器的話,在操作上應該會更細緻(PIR 就只有 1 / 0)。果然是念藝術才會想到的題目,這種應用我真的想不出來哩

IMG_1752

[Processing] 5 x 5 小球隨機顏色閃爍

Processing 在控制顏色與形狀上有相當好的效果,PC 端執行的好處是很容易整合各種 PC connected 裝置,例如搖桿、Kinect、Webcam 與 Arduino 等等,輸入訊號不再只限於鍵盤滑鼠而有更豐富的呈現。

本範例的每一個小球都會獨立隨機改變顏色,使用兩層 for 迴圈就可以控制每一行每一列要有多少顆球。您可以一口氣擴大到更多的數目,數大就是美嘛!

請參考先前的文章:

[Processing] ASWD 移動方塊   與  Processing 隨機五小圓

螢幕快照 2015-05-13 上午12.58.57

程式碼如下:

int r, g, b;
int x = 20;
int y = 20;
int t;
int k = 0;
int i = 0;
void setup() {
  size(300, 300);
  smooth();
  background(255);
  noStroke();
}
void draw()
{
  for (k = (int)random(5); k < 5; k++)
  {
    for (i = (int)random(5); i < 5; i++)
    {
      r = (int)random(255);
      g = (int)random(255);
      b = (int)random(255);
      fill(r, g, b);
      ellipse(x, y, 25, 25);
      x += 30;
    }
    x = 20;
    y += 30;
  }
  x = 20;
  y = 20;
  t = (int)random(100, 1000);
  delay(t);
}

[Processing] ASWD 移動方塊

最近 Processing 應用在教學上小有心得,繼續介紹如何使用鍵盤的 ASWD 鍵來控制小方塊的上下左右移動。在早期用鍵盤來玩射擊遊戲的年代(啊,暴露年齡),就是用這四個鍵控制飛機,以及其他發射飛彈或特殊功能按鍵。執行畫面如下,只有移動功能,您可以加入按下 space 鍵來發射飛彈這個功能喔

Processing 隨機五小圓

螢幕快照 2015-05-09 上午12.52.26

int xPos=200, yPos=200;
void setup() {
  size(400, 400);
  smooth();
}

void draw() {
  background(204); 
  if (keyPressed) {
    if (key == 'w') {
      yPos -= 5;
    }
    if (key == 's') {
      yPos += 5;
    }
    if (key == 'a') {
      xPos -= 5;
    }
    if (key == 'd') {
      xPos += 5;
    }
  }
  rect(xPos-25, yPos-25, 50, 50); 
  delay(100);
}

Processing 隨機五小圓

Processing 是個好用又功能強大的數位互動介面開發工具,可以用相當精簡的程式碼做出炫麗奪目的色彩效果。請參考 CAVEDU 研究室的 Processing 相關內容。除了可以單機執行之外,還能結合 Android、Kinect 與 Arduino 達到更有趣的互動呈現

以下是簡單的範例練習,每次執行時都會利用 for 迴圈產生五顆小球,每次小球的顏色RGB值都會隨機決定。

想想看,如何利用 for 迴圈做到 5 x 2排總共10顆的效果?

未命名

int r,g,b;

int x = 20;
size(300,300);
smooth();
background(255);
noStroke();
for(int i=0;i<5;i++){
  r = (int)random(255);
  g = (int)random(255);
  b = (int)random(255);
  fill(r,g,b);
  ellipse(x,20,25,25);
  x += 30;
}
五顆隨機顏色小球

141022起每周三晚上 Processing專題計劃 @MakerBar Taipei

Makerbar Taipei 與CAVEDU教育團隊今年開了幾個梯次的Arduino習作計劃,讓大家可以透過簡單的入門教學,體驗Arduino的趣味,現在我們要帶大家認識Processing並且教導如何與Arduino結合應用!

Processing 讓使用者能用相對簡單的程式指令就能繪製各種圖形,並以視覺化方式來回應您的操作,每個人都能善用 Processing 來發揮與生俱來的創造力。Processing 與 Arduino 嵌入式開發板有高度的整合性,您可輕鬆將 Arduino 所擷取的實體狀態透過 Processing 繪製的畫面來呈現。對於想要切入數位互動創作的朋友來說,使用Processing 是絕佳的切入點。

報名網址請按我    已過使用 Processing 的教學內容

課程時間

10/22 – 11/5 (三) 19:00 – 21:00,共計6小時課程。

課程費用

2500元(含材料:LED燈、按鈕、類比按鈕)

課程內容

10/22  

Processing介紹

下載Processing IDE

控制顏色、形狀與數量

使用鍵盤、滑鼠來進行各類互動

10/29   

Processing 搭配Arduino#1

Arduino IDE與驅動程式安裝:

1.       在Processing介面來控制Arduino周邊 – LED

2.       用Arduino按鈕來控制畫面上元件

11/5

Processing 搭配Arduino#2

飛機小遊戲:

隨機物件

搖桿移動並搭配按鈕來發射飛彈

碰撞偵測與音效

講師介紹

CAVEDU教育團隊

注意事項

本課程需要自備電腦、Arduino相容板與麵包板(現場有提供原廠Arduino UNO販售800元/片)

140222 Processing Android 數位互動研習

這次的研習主題是使用 Processing 這個數位互動開發介面,並將作品轉換到 Android手機上來執行。

當然換個角度來說,您可以使用 Processing 就能開發 Android app,很簡單就能取用 Android 手機上的各項資源:Wifi,照相機,各種感測器等等。願意的話當然也能上架 Google Play囉。

不過說真的,Processing + Android環境建置有點小麻煩,單純執行 Processing 則沒有任何問題。如果要結合 Android SDK 時就會有一些大小關節要打通。Open source 有時候會碰到這種問題。環境建置請參考:CAVEDU 實驗室 Processing 分部

如果您對於這系列課程有興趣的話,歡迎留下您的 email 來索取投影片與相關教學資源。

研習結束大合照,有老師專程從花蓮來參加我們兩天的研習,非常感謝。

2014-02-22 16.47.13

上課一景

2014-02-22 10.58.13

簡易時鐘範例,自動抓取系統時間。 

2014-02-22 10.58.21

面部辨視也ok,我們可在程式中設定預設的面部大小(像素面積)與數量上限,避免過於靈敏辨識到一些奇怪的東西(好可怕)

2014-02-22 15.13.57

140222 Processing 互動媒體結合 Android智慧型手機研習營

報名頁面請按我

Processing 讓使用者能用相對簡單的程式指令就能繪製各種圖形,並以視覺化方式來回應您的操作。每個人都能善用 Processing 來發揮與生俱來的創造力。再者,Processing 與 Android 裝置有高度的整合性,您可輕鬆將Processing 程式安裝到 Android 手機或平板電板上執行,或匯出成為 Eclispe 專案。對於想要在 Android 裝置上開發互動專題的朋友來說,使用Processing 是絕佳的切入點。誠摯的邀請您參加本次的研習活動。

主辦單位:CAVE教育團隊、翰尼斯企業有限公司

協辦單位:台灣發展研究院 智能機器人研究所、《Make》國際中文版、普特企業有限公司

時間 : 103年2月22日星期六 09:30~17:00

地點 : 翰尼斯企業有限公司 台北市中正區中華路二段165號1樓

備註: 請自行攜帶筆記型電腦,以便實際操作

收費:3,000元。名額有限,請儘早報名

匯款方式:
銀行名稱 :華南商業銀行 雙園分行
戶名 :翰尼斯企業有限公司
銀行代號 :008
帳號 :122-10-015315-3

超級好禮相贈:
1. 《 Processing 入門:互動式圖形實作介紹》書籍乙本

aNMcrHsI4wGvzpX3kfYeYw

活動議程:

9:30 CAVE教育團隊簡介

9:50 Processing 環境安裝
設定 Android SDK 資料夾 與Android 裝置驅動程式

介紹Processing IDE 與程式基礎架構
第一支Processing 程式 – 繪製幾何圖形

10:30 結合鍵盤與滑鼠動作
按下不同的按鍵畫出各種圖形與線條
滑鼠點擊與拖拉 – 小畫家
12:00 中餐

13:00 將Processing 專案執行於手機
如何下載外部函式庫
觸碰互動小球範例

14:00 取得手機的硬體狀態
相機
加速度、姿態感測器
取得座標

15:00 手機的2D / 3D(OpenGL )繪圖

16:00 手機與PC 之間的 Wifi 連線 / 手機之間的 Wifi 連線

16:50 結語、賦歸

 

注意:主辦單位保留修改與解釋活動之所有權利。

服務電話:02-23062900
service@cavedu.com

淺談Arduino機器人與機器視覺(一)

近年來隨著自動化科技逐步提升,機器人的產業也相對的被帶動了起來。

其中當我們在賦予機器人感覺,也就是讓機器人取得外界資訊的時候,勢必需要使用到感應器(感測器)。

而近幾年大多數研究的學者選擇使用視覺感應器做為機器人資訊取得的主要來源. 為什麼呢??

主要原因是視覺感應器可取得資訊遠比其它感應器來得多,一個可以抵十個不同種類的感應器使用(有點誇張了!!).

次要原因是視覺感應器應用於機器人的技術目前尚未成熟,其具備的研究價值以及可發展的空間仍然讓許多老師與研究生紛紛投入此領域之中。

但單純只有感應器是沒辦法完成一台機器人的,我想大部份的玩家也知道機器人的組成主要可以分成下面三個部份(這應該不需要我多提)。

機器人組成

而偉民老師今天想要談的是以Arduino做為機器人控制器的同時,是否能擷取視覺感應器的資訊進行影像處理並做為機器人控制所使用??

我想在這邊告訴大家~~ 

 辦不到!!

 噗~~辦不到的話,我今天寫這篇文章不就打自己的臉了嗎?!

___________________________________________________________________________________________________________________________

但我還是要說~~是真得辦不到!!

雖然辦不到,可是我們要知道辦不到的原因在那裡!!

從軟體方面來分析

目前Arduino官方的指令中並無提供給影像編輯與處理的函式庫,但如果你想用Arduino進行圖形介面編輯與設計的話,可以考慮使用Processing

Processing也是一個開放原始碼的程式語言開發環境,主要是提供給需要對影像,聲音,動畫進行程式編輯的工作者. 當然此程式可以在Arduino控制板上執行。

它的開發環境從下圖可以看到,幾乎跟Arduino的一模一樣,甚至是說你在寫Arduino程式人家都不會懷疑。

Processing_2.0(圖片來自維基教科書)

目前看來在影像的程式編輯上是有跡可循的,很明顯問題不是出在這!!

從硬體方面來分析

當我們要使用控制器擷取感應器的資料來進行機器人控制,此時資料的精度以及傳輸的速度將會影響機器人的動作。

舉個簡單的例子,如果你將一筆5.2654的資料採用整數的型態傳送的話,不管是用四捨五入或是無條件捨去法都會使資料產生誤差。

此外,機器人今天是一直在活動的一個狀態,我想現今我們對機器人下達的命令大部份一定都是達到目的或完成任務才會停止,那我們可以想像一下 一台在高速狀態行駛的車子,它主要根據前方裝置的超聲波感應器來偵測前方是否有障礙物,然而這個感應器每2秒才傳輸一筆資料,請問這台車遇到 障礙物時來得及停下來嗎?!  我想結果可想而知了。

從上述的例子可以知道控制器硬體的好壞會大大的影響機器人動作與結果,那我想大家應該會好奇從視覺感應器取得一張影像有多少的資料量?!

一張電腦上的圖片主要是由多個小方格也就是所謂的像素(Pixel)所構成,就以我們CAVE的Logo來說好了,它是由474×491個像素點組成,因此可以將它分割成右邊的數個方格。

圖片格式

然而我們知道色彩主要是由紅(Red),綠(Green),藍(Blue)三原色所構成,由於CAVE的Logo是一張彩色圖片,因此它的每一個像素點可以以RGB色彩  空間來定義,如下圖所示。

圖片讀取格式

1張圖片資料大小=8bit (一個像素點) x 3 (RGB分開定義) x m x n (像素點數目)

其中RGB每一個都必須給予8bit(0~255)的資料空間進行定義,由此可知,一個像素點需要3個8bit的資料空間,而CAVE的  Logo有474×491個像素點. 但請不要忘記一件很重要的事,市面上大部份的視覺感應器(攝影機)傳輸速率為30FPS(Frames per Second),也就是1秒鐘傳輸30張圖片,亦即1 張圖片傳輸時間約為0.033毫秒。

我想問題已經呼之欲出了,Arduino有辦法在這麼短的時間內接收如此大筆的資料嗎? 過去偉民老師曾經在一場活動中看過一位Maker使用Arduino Uno接收攝影機傳輸過來一張50×50 (Pixels)的圖片,結果是接收完成超過1分多鐘!! 可想而知現今的影像最低要求是640×480(Pixels),這對Arduino而言已是一大考驗!!

既然Arduino硬體無法即時取得必需的影像資訊,那為何現今有那麼多Arduino機器人可以用視覺感應器來進行研究與應用呢?!

偉民老師下星期為您揭曉,敬請期待!!

北科大互動媒體Android系統互動創作課程‎:以藍牙操控之互動展示裝置

程式碼下載:http://www.appinventor.tw/ntut_app/bluetooth-interactive-device

專題目標:
透過利用App Inventor所開發的手機,來控制電腦畫面中Processing所繪製的方格陣列色塊,
使用者透過翻轉手機,來改變畫面中的陣列的色塊;轉動手機將改變畫面中方塊顏色的RGB,期望使用者在操作的過程中,呈現出互動裝置藝術設計之目的。功能應用說明:
1. 藍牙傳輸應用: 
    透過手機的藍牙裝置與電腦相連接。 
2. Orientation Sensor應用: 
    透過手機的上下左右翻轉,運用偵測Pitch、Roll以及Azimuth三軸的數值,改變Processing所設計的畫面。 
3. Processing應用: 

    透過Processing撰寫顯示的互動畫面,並與手機做藍牙的連線的數值接收。

北科大互動媒體設計系 – Android系統互動創作課程

這學期阿吉老師在北科大互動媒體設計系開了一門「Android系統互動創作課程」,針對互動系的同學,以App Inventor 來教大家智慧型手機的程式設計實務。

以下是課程介紹,重點是最下面有同學的專題(包含了期末報告、code與影片),一共有五組,還有同學的作品結合了 processing 或 Arduino,也有同學是從身障者找廁所不便的角度來出發,做出了很棒的校園導覽軟體!

課程名稱: Android系統互動創作

講師: 曾吉弘老師
上課時間: 101學年第二學期每週三6:30 pm~9:30 pm
地點: 北科大共同科館313室   學分數: 3

課程簡介:
本課程主要學習由AppInventor開發Android應用程式,並結合Arduino與Processing作進一步的互動裝置應用,
例如:機器人自走車,於期末則發表由各組自行發揮所創作的專題。

課程內容:

2/20 學期課程簡介、AppInventor入門基本介紹
2/27 資料型態與陣列運用、Canvas基本介紹
3/06 WebViewer基本介紹、Google map定位
3/13 TextToSpeech、簡訊寄送、用ActivityStarter寄email
3/20 校園行動導覽(BarcodeScanner、VideoPlayer等運用)
3/27 手機藍芽控制樂高機器人
4/10 期末專題提案發表
4/17 Arduino與Processing入門基本程式介紹
4/24 用AppInventor控制
機器人自走車
5/01 語音控制機器人自走車、scratch_S4A基本程式介紹
5/08 Arduino傳送資訊至AppInventor
5/15 期末專題課堂討論
5/22 Google Chart API介紹
5/29 隨堂測驗:成績輸出查詢系統
6/05 期末專題發表

學期作業成果

作業一: 簡易計算機
作業三: Raspberry Pi提案
作業四: 機器人自走車

期末專題成果
第四組: 雲端智慧窗簾
第五組: 北科●大滿足