Quantcast
Channel: CAVEDU教育團隊技術部落格
Viewing all 678 articles
Browse latest View live

在Raspberry Pi 上執行 Intel® Movidius™ NCS應用程式

$
0
0

作者/攝影   曾吉弘
時間   2小時
成本
難度 * * * * *
材料表
  • Raspberry Pi 3單板電腦
  • Intel Movidius神經計算棒

什麼是嵌入式板?

Intel® Movidius™ Neural Compute Stick (簡稱Intel® Movidius™ NCS) 是將Intel® Movidius™視覺處理單元(VPU)整合在USB裝置上。這樣就可對數百萬種低功耗的嵌入式裝置提供視覺智能,例如監控攝影機、可用手勢控制的無人機、工業級機器視覺設備等等。由於Intel Movidius NCS是針對低功耗應用所設計,因此將其與像是MinnowBoardUP BoardRaspberry Pi (RPi) 等低功耗嵌入式系統搭配是很合適的應用。

開發 vs 部署 Development vs Deployment

Raspbian (RPi專用的作業系統)提供了相當好的圖形化使用者介面(GUI),使用者可以接上螢幕、鍵盤滑鼠之後就可以直接操作Pi。雖然這種作法便於探索Pi的各種功能以及進行一些輕量化的開發作業,但在headless mode(不接上任何螢幕鍵盤滑鼠)下部署嵌入式產品/專案也是常見的做法。例如想要做一台Pi 追乒乓球機器人的話,顯然是無法接上螢幕鍵盤滑鼠的吧。

嵌入式產品的軟體一般來說都是在開發平台(例如桌上型/筆記型電腦或伺服器)上完成的,最後產生的二元檔再部署到嵌入式硬體上即可。為了要支持開發與部署這兩件事,Intel® Movidius™ Neural Compute SDK (NCSDK) 有兩種執行模式:

  1. Full SDK模式 – 在Pi安裝toolkit與API framework
  2. API-only模式 – 只在Pi安裝API framework
    • 安裝較快;但剖析(profiling)與編譯網路需在桌上型/筆記型電腦上完成

即便未安裝toolkit,API-only模式也讓您可以在Pi上開發各種app。API-only模式的限制在於無法剖析、檢查/驗證與編譯以及將神經網路編譯為二元graph檔。例如mvNCProfile、mvNCCheck與 mvNCCompile 都沒有安裝。

邊做邊學!

您會製作:

結合Raspberry Pi與NCS神經運算棒的嵌入式深度神經網路(DNN)影像處理系統。

您會學到:

  • 如何在Raspberry Pi的API-only模式下安裝NCSDK mode
  • 如何在Raspberry Pi上執行 NCS應用程式

您會需要:

  • Intel Movidius Neural Compute Stick 神經運算棒 – 購買請按我
  • 32/64位元的桌上型/筆記型電腦,作業系統須為Ubuntu 16.04 (“開發機器”)
  • Raspberry Pi (RPi) 3 Model B 單板電腦
  • 可外部供電的USB hub

如果還沒做的話,請在您的開發機器上安裝完整的NCSDK。請參考Intel Movidius NCS Quick Start Guide上的安裝步驟來完成。

開始吧!

Step 1:安裝Raspberry Pi為桌面模式,如下圖

樹莓派基金會取得最新的作業系統 Stretch img 檔之後,燒錄開機用的 sd卡。確認Raspberry Pi 開機並連上網路之後,使用以下指令更新系統:

注意:需使用 Raspbian Stretch,上一版 Jessie 確認不支援。

 

$ sudo apt-get update

 

Step 2:安裝Debian與Python相依套件

開啟terminal,輸入以下指令

$ sudo apt-get install -y libusb-1.0-0-dev libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev git automake byacc lsb-release cmake libgflags-dev libgoogle-glog-dev liblmdb-dev swig3.0 graphviz libxslt-dev libxml2-dev gfortran python3-dev python-pip python3-pip python3-setuptools python3-markdown python3-pillow python3-yaml python3-pygraphviz python3-h5py python3-nose python3-lxml python3-matplotlib python3-numpy python3-protobuf python3-dateutil python3-skimage python3-scipy python3-six python3-networkx

您也可用pip package manager (pip3 install)來安裝python相依套件,但我發現用debian package manager (apt-get install python3-xxx)來安裝會比較快。

Step 3:下載NCSDK到Pi

開啟terminal,輸入以下指令

mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/movidius/ncsdk

Step 4:編譯並安裝NCSDK API framework

開啟terminal,輸入以下指令

cd ~/workspace/ncsdk/api/src
make
sudo make install

Step 5:使用NC App Zoo範例程式來測試安裝是否成功

開啟terminal,輸入以下指令

$ cd ~/workspace
$ git clone https://github.com/movidius/ncappzoo
$ cd ncappzoo/apps/hello_ncs_py
$ python3 hello_ncs.py

您應該會看到類似的輸出畫面:

Hello NCS! Device opened normally.
Goodbye NCS! Device closed normally.
NCS device working.

恭喜!您成功在Pi 的API-only模式下安裝NCSDK了。

 

還能做什麼:部署已編譯的graph檔

Step 5中的hello_ncs_py範例程式只是開始NCS裝置就關閉了;它實際上並沒有執行任何推論。如果要在NCS上進行推論的話,we need a graph file that was generated by mvNCCompile,這是NCSDK Toolkit的一部分,但並沒有安裝在Pi上。

請改用已安裝完整SDK的開發用機器(桌上型/筆記型電腦),並根據 mvNCCompile doc page 上的教學,以GoogLeNet 來產生graph檔。將開發機器上的 ~/workspace/ncsdk/examples/caffe/GoogLeNet/graph 複製到 Pi 的 ~/workspace/ncappzoo/caffe/GoogLeNet/graph路徑下。

現在Pi 上有graph檔了,請根據NCS image classifier 的說明在Pi上執行影像分類器。

 

還可以試試

  • 在Raspberry Pi上執行NCS image classifier
  • 在RPi上編譯並執行C/C++ 範例程式:
    • ~/workspace/ncappzoo/apps/hello_ncs_cpp

延伸閱讀

原文經Intel授權翻譯自:https://movidius.github.io/blog/ncs-apps-on-rpi/

 

相關文章:

 

 


[Movidius神經運算棒] 什麼!用電池就能驅動的深度學習推論引擎?

$
0
0

 

作者/攝影   曾吉弘
時間   3小時
成本
難度  * * * * * *
材料表
  • Intel Movidius Neural Compute Stick 神經運算棒
  • Raspberry Pi (RPi) 3 Model B 單板電腦 (OS需為最新的 Stretch)
  • Raspberry Pi 攝影機模組 (picam)或任何USB webcam
  • Raspberry Pi 觸碰螢幕
  • Raspberry Pi 觸碰螢幕外殼 [選配],也可用這款外殼:Pimoroni® case on Adafruit

加強邊緣裝置的視覺感知功能

鋰離子聚合物電池(LiPo、lithium polymer batteries)與嵌入式處理器兩者大大助長了物聯網(IoT)市場的發展。它們讓IoT裝置製造商得以在攜帶式(行動)邊緣裝置上加入更多功能,只要充電一次就可以執行相當長的時間。感測科技的長足進步,尤其是視覺相關的感測器、以及可處理來自這類感測器的超大量資料的軟體演算法,對於在更好的運算速度但又不能妥協於電池壽命與即時運算效能等方面上,這類行動邊緣裝置的需求受到了阻礙。

Intel® Movidius™ 視覺處理元件(Intel® Movidius™ VPU) 專門為可由電池供電的商用/企業級邊緣裝置提供即時視覺運算功能,這類裝置像是Google ClipsDJI® Spark droneMotorola® 360 cameraHuaRay® industrial smart cameras 等等。本文目標並非重製它們,而是要做一台小型手持裝置,運用深度神經網路(DNN)來即時辨識物體。

專案實體照片

 

邊做邊學!

您會製作:

一台可由電池(或行動電源)供電的DIY手持裝置,裝有攝影機與觸碰螢幕,可以辨識(分類)位於攝影機前方的物體。

您會學到:

  • 如何使用Raspberry Pi與Intel® Movidius™ NCS神經運算棒製作一台即時影像分類器。

您會需要:

  • Intel Movidius Neural Compute Stick 神經運算棒
  • Raspberry Pi (RPi) 3 Model B 單板電腦 (OS需為最新的 Stretch)
  • Raspberry Pi 攝影機模組 (picam)或任何USB webcam
  • Raspberry Pi 觸碰螢幕
  • Raspberry Pi 觸碰螢幕外殼 [選配],也可用這款外殼:Pimoroni® case on Adafruit

如果還沒完成的話,請在您的Raspberry Pi上安裝Intel Movidius NCSDK,完整SDK或API-only模式都可以。請參考Intel Movidius NCS Quick Start Guide來安裝完整SDK,或參考Run NCS Apps on RPi 來安裝API-only模式。

 

先看結果:

如果想先看看程式輸出結果的話,請用以下指令來取得範例程式並執行

$ mkdir -p ~/workspace

$ cd ~/workspace

$ git clone https://github.com/movidius/ncappzoo

$ cd ncappzoo/apps/live-image-classifier

$ make run

上述指另需在裝有完整SDK的系統中才可執行,單單安裝API framework 是不型的。另外也請確認已經在系統上接了一台UVC攝影機( 筆電內建攝影機也可運作).

這樣應該會在方形外框中看到即時串流影像。在攝影機前方放置一個物體並對齊方形。執行畫面請看本文最後的照片。

 

硬體建置

下圖是我硬體的實際照片:

 

Step1:設定螢幕

觸碰螢幕設定:請參考下方影片

畫面轉向:根據您所用的螢幕外殼或支架,您的畫面可能是倒過來的。如果是的話,請根據以下操作來將畫面反轉180度。

 

$ sudo nano /boot/config.txt



# 在/boot/config.txt 最後一行輸入以下內容,按下Ctrl-x存檔後離開

lcd_rotate=2



$ sudo reboot

如果您是使用USB攝影機的話請跳過STEP2

Step 2:設定攝影機

啟動CSI攝影機模組:請參考Raspberry Pi官方說明文件.

啟動v4l2 driver:基於不明原因,Raspbian預設不會去載入CSI攝影機模組用的V4L2 driver。本專題範例採用OpenCV-Python,作法是逐次使用V4L2來存取攝影機 (路徑:/dev/video0),所以我們得先載入V4L2 driver.

$ sudo nano /etc/modules



# 在/etc/modules最後一行輸入以下內容,按下Ctrl-x存檔後離開

bcm2835-v4l2



$ sudo reboot

來寫程式吧

我強力支持程式再運用,所以本專題的Python程式大部分是來自於[五步驟打造影像分類器]。兩者主要的差別在於我把每一個步驟整合在同一個函式中了,讀者可以比較一下。

本程式的架構不需要大幅修改就可以執行任何分類器神經網路。以下是一些使用者定義的參數:

  1. GRAPH_PATH:要進行推論的graph檔路徑
    • 預設值為 ~/workspace/ncappzoo/caffe/GoogLeNet/graph
  2. CATEGORIES_PATH:列出各分類輸出標籤的文字檔路徑
    • 預設值為 ~/workspace/ncappzoo/tensorflow/mobilenets/categories.txt
  3. IMAGE_DIM:所採用神經網路之影像尺寸規格
    • 例如 GoogLeNet 採用 224×224像素,AlexNet則是227×227像素
  4. IMAGE_STDDEV:您選用之神經網路所定義的標準差(scaling value)
    • 例如:GoogLeNet不採用任何比例因子,但InceptionV3的比例因子為128 (stddev = 1/128)
  5. IMAGE_MEAN:均值減法(Mean subtraction)是深度學習領域中常用的資料整理技巧。
    • 對ILSVRC資料集來說,B、G、R的平均值分別為102、117與123

在操作NCSDK API之前,需要先由 mvnc 函式庫匯入mvncapi 模組:

import mvnc.mvncapi as mvnc

如果您已經完成本連結的影像分類器的話,請跳過Step1 2 5

 

Step 1:開啟裝置

如同其他USB裝置,當您將NCS接上應用程式處理器 (執行Ubuntu的桌上型/筆記型電腦) 的USB埠,前者會被後者枚舉為一個USB裝置。我們可以呼叫API來檢視與開啟各個NCS裝置。

# —- Step 1: 開啟裝置並準備處理 ————-

def open_ncs_device():

   # 尋找 NCS裝置,如果沒有就離開程式

   devices = mvnc.EnumerateDevices()

   if len( devices ) == 0:

       print( ‘No devices found’ )

       quit()

 

   # 取得第一個枚舉裝置並開啟

   device = mvnc.Device( devices[0] )

   device.OpenDevice()

 

   return device

Step 2:將graph檔載入NCS

為了讓本專案簡單化,我們採用來自預訓練好的GoogLeNet模型的預編譯graph,這當您在ncappzoo資料夾中執行 make 指令時已經一併下載與編譯好了。先來看看如何將 graph 載入至NCS。

# —- Step 2: 將graph檔載入NCS ————————-

 

def load_graph( device ):

   # 讀取graph檔至緩衝

   with open( GRAPH_PATH, mode='rb' ) as f:

       blob = f.read()

 

   # 載入緩衝至NCS.

   graph = device.AllocateGraph( blob )

 

   return graph

 

Step 3:預處理來自攝影機的畫面

如影像分類器一文所述,分類器所用的神經網路會假設在影像中只有一個物體。但這件事在即時影像中很難掌控,除非您把桌面清理非常乾淨並採用單色背景。為了處理這件事,我們來偷雞一下。藉由OpenCV API在畫面上畫一個虛擬的盒子,並要求使用者把物件以手動方式對齊到盒子中;接著就切出這個盒子的區域並把該區域影像送到NCS進行分類。

# —- Step 3: 預處理影像 —————————————-

 

def pre_process_image():

   # 取得來自攝影機的一個畫面

   ret, frame = cam.read()

   height, width, channels = frame.shape

 

   # 切割畫面並調整大小

   x1 = int( width / 3 )

   y1 = int( height / 4 )

   x2 = int( width * 2 / 3 )

   y2 = int( height * 3 / 4 )

 

   cv2.rectangle( frame, ( x1, y1 ) , ( x2, y2 ), ( 0, 255, 0 ), 2 )

   cv2.imshow( 'NCS real-time inference', frame )

   cropped_frame = frame[ y1 : y2, x1 : x2 ]

   cv2.imshow( 'Cropped frame', cropped_frame )

 

   # 調整影像大小 [ 根據所選用的網路而異].

   cropped_frame = cv2.resize( cropped_frame, IMAGE_DIM )

 

   # 均值減法或縮放 [常見的資料置中方法].

   cropped_frame = cropped_frame.astype( numpy.float16 )

   cropped_frame = ( cropped_frame - IMAGE_MEAN ) * IMAGE_STDDEV

 

   return cropped_frame

 

Step 4:卸載影像/畫面至NCS來執行推論

感謝Intel Movidius VPU提供的高效能與低功耗,有了NCS之後,Raspberry Pi 唯一要做的事情就是預處理攝影機的畫面(step 3) 並丟給NCS。推論結果會以陣列來呈現,包含了各分類的機率值。透過 argmax() 可以取得 top prediction的索引值以以及相關於該索引的標籤內容。

# —- Step 4: 卸載影像,讀取與顯示推論結果 —————-

 

def infer_image( graph, img ):

   # 將所有分類目錄讀取至清單中

   categories = [line.rstrip('\n') for line in

                 open( CATEGORIES_PATH ) if line != 'classes\n']

 

   # 以半精度浮點數陣列載入影像.

   graph.LoadTensor( img , 'user object' )

 

   # 取得NCS推論結果.

   output, userobj = graph.GetResult()

 

   # 取得最高信心項目之索引值.

   top_prediction = output.argmax()

 

   # 顯示結果.

print( "Prediction: " + str(top_prediction)

         + " " + categories[top_prediction]

         + " with %3.1f%% confidence" % (100.0 * output[top_prediction] ) )

 

   return

如果您想看看NCS的實際輸出的化,請找到ncappzoo/apps/image-classifier.py並如以下修改:

# ---- Step 4: 讀取與顯示NCS的推論結果 -------------------

 

# 取得NCS推論結果.

output, userobj = graph.GetResult()

 

# 顯示輸出結果.

print( output )

...

 

# 顯示 top prediction.

for i in range( 0, 4 ):

   print( "Prediction " + str( i ) + ": " + str( order[i] )

         + " with %3.1f%% confidence" % (100.0 * output[order[i]] ) )

...

執行上述修改後的程式之後,它把整個會輸出陣列都秀出來。以下是使用37個分類的網路來進行推論的結果畫面,請注意陣列大小為37,且top prediction (73.8%)出現在陣列的30號位置(7.37792969e-01),如下紅字:

[ 0.00000000e+00   2.51293182e-04   0.00000000e+00   2.78234482e-04

0.00000000e+00   2.36272812e-04   1.89781189e-04   5.07831573e-04

6.40749931e-05   4.22477722e-04   0.00000000e+00   1.77288055e-03

2.31170654e-03   0.00000000e+00   8.55255127e-03   6.45518303e-05

2.56919861e-03   7.23266602e-03   0.00000000e+00 1.37573242e-01

7.32898712e-04   1.12414360e-04   1.29342079e-04   0.00000000e+00

0.00000000e+00   0.00000000e+00   6.94580078e-02   1.38878822e-04

7.23266602e-03   0.00000000e+00   7.37792969e-01   0.00000000e+00

7.14659691e-05   0.00000000e+00   2.22778320e-02   9.25064087e-05

0.00000000e+00]

Prediction 0: 30 with 73.8% confidence

Prediction 1: 19 with 13.8% confidence

Prediction 2: 26 with 6.9% confidence

Prediction 3: 34 with 2.2% confidence

 

Step 5:卸載graph檔並關閉裝置

為了避免記憶體洩漏與/或區段錯誤(segmentation fault),請記得關閉任何開啟中的檔案、資源以及 deallocate 使用中的記憶體。

# —- Step 5: 卸載graph檔並關閉裝置 ————————-

 

def close_ncs_device( device, graph ):

   cam.release()

   cv2.destroyAllWindows()

   graph.DeallocateGraph()

   device.CloseDevice()

 

   return

恭喜!DNN即時影像分析器完成囉!

 

專案實體照片

Rpi 上接了NCS神經運算棒與無線鍵盤發射器

RPi 與 Pi camera 的配置

分類”碗”的畫面

分類”滑鼠”的畫面

還能做什麼

  • 將本專案移植到執行Raspbian Lite 作業系統的 Raspberry Pi Zero上。
  • 本範例採用MobileNets來分類影像。試著加入分類年紀與性別的功能吧。
    • 提示:使用來自ncappzoo/caffe/AgeNet 與 ncappzoo/caffe/GenderNet 的graph檔。
  • 使用ncappzoo/SSD_MobileNet 或 Tiny YOLO,將本範例改為物件偵測(一張圖中有多個物體)

延伸閱讀

原文經Intel授權翻譯自:https://movidius.github.io/blog/battery-powered-dl-engine/

 

 

相關文章:

 

在Raspberry Pi 上執行 Intel® Movidius™ NCS應用程式

$
0
0

作者/攝影   曾吉弘
時間   2小時
成本
難度 * * * * *
材料表
  • Raspberry Pi 3單板電腦
  • Intel Movidius神經計算棒

什麼是嵌入式板?

Intel® Movidius™ Neural Compute Stick (簡稱Intel® Movidius™ NCS) 是將Intel® Movidius™視覺處理單元(VPU)整合在USB裝置上。這樣就可對數百萬種低功耗的嵌入式裝置提供視覺智能,例如監控攝影機、可用手勢控制的無人機、工業級機器視覺設備等等。由於Intel Movidius NCS是針對低功耗應用所設計,因此將其與像是MinnowBoardUP BoardRaspberry Pi (RPi) 等低功耗嵌入式系統搭配是很合適的應用。

開發 vs 部署 Development vs Deployment

Raspbian (RPi專用的作業系統)提供了相當好的圖形化使用者介面(GUI),使用者可以接上螢幕、鍵盤滑鼠之後就可以直接操作Pi。雖然這種作法便於探索Pi的各種功能以及進行一些輕量化的開發作業,但在headless mode(不接上任何螢幕鍵盤滑鼠)下部署嵌入式產品/專案也是常見的做法。例如想要做一台Pi 追乒乓球機器人的話,顯然是無法接上螢幕鍵盤滑鼠的吧。

嵌入式產品的軟體一般來說都是在開發平台(例如桌上型/筆記型電腦或伺服器)上完成的,最後產生的二元檔再部署到嵌入式硬體上即可。為了要支持開發與部署這兩件事,Intel® Movidius™ Neural Compute SDK (NCSDK) 有兩種執行模式:

  1. Full SDK模式 – 在Pi安裝toolkit與API framework
  2. API-only模式 – 只在Pi安裝API framework
    • 安裝較快;但剖析(profiling)與編譯網路需在桌上型/筆記型電腦上完成

即便未安裝toolkit,API-only模式也讓您可以在Pi上開發各種app。API-only模式的限制在於無法剖析、檢查/驗證與編譯以及將神經網路編譯為二元graph檔。例如mvNCProfile、mvNCCheck與 mvNCCompile 都沒有安裝。

邊做邊學!

您會製作:

結合Raspberry Pi與NCS神經運算棒的嵌入式深度神經網路(DNN)影像處理系統。

您會學到:

  • 如何在Raspberry Pi的API-only模式下安裝NCSDK mode
  • 如何在Raspberry Pi上執行 NCS應用程式

您會需要:

  • Intel Movidius Neural Compute Stick 神經運算棒 – 購買請按我
  • 32/64位元的桌上型/筆記型電腦,作業系統須為Ubuntu 16.04 (“開發機器”)
  • Raspberry Pi (RPi) 3 Model B 單板電腦
  • 可外部供電的USB hub

如果還沒做的話,請在您的開發機器上安裝完整的NCSDK。請參考Intel Movidius NCS Quick Start Guide上的安裝步驟來完成。

開始吧!

Step 1:安裝Raspberry Pi為桌面模式,如下圖

樹莓派基金會取得最新的作業系統 Stretch img 檔之後,燒錄開機用的 sd卡。確認Raspberry Pi 開機並連上網路之後,使用以下指令更新系統:

注意:需使用 Raspbian Stretch,上一版 Jessie 確認不支援。

 

$ sudo apt-get update

 

Step 2:安裝Debian與Python相依套件

開啟terminal,輸入以下指令

$ sudo apt-get install -y libusb-1.0-0-dev libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev git automake byacc lsb-release cmake libgflags-dev libgoogle-glog-dev liblmdb-dev swig3.0 graphviz libxslt-dev libxml2-dev gfortran python3-dev python-pip python3-pip python3-setuptools python3-markdown python3-pillow python3-yaml python3-pygraphviz python3-h5py python3-nose python3-lxml python3-matplotlib python3-numpy python3-protobuf python3-dateutil python3-skimage python3-scipy python3-six python3-networkx

您也可用pip package manager (pip3 install)來安裝python相依套件,但我發現用debian package manager (apt-get install python3-xxx)來安裝會比較快。

Step 3:下載NCSDK到Pi

開啟terminal,輸入以下指令

mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/movidius/ncsdk

Step 4:編譯並安裝NCSDK API framework

開啟terminal,輸入以下指令

cd ~/workspace/ncsdk/api/src
make
sudo make install

Step 5:使用NC App Zoo範例程式來測試安裝是否成功

開啟terminal,輸入以下指令

$ cd ~/workspace
$ git clone https://github.com/movidius/ncappzoo
$ cd ncappzoo/apps/hello_ncs_py
$ python3 hello_ncs.py

您應該會看到類似的輸出畫面:

Hello NCS! Device opened normally.
Goodbye NCS! Device closed normally.
NCS device working.

恭喜!您成功在Pi 的API-only模式下安裝NCSDK了。

 

還能做什麼:部署已編譯的graph檔

Step 5中的hello_ncs_py範例程式只是開始NCS裝置就關閉了;它實際上並沒有執行任何推論。如果要在NCS上進行推論的話,we need a graph file that was generated by mvNCCompile,這是NCSDK Toolkit的一部分,但並沒有安裝在Pi上。

請改用已安裝完整SDK的開發用機器(桌上型/筆記型電腦),並根據 mvNCCompile doc page 上的教學,以GoogLeNet 來產生graph檔。將開發機器上的 ~/workspace/ncsdk/examples/caffe/GoogLeNet/graph 複製到 Pi 的 ~/workspace/ncappzoo/caffe/GoogLeNet/graph路徑下。

現在Pi 上有graph檔了,請根據NCS image classifier 的說明在Pi上執行影像分類器。

 

還可以試試

  • 在Raspberry Pi上執行NCS image classifier
  • 在RPi上編譯並執行C/C++ 範例程式:
    • ~/workspace/ncappzoo/apps/hello_ncs_cpp

延伸閱讀

原文經Intel授權翻譯自:https://movidius.github.io/blog/ncs-apps-on-rpi/

 

相關文章:

 

 

[Movidius神經運算棒]五步驟打造Intel Movidius NCS影像分類器

$
0
0

什麼是影像分類?

影像分類是電腦視覺的重要課題。目標在於把圖像中的某個主題或物體歸類到預先定義的類別中。現實生活中的影像分類問題是把印有各種物體的卡片拿給小孩子看,並讓他們分辨卡片上所印的東西是什麼。傳統的作法是讓機器具備一定的視覺感知能力,這有賴於使用特徵描述器的各種複雜電腦演算法,描述器像是邊緣、角落與顏色等等,來辨識或辨認影像中的一或多個物體。

深度學習採用另一個更有效率的做法來解決現實生活中的影像問題。它運用了多層彼此互聯的神經元,每一層都採用了特定的演算法去辨識或分類某個描述符(descriptor)。舉例來說,如果您想要對交通的[STOP]號誌進行分類的話,要用到深度神經網路 (DNN) 來偵測號誌的邊緣與邊界,第一層則是用來偵測邊角的數量、下一層則是偵測紅色、再下一層偵測紅色周圍的白色邊界,一直反覆執行下去。DNN可以把一個任務分配到執行單一檢算法的多個層,這樣可以處理大量的描述符,讓基於DNN的影像處理應用於現實生活中能更有效率。

作者/攝影   曾吉弘
時間   2小時
成本
難度  * * * * *
材料表
  • Raspberry Pi 3單板電腦
  • Intel Movidius神經計算棒

 

Layer 1: 邊緣偵測(八角形)

Layer 2: 邊緣附近的白色邊界

Layer 3: 紅色本體

Layer 4: “STOP”字樣

注意:上圖僅用於示範DNN如何辨識物體中的不同描述符,並非DNN用於分類STOP標示的正確呈現。

影像分類與物件偵測是不一樣的。分類是假設整張圖中只有一個物體,例如上述的幼童圖卡範例。另一方面,物件偵測可以在同一張圖中處理多個物體,並計算各物體在圖中的位置。

邊做邊學!

您會製作:

從資料夾中讀取單張影像並進行分類。

您會學到:

  • 如何使用預訓練的網路來進行影像分類
  • 如何使用Intel® Movidius™ NCS 的API框架來編寫程式

您會需要:

  • Intel Movidius Neural Compute Stick 神經運算棒 – 購買請按我
  • 32/64位元的桌上型/筆記型電腦,作業系統須為Ubuntu 16.04 (“開發機器”)

如果還沒做的話,請在您的開發機器上安裝完整的NCSDK。請參考Intel Movidius NCS Quick Start Guide上的安裝步驟來完成。

先看結果…

如果想先看看程式輸出結果的話,請用以下使令來取得範例程式 (NC App Zoo) 並執行

$ mkdir -p ~/workspace
$ cd ~/workspace
$ git clone https://github.com/movidius/ncappzoo
$ cd ncappzoo/apps/image-classifier
$ make run

make run 指令會下載並建置所有的相依檔案,例如預訓練網路、二元graph檔、ilsvrc資料集均值等。只有第一次執行時要先執行make run;後續只要執行 python3 image-classifier.py 就可以了。應該會看到類似以下的訊息:

 

------- predictions --------
prediction 1 is n02123159 tiger cat
prediction 2 is n02124075 Egyptian cat
prediction 3 is n02113023 Pembroke, Pembroke Welsh corgi
prediction 4 is n02127052 lynx, catamount
prediction 5 is n02971356 carton

開始吧!

感謝NCSDK 完整的API framework,只需要幾行Python就可以完成影像分類器。以下是image-classifier.py 中一些需要調整的使用者參數::

  1. GRAPH_PATH:要進行推論的graph檔路徑
    • 預設值為 ~/workspace/ncappzoo/caffe/GoogLeNet/graph
  2. IMAGE_PATH:想要分類的影像路徑
    • 預設值為 ~/workspace/ncappzoo/data/images/cat.jpg
  3. IMAGE_DIM:所採用神經網路之影像尺寸規格
    • 例如 GoogLeNet 採用 224×224像素,AlexNet則是227×227像素
  4. IMAGE_STDDEV:您選用之神經網路所定義的標準差(scaling value)
    • 例如:GoogLeNet不採用任何比例因子,但InceptionV3的比例因子為128 (stddev = 1/128)
  5. IMAGE_MEAN:均值減法(Mean subtraction)是深度學習領域中常用的資料整理技巧。
    • 對ILSVRC資料集來說,B、G、R的平均值分別為102、117與123

請先由mvnc函式庫匯入mvncapi模組,才能順利使用NCSDK API framework。

import mvnc.mvncapi as mvnc

 

Step 1:開啟enumerated裝置

如同其他USB裝置,當您將NCS接上應用程式處理器 (執行Ubuntu的桌上型/筆記型電腦) 的USB埠,前者會被後者枚舉為一個USB裝置。我們可以呼叫API來檢視各個NCS裝置。

# Look for enumerated Intel Movidius NCS device(s); quit program if none found.
devices = mvnc.EnumerateDevices()
if len( devices ) == 0:
print( 'No devices found' )
quit()

您知道在同一個應用程式中,可以連接多個NCS神經運算棒來提高推論效能嗎?以下語法是運用API 呼叫單一NCS並開啟 (意即準備好操作).

# Get a handle to the first enumerated device and open it
device = mvnc.Device( devices[0] )
device.OpenDevice()

 

Step 2:將graph檔載入NCS

為了簡易起見,我們採用已訓練好的AlexNet model中的某個已編譯的graph檔,這當您在 ncappzoo 資料夾中執行 make 指令實就已經編譯好了。後續會有文章教您如何編譯一個已經訓練過的網路,但現在先來看看如何把graph載入NCS中。

# Read the graph file into a buffer
with open( GRAPH_PATH, mode='rb' ) as f:
blob = f.read()

# Load the graph buffer into the NCS
graph = device.AllocateGraph( blob )

Step 3:載入單一影像至Intel Movidius NCS並進行推論

Intel Movidius NCS是以Intel Movidius視覺處理元件(VPU)為基礎。這個元件對數百萬種監控攝影機、可用手勢控制的無人機、工業級機器視覺設備提供了視覺智能。如同VPU,NCS在系統中扮演的角色好比是個視覺上的共同處理器。以本範例來說,我們採用Ubuntu系統來讀取資料中的影像並 and offload it to the NCS for inference。NCS負責所有的神經網路運算,,這樣就可以節省CPU與記憶體來執行其它應用層的任務。

我們得先對影像進行處理(預處理)才能將影像載入NCS。

  1. 調整或裁切影像,好符合後續預訓練的網路規格。
    • GoogLeNet格式為224×224像素,AlexNet則是227×227像素
  2. 從整體資料集中,減去各個頻道 (Blue, Green and Red) 的均值。
    • 這在深度學習領域中是常見的 center the data 的技巧。
  3. 將影像轉為半精度浮點數 (fp16) 陣列,接著使用LoadTensor函式將影像載入NCS。
    • 搭配skimage函式庫只要一行程式碼就搞定
# Read & resize image [Image size is defined during training]
img = print_img = skimage.io.imread( IMAGES_PATH )
img = skimage.transform.resize( img, IMAGE_DIM, preserve_range=True )

# Convert RGB to BGR [skimage reads image in RGB, but Caffe uses BGR]
img = img[:, :, ::-1]

# Mean subtraction & scaling [A common technique used to center the data]
img = img.astype( numpy.float32 )
img = ( img - IMAGE_MEAN ) * IMAGE_STDDEV

# Load the image as a half-precision floating point array
graph.LoadTensor( img.astype( numpy.float16 ), 'user object' )

 

Step 4:讀取並顯示NCS的推論結果

根據您想要如何將推論結果整合入應用中,您可以選擇blocking or non-blocking 函式呼叫兩者之一來載入上述步驟中的tensor並讀取推論結果。現在我們使用預設的 blocking 呼叫 (無需使用特定的API).

# Get the results from NCS
output, userobj = graph.GetResult()

# Print the results
print('\n------- predictions --------')

labels = numpy.loadtxt( LABELS_FILE_PATH, str, delimiter = '\t' )

order = output.argsort()[::-1][:6]
for i in range( 0, 5 ):
print ('prediction ' + str(i) + ' is ' + labels[order[i]])

# Display the image on which inference was performed
skimage.io.imshow( IMAGES_PATH )
skimage.io.show( )

 

Step 5:卸載graph與關閉裝置

為了避免記憶體 leaks 與/或區段錯誤(segmentation fault),請記得關閉任何開啟中的檔案、資源以及 deallocate 使用中的記憶體。

graph.DeallocateGraph()
device.CloseDevice()

恭喜!您的DNN 影像分類器完成了。

 

還可以試試

延伸閱讀

 

原文經Intel授權翻譯自:https://movidius.github.io/blog/ncs-image-classifier/

 

相關文章:

 

[ 課程紀錄文 ] 2017.10-12 [勵友中心創作課程]熱血講師的教育實踐 小朋友變身無懼失敗的未來Maker

$
0
0

【各!位!觀!眾!】

CAVEDU教育團隊愛心不落人後,兩位熱血講師前進勵友中心開設「無懼失敗工作坊」!

啊不,是為期12週的手動創作教育課程。

讓小朋友們體驗自己當Maker,探索興趣與職涯目標,最後更設計電路,自造腳踏車環台用的方向燈背心!

裡面還有幾個有小洋蔥的故事。一起來欣賞吧,歡迎給我們團隊一些鼓勵。

 

But! But!

你知道勵友中心的小朋友用什麼好用軟體設計電路嗎?

手刀快快看:[不錯用的電路設計軟體Multisim Blue]手把手安裝教學

作者/攝影 趙偉伶
課程時間 2017年10至12月
課程講師 郭皇甫、趙偉伶
課程場地 勵友中心好Young館

 

「開始做教育的那刻起,我開始認真思考教育的意義究竟為何?」

這是一門為期12週、每次1.5小時在勵友中心教導小朋友的課程。勵友中心一直以來致力於輔導邊緣、弱勢青少年,透過陪伴、輔導活動或課程,增加他們生命的豐富度,並幫助他們尋覓到生命的方向。勵友中心更近一步成立「好Young少年創意基地」,提供各種課程,使青少年能夠發掘出興趣之所在,進而發展成個人未來的職涯目標。

在開始設計教程的那一刻,我正思考在這科技日新月異的世界,對現今的學生而言,最重要的會是甚麼?我想引領他們學得解決問題、吸收新事物、創造新事物的能力,這是我賦予這門課程的意義。

因為我們傳統習慣的教育模式,甚少有自由發揮、Maker的課程,所以在設計課程時,要小朋友剛開始、一夏子進入自由創作的課程是有一定難度的。為此,我們將課程細分為四大部分,讓孩子們慢慢習慣於創作的氛圍。

 

一、網路蒐集通;

二、動手做一做;

三、動腦想一想;

四、專題實作;

 

以水果作畫 網路蒐集通一通

剛開始,我們先做了「水果衣服」這個題目。日常生活中,我們常會不經意把水果的果肉、醬油⋯⋯等東西不小心翻倒於白色衣服上。於是,我們透過將水果倒用在白色布上的方式,讓他們創作屬於自己的水果畫,之後請他們利用Google搜尋該如何將衣服上的水果清乾淨。最後小朋友們運用了許多方式,終於將白色舊衣洗乾淨了!

學生們開心地在白色舊衣上用水果做畫,也認識水果用在衣服上可能發生的效果為何。

在教授這門課時,發生了一個讓我十分意外的小插曲。班上有一個小男孩,母親好像是來自柬埔寨,所以他其實不太會使用注音,在使用Google時發生了一些狀況,中文字也未認識太多,於是我親自帶他一起念這些字。課程結束時,我們都非常高興他認識了所有水果的字與注音!

 

不要怕失敗 實際動手做一做

接下來我們讓小朋友們利用珍珠板做自己的彈珠台,讓大家習慣動手做。尚未製作前,小朋友們都會想很多,卻有點不敢動手嘗試,因為怕做錯。但是,「動手做許多時候如同人生,當你不敢去跌倒時,就無法體會更多不同事物,人生失敗很常見,多次失敗才能累積經驗,達到下一次的成功」我們如此告訴小朋友。

 

動腦想一想 實現蝙蝠俠披風

萬聖節剛好在十月最後一周,於是CAVEDU教育團隊讓大家開始發揮各自創意,發想萬聖節服裝。這次他們要從發想、列出材料、實際實作、修改。剛開始的情況相當兩極,有人非常願意創作;也有小朋友害怕失敗,覺得沒有很多材料怎麼可能做到!我一開始給他們的發想有兩個:機器人與亮燈天使。

之後,慢慢開始有小朋友,想做蝙蝠俠、Minecraft 的冰人、東京喰種的金木研、蛋蛋人⋯⋯等等。他們畫出各式各樣設計圖,第一堂課除了畫設計圖之外,還要跟我提出需要那些材料; 第二堂課大家就開始實際做出作品了。在創作過程中,或許因我設計的機器人是用紙箱創作的,所以小朋友們都很喜歡用紙箱進行創作。

有位小朋友讓我覺得十分感動。他想做蝙蝠俠披風,然而,其他想做披風的小朋友最後皆覺得披風很好像太難了,便直接以黑色塑膠袋取代。但我跟他說用布可以做出來,於是,他用了一條類似西裝的長褲,我們一起把褲管、褲襠剪開,將兩片褲管互相縫起來,就變成他想像中套頭的披風了!

孩子們一起開心地treat or trick

 

專題有實作 自造方向燈背心

最後發現,有的老師意願帶這群孩子騎腳踏車環繞台灣某些地區,所以我們開始發想,如何透過電子電路的方式,讓他們做出自己的方向燈背心。

讓第一次接觸電子電路的學生喜歡上這個領域其實不太容易,當我們還在學校當學生時,電子電路有許多艱澀的理論必須去理解。為讓他們覺得好玩,我們首先設計了兩個小專題:讓他們認識電壓、電流,串聯、並聯,焊接技巧⋯⋯等基礎的電子創作能力。

我們做了手持式電風扇與馬達手機充電,讓他們嘗試若要讓電風扇轉更快,有哪幾種方式;以及穩定的電壓對手機的重要性。

 

接著是挑戰度大增的設計電路,關於設計電路的軟體,我們使用的是Mouser與NI合作共同推出的軟體Multisim Blue。因為小朋友們多半是小三至國一的年齡,我剛開始還十分擔心他們接電路接不好,然而,每個人皆專注力十足地留心下一步是什麼。

畫好電路圖後,接著洗電路。

 

調配顯影劑

右邊用酒精將電路的感光層擦掉;左邊搖液體使液體均勻混和。

最後大家一同焊接,完成最後成品。

令我印象很深刻的是,班上有一位小男生十分有個性,但他從剛開始的有點小小叛逆,到後來最認真、做最好的卻也是他,甚至是班上焊接焊得很好的小朋友之一!最後電路繪製過程,其他小孩都是兩個兩個一組,只有他獨立完成全部任務。

 

結語

歷經這12周課程,我們由衷感謝這群小朋友,因為我們不只是帶著他們成長,同時也跟著他們成長。看著他們由剛開始不太願意或搞不清楚狀況,到會自己動手做、動手焊接,積極想完成成品的認真樣貌,真是心中滿滿地感動!衷心盼望他們能明白,只要願意動手做,也能做出很棒的東西;只要肯努力,即便出身較為貧困,也將會有成功的一天!

 

 

相關文章:

[ 電路設計軟體Multisim Blue ] 自己來設計一個腳踏車方向燈吧!

$
0
0

大家還記得之前在勵友中心的課程嗎?故事要從那裡說起……

原來,勵友中心的小朋友們為了要騎自行車環島,便自己製作出了方向燈背心,但CAVEDU教育團隊仔細想想,ㄟ ,這樣去環島可能還不夠安全,大概還需要在自行車上安裝一些方向燈,於是這篇教學文便熱騰騰出爐啦!!

有興趣厲友課程的朋友歡迎點選文章:【課程紀錄文 】2017.10-12 [勵友中心創作課程]熱血講師的教育實踐 小朋友變身無懼失敗的未來Maker

這次怡璇大大要介紹的作品,是一顆安裝在腳踏車後方的方向燈,它可以提供行徑方向,使後方來車可以清楚看見,增加行車安全!

方向燈的電路能自行改變LED排列形狀,也可以改變閃爍頻率。

這次的方向燈是透過LED閃爍以提供警示功能,正因為需要閃爍,所以我們使用555IC使讓它產生閃爍效果。

作者/攝影   陳怡璇
時間   2-3小時
成本  約200元
難度  * *
材料表 說明:這是一份一邊的燈的材料,若左右兩邊都要材料就需要兩份。
  • LED*6(可以自己決定數量)
  • NE555*1
  • 電容100np*1
  • 電容10up*1
  • 1K歐姆電阻*2
  • 電路板*1
  • 電池扣(水銀電池)*2或是電池盒(1.5V*4)*1
  • 按鈕(有段)*1

 

 

首先,簡單介紹一下555 IC。

555是一顆計時器,它有三種工作模式:單穩態模式、雙穩態模式及無穩態模式。以下為三種電路的分別功能:

  1. 單穩態模式:需單次觸發,當作脈衝產生器。
  2. 雙穩態模式:具有除2、整形、記憶之正反器基本結構。
  3. 無穩態模式:不須觸發連續自動產生脈波。

 

上面的電路圖是我們這次所要接的電路,這裡簡單介紹一下電路功能:

腳2(TRI)為觸發腳,C1、R1跟R2連接至腳2形成一充電回路;腳7(DIS)放電腳,C1跟R2連接腳7放電;充電時間腳3(OUT)輸出高態(H),放電時間輸出低態(L);無穩態電路會自動重複以上動作,因此接上LED後,LED便會閃爍。

輸出高態時間公式:ln(2)*(R2+R1)*C1。

輸出低態時間公式:ln(2)*R1*C1。

由上面公式與上方的電路圖,若R1=R2,充電時間便會釋放電時間兩倍。

 

Step1:繪製電路圖

依據上方的電路圖畫好電路後,仔細確認電路是否正確,接著整理好需要的零件。

 

Step2:繪製電路板

  1. 首先打開Multisim Blue。
  2. 放置零件:

點選place,再選擇component。注意出現的database會因需要的零件不同而有所不同。

3.選擇零件:(555)

選擇master database,並在component搜尋555

因為555有很多種,每種的footprint皆不同,所以必須另外選擇footprint。選取零件,左鍵點選兩下,至ValveEdit footprint

進去後,選擇Select from Database

進入後,選擇Mouser Database,在Footprint欄位找到DIP-8,然後按下Select

接下來要調整IC腳位。

Edit Footprint介面,選擇Map pins。要注意Footprint那排的編號,選擇DIP-8的那一個,前面的數字編號可能因每次軟體重新開啟而有所不同,也要注意一下圖片的樣子。

進入以後,將Footprint那欄位的數字改為以下順序,然後按下OK。這樣555footprint便修改完畢。

3.選擇LED

選擇databasemouser database,在component搜尋C503B,然後選擇第一個。會選擇這個,是因裡面就找到這個是普通的LEDfootprint符合我們的需求,其他幾乎都是SMDLED

這次的電路需要6LED,若讀者想要多一點LED也可以自行增加,不過要注意輸出的電壓、電流是否足夠一次點亮這麼多LED

若要版面看起來乾淨一些,可以把不必要的文字關起來。

點取零件,左鍵按兩下,選擇display,將show values取消。

3.選擇電組

選擇databasemaster database,選擇resister,然後component選擇1K。這邊需要兩個電組。要注意它的footprint,不要選到no footprint

4.選擇電容(無極性)

選擇databasemouser database,在component搜尋0.01,然後選擇CAP_Film_TH_63V_Panasonic那一個,可能會有點大,但因為其它找到的都是SMD的,我們需要的是有接腳的。

這是陶瓷電容,無極性的通常都是使用這個,可參考網址:https://www.mouser.tw/productdetail/vishay-cera-mite/440ls20-r?qs=sGAEpiMZZMuMW9TJLBQkXhF%252bCvRzw5Mb7B8NEuAfSws%3D

 

5.選擇電容(有極性)

容量比較大的電容通常都會被做成電解電容,所以會有極性上的差別,焊接時要注意有沒有極性接反。選擇databasemouser database,在component搜尋10µF,250V,然後選擇第一個。與上面一樣,因為需要接腳,所以選擇這個圖,實際上並不需要這麼大的耐壓。

這個就是電解電容,可參考網址:https://www.mouser.tw/productdetail/panasonic/eeu-fs1c222lb?qs=sGAEpiMZZMvwFf0viD3Y3fHxNcSaiftwQrwpb7ohpUx3Ai0h0VqORQ%3D%3D

 

6.接地(這是方便辨識的地)

選擇databasemaster database,然後選擇POWER_SOURCES,然後選取GROUND

7電源

選擇databasemouser database,選擇Sources,選取第一個。

這邊需要兩個電源,電壓才足夠供給555供電,兩個電源皆需串聯。串聯後,正極的部分就是VCC,負極則是GND

若嫌它顯示太多不必要文字,一樣可以取消顯示。

這邊要把它的電壓改成3V,因為這裡是使用鈕扣電池,一顆3V。一樣選取零件,左鍵按兩下,然後選擇Label,把裡面文字改成3V

若沒有這樣的電池與電池扣,可以跟下面按鈕一樣,改採排針代替,然後改成使用電池盒。

 

8.按鈕

按鈕由於要另外接線出去,因此以排針代替。選擇databasemouser database,尋找到HEADER_PIN_Single_Row_TE_Connect,然後Component搜尋102972-1。這裡需要兩個排針

至此為止,所需零件就都找完、調校好了,接下來便按照電路圖接好它。

若想要左右兩邊製做在同一塊電路板上,可以把上面的電路直接再複製一個貼上,這樣在PCB拉線時就可以兩個一起擺了。

接下來就是轉成PCB。點選Transfer,然後Transfer to Ultiboard,按下Transfer to Component Evaluator。這樣就能產生PCB的檔案。

Step3:繪製PCB圖

剛開始進來的畫面會長成這樣。

1.更改版面位置。

選擇除了電池以外的零件,電池就是最大的那兩個,選擇好之後,按下右上角的Swap layer,將零件改為背面。

2.放好零件。

將所有零件擺放好。因為是方向燈,因此我把LED擺成箭頭形狀。

3.改變PAD

零件排好後,我們要先改變PAD面積,要把它的面積改大,這樣才好焊接。

注意上面單位,要先改成mm,然後點選PAD,點取RectangleLength改為2,最後按下OK

這裡一樣除了電池之外,每個都要改。

4.自動佈線

按下Ctrl+Shift+8,它就會幫你把線佈好。優點是方便快速,缺點是它會有上層和下層的線。

5把線整理好

通常自動佈線完畢後,都會進行手動整理,自動佈線會產生很多不必要的轉彎,若無法把線都改成同一面,也可以修掉不必要的轉彎即可。

6.改線寬

選取線,然後左鍵按兩下,便會跑出以下畫面。選擇General,然後Width改成0.7,最後按下OK。若是怕洗電路時線斷掉,也可以加粗一點,但線也不是愈粗愈好,而是要看電路的電流以決定。

7.最後結果

當線寬都改好後,這就是最後的完成圖,就能拿去洗電路並把成品做出來了。不過與前一步驟整理線的圖不太一樣的是,因為線寬修改過後,有可能線就會短路,若是短路就需要微調一下。

再來就是把圖片列印出來。

曝光。

曝光完成後要先顯像。

顯像完成後進行蝕刻

蝕刻完成後,電路板就大功告成了!

電路板完成後要再切割、鑽孔,然後把零件焊接上去,通通做完後便可綁在腳踏車上面,按下按鈕,LED便會開始閃爍。BlingBling!亮晶晶!

按鈕就固定在把手上。

 

相關文章:

 

 

 

[情人節快樂,自製屬於自己的Google doodle吧!] 使用Scratch設計Google doodle 互動小動畫

$
0
0

本次Google與Scratch公開教學剛好搭上了二月的情人節節慶,也維持著Google doodle的老傳統(每當節慶時都會有特別的字樣設計或是互動式小動畫),結合了Scratch的圖形化程式後讓人人都可以成為Google doodle設計者,這樣的想法真的是很棒呢!

作者/攝影   曾吉弘
時間   1小時或看您想要花多少時間!
成本
難度  * *
材料表 可連網之個人電腦

 

Google與Scratch聯手推出基礎教學課程,告訴您如何自行設計 Google doodle,就是在Google 首頁看到的各種以Google字樣為主的簡易小動畫,還有12堂基礎課程,有興趣的家長老師們可不要錯過喔!

由此進入教學網頁,看完教學影片請點選右邊的 “Starter Project” 就會進入這次主題的 Scratch 樣板,相關的圖檔與效果檔都已經預先載好了。

開啟專案會看到基礎的Google字樣,每一個字母都是一個獨立的角色(sprite)。已經玩過Scratch的朋友到此應該已經一頭栽進去了,馬上就有很多東西可以玩啊~

您可以點選某個字母之後點選造型(costumes),可以看到本專案已經預先提供了非常多可愛的造型。

那沒學過的呢?別擔心,網頁下方一共有12個基礎課程,每一個課程都有影片,邊看邊學很方便 (以下按照原文順序翻譯):

切換角色(Switch Costume) 說說話(Say Something)
加入背景(Add Backdrop) 改變顏色(Change Color)
編輯、畫畫或加入字母( Edit, Draw or Add Letters) 追著滑鼠跑(Chase)
修改舞台(Change Scene) 讓字母旋轉(Spin)
字母隨機移動(Jumble Letters) 讓字母消失(Disappearing Sprites)
讓字母隨著音樂畫遍(Dance Whirl) 字母彈跳球(Bouncing Sprites)

 

這是阿吉老師做到一半的截圖,一起來玩玩看吧!

您當然也可以結合目前很熱門的實體運算概念來與真實世界互動,例如Scratch board、Arduino與樂高Wedo等等都是很不錯的喔!

 

相關文章:

[ 報導 ] 2018.2.9-中科智慧機器人自造基地 新創公司、Maker的應許之地

$
0
0

還記得威爾・史密斯主演的科幻電影《機械公敵》嗎?在電影的末尾,眾多AI智慧機器人似乎得到了拯救,走向屬於機器人的應許之地。現在,台灣也有一個AI智慧機器人的應許之地——中科智慧機器人自造基地,一起來瞧瞧這個機器人的自造基地,跟我們有什麼關係吧!

作者/攝影 宗諭
活動時間 2018.2.9
活動地點 中科智慧機器人自造基地展示中心
  • 未來四年,培育4000位人才。
  • 創造1450個新創公司就業機會
  • 未來要有50家以上新創公司進駐
  • 產生45AI智慧機器人應用計畫
  • 產生30AI智慧機器人關鍵技術與產品

 

大家猜看猜,這是國內哪家大企業的KPI呢?其實,這是科技部對於「中科智慧機器人自造基地」所設定的一個行動目標。由此亦可得知科技部對於這個智慧機器人自造基地期許甚深,科技部部長陳良基不僅上台公開宣示,更盼望不久將來,這個智慧機器人自造基地可以發展為全球AI智慧機器人產業的動力火車頭!

圖1 科技部部長陳良基(左)與中科管理局局長陳銘煌,共同啟動「中科智慧機器人自造基地展示中心」。

 

機器人秘密基地

其實,中科的機器人自造基地已於2017年10月25日揭牌剪綵,2月9日則是自造基地展示中心的開幕典禮,代表自造基地正式營運並對外開放使用。基地除將提供機器人相關軟硬體設備、開放式創新平台及Low-code development platform,更將開放給智慧機器人相關Maker、新創團隊、中科園區廠商與工程師、公會、協會、研究中心,以及高中、大學的學生使用。所以,各位想要打造機器人的Maker大大們,可千萬不要辜負政府與中科的用心良苦,務必要充分運用這個AI智慧機器人的應許之地!

 

展出各式機器人

開幕典禮當天,現場還有豐富的午餐,是展示了許多產業界研發的機器人。小編就帶大家一起身歷其境地瞧一瞧:

 

1.「迪羅科技」的智慧運算機械手臂,整合NVIDIA的Jetson TX2模組與NEXCOM的機械手臂。

該如何使這台機械手臂運作呢?首先要有大量的照片。

圖2 迪羅科技的智慧運算機械手臂

然後,將這些照片傳入超級電腦NVIDIA DGX Station,進行Model Training。也正是在這一階段運用NVIDIA Deep Learning GPU Training System(DIGITS)關於深度學習(Deep Learning)的技術。

圖3 超級電腦NVIDIA DGX Station

 

再將經過Training的Data傳送至Jetson TX2模組。

 

圖4 Jetson TX2模組

Jetson TX2模組串連NEXCOM機器手臂。

圖5 NEXCOM機械手臂

透過Jetson TX2模組進行即時影像辨識,取得物件種類與位置資訊,之後再透過指令使機械手臂完成動作。大功告成!

 

根據小編的現場觀察,由於自造基地尚處於起始營運階段,因此,目前在展示中心展出的機器人,除了「迪羅科技」的智慧運算機械手臂有運用深度學習(Deep Learning)技術,可算是AI智慧機器人之外,其他的機器人應該比較算是工業用機器人。因此,接下來以圖片搭配簡單文字介紹:

 

2.安全皮膚機器手臂,由工業技術研究院與原見精機公司共同開發。

圖6 安全皮膚機器手臂

3. MotoMINI超小型組裝機器人,由安川電機研發。

圖7 MotoMINI超小型組裝機器人

4.教學專用-工業六軸機械手臂,由NEXCOM研發。

圖8 工業六軸機械手臂

5.鞋底塗膠機器人,由勤堃機械研發。

圖9 鞋底塗膠機器人

6.台達SCARA機器人飛拍插件工作站

圖10 台達SCARA機器人飛拍插件工作站

 

7.HIWIN公司系列機器人

圖11 HIWIN公司系列機器人

8.3D脊椎手術導航系統,由鐿鈦科技研發。

圖12 3D脊椎手術導航系統

9.機器人自動咖啡販賣機,由勵德自動化公司研發。可說是現場另一人氣機器人,不少人在排隊⋯⋯等喝咖啡(疑?)。

圖13 機器人自動咖啡販賣機

10.高精度光固化3D列印設備,由馬路科技研發。

圖14 高精度光固化3D列印設備

 

舉辦機器人大賽

雖然部分硬體設施還待進一步完工,然而,根據中科管理局陳銘煌局長致詞時的說法,應該是軟體先行。除了將舉辦「世界機器人大賽(FRC)」的初賽與觀摩外,陳局長更豪邁宣示(在台上直接請示陳良基部長,猛!),將在自造基地舉辦「FIRA機器人世界盃大賽」,現場一遍叫好聲!

圖15 期待「中科智慧機器人自造基地」,幫助台灣智慧機器人產業建立完整生態系。

 

建立產業生態系

雖然政府與中科打造了一個設施完善、軟硬體兼備的自造基地,但若想建立起機器人產業,甚至進一步成為機器人產業生態系,還有賴產官學界的通力合作。因此,各位Maker大大,趕快來使用場地喔,就靠你們了!

 

祝大家新春快樂

同時,正值農業春節,CAVEDU教育團隊也在此祝福大家:新年如意、平安喜樂、狗年旺旺來!

 

相關文章:

 

 


[ 2018小小自造者冬令營-Boson篇 ] 2018.1.29-2.2小朋友的創作魂大爆發!!

$
0
0

當小朋友遇上Boson電子積木套件,會花生什麼事呢?

在CAVEDU教育團隊主辦的「2018小小自造者冬令營」就真實上演喔!

答案讓你猜一猜:

  • 小朋友大爆走
  • 小朋友鴉雀無聲、啞口無言
  • 小朋友創意大爆發,製造出馬力歐宇宙

答案會是什麼呢?

作者/攝影 宗諭 / 楨詒、怡婷
課程時間 2018.1.29-2.2
課程講師  品叡、楨詒、皓云、怡婷、偉伶
課程場地 CAVEDU教育團隊大本營

 

Boson是由DFRobot開發出來的電子積木套件,也就是藉由一個一個的電子積木,讓孩子與想要學習電子電路原理的初學者們,能夠以更簡潔明確的方式學習。

因為在Boson的電子積木套件中,提供了And、Or、Not的邏輯方塊,所以,小朋友可以透過Boson學習數位邏輯,體驗數位邏輯的符號運用。在此,先簡介一下數位邏輯,讓大家有個初步了解。數位邏輯又稱邏輯閘,就是當我們把一個或多個電子訊號,比方說電壓或電流,輸入一個電子電路,然後這個電子電路透過本身的運算,可以產生出輸出訊號,那麼這個電子電路就是一個邏輯閘。

數位系統中的電子訊號,例如我們剛剛提到的電壓或電流,在數位系統中都只有兩種數值,就是0跟1。比如說,我們可以將高的電壓定義成邏輯1, 而將低的電壓定義成邏輯0。所以,在一個數位系統中最簡單的運算就是邏輯運算,而負責邏輯運算最基本的元件就是邏輯閘。

日常生活中有什麼地方會運用到數位邏輯呢?比方說,我們每天都會用到的電腦,它的主機板就是由許多的邏輯閘所組成;還有我們出國會搭乘的飛機,上面的許多航空儀器,也都是由許多邏輯閘所組成。

與過去極為不同的是,以往台灣的教育較為重視記憶和考試,透過這樣的方式教導學生數位邏輯。然而,現今Boson把邏輯閘實化成為實際可動手玩、體驗的積木,孩子從小便習慣使用,長大後自然對邏輯閘的概念不陌生。

 

超興奮,用Boson做自己的夢想成品

於是,在這次「2018小小自造者冬令營-電力公司」第三天的活動中,CAVEDU教育團隊就讓小朋友們親自動手體驗Boson積木的樂趣,小朋友可說是超興奮完全停不下來!

1 小朋友興奮無比玩Boson積木

2 玩積木停不下來

當天上午,講師先講解Boson的顏色,然後拿出按鈕、組版、跑燈、燈條,讓小朋友親手接起來,他們必須了解積木間方向的關係,才能成功把LED燈接好。接下來,就是讓孩童把自己想要的積木樣式做出來,完成後配合感測器執行動作,製造出他們心目中的魔法棒。

3 LED燈接好

4 點亮了!YA

超能力,小朋友打造馬力歐之宇宙

然而,小朋友們的創意可說是火力全開,大人設定的框架完全限制不了他們!因為Boson可與積木結合,所以小朋友的作品多半與造型積木連結。從一開始的槍、機器人,至後來完全爆發Maker自由創作的精神。

5 Boson積木創作——機器人

6 Boson積木創作——

因有位小朋友最近常在家中與爸爸打「超級馬力歐」電玩遊戲,所以在他的大力吆喝下,大家開始製作電玩遊戲「超級馬力歐」中各式各樣的道具,包括,黃色神秘道具箱、蘑菇、金幣,最後完全一發不可收拾,搭配上Boson積木的聲光效果,幾乎完成一個作品,連教課的講師們皆十分咋舌小朋友充沛的創作力。

7 馬力歐的黃色神秘道具箱

8 馬力歐宇宙

下午則是教導邏輯閘,雖然是比較抽象的概念,但因Boson十分直覺化,所以小朋友們只要按一按、玩一玩,就能搞懂數位邏輯中的And、Or、Not的觀念。

 

超直覺,麻瓜完全可以無痛就上手

然而,Boson可不只是教小朋友好用而已喔!因為DFRobot還有針對最近在Maker界很火紅的micro:bit,推出Boson kit套件包(micro:bit需另購),內附一片micro:bit擴充版,上面有電源開關、六個周邊接頭、音量鍵及耳機插孔。套件包內還提供許多有趣範例,可以立即動手實作。當然,Maker們更可以透過這片擴充板與micro:bit充分結合,找出更多創意十足的玩法。

總而言之,Boson這套電子積木套件提供了非常直覺化的學習方式,讓在這方面自認為麻瓜的朋友們,完全可以無痛上手!

相關文章:

Mitchel Resnick教授給台灣孩子、家長與教學者的一段話

$
0
0
作者/攝影 曾吉弘

 

CAVEDU與Mitchel Resnick教授的淵源相當深,要說是這行的祖師爺也不為過。阿吉老師早在大學時代就與M教授碰面過了,他從1999年的RCX(甚至更早的Cybermaster與Scout,沒聽過了吧~) 就開始與樂高公司在 Mindstorms 系列上有密切合作,所以M教授在2004 Mission Mars 與2006 NXT 發表兩次訪台時都有幸與他見面過。

 

Scratch從2006年誕生以來,介面與風格可說是沒什麼變動。相較於軟體上大家都在追求”還要有什麼?” 我反而佩服的是M教授說過的”我們要保留哪些核心功能?”

人生能有幾個15分鐘能與心目中的大師聊天?2016年來MIT受訓時,好不容易才和他約吃早餐,把我們出版的[Scratch 數位互動我最行]致贈給M教授。更何況這次來美國將近半年,知道他就在斜對角300公尺外的Media lab,心情可是大大不同。

M教授對於即將在今年八月上線的Scratch 3.0非常非常期待(他用了super super excited),期待能幫助所有的孩子們”創意思考 (think cratively) “並成為”創意思考者 (creative thinker)”,這正是LCL課程的核心觀念所在。如果大家想要多了解 Lifelong Kindergarten小組的理念的話,建議一定要看看Learning Creatvie Learning的課程網站,六周課程每周都非常實用且精彩。CAVEDU教育團隊很高興能協助LCL網站與課程內容的繁體中文化,並於2016 17年度與台灣Intel公司協助推廣Computer Clubhouse,M教授認為這某方面來說可視為maker space的源頭。

 

對於Scratch 3.0,他題到了以下幾點功能:

  1. mobile device better
  2. extension
  3. 網路服務 (在此提到一個Scratch結合Spotify的範例)

 

這次抓緊機會請他錄一段影片給台灣的大家,也讓他與團隊同仁知道台灣在使用Scratch教學上非常活躍。期待他有機會能再來台灣。

 

M教授在訪談中提到學習如何創意性思考、系統性推理,還有彼此合作來完成事情,這些技能可說是前所未有地重要。Lifelong Kindergraten小組會變得更開放來堅持Scratch的原初精神。讓大家在運用Scratch來”做什麼”與”怎麼做”等方面有更多可能性。我也非常期待看到台灣的小朋友們運用Scratch 3.0所完成的作品。

當天也感謝謝宗翰(目前在Meida lab Biomechanics小組攻讀博士,領域為機器義肢/腳)協助訪談與拍攝照片喔。這個樂高桌子實在是太搶鏡頭了~

 

更多照片

從Media lab一樓大廳走上去到4樓就是Scratch大本營

大廳中央有用樂高完成的Media lab建築模型,好精緻啊

挑高樓中樓,採光非常好,基本上除非陰天不然白天不太需要開燈。

每個小角落都充滿驚喜呢,可以看到 Scratch結合各種裝置的應用:樂高Wedo, Boost、Microbit、Makey Makey,還有他們自己作的硬體等等。也可以看到歷代樂高的智慧型積木主機,一下子就快20年過去了啊~

 

相關文章:

[ 教學文章連結 ] 手把手引領您,使用DesignSpark PCB「新增元件」功能

$
0
0
作者/攝影 宗諭/偉伶

 

DesignSpark PCB是款好用的繪製電路軟體,

然而,使用它時,難免也會遇到找不著某個電子元件的窘境。

CAVEDU這篇教學文,目的正是要手把手教導您,

如何使用DS PCB「新增元件」功能。

看完之後,相信您再也不用擔心找不到合用的電子元件了!!

 

 

閱讀全文:https://www.rs-online.com/designspark/content-types/article/9115?lang=cn

[Raspberry Pi 3+] 為您介紹新版樹莓派七大特點:Raspberry Pi 3 Model B Plus

$
0
0

 

作者/攝影 宗諭 / 英國樹莓派基金會

Raspberry Pi 3 Mode B +購買傳送門

只有信用卡一般大小的Linux系統單板電腦Raspberry Pi(樹莓派),可說是英國電腦工業史上最偉大的成功之一!因為,自從2012年Raspberry Pi開始進行商業生產後,它已經銷售超過1900萬片,並且這個數字仍在快速攀升中。

從Raspberry Pi zero、Raspberry Pi 1、Raspberry Pi 2至Raspberry Pi 3,這塊單板電腦仍在持續進化,其應用也非常廣泛,比方說,試算表、文字編輯、遊戲⋯⋯等等,還能播放高畫質視訊影片,以及控制其他硬體,例如感測器和馬達,甚至可搭配Arduino與樂高機器人進行整合式應用。可以說,只要接上鍵盤、螢幕及滑鼠,Raspberry Pi就是一台小型個人電腦。而就在今天下午(2018年3月14日),其開發者英國樹莓派基金會透過官網對外宣佈,Raspberry Pi 3 Plus正式發行囉!相信大家對此一定非常好奇,現在,就讓小編帶大家一起來看看,究竟Raspberry Pi 3 Model B Plus(以下簡稱Raspberry Pi 3 B+)與Raspberry Pi 3 Model B相較,有何更新:

圖1 最新一代的樹莓派機身

1.CPU 從BC2837升級為 BC2837B0,1.2GHz四核心升級為1.4GHz四核心

 BC2837B0Raspberry Pi 3 Broadcom應用處理器的升級版本,優化了供電迴路,並且加裝了一個金屬蓋,這使Raspberry Pi 3 B+可以降低電壓運作以減少耗電量,同時可更加準確監控晶片的溫度。

Hint:CPU的位置和原本的不一樣,如果有機構/電路和CPU位置有關的話需要做修改

 

2.Wi-Fi升級為雙頻網路 2.4Ghz + 5Ghz

 與Raspberry Pi 3相較,Raspberry Pi 3 B+的Wi-Fi功能在2.4GHz頻寬下,有較佳表現。然而,在5GHz頻寬下,表現更是沒有話說,請參考以下表格:

Tx bandwidth (Mb/s) Rx bandwidth (Mb/s)
Raspberry Pi 3B 35.7 35.6
Raspberry Pi 3B+ (2.4GHz) 46.7 46.3
Raspberry Pi 3B+ (5GHz) 102 102

(表格資料由LibreELEC developer Milhouse提供)

值得一提的是,Wi-Fi的電路封裝在一片金屬片的屏蔽之下,上面還雕有小小的英國樹莓派基金會的Logo喔!

圖2樹莓派3 B+的CPU(中)與Wi-Fi裝置(左上)

 

3.藍芽升級為4.2版本有線網路升級

Raspberry Pi 3B+的有線網路連線速率,約略是Raspberry Pi 3B的三倍,請參考以下表格:

Tx bandwidth (Mb/s) Rx bandwidth (Mb/s)
Raspberry Pi 3B 94.1 95.5
Raspberry Pi 3B+ 315 315

(表格資料由LibreELEC developer Milhouse提供)

4.增添PoE功能(Power over Ethernet,網路線供電)

使用了有PoE支援的magjack,把PoE所需要的電源/訊號接到4pin header方便PoE Hat使用。

Hint:4pin header在原本的reset pin位置,如果有機構/電路和reset pin位置有關的話
需要做修改

圖3樹莓派3B+新增了PoE的功能,圖中也看見4 pin接頭。

 

5.CPU效能更加優化

這次Raspberry Pi 3 B+ 改善了 BCM2837B0 的供電封裝,而且新的MaxLinear MxL7704 電源管理 IC能夠調整電壓,過去不能調整電壓,只能透過降頻的方式降低電流,現在電壓也可以調整了。

而因為比較不會碰到過熱降頻,在較長時間下的性能也能提升。CPU頻率原本是1.4GHz,在高於70度為降低發熱量以避免過熱觸發降頻保護頻率會降低至1.2GHz。請參考以下這張圖表:

圖4(以上圖表由Gareth Halfacree提供)

6.GPU沒有變化,基於原本VideoCore的東西都不用改

 根據樹莓派基金會於官網上的說明,3D繪圖在Raspberry Pi 3 B+上依舊是可行的,這一點請大家放心。

 

7.價格

 最後一個點,當然就是大家相當關心的價格問題。在這點上,這款新的樹莓派可以說是沒有任何進展,仍然跟Raspberry 3 Model B一樣,維持在35英鎊,相信大家會樂於掏出口袋中的摳摳的。

 

結語

 一直以來,CAVEDU教育團隊製作了非常多運用樹莓派的專題與專案,也開設了許多關於樹莓派的課程及工作坊,可以說,CAVEDU是樹莓派的愛用者也是積極推廣者。透過這篇文章,盼望大家對於新版樹莓派有一個初步的了解,也請大家期待即將推出的Raspberry Pi 3 Model B+開箱文喔!

(本文多數資料與圖片引用自英國樹莓派基金會官網https://www.raspberrypi.org/

Raspberry Pi 3 Mode B +購買傳送門

相關文章:

[ 報導 ] 2018.2.27-藉由教育與推廣,機器人在產業應用上大進擊,指日可待!!

$
0
0

如果有一天,小七泡咖啡的都變成機器人,我們該怎麼辦!?

 

除了探討機器人應用、機器人教育、機器人推廣之外,

教育,亦是這次在淡江大學舉辦的「教育 X 自造 X 機器人論壇」的主軸,

有分享近期火熱的Micro:bit在中小學的應用,以及大學Maker教育的落實。

一起來看看這次論壇的精彩內容!

作者/攝影 宗諭
活動時間 2018年2月27日 下午1:30至5:00
活動地點 淡江大學守謙國際會議中心

 

淡江大學是南科智慧機器人創新自造基地計畫中,位於北部唯一的衛星基地,因此,自然肩負建設完善機器人自造場域與交流平台的使命。於是,在淡江大學一系列推動計畫中,首先登場的是,2月27日於淡江大學淡水校區守謙國際會議中心舉行的「教育x自造x機器人∞交集」論壇,為後續豐富的課程與競賽等計畫內容揭開序幕。

01-守謙國際會議中心

02-守謙國際會議中心設備新穎

 

1個願景、夢想:當小七賣咖啡的都變成機器人!?

議程中,新漢股份有限公司沈亦中處長提出一個非常遠大的願景,就是機器人取代所有現有人力所進行重複性的事務,使人類生活變得更加美好!他認為,機器人取代人力,將於未來五至十年內發生,幫助人類解決人手無法達成的事。

03-某天早上醒來,小七變成機器人在賣咖啡!?(示意圖)

沈亦中認為,機器人(或機器手臂)的強項在於進行重複性的事務,在這一點上,人無法與機器人競爭;而AI可進行所有有邏輯性的事務,如果是這樣的話,未來,人類的價值在哪裡?經驗,或許是人可以嘗試的路,沈亦中認為,在這一點上,AI、機器人無法取代人類。

04-重複一百遍、一千遍、一萬遍,機器人也不會累。

新漢股份有限公司正在努力的方向,就是培養一群願意用機械手臂進行各種產業應用的人才,幫助他們把程式寫出來。簡單說,就是系統化機器人學教育,讓機器人可以做各種不同事情,例如賣雞排、賣鹹酥雞、做車輪餅、搖手搖茶⋯⋯等等。(口水都快流出來了!)未來,在社會上每個角落,只要是重覆性工作,都可以用機械手臂取代!雖然,目前這只是一個願景,但沈亦中預估,可能在3至5年內,這個現象就會逐步實現在社會上各個角落。

 

除了探討機器人的應用外,這場論壇另一個主軸是:教育。從國中小STEAM教育,一直到大學的Maker教育。

 

1塊板子:Micro:bit的教育現場

麥克Lee土饅頭工坊創辦人李俊德,就介紹近來很火燙的Micro:bit,在STEAM教育上的開展。

05-李俊德(Ted Lee)介紹Micro:bit

 

他舉例,Micro:bit的應用可以與生活經驗連結,像是繪圖小車 計數器⋯⋯等等。

06-Micro:bit小彼特

07-運用Micro:bit製作的繪圖小車(擷取自臉書社團「麥克樂彼特(Micro:bit)太好玩社」,作者為Youmans Yang)

因為Micro:bit的程式並不困難,小編實際看過Ted Lee的介紹後,覺得跟Scratch很類似,同時也可以轉換成JavaScript,可以有很多的變化。因此,可以讓國中小學生充分發想創意,使編程通識教育普及化、縮減數位落差!

08-Micro:bit的程式(擷取自Micro:bit官網)

 

之後,由李俊德等人發起的「大Soobi計畫」,今年還將在3月16日邀請Micro:bit教育基金會新任CEO訪台,並舉辦研討會,大家拭目以待囉!

 

1種教育方式:大學也需要動手做的Maker

淡江大學電機系周建興教授,曾多此與CAVEDU教育團隊合作,他認為,大學也很需要Maker,因為做研究需要一些裝置,就需要Maker,亦即動手並解決問題的人。

09-笑容滿面的周建興教授,與CAVEDU有多次合作經驗。

Maker一定要是工科學生嗎?不一定喔!大學需要Maker來自不同科系,才能激盪出不同火花。以下是周教授實驗室團隊製作出來VR頭盔:

 

 

周教授很重視Maker教育,常帶學生參與亞洲地區的Maker Faire。透過參展,讓學生自信心得到很大鍛鍊與提升,對學生們的人生有很重大影響!以下是他們參加2014東京Maker Faire的一些花絮:

 

 

∞無限創意延伸

淡江大學研發長王伯昌於論壇中指出,未來淡江大學還將舉辦三場機器人相關競賽系列課程,並致力建設完善機器人自造場域及交流平台。盼望此次衛星基地計畫,能在北台灣淡水地區,甚至北海岸地區營造出優良的交流環境,向上培育機器人軟硬整合的設計人才,向下培養學生對機器人的興趣,多方向推廣並營造出具整體性的自造文化。

 

文末彩蛋:Visual components(數位工廠軟體)

在這次論壇中,還介紹了一款數位工廠軟體,名叫Visual components。簡單說,就是工廠老闆的規劃神器,因為這個軟體就像一座虛擬工廠,可以在工廠實體營運前,把想法設備設計出來,然後跑軟體內的數據,看實際讓工廠這樣運作是否可行。小編看了之後,覺得這套軟體蠻實用的,因此介紹給大家,放上軟體網站與相關圖片,請大大們品香!

 

網站:https://www.visualcomponents.com/

10-軟體的介面

 

11-建構起一間虛擬的數位工廠

12-這是「五」力全開、「五」功高強的概念嗎?

 

相關文章:

[Raspberry Pi] 完全不接螢幕鍵盤滑鼠,電腦一開始就用網路線遠端連線Pi

$
0
0

 

作者

袁佑緣

時間

三小時

難度

***

材料表

  1. 電腦
  2. Raspberry Pi  (2018 Pi3+測試中)
  3. 網路線
  4. USB轉RJ45接頭(如果電腦需要額外的網路孔的話))

我們在使用Raspberry Pi時,常會需要額外的設備例如準備螢幕、鍵盤、滑鼠才可以操作, 使用上非常的不方便,而本文就是我們將介紹如何只透過一條網路線就能操作Raspberry Pi, 並且還可以透過筆電或桌電分享網路給Raspberry Pi,不用再辛苦地去接無線網路。

在PC中設定網路分享

以下的內容將會以Windows的作業系統為主(本範例用的是Win10), 使用macOS的朋友請直接參考另外一篇教學文 Raspberry Pi 教學-使用網路線讓電腦與樹莓派進行連線(For Mac OS X)

首先請先打開控制台(control panel),並打開網路設定。

接下來進到網路共用中心(Network and Sharing Center)。

應該會看到電腦上可以用的網路裝置,以筆者的電腦為例, 筆者有兩個乙太網路裝置,一個是讓電腦可以連到外網的裝置(“乙太網路”), 另外一個則是USB轉乙太網路卡(“乙太網路 2”),我們希望可以將這個連到外網的網路, 透過這個USB轉乙太網路卡分享網路給Raspberry Pi。

如果讀者現在打開左邊的網路介面卡設定(Change adapter settings)的話, 應該可以看另外一個網路裝置是打叉的, 因為我們在這上面還沒有設定網路, 如果直接接到Raspberry Pi上是不會有任何反應的。

所以為了要讓這個要分享給Raspberry Pi能有網路, 我們必須要從另外一個有接到外網的裝置, 分享網路給另外一個裝置。

點選功能(properties), 接下來選擇分享(Sharing)的選項, 並將分享的功能勾選如下圖, 並指定裝置為欲分享網路的裝置, 例如本範例中的”乙太網路 2″。

完成後可以點選欲分享網路的裝置中的詳細資料(Details), 如下圖,讀者可以看到右邊的IPv4 Address是192.168.137.1, 這是所分享的網路中的電腦IP位址, 但實際上Raspberry Pi的IP位址還不知道。

掃描Raspberry Pi的IP

所以我們還需要額外的工具來掃描Raspberry Pi的IP位址, 例如本篇範例中用到的Advaned IP Scanner, 這是一款免費的IP掃描工具, 讀者可以從以下的網址來下載。

接下來請安裝IP Scaner。

安裝完成後,執行IP Scanner, 如下圖,按下Scan之後就可以掃描電腦網域附近的可能裝置, 另外為了要節省少描的時間, 建議讀者可以把欲掃描的IP範圍給定, 例如本範例中的192.168.137.1-254。

最後我們記下掃到的Raspberry Pi IP位址, 例如本範例的(192.168.137.173)。

接下來我們只剩下最後一步, 就是要如何透過網路連線到Raspberry Pi, 一般來說我們會用SSH來去連這個IP, 進而登入Raspberry Pi的系統當中。

SSH連線到Raspberry Pi

為此我們必須準備好SSH的工具, 筆者建議可以透過 Chrome瀏覽器的插件Secure Shell 來進行SSH連線,因為瀏覽器是跨平台的,所以就算在macOS的系統上也可以適用。

安裝完成後,讀者可以直接在瀏覽器的網址列直接打上”ssh”, 接下來再按下Tab鍵就會自動進入ssh插件模式, 然後就可以打上”Raspberry Pi使用者@Raspberry Pi IP位址”, 例如本範例的”pi@192.168.137.173″。

初次登入的話,一開始會先建立金鑰的認證, 請輸入”yes”來同意認證。

成功登入後就會如下圖, 會進到一個Raspberry Pi中的shell中。

補充

如果讀者是在Raspberry Pi上安裝官方推薦的Raspbian系統的話, 一般來說,為了安全考量,預設都是會關閉SSH的功能, 所以說如果Raspberry Pi可以拿到電腦分享網路的IP, 但是卻SSH卻登不進去的話,可以按照下面的步驟來強制開啟SSH的功能,

首先請先將Raspberry Pi的燒錄過系統的SD卡插到電腦上面, 並打開裡面的”boot”磁區,如本範例中的F槽。

接著再右鍵新增一個空白文件,命名為ssh。

 

當Raspbian開機時,如果說boot磁區中有一個檔案檔名叫做ssh的話, 就會強制開啟ssh的功能,如下圖。

相關文章:

 

[AI 人工智慧應用] MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(上)

$
0
0

作者

袁佑緣

時間

三小時

難度

***

材料表

前言

為了要能夠在電腦上使用Movidius Neural Computation Stick(NCS), 我們必須在個人電腦上準備一些必要的工具, 例如:Ubuntu 16.04作業系統(目前NCS正式支持的系統版號)以及安裝必要的函式庫NCSDK。

由於一般人的電腦的作業系統都不是Ubuntu16.04, 所以我們必須要在電腦上安裝虛擬機來跑一個虛擬的系統。

以下我們將一步一步的帶各位讀者在自己的電腦上完成詳細的虛擬機設定, 如果是想要直接使用我們已經幫您做完的版本, 請直接跳到 “[Movidius NCS] 如何在PC中設定Ubuntu虛擬機並執行NCSDK(下) 的虛擬機的Import/Export 小節”。 (新文章上架後更新連結)

懶人包教學影片可以看這裡,想一步一步自己設定請往下繼續看:

懶人包影片軟體連結,想一步一步自己設定請往下繼續看

1、更多Movidius AI運算連結,請下載2、3、4的檔案

2、VirtualBox軟體安裝檔連結

3、VirtualBox 作業系統懶人包安裝檔, Ubuntu for intel Movidius 神經運算棒 作業系統連結

4、VirtualBox USB2.0、USB3.0 Extension Pack.下載連結

安裝VirtualBox與下載Ubuntu作業系統

首先請先到以下的網址下載VirtualBox虛擬機, 並且根據您的作業系統來選擇要下載的安裝檔, 例如:假設讀者的電腦作業系統是Windows的話, 就在VirtualBox 52.6 platform packages, 就點選”Windos hosts”來下載。

接下來我們還必須要去下載VritulBox Extension Pack, 才能讓虛擬機使用USB3.0的功能。

再來請到以下的網站去下載Ubuntu 16.04系統,

新增虛擬機

下載完成後,請打開Virtualbox,並按下New新增一個虛擬機器。

接下來在Name上打上虛擬機的名稱, 並選擇Type為Linux, 選擇Version為Ubuntu (64-bit),如下圖。

接下來指定記憶體的大小,基本上至少要有2GB會比較夠。

接下來選擇建立一個虛擬的硬碟。

選擇硬碟檔案格式為VDI(VritualBox Disk Image)

指定硬碟維dynamically allocated。

最後指定虛擬硬碟的大小,建議10~15GB,或15GB以上。

設定安裝光碟

完成後在VirtualBox左邊的選單應該可以看到剛剛新增的虛擬機, 如下圖中的ubunutu-NCS, 接下來請按下右鍵,並點選Settings。

先選擇擇Storage, 然後在Optical Device點選光碟小圖示, 並選擇剛剛下載的Ubunutu 16.04安裝光碟。

設定USB Controller

接下來我們要來設定USB界面, 為了要讓虛擬機可以辨識到Movidius的NCS, 請先選擇Enable USB Controller, 並勾選USB 3.0 (xHCI) Controller。 如果不能勾選USB3.0的話,有可能是您沒有安裝前面提過的VirtualBox Extension Pack。

接下來在下面的USB Filter新增USB2跟USB3的設定,如下圖。

網路設定

最後,為了要讓使用者可以使用SSH遠端登入虛擬機中, 我們必須設定一個Port Forwarding的設定。

如下圖,將Host的port 2222轉送到Guset的port 22, 也就是說在讀者的電腦上如果用SSH連線到自己localhost的port 2222, 就會連線到虛擬機中的Ubuntu系統中(一般SSH Server預設是port 22)。

安裝Ubuntu系統

以上的設定都完成後, 請點選向右的箭頭(Start), 將虛擬機開機。

進入Ubuntu安裝光碟後, 請選擇右邊的Install Ubuntu。

接下來選擇Erase disk and install Ubuntu。

按下Continue繼續安裝。

選擇時區設定,如下範例中的台北。

在台灣的話,選擇預設的Keyboard Layout即可。

最後設定一下使用者名稱及密碼。

以上設定完成後, 虛擬機會需要花上一點時間安裝全新的Ubuntu作業系統。

當出現以下的圖示時, 就代表已經安裝完成了, 接下來只要按下Restart Now重新開機即可。

一般來說, 安裝完新的系統後,就會需要退出當初使用的安裝光碟, 不過不用擔心,VirtualBox會自動幫你做完, 所以讀者只要直接按下Enter繼續即可。

虛擬機重開之後, 應該就能夠進到新安裝的Ubuntu作業系統, 請輸入您設定的使用者密碼。

成功登入後, 讀者應該就可以看到如下圖的桌面, 代表已經安裝成功囉!

接下來,請讀者繼續到 [Movidius NCS] 如何在PC中設定Ubuntu虛擬機並執行NCSDK(下)[big red yellow-background]#(之後新文章會更新連結)#完成剩下的NCSDK安裝設定。

 

相關文章:


[AI 人工智慧應用] MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(下)

$
0
0

 

作者

袁佑緣

時間

三小時

難度

***

材料表

  1. 電腦/筆記型電腦
  2. Movidius Neural Computer Stick

本篇是接續MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(上), 在(下)篇中,我們將完成剩下的NCSDK安裝設定,分享如何讓虛擬機也可以跟Raspberry Pi遠端連線、在虛擬機中的Ubuntu作業系統可以使用Movidius NCS來做運算、壓縮並備份虛擬機的作業系統。

在Ubuntu虛擬機中安裝NCSDK

首先請將Ubuntu虛擬機開機,並登入您的使用者帳號,如下圖。

接下來請點選左上角的圖示, 叫出搜尋應用程式的選單, 接下來打上”terminal”來搜尋終端機, 最後點選terminal應用程式打開終端機。

另外補充一下,如果要是使用快捷鍵的方式來打開終端機, 可以按下<Ctrl>+<Alt>+T來開啟。

接下來請在終端機中輸入以下的指令, 來更新系統套件。

sudo apt-get update

接著請輸入以下的指令來升級系統的套件。

sudo apt-get upgrade -y

因為我們需要使用git來下載NCSDK的github原始碼, 所以請輸入以下指令來使用apt套件管理員來安裝git

sudo apt-get install git -y

接下來我們將NCSDK的github下載下來

git clone https://github.com/movidius/ncsdk

下載完成後, 我們使用cd指令將工作目錄移到nscdk這個資料夾中。

cd ncsdk

緊接著輸入以下的指令, 將NCSDK透過Makefile的設定安裝起來。

make install

安裝過程會花上不少時間, 請讀者耐心等候。

等安裝完成後, 程式會自動提示使用者要重新開一個新的終端機才會生效, 如下圖。

請讀者再重新開一個新的終端機, 並輸入以下的指令, 將工作目錄指定到一個hello_ncs_py的範例資料夾。

cd examples/apps/hello_ncs_py/

接著請將Movidius NCS 接到電腦的USB孔, 我們將要跑跑看這隻範例程式是否能正確的辨識到NCS, 並且能夠成功使用NCSDK的功能。

make run

如果說回傳的結果是上圖, 顯示NCS device working就代表成功囉!

測試NCSDK的examples

如果前面的NCSDK安裝與NCS裝置都可以正常運作的話, 我們可以來試試看跑其他的範例程式。

請打開終端機, 並切換工作目錄到ncsdk資料夾中, 並執行ncsdk中的examples。

cd ncsdk
make examples

執行程式的過程中, NCS會去下載並執行範例中的網路模型, 並實際評測跑出來的結果。

安裝SSH Server

有時候我們可能需要能透過SSH來連線到VirtualBox中的虛擬機, 那們這個時候就需要在Ubuntu作業系統中安裝SSH的server,

請輸入以下的指令來安裝openssh-server

sudo apt-get install openssh-server -y

安裝完成後, 我們必須將SSH的Service設置為啟用

suo systemctl enable ssh

接下來下次虛擬機重開機的時候就會自動執行SSH Server了。

另外我們也可以透過指令的方式直接啟用SSH Server,

suo systemctl start ssh

或者是查看SSH Server的狀態。

suo systemctl status ssh

順帶一提, 如果是想要在Ubuntu作業系統中關機的話, 可以點選右上角的開關鍵, 並選擇Shutdown選項即可。

接下來我們看一下怎麼透過電腦來連到虛擬機中的Ubuntu系統中, 首先我們先下載Google Chrome瀏覽器, 並在瀏覽器中安裝一個 Chrome瀏覽器的插件Secure Shell

安裝完成後, 讀者可以直接在瀏覽器的網址列直接打上”ssh”, 接下來再按下Tab鍵就會自動進入ssh插件模式, 然後就可以打上”Ubuntu使用者名稱@localhost:2222″ 來連線到虛擬機中, 至於為什麼要連線到port 2222呢, 我們在之前的文章”完全不接螢幕鍵盤滑鼠,電腦一開始就用網路線遠端連線Pi” 有提到,在網路設定中有設定了Port Forwarding的緣故。

初次登入的話,一開始會先建立金鑰的認證, 請輸入”yes”來同意認證。

以下是成功登錄的畫面

另外這邊在分享一個進階的技巧, 其實有時候我們並不需要真的進到Ubuntu系統中的桌面環境, 大部分的時候我們只需要能夠登入系統中的shell即可對系統下指令, 讀者可以試著在啟動虛擬機時, 按下右鍵選擇Start→Headless Start, 這樣就可以省去開啟畫面的動作, 對電腦的計算負擔也會比較小喔。

虛擬機的Import/Export

最後,我們辛辛苦苦安裝完虛擬機並安裝了NCSDK函式庫後, 當然會希望可以把這個虛擬機直接存起來成一個VirtualBox的壓縮檔, 如此一來,在新的電腦上也可以使用VirtualBox來讀取這個輸出的壓縮檔, 直接引入安裝就可以使用。

首先點選左上角的File → Export Appliance

選擇要輸出的虛擬機,

接下來選擇檔名及儲存位置,

設定完成後就會開始輸出囉!

輸出完成後, 我們來看看如何引入這個OVA檔, 首先請點選File → Import Appliance

最後確認一下設定有沒有需要調整的, 比如說記憶體大小,USB Controller等, 預設的話會跟原始Export的虛擬機設定一樣。

另外,如果是想要直接使用CAVEDU團隊提供打包好的ova檔的話, 可以從以下的連結來下載,總大小約6.7GB左右, 裡面已經有完成本文上下兩篇的所有設定, 只要按照這一小節的教學引入即可喔。

 

相關文章:

[Raspberry Pi] 不再備份整張SD卡,縮小RaspberryPi備份容量

$
0
0

作者

袁佑緣

時間

三小時

難度

***

材料表

  1. Raspberry Pi  (2018 Pi3+測試中)
  2. PC
  3. SD Card

在使用Raspberry Pi時, 我們常希望如果能夠將辛辛苦苦安裝完的系統備份起來, 以後只要將這個備份出來的映像檔燒錄到新的SD Card上, 就可以還原之前的系統了。

好比說在這篇文章中 [AI人工智慧應用] 在Raspberry Pi上安裝NCSDK (新文章上架後更新連結), 光是安裝NCSDK以及編譯OpenCV函式庫就要花上快半天的的時間, 要是能夠直接備份系統的話, 以後就不用再花時間一直重新安裝了。

所以本篇將介紹如何備份Raspberry Pi的系統, 並把它做成映像檔存起來, 另外,一般來說備份出來的映像檔都會相當大, 好比說原本的記憶卡是16GB大小的, 備份出來的映像檔就會有16GB這麼大, 保存或傳輸檔案都非常不方便, 所以文章的後半段會探討怎麼縮減備份映像檔, 希望盡量壓縮到方便傳輸的大小, 例如本範中將原本16GB的映像檔縮減並壓縮到3.8GB大小的壓縮檔。

 

Windows系統下備份映像檔

在Windows作業系統下備份映像檔我們需要額外下載額外的工具, 請到以下的網址下載win32diskimager。

下載完成後, 請打開win32diskimager程式, 如下圖, 並點擊Device旁邊的資料夾圖示, 選擇映像檔要存檔的位置。

如下圖,選好存檔位置後,打上要存檔的檔名。

完成後,請將要備份的Raspberry Pi SD Card插到電腦上, 並在Device那邊選擇磁區, 如下圖的F槽, 選完按下下方的Read按鈕就會開始備份囉!

Linux系統下備份映像檔

在Linux系統下進行備份的話, 除了可以使用指令直接進行備份外, 還可以對備份出來的映像檔進行縮減大小的加工。

如果讀者的電腦不是Linux的作業系統的話, 建議可以參考此篇的教學[AI 人工智慧應用] MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(上),使用虛擬機安裝一個Ubuntu linux的作業系統。

接下來我們進到正題, 首先請打開終端機, 輸入以下的指令

sudo dd bs=4M if=/dev/mmcblok0 | zip NCS-raspbian.zip -

讓我們一步步拆解這行指令的內容, /dev/mmcblok0是Raspberry Pi的SD Card插到電腦上後, 電腦辨識出的磁區位置(不同的電腦可能會辨識出不同的位置), 接著我們用dd指令將整個SD Card上的資料以4M的block size進行備份, 備份的過程中我們把這個備份出來的映像檔, 經過pipe(|)傳到zip指令中, 即時的使用zip指令將這個映像檔做壓縮, 最後存成一個壓縮檔叫做NCS-raspbian.zip, 至於前面加了sudo是因為要取用/dev/mmcblk0的話, 會需要用到超級使用者的權限。

順代一提, 使用dd這個備份工具的話, 預設是沒有明顯的備份過程顯示, 所以常常不知道現在的進度到那裡了, 所以筆者建議可以在dd指令中多加一個參數, 將dd的狀態(status)用progress這隻小程式顯示出來。

sudo dd bs=4M if=/dev/mmcblok0 status=progress | zip NCS-raspbian.zip -

備份過程如下圖。

另外如果說讀者的電腦上沒有progress這隻小程式的話, 可以透過系統的套件管理員來安裝, 如下圖(以Ubuntu系統為例)。

sudo apt-get install progress

縮減備份映像檔的大小

實際上, 備份出來的映像檔雖然經過zip壓縮後, 看起來會比較小, 但是在燒錄到新的SD Card時, 還是會解壓縮成原始的大小, 也就是原本的SD Card大小如果是16GB(即便是Raspberry Pi的系統實際上只用了6GB左右), 所以在這一小節, 我們要來探討一下怎麼縮減掉映像檔中不必要的部份。

首先我們把剛剛備份出來的壓縮映像檔解壓縮。 請輸入以下指令來解壓縮, 並存成映像檔NCS-raspbian.img。

unzip NCS-raspbian.zip NCS-raspbian.img

接著我們使用fdisk看一下這個映檔的內容以及大小, 如下圖, 應該會看到兩個部份, 一個其實就是Raspbian的boot的部份, 另外一個則是存放root系統的磁區。

我們記下第二個部份的Start位置, 如上圖的94208, 接下來將這個sector數值乘上512, 轉成標記第二個磁區的offset(單位是bytes) 並用losetup掛載到Linux系統上的loop device(/dev/loop0)

sudo losetup /dev/loop0 NCS-raspbian.img -o $((512*94208))

完成後, 先確認所使用的系統中有沒有gparted這隻程式, 如果沒有的話, 請使用套件管理員將它安裝完成, 以Ubuntu為例,

sudo apt-get install gparted

接著輸入以下的指令來對/dev/loop0這個裝置進行進一步的操作,

sudo gparted /dev/loop0

成功執行的話, 應該可以看到如下的視窗跳出。

請點選/dev/loop0這個裝置, 並按下右鍵選擇Resize, 最後拉動上方的磁區大小滑桿, 拉到想要縮減到的大小(建議在Minimum size外再留一些空間會比較好喔), 如下圖。

Resize設定完成後, 回到主畫面, 並按下上方的Apply按鈕, 開始進行重新劃分大小。

劃分過如下圖。

Resize完成後, 先別急著關掉, 請在Details那邊找到shrink file system底下的resize2fs -p ‘/dev/loop0’ 8388608K (詳細的數字可能有所不同), 這個數字是待會要進行縮減映像檔大小時會用到的數字。

 

怕忘記的話, 建議讀者可以按下Save Details把資料存起來。

最後我們不需要這個loop裝置了, 請輸入以下指令將它消掉。

sudo losetup --detach-all

最後我在重新使用losetup將整個映像檔掛到loop裝置上, 並使用fdisk工具來對它做重新切割磁區。

sudo losetup /dev/loop0 NCS-raspbian.img
sudo fdisk /dev/loop0

接下來, 在fdisk中輸入 d(刪除磁區), 2(指定刪除磁區2), n(新增一個磁區), p(選擇主要磁區), 2(選擇為磁區2), 94208(使用前面記下的起始sector), +8388608K(使用剛剛gpated中記下的縮減後的大小)

實際操作如下圖。

最後輸入w(寫入新的磁區分割), 過程中如果出現以下的提示, 請輸入N, 以保留ext4的檔案格式。

重新切割完磁區後可以輸入

sudo losetup --detach-all

來退出loop裝置。

改完磁區大小後, 我們要把映像檔中的多餘的部份去掉, 請先輸入

fdisk -l NCS-raspbian.img

並記下End Sector的位置, 如圖中的16871423。

最後使用truncate指令來去掉End Sector以後不要的部份。

truncate -s $((512*(16871423+1))) NCS-raspbian.img

讀者可以輸入以下的指令來查看裁剪過的映像檔明顯變小了(14.7GB → 8.1GB)

ls -lh NCS-raspbian.img

(補充) 使用pishrink來縮減映像檔大小

這邊補充網路上有人分享的專門用來縮減Raspberry Pi映像檔的工具, 叫做pishrink, 詳細的介紹可以去參考這個

請輸入以下的指令下載pishrink腳本。

wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh

將pishrink檔案屬性改為執行檔, 並用超級使用者的權限去執行縮減映像檔大小, 如以下的範例中, 用pishrink來縮減backup.img這份備份的映像檔。

chmod +x pishrink.sh
sudo ./pishrink.sh backup.img

燒錄映像檔到新的SD Card上

以上的映像檔縮減操作完成後, 建議可以重新做個壓縮檔, 讓檔案在更小一點方便傳輸。

zip NCS-raspbian.zip NCS-raspbian.img

現在如果說我們要將這個備份的映像檔壓縮檔燒錄到新的SD Card上時, 我們可以透過https://etcher.io/[Etcher]燒錄軟體,

指定映像檔的壓縮檔位置

插入SD Card後選擇裝置的位置,按下Flash燒錄即可。

 相關文章:

[AI人工智慧] 在Raspberry Pi上安裝NCSDK

$
0
0

作者

袁佑緣

時間

三小時

難度

***

材料表

  1. 電腦
  2. Movidius Neural Computer Stick
  3. Raspberry Pi
  4. SD Card
  5. 乙太網路線

前言

本篇文章將帶領讀者在Raspberry Pi上安裝Intel Movidius SDK, 並測試Movidius NCS是否能成功跑NCSDK的範例檔, 請讀者準備好Raspberry Pi以及要燒錄映像檔的SD Card, 另外為了要能夠從電腦直接連到Raspberry Pi上進行操作, 所以我們還需要額外一條乙太網路線來做連接。

燒錄Raspberry Pi映像檔

首先我們必須到 Raspbian的官方網站 下載Raspberry Pi的映像檔, Raspbian目前有提供兩個版本可以用, Lite版是輕量版本, Desktop版則是會連同桌面系統都內建在裡面, 但相對的檔案會比較大。

接下來為了要燒錄Raspberry Pi的映像檔, 我們需要一些工具來做燒錄, 在這邊我們推薦一款來不錯的跨平台燒錄工具 Etcher, 請根據您的作業系統來選擇安裝檔。

下載完成後, 請打開Etcher, 如下圖所示,

接著點選Select image, 並選擇剛剛下載的Raspbian映像檔的壓縮檔 (這個zip檔不需要解壓縮,Etcher會自動解壓縮成映像檔)

接下來將SD Card插入電腦上, 並在Etcher上選擇系統上顯示的裝置, 例如下圖中的/dev/mmcblk0 (Windows作業系統的話則常見是F,G槽等等)

最後就可以按下Flash開始燒錄囉! 燒錄完成後後如下圖。

將Raspberry Pi預設為啟用SSH

通常為了安全的考量, 剛燒錄完全新的Raspberry Pi系統預設都會關閉SSH Server, 因為Raspbian預設的使用者帳密都是一樣的, 所以預設開啟的話, 有可能被其他有心人士利用。

但因為在這個範例中, 我們希望可以不需要連接螢幕跟鍵盤就可以操作Raspberry Pi, 所以我們會需要改成預設開啟SSH。

以下以Windows作業系統為例, 其他作業系統也是同樣概念。

首先我們先將燒錄完系統的SD Card插到電腦上, 此時電腦會讀到一個新的裝置, 如下圖中的boot(F:)。

點進去boot之後, 按下右鍵新增一個Text Document,

將此新增的空白文件命名為ssh, 而Raspbian再開機時, 會讀取boot中有沒有名為ssh的檔案, 如果有,就會預設為啟動SSH Server, 這樣我們就可以透過ssh連進去了。

至於怎麼透過電腦做SSH連線到Raspberry Pi, 有興趣的讀者可以連到以下的文章查看詳細的教學 “[Raspberry Pi] 如何透過網路線連接Raspberry Pi的SSH連線到Raspberry Pi小節” (麻煩做一下文章連結)

安裝NCSDK

在安裝之前, 我們先更新一下Raspberry Pi的系統套件。

請輸入以下的指令, 來更新系統套件。

sudo apt-get update

接著請輸入以下的指令來升級系統的套件。

sudo apt-get upgrade -y

接著輸入以下指令將NCSDK的原始碼下載下來

git clone https://github.com/Movidius/ncsdk

使用cd指令將工作目錄移到nscdk這個資料夾中。

cd ncsdk

緊接著輸入以下的指令, 將NCSDK透過Makefile的設定安裝起來。

make install

安裝的過程中, 會需需要超級使用者的權限, 請打上Raspberry Pi的超級使用者的帳密, 預設帳密是pi/raspberry

另外, 除了安裝NCSDK的套件之外, 做影像辨識還需要額外的函式庫OpenCV, 請輸入y來同意安裝。

值得注意的是, 由於Raspbian系統上並沒有編好的OpenCV3函式庫, 所以必須讓Raspberry Pi從頭編譯, 這個步驟會花掉不少時間, 例如下圖是筆者的實測編譯總計時間是171分鐘, 幾乎快要三個小時呢! (筆者使用的是Raspberry Pi最新的第三代,不同代處理效能會不一樣,所花的時間也會不一樣)

最後為了要測試Raspberry Pi是否能正確使用NCS, 請先插入NCS到USB孔上, 再輸入以下的指令來執行範例程式hello_ncs_py

cd examples/apps/hello_ncs_py/
make run

如果顯示NCS device working就代表成功囉!

備份安裝完NCSDK的Raspbian系統

走筆至此, 我們好不容易裝好了NCSDK, 並且把OpenCV函式庫也編譯完成了, 最後也確認Raspberry Pi可以讀取到NCS裝置了, 如果說我想要再新的一塊Raspberry Pi上也完成這樣的設定, 能不能不要在重新來過, 而是就直接使用已經完成的備份檔呢? 答案是可以的喔!

關於在Raspberry Pi進行系統備份以及重新燒錄檔案的教學請參考這邊教學文章, [Raspberry Pi] 如何備份Raspberry Pi的系統 (麻煩做一下文章連結)

另外,如果是想要直接使用Cave團隊提供的系統備份檔的話, 可以從以下的連結來下載 ftp://122.116.161.191/cave-drive/circle/Movidius-NCS/Ubuntu-NCS.ova (麻煩做一下檔案連結), 總大小約4GB左右, 裡面已經有完成所有的設定, 只要按照 [Raspberry Pi] 如何備份Raspberry Pi的系統 的 燒錄映像檔到新的SD Card上 (麻煩做一下文章連結) 小節的教學燒錄即可。

[Raspberry Pi] 如何使用遠端桌面

$
0
0

 

作者

袁佑緣

時間

三小時

難度

***

材料表

  1. 電腦
  2. Raspberry Pi  (2018 Pi3+測試中)
  3. 網路線
  4. USB轉RJ45接頭(如果電腦需要額外的網路孔的話))

[Raspberry Pi] 完全不接螢幕鍵盤滑鼠,電腦一開始就用網路線遠端連線Pi 中, 我們有介紹過如何指透過網路線就可以連進去Raspberry Pi中, 但是有時候我們還是需要一個圖形化的界面來操作, 或者是要顯示圖像或影片, 所以本篇文章要來介紹一下如何使用遠端桌面來解決類似的問題。

以下是兩種常用的方法,VNC以及Xrdp。

使用VNC遠端桌面

首先請先將電腦與Raspberry Pi做連線, 並用SSH登入到Raspberry Pi中, 關於這部份有問題的話, 可以直接參考這篇文章的教學 [Raspberry Pi] 完全不接螢幕鍵盤滑鼠,電腦一開始就用網路線遠端連線Pi

登入之後, 請打上以下的指令來安裝tight vnc server, 好用來在Raspberry Pi上跑一個VNC遠端桌面的服務。

sudo apt-get install tightvncserver -y

安裝完成後, 可以在終端機中輸入以下的指令來開啟這個server,

sudo apt-get install tightvncserver -y

第一次啟動的話, 程式會提示使用者設定一組密碼, 長度為八個英文字母或數字, 另外, 讀者也可以設定一組只能觀看螢幕畫面的密碼, 在本範例是略過這一步, 所以輸入n,跳過這個選項, 設定完成後, 就會在家目錄底下的.vnc資料夾生成一些設定檔,如下圖。

在Raspbian中, 管理圖形話界面的xserver會有一個DISPLAY的環境參數可以去設定, 也就是說可以透過這個參數, 來設定你要輸出的畫面到那一個顯示上, 好比說我們現在開啟的vnc server是開在:1號上,

你可以輸入以下的指令來確認現在的vnc server是開在那一個DISPLAY上。

ps a | grep vnc

所以說vnc server可能會有好幾個DISPLAY正在活動, 例如:1, :2, :3, …​好幾個桌面這樣, 每一個桌面都可以讓各別的使用者進行不同的操作, 但如果說我想要關掉特定的DISPLAY的話, 可以透過以下的指令來關掉特定的桌面, 如以下範例中的:1 號DISPLAY。

vncserver -kill :1

順帶一提, 如果我想要開一個Full HD的桌面, 而且指定為DISPLAY :2號的話, 可以透過下面的指令來完成。

vncserver -geometry 1920x1080 :2

到這邊我們已經把server端的部份搞定了, 接下來就剩下我們的電腦要安裝vnc viewer, 來遠端連線到Raspberry Pi上的桌面系統了。

讀者可以下載Chrome瀏覽器, 並安裝 VNC Viewer for Google Chrome 這個插件。

安裝完成後可以在網址列那邊輸入 chrome://apps 就可以切換到Google Chrome瀏覽器裡的App清單中, 請點擊清單中的VNC Viewer,如下圖中的左上角。

打開VNC Viewer後, 我們就可以透過連到<Raspberry Pi的ip>:<vncserver的port>, 來開啟指定port下的遠端桌面。

理論上我們要透過ssh連線到Raspberry Pi時, 就會需要用到Raspberry Pi的IP位址, 但是如果我們忘記了想要再重新查詢一遍的話, 可以在終端機中打上以下的指令查詢, 如下圖中的10.42.0.135

ip a

至於在連線時, 我們會有指定一個<vncserver的port>, 意思是5900加上DISPLAY的編號, 好比說我要連到DISPLAY :1這個桌面, 就打上5901, :2 就5902, 依此類推。

如以下的範例, 連到10.42.0.135下的:1號桌面。

連線時, 同意非加密的連線。

並打上前面設定過的vncserver的密碼。

成功登入後如下圖。

使用瀏覽器的插件來連到vnc viewer的好處是跨平台, 但是如果讀者想使用其他方法, 例如下載自己作業系統上的vnc viewer程式的話, 以下推薦一個比較常用的 RealVNC Viewer 請根據您電腦的作業系統來下載安裝。

指定SSH中的圖形畫面要在哪一個桌面上輸出

如果說讀者是從ssh登入之後, 直接在終端機上呼叫一個需要跑圖形界面的程式, 例如呼叫xterm

xterm

那麼讀者應該會看到系統回傳一個錯誤, 表示無法開啟顯示, 因為在SSH中, 預設是沒有DISPLAY的設定的。

但是如果我們把DISPLAY設定成:1, 也就是指定到我們vnc server上的:1號桌面, 並再重新跑一次xterm

export DISPLAY=:1
xterm

如此一來就可以在vnc viewer的port 5901上的這個桌面, 看到xterm成功被啟動了,如下圖。

另外, 如果說你想要查一下這個vnc viewer連到的桌面, 現在DISPLAY是設定多少的話, 可以點擊桌面上方的終端機圖示,

打開終端機後,

輸入以下的指令來顯示DISPLAY這個環境變數,

echo $DISPLAY

可以看到, 在這個桌面下,確實是DISPLAY :1呢!

使用Xrdp遠端桌面

另外一個常用的方法是使用Xrdp, 這是一套由windows發展出來的protocal, 因為它一套專門用來做遠端桌面溝通的協定, 所以在功能上會比vnc來的多,而且處理效能會較好一些。

在Raspberry Pi上要使用Xrdp的話, 只要輸入以下指令下載安裝, 系統就會自動執行了。

sudo apt-get install xrdp -y

至於連到Xrdp的工具可以從以下的網址來下載

安裝完成後, 基本上跟vnc viewer的操作上是很類似的, 不過在這邊是指定Raspberry Pi的IP後, 把使用者的帳密打上去, 如下圖所示。

成功登入後就會看到熟悉的桌面系統囉!

[Arduino專題好用] 自己製作Arduino擴充板,使用Multism Blue

$
0
0

 

設計/撰寫者

皓云/鈺莨

時間

三小時

難度

***

材料表

今日要跟大家分享的作品是Arduino馬達擴充板,我們在作馬達控制的專題,尤其要接兩顆馬達的時候(例如:自走車),如果直接接Arduino,可能會因為Arduino的電流太小而推不動馬達,或是馬達電流太大把Arduino燒壞的風險,所以必須要外接馬達驅動晶片L298N。

當我們在做專題時,都會先用杜邦線接,但是馬達驅動晶片的腳位很多,接好之後如果要帶去展示時,在運送過程中難免會有杜邦線脫落的現象,造成要查線路的問題,畫擴充板便可以解決這個問題。

那麼作成擴充板的形式還有何麼好處呢?

  • 馬達驅動晶片接線複雜,可以減少電路斷路的風險
  • 將常用的元件焊在一起,具有獨特功能性
  • 利用擴充板形式可以節省空間,好收納
  • 可以小型量產

在繪製之前必須要先下載Arduino的所需檔案

本文是用Multism Blue的電路軟體來繪製,下載軟體及安裝步驟請參閱:

[不錯用的電路設計軟體Multisim Blue]手把手安裝教學

我們的目標就是要畫出下列的接線示意圖:

圖2

Arduino接腳對應馬達驅動晶片

Arduino L293D
D3 P15
D5 P10
D6 P7
D9 P2
5V P1、9、16
GND P4、5、12、13

 

 

繪製Arduino擴充板電路圖

1.先開啟舊檔,先匯入 『arduino_uno.ms14』的檔案

圖3

 

2.開啟之後會是Arduino 的電路圖,和l293d馬達驅動晶片底座,為什麼說是馬達驅動晶片底座呢?

因為實際上是鑽16個孔再把馬達驅動晶片底座焊在擴充板上,另外再把l293d嵌入在底座上面,如果l293d燒壞,還可以鑷子更換l293d。

 

圖4

 

3.新增電路的電壓Vcc元件,也就是Arduino所提供的5V

「Source 」→「POWER_SOURCES」→「VCC」 → 點選「OK」

圖5

 

  1. 新增兩個Vcc 元件連接在l293d的1、9、16號腳位

圖6

 

5.再新增接地線共地,以保持電位為零。

「Source」 →「GROUND」 → 點選「OK」

 

圖7

 

6.一樣也是新增兩個接地線接到L293D的4、5、12、13號腳位

圖8

 

 

7.新增當頁接頭,這功能是Multism Blue特點之一

  • 可以取代了從l293d的腳位直接拉線到Arduino腳位的線路複雜度
  • 畫面較為簡潔,能快速了解線路

 

在選項欄位的「Place」→「Connect」→「On-page  connector」

圖9

 

圖10

 

8.選擇IO3,即是代表Arduino的腳位

圖11

 

圖12

 

 

  1. 重複7、8的步驟,另外在新增接頭IO5、 IO6、 IO9

圖13

 

 

10.將IO3、IO5、 IO6、 IO9分別接到l293d的15、10、7、2腳位

11.繪製輸出三個端子台來外接電池和2顆馬達,這種端子台上方有螺絲孔,可用一字起子轉鬆,將馬達或電池的單芯線插入孔內,再利用一字起子轉緊即可完成線路連接。

 

到「Mouser Database」→「Connectors」 →

「CONN_SCREW_TERM_Phoenix_Contact」→「1715721」

圖15

 

  1. 查詢元件相關資料
    有些電路符號都長得很類似,如果想知道實體元件長得如何,可以在上圖第5個步驟有元件的網路連結提供查閱相關資訊

圖16

 

  1. 一個接l293d的3號和5號腳位;一個接l293d的14號和11號腳位;另一個則是接l293d的8號腳位及接地。

圖17

 


將電路圖轉成PCB

 

14.在MultisimBlue電路圖繪製完成之後,再來就是將電路圖轉換成PCB繪圖軟體檔案

欄位上的「Transfer」→「Transfer to Ultiboard」→「Transfer to Ultiboard 14.0」

 

圖18

 

15.轉換完畢之後,MultisimBlue會開啟另一個PCB繪圖軟體,在電路圖中電子元件的接線,會在PCB軟體轉換成預拉線。

圖19
16. 刪除長方形黃色外板框

在左邊PCB欄位,點選兩下Board Outline,Board Outline即是外板框的意思,就是板子的外型,可以任意改變形狀。

[ 電路設計軟體Multisim Blue ] 花朵、小雞、金魚造型LED燈設計 外板框就是設計成圓形。

 

圖20

 

點選黃色外板框之後會變成虛線,之後按下鍵盤的「Delete」,即可刪除。

圖21

 

 

17.匯入Arduino 外板框

「File」→ 「Import」→「DXF」

圖22

 

然後選取『arduino_un.DXF』檔案

圖23

 

在「Ultiboad layer 」裡,有下拉式選單選擇「Board Outline」,再將把所有的單位改成mm(重要)。

圖24

 

18.匯入後需將Arduino外板框回歸到原點(就是白色的十字),要把所有的外框線設為群組,這樣所有的外框線就會一起移動。

 

首先將全選外框線

圖25

 

在外框線上按滑鼠右鍵選擇「Group selection」,再按「Properties」

圖26

 

 

 

會進到 「Group Properties」 裡 ,在分頁的「Position」的X、Y欄位分別都填上0,單位記得也要改成mm。

圖27

 

19.解除群組,一樣也是先框住所有的外框線,按右鍵選擇「Ungroup selection」,這樣的作法是為了要把元件放進外板框裡,如果沒有解除群組,元件就會把外板框擠掉而放不進去。

圖28

 

 

20.將Arduino的腳位和其他電子元件排列,先排列Arduino腳位,之後再放其他元件。

 

網路上有網友繪製出Arduino的尺寸圖,原點一樣也是在左下角,但是圖中所有尺寸皆是mil,必須換成mm(1mil = 0.0254mm ),也就是所有尺寸皆乘上0.0254。

 

圖29

 

(圖片來源: https://blog.arduino.cc/2011/01/05/nice-drawings-of-the-arduino-uno-and-mega-2560/)

 

 

將上述的尺寸轉換成座標,便可以定義出Arduino 腳位配置圖,這邊單位一律為mm。

圖30

 

現在座標已經定義出來了,這邊在畫上圖中J1、J2、J4、IOL時,我要怎麼知道位置是對的呢?以J4為例,在其中一個腳位(就是藍色圈圈)中按下滑鼠右鍵,點選「Properties」,會跑出「Through Hole Pin Properties」的視窗,分頁選「General」,欄位上有「Net」,就知道這個腳位是Arduino的8號腳位了,其他以此類推。

圖31

圖32

 

知道了大概的位置之後接下來要輸入座標,繼續以J4座標(30.22,50.8)為例,點選整個J4元件(注意圖33中虛線),在按一下滑鼠右鍵,點選「Properties」,會跑出「 Group Properties」的視窗,分頁選「Position」,在X欄位輸入30.22,Y欄位輸入50.8,單位選mm,其他腳位以此類推。

圖33

圖34

 

排列好Arduino腳位後,再依序把其他元件排至適當位置

圖35

 

21.點選 ,可以快速佈線。

圖36

22.調整線徑的寬度

[ 電路設計軟體Multisim Blue ] 花朵、小雞、金魚造型LED燈設計的內文有提到: 『設計電路板時,線徑的大小與電磁干擾成反比,線的長度與電磁干擾成正比為了降低不必要的電磁干擾,將線徑加寬。』,在此我們設定0.5mm。

 

我們如果只要選線路,單單對線路做改變的話,只需要打開,再把其他選項關閉,便可以只選線,而不會選到其他元件。

圖37

 

選取所有線路之後按右鍵,一樣點選「Properties」,會出現「Trace  Properties」 視窗 ,「General」分頁欄位有「Width」,填入0.5。

圖38

 

之後會出現會有紅色圈圈的出現,左下角的「DRC」也開始變紅色為警示效果,是因為線和線之間太靠近,還需要做一些調整。

圖39

 

將線路整理

 

圖40

 

23.調整好之後可以按下,做3D預覽查看元件排列位置,焊錫走線是否一致。

 

圖41

 

Viewing all 678 articles
Browse latest View live