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

RaspberryPi Pico 悠遊卡點名系統-使用洞洞伍AIoT教學材料包

$
0
0

 

撰寫/攝影  許鈺莨
時間  30分鐘  

材料表

(購買)

難度  2(滿分5)

 

本次分享會的主題是「 悠遊卡點名系統  」,我們將使用Raspberry Pi PICO W與擴充板和RK 洞洞伍AIoT教學材料包材料包來實現。本專案將會使用 RFID 模組,記錄學生的悠遊卡號,並將學生的卡號傳送至Google Sheets雲端儲存。學校可以在Google Sheets雲端後台查看學生出席的情形。

以下是學生在上課前,學生排隊用有悠遊卡功能的學生證感應圖(此圖為AI生圖)。

 

 

感測器元件

硬體準備

首先,我們需要準備以下硬體:

  • Raspberry Pi Pico W 和擴充板
  • RFID 模組
  • 悠遊卡功能的卡片
  • 有緣蜂鳴器模組
  • OLED 螢幕
  • Mirco – USB 訊號線
  • 些許杜邦線

 

硬體連線圖

以下是感測器分開接線的接線圖。

RFID 模組

 

 

OLED 模組

 

有源蜂鳴器模組

 

 

專案流程圖

在程式一開始,會先讀取悠遊卡號,若是本班同學的卡號,蜂鳴器會發出急促的兩聲,OLED中也會顯示卡號和姓名;若是本班同學的卡號,蜂鳴器會發出長的一聲,OLED中也會顯示卡號和未註冊同學。這些所有感應到的卡號都會上到 Google Sheets 雲端紀錄。

 

流程圖如以下所示。

 

 

軟體及程式下載

讀者請預先將程式撰寫軟體 BlocklyDuino F2 下載下來,程式撰寫軟體下載與其說明

https://cavedu.gitbook.io/cavedu/rk005/cheng-shi-zhuan-xie-ruan-ti-xia-zai

悠遊卡點名系統程式下載(請按我)

 

 

 

雲端設置

這次專案與【使用 Raspberry Pi Pico W 建立雲端室內環境監測系統-Google雲端存取與LINE通知警報 】一樣使用雲端 Google Sheets 表單平台,來記錄學生出席狀況。

Google試算表設置

請看 使用 Raspberry Pi Pico W 建立雲端室內環境監測系統-Google雲端存取與LINE通知警報 Google試算表設置的段落

 

 

專題展示

可以看見RFID感應到卡後,有註冊和未註冊的同學都會上傳至 Google Sheets 後台紀錄。

 

相關文章可參考

Raspberry Pi Pico W 建立雲端室內環境監測系統-Google雲端存取與LINE通知警報

Raspberry Pi Pico W 智慧淹水偵測系統,結合 Google 試算表與 LINE 通訊軟體

Raspberry Pi Pico W 空氣品質檢測系統 — 上傳感測器數值到 Google 試算表

Raspberry Pi Pico W 與手機進行藍牙配對與無線通訊

RaspberryPi Pico 悠遊卡點名系統-使用洞洞伍AIoT教學材料包〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。


NVIDIA Jetson AGX Orin 安裝 JetPack 6.0 正式版

$
0
0

前言

延續上一篇 Jetson AGX Orin如何在SSD安裝系統,當時是安裝 JetPack 5版本,這次要說明最新的 JetPack 6、安裝過程與注意事項。

攝影/撰寫 郭俊廷 材料表

 

時間 1小時 (看網路速度決定 docker 要下載多久)
難度 2(滿分5)

本文

之前在JetPack6正式版還沒發布之前,我們有先測試過 JetPack 6.0 Developer Preview 但還有一些BUG,這次 JP6 正式版發布ˊ 之後,就要趕快安裝好來與大家分享啦!AGX Orin 硬體介紹以及JetPack 5版本安裝請點我

首先來介紹一下JetPack6正式版使用甚麼套件

以下是 NVIDIA 原廠資料介紹:

JetPack 6 包含 Jetson Linux 36.3,使用 Linux Kernel 5.15 和基於 Ubuntu 22.04 的系統。JetPack 6 中的 Jetson AI 堆棧包括 CUDA 12.2、cuDNN 8.9、TensorRT 8.6 和 VPI 3.1。

此版本支援所有 NVIDIA Jetson Orin 模組和開發套件。

可執行 JP6 的 Jetson 裝置都可以在機器人王國商城購賣喔!

前置作業

首先要先準備一台Ubuntu 20.04 或 Ubuntu 22.04的電腦(要x64的系統)

要注意必須為 Ubuntu 20.04 才可以同時安裝JetPack5和JetPack6,如果是Ubuntu 22.04只能安裝JetPack6,這一點要注意,如果想要安裝回JetPack5建議使用Ubuntu 20.04 來安裝。

NVIDIA SDK Manager 操作已於之前有專文介紹,這裡就不詳細說明,請參考 NVIDIA 網站與我們所寫教學:

  • https://developer.nvidia.com/nvidia-sdk-manager
  • https://blog.cavedu.com/2022/03/26/nvidia-jetson-tx2-nx-setup-ssd/

安裝步驟

首先開啟 NVIDIA SDK Manager

也可以在terminal中輸入以下指令開啟:sdkmanager

開啟後要登入 NVIDIA 開發者帳號,還沒有帳號請先註冊(免費)。對了,最近註冊新的開發者帳號可以免費取得一堂 DLI 深度學習機構付費課程喔 (教學請點我)

 

在此預設 NVIDIA AGX Orin 已經安裝好JetPack 5的系統,要如何將系統升級安裝JetPack 6。

首先要讓機器進入Recovery Mode會比較好安裝系統,在開機時先按住 Force Recovery button不放 (下圖2號位置),再按下 Power button (下圖1號位置) 即可進入 Recovery Mode。

 

進入Recovery Mode後將 AGX Orin 的 USB Type-C 連接線接上已安裝好 NVIDIA SDK Manager 的 Ubuntu電腦上 (位置如下圖紅框所示),並且將DP接頭接上對應的螢幕,最後接上鍵盤及滑鼠。

 

將NVIDIA SDK Manager 更新到最新版後,在2024年6月後的版本可以看到SDK VERSION版本裡有JetPack 6.0(ver.1)這個選項。

取消勾選 Host Machine,將 Target Hardware 選擇 refresh 後會自動選擇Jetson AGX Orin (如果沒自動選擇,請選擇對應的Jetson AGX Orin版本)

TARGET OPERATING SYSTEM選擇JetPack 6.0(ver.1),DeepStream 可根據你的需求選擇是否勾選(建議勾選)。選擇完畢後,點選右下角 CONTINUE 進入下一步。

第一次安裝會先下載相關套件後再進行安裝,下載完會顯示Downloaded,如下圖。

要記得勾選 Jetson Runtime Components 與 Jetson SDK Components 兩個選項才會安裝JetPack相關套件。

Jetson Platform Services截至目前2024年6月還是Coming Soon無法下載的狀態,Jetson Services是用來執行一些AI範例的套件,之後如果可安裝會再介紹。

選擇要下載的項目,本文為全部下載並安裝。請記得勾選下方的 accept license 選項。如果要馬上安裝,則不要勾選 Download now. Install later。如果只想先下載之後再安裝,則可勾選該選項。

 

輸入 root 密碼後就會開始安裝

 

開始下載,請耐心等候,過程中會在本機端建立一個可安裝系統的環境(如下圖)

 

自動安裝模式

如果選擇自動安裝模式,並且選擇Pre-Config需要輸入稍後要登入 AGX Orin 的帳號及密碼,並且可以在 6.Storage Device: 這裡選擇系統要安裝的裝置,預設是 EMMC,但在此請選擇 NVMe,也就是我們SSD所在的位置。

這一步驟如果原本系統裡面有JetPack5的自動安裝可能會失敗,建議使用手動安裝模式。如果無SSD的人選擇EMMC即可。

如果要把系統安裝在 SSD,6.Storage Device需選擇 NVMe

手動安裝模式

如果透過Recovery Mode後進行系統安裝會進入手動安裝模式(如下圖)

1.OEM Configuration 選擇Pre-Config會需要輸入進入系統的帳號密碼

2.系統儲存裝置我們一樣選擇NVMe也就是我們的SSD

 

3. OEM Configuration選擇Runtime,代表在系統安裝好時需要透過銀幕鍵盤滑鼠另外在AGX Orin的GUI進行帳號、密碼的相關設定。

 

設定好按下Flash後,如果相關設定都正常會開始燒錄(顯示如下圖Flash),進度條順利跑完且沒有發生中斷的話,代表 Jetson Linux OS 安裝完畢。

接著會要開始安裝Jetson SDK Components,也就是 JetPack 對應的相關套件(例如CUDA等套件),輸入剛剛建立的帳號密碼後按install會開始安裝。

安裝Jetson SDK Components時不會按照列表順序安裝,請耐心等候套件安裝完成。

全部安裝完成後會出現如下畫面,代表安裝都正常且結束。

 

開機後看到熟悉的桌面,如下圖

進入設定查看OS是Ubuntu 22.04,開始使用 JetPack 6的相關功能吧!

 

參考資料

NVIDIA Jetson AGX Orin 安裝 JetPack 6.0 正式版〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

Raspberry Pi Pico W 安全防盜警報系統 –使用 RK 洞洞伍AIoT教學材料包

$
0
0

 

撰寫/攝影  許鈺莨
時間  30分鐘  

材料表

(購買)

難度  2(滿分5)

 

我們將使用Raspberry Pi Pico W開發板和RK 洞洞伍AIoT教學材料包來實現。本專案將會使用人體紅外線感測器和LED模組,常用於自動照明系統控制中,如家庭和商業建築的走廊、廁所、地下室等。當有人進入感測區域時,感測器會啟動照明設備,當人離開後,照明設備會自動關閉,從而節約能源。再將感測區域的人流情形上傳至Google Sheets雲端儲存。

人體紅外線感測器模組也可用於安全和防盜系統中,這些系統能夠檢測出入侵者的移動,並觸發警報或通知安保人員,最後可以推撥到 LINE。

 

以下是由AI生成的家中安全防盜示意場景圖。

 

 


先介紹本次專案所需的感測器及材料,請看下述說明。

 

感測器元件

硬體準備

首先,我們需要準備以下硬體:

  • Raspberry Pi Pico W 和擴充板
  • PIR 生物紅外線模組
  • 有源蜂鳴器模組
  • 0.96吋OLED 螢幕
  • Mirco – USB 訊號線
  • 些許杜邦線

 

硬體連線圖

以下是感測器分開接線的接線圖。

生物紅外線 PIR 模組

 

0.96吋OLED 模組

 

有源蜂鳴器模組

 

PIR生物紅外線感測器介紹

第一次拿到PIR生物紅外線感測器元件時,需要使用一字或十字起子工具對於其兩側的精密電阻進行校準,這兩側的精密電阻分別是調響應時間和距離(靈敏度),如下圖所示。

 

 

 

專案流程圖

在程式一開始,PIR人體紅外線會去偵測是否有人經過,若無人則OLED會顯示正常;若有人經過,蜂鳴器會響,同時會推播到LINE訊息中。但不管是否有人經過,也會同時上傳到Google Sheet 試算表中。

流程圖如以下所示。

 

 

軟體及程式下載

讀者請預先將程式撰寫軟體 BlocklyDuino F2 下載下來,程式撰寫軟體下載與其說明

https://cavedu.gitbook.io/cavedu/rk005/cheng-shi-zhuan-xie-ruan-ti-xia-zai

 

安全防盜警報系統程式下載(請按我)

 

雲端設置

這次專案使用的是 Google Sheet 雲端試算表和 Line Notify 推播兩種平台,如同前段文章所述,Google Sheet 雲端試算表會把所有的狀態記錄起來,唯獨有人經過時,會有Line Notify 推播訊息。 以下為這兩種平台的設定教學。

 

Google試算表設置

請看「 使用 Raspberry Pi Pico W 建立雲端室內環境監測系統-Google雲端存取與LINE通知警報 Google試算表設置的段落。

使用 Raspberry Pi Pico W 建立雲端室內環境監測系統-Google雲端存取與LINE通知警報 」的文章唯一不同的是,本專案只有很簡單紀錄有人經過/目前無人的狀態而已,並沒有記錄感測器之數值。

 

LINE Notify 設置

請看「 使用 Raspberry Pi Pico W 建立雲端室內環境監測系統-Google雲端存取與LINE通知警報 LINE設置 的段落。

 


專題展示

可以看見PIR人體紅外線模組感應到人體後,會有警訊立即推播至 LINE Notify 中,而所有的紀錄都會被上傳至 Google Sheets 後台。

 

相關文章可參考

RaspberryPi Pico W 悠遊卡點名系統-使用洞洞伍AIoT教學材料包

Raspberry Pi Pico W 建立雲端室內環境監測系統-Google雲端存取與LINE通知警報-使用洞洞伍AIoT教學材料包

Raspberry Pi Pico W 建立雲端室內環境監測系統-Google雲端存取與LINE通知警報

Raspberry Pi Pico W 智慧淹水偵測系統,結合 Google 試算表與 LINE 通訊軟體

Raspberry Pi Pico W 空氣品質檢測系統 — 上傳感測器數值到 Google 試算表

Raspberry Pi Pico W 與手機進行藍牙配對與無線通訊

Raspberry Pi Pico W 安全防盜警報系統 – 使用 RK 洞洞伍AIoT教學材料包〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

AMR ROS2光達搬運機器人- AI物體距離偵測-使用NVIDIA Orin Nano

$
0
0

前言

接續先前的 ROS 系列文章,本篇文章將會分享AMR ROS2光達搬運機器人在AI上的延伸應用,文章內容共有兩段:

第一段是了解如何應用獲得的深度影像,使用StereoLabs ZED 2i深度影像攝影機,從深度影像中取得畫面中心與相機的實際距離

第二段則是將深度影像的應用與AI影像辨識融合,結合上一篇中Jetson Inference ROS2套件detectnet的物件偵測功能,測量偵測到的物件與相機之間的距離

如果還沒有閱讀過前兩篇關於AI影像應用的文章,可以先往回閱讀之前的文章,會更容易了解這次所分享的內容:

AMR ROS2光達搬運機器人-分段路徑規劃與即時影像串流-使用NVIDIA Orin Nano

AMR ROS2光達搬運機器人-AI即時影像推論Jetson Inference-使用NVIDIA Orin Nano

攝影/撰寫 楊子賢 材料表

 

時間 3小時
難度 3(滿分5)

本文

軟硬體背景

  • NVIDIA Jetson Orin Nano
  • StereoLabs ZED 2i
  • Jetpack 5.1.1
  • L4T 35.3.1
  • Ubuntu 20.04 LTS

利用ZED深度影像攝影機取得畫面中心的距離

作為深度影像攝影機,StereoLabs ZED 2i理所當然的可以取得影像的深度,官方也有準備了範例,可以取得影像中心與攝影機的實際距離。在Orin Nano上使用ZED 2i攝影機的方法可以參考之前的文章,內容有提到如何建立並執行ZED攝影機的Docker容器:

首先要建立一個ZED攝影機的Docker容器

docker run --runtime nvidia -it --rm --privileged --network=host \

  --ipc=host --pid=host \

  -e NVIDIA_DRIVER_CAPABILITIES=all \

  -e DISPLAY \

  -v /dev:/dev \

  -v /tmp/.X11-unix/:/tmp/.X11-unix \

  -v $HOME/.Xauthority:/root/.Xauthority \

  -v ${HOME}/zed_docker_ai/:/usr/local/zed/resources/ \

  --name zed_container \

  zed_ros2_l4t_image:latest

在Docker容器中,開啟ZED攝影機ROS2套件與Rviz

ros2 launch zed_display_rviz2 display_zed_cam.launch.py camera_model:=zed2i

接著開啟另外一個終端機,連接到剛才的ZED攝影機Docker容器,並載入ROS2設定檔,才能夠執行下方的範例程式

docker exec -it zed_container bash

source /ros_entrypoint.sh

source install/setup.bash

執行深度距離範例,接著在終端機中就會輸出現在畫面中央與攝影機的距離

ros2 run zed_tutorial_depth zed_tutorial_depth --ros-args -r depth:=/zed/zed_node/depth/depth_registered

 

下方是範例中使用的程式碼,這邊有特別註記需要使用正確的服務品質設定(QoS, Quality of Service)才能接收到從ZED套件傳過來的訊息,這邊建立了一個名為depth_qos的服務品質設定,它會盡可能地取得攝影機發布的訊息,並且只會接收新取得的資料。

利用準備好的設定建立一個訂閱者,訂閱來自ZED ROS2套件,名為depth的深度影像訊息,這樣就完成範例程式中關於訂閱的初始設定

關於服務品質的設定與相容性請參考ROS2官方文件

接著要設定訂閱的回呼函式,每當收到訊息後,系統就會呼叫一次這個函式,處理接收到的訊息。為了讀取深度影像的內容,首先要將接收到的影像訊息內容轉為指標(Pointer),這樣就能用影像上的位置,推斷需要的數值在記憶體的所在位置。接著再使用訊息中影像的長寬,找出影像的中心位置,取出記憶體中對應位置的數值,就得到畫面中央與攝影機的距離。

結合影像辨識與深度影像取得物體的距離

有了從深度影像取得距離的方法後,就可以搭配上一篇文章中使用到的Jetson Inference ROS2影像辨識套件,先使用物件偵測來取得物體的位置後,再透過深度影像取得物體與攝影機的距離\

在終端機中開啟ZED深度攝影機的容器,並執行ZED ROS2套件

docker run --runtime nvidia -it --rm --privileged --network=host \

  --ipc=host --pid=host \

  -e NVIDIA_DRIVER_CAPABILITIES=all \

  -e DISPLAY \

  -v /dev:/dev \

  -v /tmp/.X11-unix/:/tmp/.X11-unix \

  -v $HOME/.Xauthority:/root/.Xauthority \

  -v ${HOME}/zed_docker_ai/:/usr/local/zed/resources/ \

  -name zed_container \

  zed_ros2_l4t_image:latest

ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zed2i

在另外一個終端機開啟Jetson Inference的容器,並執行Jetson Inference ROS2套件

cd ~/jetson-inference

docker/run.sh --container dustynv/ros:humble-pytorch-l4t-r35.3.1

ros2 run ros_deep_learning detectnet --ros-args -r /detectnet/image_in:=/zed/zed_node/rgb/image_rect_color

再使用一個終端機開啟AMR Docker容器,執行detect_depth套件與RQT,等待程式啟動完成,在RQT的ImageView畫面中選擇 “/detectnet/person_depth”,就可以看到偵測到的物體距離

./run_docker.sh

rqt -s image_view & ros2 run detect_depth detect_depth

STEP1:初始設定

執行後程式所做的第一步是進行初始設定,總共會訂閱三個主題訊息,分別是來自ZED攝影機ROS2套件的深度影像depth_registered、來自Jetson Inference ROS2套件物件偵測程式detectnet的物件資訊detections,以及偵測結果的影像overlay,並發布一個包含物體距離的影像:名為person_depth的影像訊息

這邊使用了message_filter套件當中的訊息同步Approximate Synchronizer,只要設定好訂閱者與接收的時間範圍,它可以把時間相近的訊息整合在一個回呼函式中,以便處理來自不同訊息中的資料

STEP2:轉換影像訊息內容

第二步是在接收到訊息後呼叫的回呼函式當中,跟前面的範例程式相同,將接收到的深度影像訊息內容轉為指標,並保存影像的寬度,後續計算物體在影像上的位置時會使用到。還有使用cv_bridge套件將偵測結果影像訊息轉為容易修改的OpenCV格式,方便之後加上計算出來的距離數值

STEP3:計算物體位置

第三步一樣是在回呼函式當中,從物件偵測訊息中取出物體在影像上的中心座標,利用前面保存的畫面寬度,計算物體在畫面裡的位置,取出記憶體中對應的深度數值。為了避免同時有多個物體時,畫面會被大量的數字覆蓋,這邊把深度數值的精度調整到小數點後兩位,利用OpenCV繪製在偵測結果影像上。如果有不只一個物體被偵測到,就重複執行這一步,直到所有物體都處理完成,最後再用cv_bridge套件把OpenCV格式的結果影像轉換成ROS2影像訊息並發布

使用Rviz或是RQT訂閱上面發送的person_depth影像訊息就可以看到帶有距離數值的結果影像,圖中數字單位為公尺。

以上是ROS2搬運機器人結合專業景深攝影機的深度影像應用,後續會繼續分享ROS2上的各種應用,敬請期待喔!

AMR ROS2光達搬運機器人- AI物體距離偵測-使用NVIDIA Orin Nano〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

利用ROS2套件為攝影機進行標定校正 –使用NVIDIA Orin Nano

$
0
0

前言

本篇文章將會分享如何在Nvidia Jetson Orin上的ROS2系統中,利用預設的相機標定套件camera_calibration,進行攝影機的標定校正,修正影像畫面的誤差,在執行其他程式時取得更精準的結果

如果還沒有閱讀過關於ROS2應用的文章,請先閱讀以下文章,會更容易了解這次所分享的內容:

攝影/撰寫 楊子賢 材料表

 

時間 3小時
難度 3(滿分5)

本文

軟硬體背景

  • NVIDIA Jetson Orin Nano
  • Jetpack 5.1.1
  • L4T 35.3.1
  • Ubuntu 20.04 LTS
  • USB網路攝影機

使用ROS2為攝影機進行標定校正

基本上所有的攝影機都可能會因為製造時的誤差等因素,在拍攝出來的圖像上產生不同大小的偏差,這些偏差雖然肉眼不太能夠察覺,但是會導致在進行一些透過計算產生的結果失準,所以需要透過標定這個步驟,校正偏差並提高圖像的準確度,在執行對精確度比較有要求的程式時,有時會要求必須要有校正資訊才能運行

有些攝影機會在出廠時就先完成這個步驟,例如StereoLabs的ZED深度攝影機,在一般用途上不需要另外進行標定校正,但需要時還是可以透過原廠工具進行校正來達到更準確的測量效果。

標定前需要先準備一張印有黑白棋盤方格的圖紙,可以點擊下方連結下載,之後打開PDF檔案並列印出來。這張圖紙會用來當作標定時的參考,請找一塊板子或書本,把圖紙黏貼在上面,讓它盡量保持平坦。黑白棋盤方格PDF請點我

首先要開啟一個有ROS2環境的Docker容器,執行之後會自動下載需要的映像檔

docker run --runtime nvidia -it --privileged --network=host \

  --ipc=host --pid=host \

  -e NVIDIA_DRIVER_CAPABILITIES=all \

  -e DISPLAY \

  -v /dev:/dev \

  -v /tmp/.X11-unix/:/tmp/.X11-unix \

  -v $HOME/.Xauthority:/root/.Xauthority \

  --name aruco_test \

  tzushiancavedu/orinnano_isaacfarm:r35.3.1

安裝USB攝影機套件usb_cam,用來發布攝影機影像的訊息

apt update

apt install -y ros-humble-usb-cam

執行USB攝影機套件,這邊要注意camera_name的設定,後續在執行相機標定套件時也會到使用這個名稱,執行時會出現紅字錯誤,說明無法找到攝影機的校正檔,之後完成標定後就不會出現

ros2 run usb_cam usb_cam_node_exe --ros-args -p camera_name:=test_camera 

開啟另外一個終端機,請一次複製整串指令貼上,連入Docker容器並執行相機標定套件,這邊要注意的是-c--size--square的設定:

  • -c:相機名稱,需要跟上面USB攝影機套件設定的名稱相同,後續開啟時才能夠正確讀取
  • --size:用來標定的棋盤中內部長寬分別的頂點數,請注意是內部不貼齊邊緣的頂點,如果用的是從上方下載的棋盤就不需要修改
  • --square:棋盤方格大小,單位是公尺,如果用的是從上方下載的棋盤就不需要修改
docker exec -it -e DISPLAY=$DISPLAY aruco_test bash

source ros_entrypoint.sh

ros2 run camera_calibration cameracalibrator -c test_camera --size 8x6 --square 0.025 --ros-args -r image:=/image_raw


執行後會開啟一個視窗,將其最大化後會呈現下圖的狀態

 

把剛才準備的棋盤圖紙拿到鏡頭前,就會看到圖紙上多出了彩色的標記點與右上角的進度條,移動圖紙並保持彩色標記存在,標定套件會收集可用的資料並推進進度條,同時終端機也會輸出收集到的資料。

建議剛開始可以靠近一點,讓圖紙填滿畫面,並稍微傾斜或旋轉圖紙,之後把圖紙遠離攝影機,移動到畫面一角,再次傾斜或旋轉圖紙,重複幾次後就能夠收集到足夠的資料。請看本文作者的萌萌操作~

資料收集完成後,右側的CALIBRATE按鈕就會亮起,點擊之後畫面就會凍結並開始生成標定結果。

生成結果完成後剩餘的按鈕也會亮起,按下SAVE按鈕就能儲存結果,終端機也會輸出完整的標定結果與儲存位置。

預設會把結果儲存在 /tmp 這個暫存資料夾內,需要手動把它移動到ROS2的設定資料夾,關閉相機標定套件之後執行以下指令就會放到對應位置,請一次複製整串指令貼上

cd /tmp && ll

tar -zxf calibrationdata.tar.gz

mkdir -p /root/.ros/camera_info

cp ost.yaml /root/.ros/camera_info/test_camera.yaml

ll /root/.ros/camera_info

回到原來執行USB攝影機套件的終端機,關閉後重新開啟套件,就會發現紅字不再出現,代表套件成功讀取到標定結果的校正檔

ros2 run usb_cam usb_cam_node_exe --ros-args -p camera_name:=test_camera 

以上就是如何使用NVIDIA Orin Nano 在 ROS2 中替攝影機進行標定校正,在執行攝影機相關的ROS2程式時,可能就會需要這一步驟。後續還會有更多 ROS x NVIDIA Jetson 相關文章,感謝支持也請多多分享喔!

利用ROS2套件為攝影機進行標定校正 – 使用NVIDIA Orin Nano〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

在ROS2系統中進行ArUco標記姿態辨識 –使用NVIDIA Orin Nano

$
0
0

前言

本篇文章將會分享如何在Nvidia Jetson Orin上的ROS2系統中利用標定好的攝影機,配合ROS2 ArUco辨識套件-aruco_ros,得到影像中ArUco標記的位置與姿態,也能夠用來為機器人進行相對定位

 

如果還沒有閱讀過關於ROS2應用的文章,可以先往回閱讀之前的文章,會更容易了解這次所分享的內容:在ROS2中為攝影機進行標定-使用NVIDIA Orin Nano

攝影/撰寫 楊子賢 材料表

 

時間 3小時
難度 3.5(滿分5)

本文

軟硬體背景

  • NVIDIA Jetson Orin Nano
  • Jetpack 5.1.1
  • L4T 35.3.1
  • Ubuntu 20.04 LTS
  • USB網路攝影機

辨識ArUco標記並取得位置與姿態

 

ArUco標記是一種由黑色邊框與內部代表編號的黑白方格組成的正方形標記,通常會當作使用攝影機進行定位時的參考點,透過演算法可以計算出標記的姿態,廣泛地被運用在需要定位物體位置與姿態的場合

 

在ROS2中可以使用aruco_ros這個套件,它提供了辨識ArUco標記的功能,並且會以訊息的形式輸出標記的各種資訊,包含標記在畫面中的位置與計算出來的姿態等。ArUco標記辨識 ROS2套件 – aruco_ros: https://github.com/pal-robotics/aruco_ros

在終端機中開啟ZED深度攝影機的容器,並執行ZED ROS2套件,在Orin Nano上使用ZED 2i攝影機的方法可以參考之前的文章,內容有提到如何建立並執行ZED攝影機的Docker容器:

AMR ROS2光達搬運機器人-分段路徑規劃與即時影像串流-使用NVIDIA Orin Nano

docker run --runtime nvidia -it --rm --privileged --network=host \
--ipc=host --pid=host \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-e DISPLAY \
-v /dev:/dev \
-v /tmp/.X11-unix/:/tmp/.X11-unix \
-v $HOME/.Xauthority:/root/.Xauthority \
-v ${HOME}/zed_docker_ai/:/usr/local/zed/resources/ \
--name zed_container \
zed_ros2_l4t_image:latest
ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zed2i

 

接著開啟另外一個終端機,建立另一個安裝好aruco_ros的Docker容器,執行之後會自動下載需要的映像檔

docker run --runtime nvidia -it --rm --privileged --network=host \
--ipc=host --pid=host \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-e DISPLAY \
-v /dev:/dev \
-v /tmp/.X11-unix/:/tmp/.X11-unix \
-v $HOME/.Xauthority:/root/.Xauthority \
--name aruco_container \
tzushiancavedu/orinnano_isaacfarm:aruco_r35.3.1

 

執行ArUco標記辨識程式

ros2 launch aruco_demo bringup.launch.py

 

再開啟另外一個終端機,執行RQT圖形化介面,選擇”/aruco_demo/result”,將標籤移動到鏡頭前就可以看到辨識結果

docker exec aruco_container bin/bash -c 'source /ros_entrypoint.sh && rqt -s image_view' 

 

AMR ROS2搬運機器人跟隨ArUco標記

有了可以從ArUco標記獲得位置資訊的能力後,就可以用來定位搬運機器人的相對位置,讓機器人可以跟隨ArUco標記移動

在終端機中開啟ZED深度攝影機的容器,並執行ZED ROS2套件

docker run --runtime nvidia -it --rm --privileged --network=host \
--ipc=host --pid=host \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-e DISPLAY \
-v /dev:/dev \
-v /tmp/.X11-unix/:/tmp/.X11-unix \
-v $HOME/.Xauthority:/root/.Xauthority \
-v ${HOME}/zed_docker_ai/:/usr/local/zed/resources/ \
--name zed_container \
zed_ros2_l4t_image:latest
ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zed2i

 

建立安裝好aruco_ros的Docker容器,並執行ArUco標記辨識程式

docker run --runtime nvidia -it --rm --privileged --network=host \
--ipc=host --pid=host \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-e DISPLAY \
-v /dev:/dev \
-v /tmp/.X11-unix/:/tmp/.X11-unix \
-v $HOME/.Xauthority:/root/.Xauthority \
--name aruco_container \
tzushiancavedu/orinnano_isaacfarm:aruco_r35.3.1
ros2 launch aruco_demo bringup.launch.py

 

開啟新的終端機,進入AMR ROS2的Docker容器中,並執行ArUco標記跟隨程式

./run_docker.sh
ros2 launch ugv_bringup aruco_follower.launch.py

 

將ArUco標記移動到機器人前方,就會根據標記的位置發送移動指令,嘗試跟隨ArUco標記

 

這樣算是在ROS2搬運機器人上完成一個簡單的ArUco標記跟隨功能,如果加以改進並搭配導航系統,就能提高機器人移動的精準度,讓自行停車充電等功能的實現變得可行,之後會繼續分享ROS2在AMR ROS2光達搬運機器人上的各種應用,敬請期待

在ROS2系統中進行ArUco標記姿態辨識 – 使用NVIDIA Orin Nano〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

NVIDIA Jetson AI Lab 大解密!範例與系統需求介紹

$
0
0

前言

之前我們介紹了NVIDIA Jetson AI Lab其中的一個範例text-generation-webui ,如何安裝及使用。本次先把目前的範例整理一下大概介紹一下功能及使用需求。

相關的安裝教學可以參考 [NVIDIA Jetson AI Lab範例:text-generation-webui],JetPack 6.0 正式版安裝請參考 [NVIDIA Jetson AGX Orin 安裝 JetPack 6.0 正式版]。

https://blog.cavedu.com/2024/08/10/jetson-agx-orin-jp6-install/

攝影/撰寫 郭俊廷 材料表

 

時間 1小時 ((看網路速度和主機效能決定多久)
難度 2(滿分5)

本文

本文要為您詳細介紹 NVIDIA Jetson AI Lab 各範例的功能與系統需求,有些需要JetPack 5有些需要JetPack 6,有些範例只能在AGX Orin上執行有些Orin Nano就可以執行,詳細的的需求會隨著範例的進度而更新,這裡列出目前2024年7月的進度(有些範例會隨著時間改版或刪除)

之前介紹 NVIDIA Jetson AI Lab 時,有些使用者在使用範例時會發生錯誤或無法使用的情形,因此我們整理了一篇文章,列出了可以使用的裝置以及可使用的 JetPack 版本。大家可以參考一下自己需要使用的範例來決定要使用的裝置。不過,這些介紹會隨時間而更新,最終版本還是需要參考原廠網站的介紹。

這篇文章將有助於你了解哪些裝置和 JetPack 版本適合你所需的範例,希望能幫助你在使用 NVIDIA Jetson AI Lab 的過程中更順利。

首先介紹一下NVIDIA Jetson AI Lab可以使用的硬體

根據 Jetson AI lab 頁面,目前可執行相關範例的 Jetson Orin 裝置如下 (相關Orin系列設備,如要購買可參考機器人王國商城或來電洽詢 0223062900 ):

  • Jetson AGX Orin 64GB Developer Kit 64GB
  • Jetson AGX Orin Developer Kit 32GB
  • Jetson Orin Nano Developer Kit 8GB

Jetson Orin NX 經我們測試後也可以執行,詳細結果可以參考以下表格。

 

以下根據模型的模態、資料處理或生成類型,大致分為以下幾個類別。

Text 文字類別 (LLM)

範例名稱 可使用裝置 可使用JetPack 版本 範例介紹
text-generation-webui
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)⚠僅限於 7B 模型(4 位元量化)
  • JetPack 5 (L4T r35.x) 
  • JetPack 6 (L4T r36.x)
使用 oobabooga 的 text-generation-webui 來運行大型語言模型(LLM),與本地的 AI 助手互動。
Ollama
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x) 
  • JetPack 6 (L4T r36.x)
輕鬆開始部署 GGUF 模型,用於網頁介面聊天
llamaspeak
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
JetPack 6 (L4T r36) 使用 Riva 的語音識別/語音合成 技術與 Llama 即時對話,並與 Llava 討論圖片!
Small LLM (SLM)
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
JetPack 6 (L4T r36.x) 小型語言模型 (SLM) 是一類參數少於 7B 的語言模型,例如 StableLM、Phi-2 和 Gemma-2B。它們較小的記憶體佔用和較快的效能,使其成為在 Jetson Orin Nano 上部署的好選擇。
API Examples
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35)
  • JetPack 6 (L4T r36)
學習如何使用 API 編寫 Python 代碼進行大型語言模型推理

Text + Vision (VLM) 文字+視覺

讓你的邊緣裝置所執行的 LLM 還能進一步搭配視覺功能!LLaVA(Large Language-and-Vision Assistant)是一種結合了大型語言模型與電腦視覺的技術,希望能實現更強大的多模態理解和互動。這項技術結合了文字和圖像兩種資訊來源,藉由將自然語言處理與視覺處理結合,可以提供更豐富、更準確的回答,尤其在需要理解圖像內容的情境下表現優異。

範例名稱 可使用裝置 可使用JetPack 版本 範例介紹
Mini-GPT4
  • Jetson AGX Orin (64GB) 
  • Jetson AGX Orin (32GB) 
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
Mini-GPT4,一種展示視覺語言功能的開源模型。
LLaVA
  • Jetson AGX Orin (64GB) 
  • Jetson AGX Orin (32GB) 
  • Jetson Orin NX (16GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
大型語言和視覺助手,多模態模型,結合了視覺編碼器和大型語言模型 (LLM) 進行視覺和語言理解。
Live LLaVA
  • Jetson AGX Orin (64GB) 
  • Jetson AGX Orin (32GB) 
  • Jetson Orin NX (16GB) 
  • Jetson Orin Nano (8GB)⚠
JetPack 6 (L4T r36.x) 在即時攝影機輸入或視訊串流上運行視覺語言模型,並重複對其應用相同的提示。
NanoVLM
  • Jetson AGX Orin (64GB) 
  • Jetson AGX Orin (32GB) 
  • Jetson Orin NX (16GB) 
  • Jetson Orin Nano (8GB)⚠
JetPack 6 (L4T r36) 使用迷你視覺/語言模型和優化的多模態管道線來進行即時影像串流。

 

Image Generation(影像生成)

支援以 Stable Duffision  為主的影像生成模型。

範例名稱 可使用裝置 可使用JetPack 版本 範例介紹
Stable Diffusion
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
在 NVIDIA Jetson 上執行 AUTOMATIC1111 的 stable-diffusion-webui,根據提示詞產生圖像!
Stable Diffusion XL
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
Stable Diffusion XL 的新型整合管線,由基礎模型和精煉器組成,實現顯著增強和詳細的圖像生成能力。SDXL 1.0 擁有 66 億個模型參數,而原始 SD 1.5 模型有 9.8 億個模型參數。

Vision Transformers (ViT)

Vision Transformers 相較於 CNN,將影像分割成一系列小的固定大小的 patch,並將這些 patch 視為序列輸入 Transformer 模型。這些模型最初是在自然語言處理 (NLP) 領域發展出來的,並在處理序列數據方面展現出強大的能力。ViTs 的優點在於它們能夠自動學習影像的長程依賴關係,而不是像 CNN 那樣依賴於卷積核的局部感知。這使得 ViTs 能夠更靈活地處理複雜的影像資訊,

範例名稱 可使用裝置 可使用JetPack 版本 範例介紹
EfficientVIT
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
麻省理工學院Han實驗室的 EfficientViT,用於高解析度密集預測的多尺度線性注意力
NanoOWL
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
OWL-ViT 經過最佳化,可以透過 NVIDIA TensorRT 在 Jetson 上即時運行
NanoSAM
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
NanoSAM,能夠在 Jetson 上即時運行的 SAM 模型變體
SAM(Segment Anything)
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)⚠1

vit_h 由於 OOM,最大的(2.4GB) 型號可能無法運行,但vit_l(1.1GB) 可以在 Jetson Orin Nano 上運行

  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
Meta 的 SAM,Segment Anything 模型
TAM(Track-Anything)
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • JetPack 5 (L4T r35.x)
TAM,Track-Anything 模型,是一種用於視訊物件追蹤和分割的互動式工具

RAG & Vector Database(檢索增強生成和向量資料庫)

  • NanoDB 是一種專為嵌入式系統設計的小型資料庫系統,它在資源有限的環境下提供高效的資料存儲和檢索功能,特別適合運行在像 Jetson Nano 這類邊緣裝置上,因為它具有輕量化的設計,能夠有效地管理記憶體和運算資源。
  • LlamaIndex 是一個專為處理大規模文字資料而設計的索引系統,特別適合用於自然語言處理 (NLP) 任務。它能夠快速高效地對大規模文字進行索引和查詢,提供了高度最佳化的資料檢索能力。這對於需要處理大規模文字資料集的應用場景,如搜索引擎或語義理解系統,尤其有用。
  • Jetson Copilot 是一個專為 NVIDIA Jetson 平台設計的多功能輔助工具,希望簡化開發者在嵌入式系統上的開發過程。這個工具結合了多種功能,包括模型推理、資料處理、自動化流程控制等,使得在 Jetson 系列設備上開發 AI 應用變得更加高效。
範例名稱 可使用裝置 可使用JetPack 版本 範例介紹
NanoDB
  • Jetson AGX Orin (64GB) Jetson AGX Orin (32GB) Jetson Orin NX (16GB) Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
NanoDB 互動演示展示處理多模態資料的向量資料庫的影響
LlamaIndex
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
讓我們使用 LlamaIndex 來實現 RAG(檢索增強生成),這樣一來,LLM 就可以處理您的文件了!
Jetson Copilot 
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
Jetson Copilot 是本地 AI 助理的參考應用程序,它演示了:

在裝置上執行開源 LLM(大型語言模型)

RAG(檢索增強生成)讓 LLM 能夠存取您的本機索引知識

 

Audio(聲音)

  • Whisper: Whisper 是一種專門設計用於語音辨識的技術,能夠高效將語音轉換為文字。該技術的特點是高準確率的語音辨識能力,即使在嘈雜環境中也能有效運行。
  • AudioCraft: AudioCraft 是一個專為音頻生成和處理設計的工具套件。它可以生成各種類型的音效、音樂或語音片段,並提供了豐富的處理功能來調整和最佳化音頻輸出。
  • VoiceCraft: VoiceCraft 是一個專門為語音合成設計的工具,能夠將文本轉換為自然流暢的語音輸出。這個技術非常適合用於開發語音助手、語音導航系統或其他需要語音交互的應用。
範例名稱 可使用裝置 可使用JetPack 版本 範例介紹
Whisper
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
OpenAI 的 Whisper,用於自動語音辨識 (ASR) 的預訓練模型
AudioCraft
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
Meta 的 AudioCraft,用於製作高品質的音訊和音樂
Voicecraft
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • JetPack 6 (L4T r36.x)
語音編輯和零樣本語音合成 (TTS)

Metropolis Microservices

MMJ 是指 Metropolis Microservices for Jetson,是專為 NVIDIA Jetson 平台設計的微服務架構,幫助開發者快速打造各種電腦視覺和 AI 應用。

範例名稱 可使用裝置 可使用JetPack 版本 範例介紹
Metropolis Microservices 
  • Jetson AGX Orin (64GB)
  • Jetson AGX Orin (32GB)
  • Jetson Orin NX (16GB)
  • Jetson Orin Nano (8GB)
  • JetPack 5 (L4T r35.x)
  • JetPack 6 (L4T r36.x)
使用 NVStreamer 和 AI NVR 功能在 Jetson 上啟動並執行 Metropolis Microservices。

 

參考資料

https://github.com/dusty-nv/jetson-containers/

https://www.jetson-ai-lab.com/tutorial-intro.html

NVIDIA Jetson AI Lab 大解密!範例與系統需求介紹〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

YOLO V8資料標記步驟(上篇)-在Roboflow上的操作SOP

$
0
0

 

攝影/撰寫 郭俊廷 材料表
  • 電腦
  • 需要標籤的照片或影片

 

時間 2小時(看需要標籤的時間)
難度 3.5(滿分5)

 

上篇步驟為-建立帳號、上傳要標記的照片或影像。

YOLO V8資料標記步驟(上篇)-在Roboflow上的操作SOP

 

本篇是將照片或影像進行標記,為訓練模型做完前置的預備

 

 

網路上雖然有很多關於 Roboflow 的教學文章,但由於 Roboflow 不斷更新版本及使用介面,舊的教學可能不再適用。本文將以 YOLO V8 為基礎,提供 2024 年 9 月版本的 Roboflow 使用介面介紹,並詳細說明從註冊帳號到資料標記的完整教學步驟,讓您能輕鬆上手,快速建立自己的電腦視覺專案。

 

Roboflow 是一個專門為電腦視覺任務設計的線上資料集管理平台,主要目的是簡化資料集的建立、標註和管理流程。它提供了多種功能,讓使用者能輕鬆處理和強化影像資料,用來訓練各種機器學習模型,特別是像 YOLO 這類的物件偵測模型。

 

建立Roboflow帳戶:

首先,建立一個免費的 Roboflow 帳戶。

https://app.roboflow.com/

在查看並接受服務條款後,系統會要求您選擇以下兩個方案之一:公共計畫和入門計畫。

首先選擇登入的帳號類型,這裡有三種選擇:GOOGLE帳號、Github帳號、自己的Email。

 

這邊我使用 GOOGLE帳號直接註冊並登入,成功之後會要求查看並接受服務條款並選擇Continue。

 

如果使用部分私人的google信箱,會有邀請加入其他人建立的群組的頁面,這裡我們選擇創建自己的工作群組(Create my own Workspace),有些帳號會沒有這畫面直接到下一個頁面。

 

這個頁面會要求您選擇以下兩個方案之一:公共計畫和入門試用計畫。

這邊可以根據您的需求選擇方案,免費方案一個月有3次在Roboflow網站訓練的額度,目前14天的方案有較多功能且不需要信用卡(但未來就不知道了)

我們這邊先選擇Free的方案。

 

以下是GOOGLE翻譯的頁面:

 

這個頁面是邀請別人來一起進行標籤的頁面,目前免費方案最多可以邀請兩人,輸入想邀請的人的信箱即可邀請。

如果沒有要邀請直接點選下方左邊:Continue without adding others

要邀請別人則輸入對方的信箱後點選下方右邊Create Workspace and send invites

 

開始建立一個你的專案

由下圖可以看到有以下專案類型

Object Detection物件偵測

使用邊界框識別物體及其位置。

Classification圖像分類

對整張圖片進行標籤分類。

Instance Segmentation實例分割

偵測多個物體並標示其實際形狀。

Keypoint Detection關鍵點偵測

識別主體上的關鍵點(「骨架」)。

Semantic Segmentation語義分割(不推薦使用)

將每個像素分配給一個標籤。通常不如實例分割精確。

Image Captioning圖像描述生成(測試版本)

使用文字對圖片進行描述。

 

專案名稱:就寫我們要標記的主要的類別,建議命名都使用英文。

授權條款
您的專案將在 Roboflow Universe 上以您選擇的開源授權條款發佈。

如果您需要將數據保持私密,請升級至入門方案(Starter Plan)。

標註類別:您正在偵測的物體類型。

例如“場景描述”或”產品詳細資訊”。「我標註了這些圖片中的 ___。」

這裡我寫上我要標記的三個類別:JETBOT-Pyramid-CAVEDU

最後專案的類型我們選擇第一個Object Detection物件偵測來當作我們第一個練習的專案。

 確認沒問題後按下方的按鈕 Create Public Project  來建立專案。

 

按下 Create Public Project就會跳到上傳圖片的頁面。

這邊可以上傳圖片、註解或影片。

可以把自己拍好的照片上傳上來或是跟我一樣把錄好的影片上傳他會自動轉成圖片檔讓你標記。

目前測試YouTube影片網址上傳沒有成功,可能要使用付費版本才能使用這功能或是單純要自己下載影片後上傳使用。

 

如果想參考別人都上傳甚麼照片來標記可以在下方Search on Roboflow Universe: World’s Largest Platform for Computer Vision Data的欄位搜尋想標記的資料。會出現如下頁面,例如我搜尋apple:

 

會出現別人標記好的蘋果的資料集,當然你也可以下載下來練習看看,但資料的品質就不一定了。

 

我這邊選擇上傳我們RK JetBot 功能展示影片,並把前面空白的畫面取消選擇Choose Frame Rate,共上傳76張照片。

 

開始建立標籤

將影片轉換成照片上傳好之後會跳到How do you want to label your images?你想要如何標記你的圖片的頁面

目前有三種標記方法:

 

1.自動標籤(測試版)

使用大型通用模型自動標記圖像。

也有新功能:使用您自己的模型進行自動標籤

 

2.Roboflow 標籤

與專業的人類標籤團隊合作。就是花錢請Roboflow 團隊和值得信賴的標籤合作夥伴標籤,更快整理高品質資料集。

 

3.手動標籤

您和您的團隊自行標記圖像,就是和一開始邀請的成員一起標記。

 

這邊因為我是一個人標記所以我選擇自動標籤,選擇後會出現標籤技巧的影片和提示:

可以參考以下影片以及網頁

https://youtu.be/EmYCpbFQ5wo?si=XIZedWQP2mtJYg4h

https://blog.roboflow.com/yolo-world-prompting-tips/

 

以下使用chatgpt進行翻譯

使用大型基礎視覺模型的提示:

 

1.調整提示詞:我們強烈建議使用自定義提示詞,而不僅僅是使用類別名稱,尤其是當它們不是常見物體時。

2.使用顏色、形狀和大小描述:模型可能不知道什麼是「彩虹糖」,但它能識別出「小的、圓的、紅色的物體」。

3.像對待10歲小孩一樣描述:模型可能不認識「玉簪」或「萬壽菊」,但它能偵測到「多葉植物」或「橙色花朵」。

4.調整信心閾值:如果預設的信心閾值導致漏檢或過度檢測某些物件,請針對每個類別進行調整。

5.審查很重要:基礎模型是一個不錯的起點,但務必仔細檢查結果,並根據需要調整標籤。

 

按下Get Started後會開始自動標籤的步驟

 

由於我要標記三個類別JETBOT、三角錐、CAVEDU的LOGO所以使用JETBOT、Pyramid、CAVEDU三個標籤名稱。如下圖所示要按紅框處的Add Class才會增加類別

 

 

我自己的經驗是只要將左邊的信心指數數值調整到有標記出正確的東西,並且沒有標記錯誤很多即可接受,之後可以再去調整。(如下圖紅框處)

 

確定信心指數調整數值沒問題後即可點選右上方的 Auto Label With This Model

會跳出最後的確認視窗沒問題即可點畫面中的Start Auto Label

 

自動標籤需要一點時間,圖片越多需要越多時間。

 

自動標籤完成後會如下圖可以點下方的紅框處調整自動標籤的內容。

建立帳號、上傳要標記的照片或影像。

接下來這篇是將照片或影像進行標記,為訓練模型做完前置的預備

 

 

 

 

YOLO V8資料標記步驟(上篇)-在Roboflow上的操作SOP〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。


YOLO V8資料標記步驟(下篇)-在Roboflow上的操作SOP

$
0
0

 

攝影/撰寫 郭俊廷 材料表
  • 電腦
  • 需要標籤的照片或影片

 

時間 2小時(看需要標籤的時間)
難度 3.5(滿分5)

 

手動調整自動標籤

調整自動標籤內容分成以下三個類別

分別是To Do(還沒確認標籤)  Approved(已經確認標籤) Rejected(被拒絕)

 

點進去每一張圖片就會出現如下圖的標籤情況,可以發現這裡很多三角錐都被標記成JETBOT了,這時候有可能是因為三角錐跟JETBOT的信心指數調整錯誤了,我們需要手動標記回來,或是回上一步驟,重新調整自動標籤的信心指數。

 

以下提供修改照片標籤過程的操作影片給各位參考:

根據標籤的類別框選對應類別的物件位置,錯誤的類別修正成正確的,或是錯誤的標籤把他刪掉。

確認此張照片沒問題後點選上方綠色Approve核准按鈕核准此張照片,再繼續下一張照片的確認。

https://drive.google.com/file/d/17tMBsB-V50i9KcxFnBazHWE90Wl6zzzc/view?usp=sharing

 

全部圖片都標記並檢查完之後都會出現在Approved類別裡面。

 

確認照片標籤都沒問題後點選右上方Add Approved ro Dataset(將已核准新增至資料集)

 

會跳出 訓練 驗證 測試 資料的數量我們使用預設的選項就好

 

訓練 驗證 測試

訓練集:

您的絕大多數圖像將放在這裡用於訓練您的模型。

 

驗證集:

這裡的圖像將在訓練過程中使用來測試模型的表現,以獲得改進的回饋。

 

測試集:

訓練完成後,測試集用於查看模型在未用於訓練的圖像上的表現如何。這可以讓您更了解模型在生產中的表現。

可以看此篇文章來更了解三個資料夾的關係

https://blog.roboflow.com/train-test-split/

 

點選下方的Add Images來新增圖片

 

新增圖片成功後Dataset的類別裡面會有妳剛剛標記好的照片

 

可以點左側的Dataset選單來做最後檢查有沒有錯誤的圖片

 

想要新增圖片可以在回左側的Upload Data來補充圖片

 

Analytics 分析頁面可以查看Dataset的標記狀況以及圖片大小等資訊

 

接著進入Generate 產生的選項,這裡就是建立模型的前置步驟

 

建立新版本

透過將圖像和資料建立成不同版本用來準備用於訓練的圖像和資料。嘗試不同的配置以獲得更好的訓練結果。

 

1.Source images

確認來源的圖片,確認沒錯就點選Continue

 

2.Train/Test Split

顯示訓練集和測試集的圖片比例

 

3.Preprocessing

預處理

預處理可以做什麼? 透過對該資料集中的所有影像套用影像轉換來減少訓練時間並提高效能。

自動定向 

調整大小:調整影像大小至640×640

或是可以在新增其他預處理步驟

預處理的相關文章:

https://blog.roboflow.com/tag/dataset-management/

 

4.Augmentation

資料增強

資料增強能做什麼?

透過產生訓練集中每個影像的增強版本,為模型建立新的訓練範例以供學習。

點選紅框處的Add Augmentation Step 可以選擇資料增強的選項

 

 這裡我們先預設不要增強,之後如果辨識效果不好再來做資料增強

 

資料增強的相關介紹:

https://docs.roboflow.com/datasets/image-augmentation

 

 

5.Create

創造

檢查您的選擇,然後按一下「Create」以使用應用程式的預處理步關建立資料集的即時快照。

 

出現這畫面代表現在正在建立新資料集版本的映像。當圖示正在旋轉時政處理所有圖像,這可能需要一些時間。

 

出現畫面代表資料集收集完成,就可以準備訓練了。

 

YOLO V8訓練會在下一篇文章繼續講解,請各位繼續關注相關訊息。

 

參考資料:

https://blog.roboflow.com/getting-started-with-roboflow/

 

 

 

 

YOLO V8資料標記步驟(下篇)-在Roboflow上的操作SOP〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

YOLO V8雲端訓練模型資料–在Google Colab上的操作SOP

$
0
0

 

攝影/撰寫 郭俊廷 材料表
  • 電腦
  • 需要標籤的照片或影片

 

時間 2h(看資料多寡決定時間)
難度 4(滿分5)

 

之前文章已經介紹過在Roboflow進行 YOLO V8  資料標記教學,標記完要如何訓練成模型呢?請看本篇文章介紹。

上篇文章講到都確認好所有照片的標籤就可以開始訓練了,如果網頁關閉了可以從Roboflow的主頁面重新進入:

https://app.roboflow.com/

首先會進入自己的Projects專案,選擇標記好想要訓練的專案,這裡我是選擇有JETBOT照片的TEST2。

 

都確認好所有照片的標籤,並且在專案旁邊點選Versions出現此畫面代表資料集收集完成,就可以準備訓練了。

第一次訓練旁邊的版本應該是v1,這裡我是訓練第二是所以版本顯示v2。

 

 

如果還沒訓練會顯示如下圖這個版本沒有型號。

說明內文:使用 Roboflow 訓練最先進的最佳化模型,或上傳自訂訓練模型,以使用標籤輔助、模型評估等功能,以及自動擴展 API 和邊緣設備支援等部署選項。

 

並且有以下三個紅框處可以下載Dataset或訓練資料集

Download Dataset:下載資料集

Custom Train and Upload:自訂訓練和上傳

Train with Roboflow:使用Roboflow訓練

 

Train with Ultralytics HUB COLAB

Download Dataset

 

點選Download Dataset可以進入下載資料集頁面,這裡可以下載資料集成zip檔案,或是將資料集轉換成訓練用的程式碼可以在COLAB等地方訓練。

如果要下載的時候Format我們選擇YOLOv8。

預設選擇Show download code就是直接顯示下載資料集的程式碼。

如果要在JETSON裝置上訓練要選擇左邊的Download zip to computer 下載zip檔解壓縮後再進行訓練。

 

或是選擇Code-FreeTraining裡面的Ultralytics Hub來進行訓練

 

選擇好之後按下方的Continue開啟Ultralytics Hub的網頁。

如果同時想要在Roboflow Train可以把下方選單勾起來,但一個帳號一個月訓練是有數量限制的請注意!!!

 

記得要登入跟Roboflow同樣的帳號才可以正確連結並訓練

 

 

正確登入後會確認是否要Import剛剛的專案

 

確認完圖片跟標籤都沒錯就可以按上右上方的Train Model開始訓練。

 

如果剛剛訓練之前有勾選也同時使用Roboflow Train,可以在圖片紅框處的Universe查看Roboflow訓練的情況。

 

Roboflow訓練的情況如下圖,使用Roboflow預設的訓練速度較快但可能較不精準,以我76張照片的數量訓練時間大約需要20分鐘以內。

 

回到我們的Ultralytics HUB裡面的Train Model,可以選擇你要訓練的模型大小預設是使用YOLOv8n,下面有顯示準確度跟速度,但最後的推論速度也是要根據你的設備來決定,這裡我們先使用預設的YOLOv8n來訓練。

 

按下Continue後會跳到選擇訓練裝置的頁面,我們選擇中間的Google Colab

要注意把這邊Step 1的程式碼複製起來,等等才可以在Google Colab貼上程式碼訓練。

這邊是呼叫Ultralytics HUB的api來訓練,記得不要把自己的API隨便給別人。

 

複製完程式碼後就可以點選下方的Step 2打開 Google Colab notebook。

並且可以看到下方的連線狀態顯示Waiting for connection

 

打開Colab notebook可以看到畫面長這樣,這邊我們要先連線到GPU,預設應該是連線到GPU,如果不確定的可以選擇下圖紅框處的變更執行階段類型來確認連線的設備。

 

我這邊的帳號預設是T4 GPU,算力算是蠻強的,但如果訓練太多張照片加很多回合數有可能會因為使用額度超過無法繼續使用Colab繼續訓練。

也可以選擇使用TPU v2-8,TPU 是Google 開發專門用於加速機器學習的處理器。TPU 特別適合需要大規模計算的任務,如神經網路訓練、自然語言處理及圖像識別等。我自己執行訓練的效果也不錯。

 

確認完要使用GPU還是TPU就可以開始執行這個notebook,會先跳出警告,這裡選擇仍要執行。

 

執行完第一個CELL的程式會顯示目前的裝置是使用甚麼顯卡且處理器、記憶體狀況。

Ultralytics YOLOv8.2.98 🚀 Python-3.10.12 torch-2.4.1+cu121 CUDA:0 (Tesla T4, 15102MiB)

Setup complete ✅ (2 CPUs, 12.7 GB RAM, 36.7/112.6 GB disk)

 

在第二個CELL裡面是要貼上剛剛我們在Ultralytics HUB複製的程式碼。

原本預設的程式碼如下圖紅框處。

 

把Ultralytics HUB複製的程式碼貼上後並執行,如果沒有錯誤就會顯示如下的訓練狀態,預設訓練100回合。

 

在訓練的時候可以點選右上方的查看資源檢查目前的資料量使用了多少的記憶體和GPU。

 

以我76張照片3個類別訓練,大約可以使用1小時,更多照片有可能只能使用更少的時間。

 

成功連結訓練,回到Ultralytics HUB頁面可以看到剛剛連線中的狀態改成Connected。

 

 

訓練完成拉到最下面會有訓練結果

可以看到訓練的模型檔分別放在以下路徑,如果要部屬到其他裝置上可以下載下來使用

Optimizer stripped from runs/detect/train/weights/last.pt, 6.3MB

Optimizer stripped from runs/detect/train/weights/best.pt, 6.3MB

或是可以點選最下面的網址用ultralytics HUB的頁面查看訓練的情況

 

如果要下載模型檔可以去以下路徑下載,點選左邊工具列的資料夾圖示進入以下資料夾,在想要下載的檔案按右鍵選擇下載。

/content/runs/detect/train/weights

best.pt 是最佳結果的模型檔

last.pt 是訓練最後一回合的模型檔

 

下載完模型或執行完這次的訓練Colab後記得中斷連線並刪除執行階段,否則Colab會繼續計算使用時間。

 

ultralytics HUB頁面的訓練結果是用圖表畫面呈現的,但無法下載模型檔,所以要記得先在COLAB上下載。

 

下載完模型檔,沒問題之後訓練就結束了,可以點選Done結束訓練。

 

這時候回到Roboflow應該可以看到訓練好了,那麼下篇文章在來介紹如何在Roboflow查看訓練結果。

 

Custom Train and Upload:自訂訓練和上傳

上傳自訂權重可以參考以下網頁:

https://docs.roboflow.com/deploy/upload-custom-weights

這裡的頁面點選Get Snippet其實跟Download Dataset頁面的Show download code的功能是一樣的。

 

Download Dataset頁面的Show download code跟Get Snippet點進去之後都會出現以下畫面,程式碼可以複製的頁面,可以使用Jupyter或是Termina或是Raw URL等選項下載或訓練。

注意這裡複製的程式碼有包含你的API KEY,不要把這段程式碼給你不信任的人,點選右上方的複製他會自動複製包含API KEY的程式碼(雖然下面的程式碼API KEY是黑色的區塊但貼上的時候是會有自己的API KEY的)。

請勿在您的團隊之外共享此程式碼片段,它包含與您的 Roboflow 帳戶綁定的私密金鑰。

 

Train with Roboflow

Train with Roboflow點選進去可以選擇使用Roboflow 3.0訓練或是使用YOLO-NAS來訓練,但要注意這裡有使有額度限制,根據你的使用方案會顯示目前剩餘使用次數再下圖紅框的地方。

選擇Roboflow 3.0訓練速度較快,可以直接再瀏覽器上顯示訓練的結果。

選擇YOLO-NAS是較新的功能較實驗性質的,有可能訓練速度比較慢。

 

選擇Roboflow 3.0就跟我們文章上面選擇的同時在Roboflow訓練的結果一樣。

 

選擇YOLO-NAS

無付費版本只能選擇YOLO-NAS Small

 

 

這一步驟要確認檢查點

可以使用先前檢查點訓練,例如我之前訓練成功過一次就可以使用之前的模型來檢查。

或是中間這個推薦的選項從公共檢查點訓練,使用預訓練的基準模型來當作檢查點,這裡是使用MS COCO。

或是最後一個選項從隨機初始化訓練:不建議使用;幾乎總是產生較差的結果。

 

確認沒問題後就點選下方的Start Training開始訓練。

 

這裡會顯示訓練預估的時間,以我76張照片3個類別的專案預估要花16分鐘的時間訓練。訓練完成系統也會寄送通知信到你的EMAIL。

 

訓練好會顯示如下畫面,可以在網頁中上傳照片測試訓練結果(點選下面的Try This Model 上傳照片),或是使用手機開啟網頁並透過手機攝影機直接測試模型辨識效果。

 

這是使用Train with Roboflow選擇YOLO-NAS(免費帳號的選擇)模型的辨識結果

可以看到在預設不要更改信賴閾值的時候,三角錐幾乎都有辨識到,但JETBOT三台中指有辨識到一台。

 

 

這是使用Train with Roboflow選擇Roboflow 3.0(免費帳號的模型)模型的辨識結果

可以看到在預設不要更改信賴閾值的時候,三角錐雖然辨識的比較少,但JETBOT三台中指有辨識到一台。

 

這是使用Train with Roboflow選擇Roboflow 3.0(付費帳號的模型)模型的辨識結果

可以看到在預設不要更改信賴閾值的時候,三角錐雖然辨識的比較少但辨識的準確機率較高,JETBOT三台中有辨識到二台且辨識的準確率較免費會員的模型高。

 

還有其他在Roboflow以及JETSON系列裝置上執行自己模型推論的方法會在之後的文章介紹。

參考資料:

https://blog.roboflow.com/getting-started-with-roboflow/

 

YOLO V8雲端訓練模型資料–在Google Colab上的操作SOP〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

【開箱】華碩 ASUS Tinker Board 3S開箱、系統安裝教學文

$
0
0

之前有開箱介紹過Tinker Board 2以及Tinker Board 2S,這次我們就來開箱最新的ASUS Tinker Board 3S。

 

撰寫/攝影 郭俊廷
時間 1小時 材料表
難度 1(滿分5)

 

以下是原廠資料介紹:

ASUS IoT Tinker Board 3S 採用 64 位元四核心 Arm® Cortex-A55 處理器 (Rockchip RK3566) 和基於 Arm 的 Mali™-G52 GPU,可提供卓越的圖形處理能力和強大的資料安全性。這款緊湊型無風扇單板電腦(SBC) 專為無縫整合而設計,具有多功能軟體套件,可實現快速市場部署,並支援FOTA、進階控制和SDK,為智慧零售和醫療保健應用提供完整的解決方案。它支援物聯網、數位看板、自助服務亭、醫療設備等。

https://tinker-board.asus.com/series/tinker-board-3s.html

 

 

開箱介紹:

首先來看盒子外觀

 

盒子打開後可以看到有用防塵袋包裝起來

 

把主板移開後可以看到跟之前系列一樣有的處理器散熱片與Wi-Fi天線。(散熱片裝在背面CPU處)

 

接著來看Tinker Board 3S正面

 

Tinker Board 3S背面

 

這次開箱的ASUS Tinker Board 3S記憶卡是2G版本的,內建16GB eMMC,通常如果把系統安裝在eMMC都不夠使用,所以主要會把系統安裝在記憶卡上面,這次我們使用的是64G的記憶卡;當然如果你要安裝更多程式也可以使用128G的記憶卡是沒有問題的。

 

下方是硬體規格表,可以看到跟Tinker Board 2S差別除了CPU升級成Quad-core Arm® Cortex®-A55,WiFi 支援 5/6皆可。MIPI CSI-2則是取消了,增加了1個 MIPI DSI。其他I/O則是差不多的配置

 

硬體規格表:

Soc Rockchip RK3566
CPU Quad-core Arm® Cortex®-A55
GPU Arm Mali™-G52
NPU RockchipNPU
Display 1 x HDMI, supports up to 4096 x 2160 @ 60 Hz

1 x MIPI DSI, Supports four lanes up to 6 Gbps, 1920 x1080 @ 60 Hz (22 pin)

Memory Size Dual-channelLPDDR4X 2GB
Storage 16GB eMMC

Micro SD(TF) card slot (push/pull)

M.2 E key 2230 1 x for WiFi 5/6 & BT module (PCIe 2.0 x1, USB 2.0)
Audio 1 x 3.5 phone jack (with mic)

1 x HDMI audio

USB 1 x USB 3.2 Gen1 Type-A

2 x USB 2.0 Type-A ports

2 x USB 2.0 Micro B, device only

1 x USB 2.0 4-pin header

Internal Headers 1 x 40-pin GPIO headers includes:

– up to 2 x SPI bus

– up to 2 x I2C bus

– up to 2 x UART

– up to 3 x PWM

– up to 1 x PCM/I2S(master/slave)

– up to 1 x S/PDIF TX

– 2 x 5V power pins

– 2 x 3.3V power pins

– 8 x ground pins

1 x 2-pin recovery header

1 x 2-pin power-on & reset header

1 x 3-pin debug UART header

1 x 2-pin DC fan header

1 x 2-pin RTC battery header

1 x MaskromDIP switch

Power Connector 12-19V 1 x DC barrel power input jack (5.5/2.5 mm)
OS Support Android 13, Debian 11 , Yocto 4.0
Dimension 3.37 inch x 2.125 inch (85 × 56 mm)
Operation temperature 0℃ ~ 60℃
Non-operation temperature -40℃ ~ 85℃
Non-operation humidity 10%-85% (non-condensing)
Note *Default for 1 x 802.11 a/b/g/n/ac wireless & BT 5.0 (2T2R)

 

 

接著是硬體配置圖:

以下為原廠資料:

升級的連接性與多樣性

Tinker Board 3S 擁有豐富的連接選項,提升系統擴充能力。它新增了多種介面,例如支援 WiFi 5/6E 的 M.2 E-Key 插槽、USB 2.0 排針、12-19V 電源插孔和 USB 3.2 Type-A 連接埠,並強化了運算效能、電源方案與散熱設計。這款多功能單板電腦可無縫整合於物聯網閘道器、數位看板、自助服務機台、醫療設備等應用中。

注意:12 MIPI DSI 是接顯示器用的不能使用 MIPI CSI攝影機用。

 

 

作業系統安裝

 

Tinker Board 3S支援多種最新主流作業系統平台,滿足不同開發環境需求。您可以靈活地選擇 Linux Debian、Yocto 和 Android 作業系統,確保與首選軟體生態系統的兼容性。

 

這裡我們介紹Tinker Board 3 Debian 11 (kernel 5.10) V.1.0.4的安裝方法,如果要使用Yocto 和 Android的作業系統請去以下網站選擇對應的載點。

 

首先進入以下網站:

https://tinker-board.asus.com/tw/download-list.html?product=tinker-board-3

 

選擇Tinker Board 3 Debian 11 (kernel 5.10) V.1.0.4下載,這個是2024年9月最新的載點(如下圖紅框)

 

下載後會有一個名稱為Tinker_Board_3-Debian-Bullseye-v1.0.4-20240815-release.zip的檔案,可以不用解壓縮直接使用balenaEtcher燒錄。

balenaEtcher載點如下:

https://etcher.balena.io/#download-etcher

 

打開balenaEtcher後選擇Flash from file

 

選擇Tinker_Board_3-Debian-Bullseye-v1.0.4-20240815-release.zip

 

選擇要燒錄的記憶卡裝置位置,如果有其他的儲存裝置切記不要選錯,要確認是選擇到你要燒錄的記憶卡

 

都確認沒錯後就按下Flash!燒錄。

 

會先解壓縮

 

解壓縮沒錯誤後就會開始燒錄,燒錄的速度會根據電腦以及記憶卡的速度來決定。

 

驗證燒錄有無錯誤。

 

燒錄完畢,都沒錯誤就可以準備將記憶卡插入Tinker Board 3S進行開機。

 

插入記憶卡開機

首先把Tinker Board 3S翻到背面,記憶卡槽的位子如下圖紅框所示位置。

 

接著把記憶卡如下圖晶片面朝下插入Tinker Board 3S 中。

 

把變壓器DC接頭插入下圖紅框處位置,就會馬上通電,通電時下方LED會亮紅光。

HDMI跟鍵盤滑鼠也都要接上,等等開機時要使用。

 

我們使用的是跟之前的Tinker Board系列一樣的19V 3.42A 65W的變壓器。

 

如果記憶卡燒錄都正常,Tinker Board 3S正常開機會出現如下畫面

 

接著會要輸入帳號密碼,預設的帳號密碼是

帳號:linaro

密碼:linaro

 

第一次登入系統會要求你並更密碼,首先先在輸入一次原本的密碼linaro。

 

接著在輸入新的密碼,記得這裡的密碼不能再使用linaro。

 

接著在重複確認輸入一次新的密碼。

 

如果密碼變更都沒有問題就會正常開機,進入如下圖 Debian 11的GUI桌面。

 

接著就可以開始使用Tinker Board 3S囉,歡迎大家在下方留言分享你用Tinker Board 3S做了甚麼喔。

 

如何關機

如果要關機只要選擇工具列的最下方的Log Out。

 

在Log out選單裡面點選Shut Down即可關機。

 

參考資料:

https://tinker-board.asus.com/series/tinker-board-3s.html

 

 

【開箱】華碩 ASUS Tinker Board 3S開箱、系統安裝教學文〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

打造虛擬鍵盤手勢控制音樂播放器—使用Arduino 首次接觸就上手

$
0
0

想做這個主題,是因為Murtaza’s Workshop 的Youtube 頻道,有分享「AI Virtual Keyboard using OpenCV」,就是透過OpenCV 實現出虛擬鍵盤,其中也有透過 Mediapipe 辨識手勢去模擬點擊鍵盤的行為。

透過這個Youtube 專題,筆者就想做出科技感十足的虛擬鍵盤的MP3 播放器。

在這篇文章中,筆者用Arduino 首次接觸就上手(以下簡稱Arduino)專案,透過 DFPlayer Mini MP3 播放模組、Arduino 的OLED以及虛擬鍵盤手勢控制來打造一個簡單的迷你 MP3 播放器。這個專案不僅讓你可以播放音樂,還可以透過 OLED 螢幕看到歌曲名稱、音量等資訊,同時使用手勢進行控制,非常適合想要深入了解音樂播放器應用的愛好者。

 

撰寫/攝影 許鈺莨
時間 1小時 材料
難度 2(滿分5)

 

 

專案原理圖

本專案是透過電腦開啟Python的虛擬鍵盤程式,透過手勢識別去觸發虛擬鍵盤,如同使用者按下鍵盤,進而去控制/播放Arduino 歌曲。

 

下圖的嵌入式系統,可以是本專案的電腦,可以是任何可以執行 Python 環境的裝置。 而嵌入式系統和 MCU 或 Arduino 則是透過 USB 進行序列埠有線通訊

 

DFPlayer Mini MP3 播放模組腳位介紹

 

若想了解更多資訊,可前往DFROBOT網站(簡體),或 國外的Github (英文)

 

硬體連接圖

以下是Arduino 與 DFPlayer Mini MP3 播放模組的接線圖

 

SD 卡中歌曲命名規則

MP3檔案命名前四個字需要使用4個數字,或4個數字加上其他字串,如0001.mp3、0010ABCD.mp3、或0050-元大.mp3。

而SD卡內可以放置100個資料夾(命名編號為01~99),每個資料夾可以放置255首歌(命名方式同上)。

 

程式環境設置

本專案有兩種程式需要執行,Python 和 Arduino 程式,以下先說明Arduino 程式環境操作。

筆者先提供專案程式載點(按我下載程式)

 

  • Arduino 環境操作

下載 BlocklyduinoF2(檔案下載請按我)

 

  • 開啟Arduino IDE

執行 arduino.exe ,檔案在BlocklyduinoF2>arduino-1.8.19裡

 

按下允許存取,即可開啟Arduino IDE。

 

  • 選擇開發板及COM號

選擇開發板> Arduino AVR Boards > Arduino Uno

 

選擇序列埠> COM XX (LinkIt7697)

[註] 會辨識到 LinkIt7697 是因為 Arduino 的驅動程式跟 LinkIt7697 相同,而筆者之前是先使用了 LinkIt7697 ,所以可能電腦會誤認這是 LinkIt7697 ,不過不影響燒錄程式。

 

  • 開啟並燒錄程式

請開啟 Handdetector_MP3player_Oled_Finish.ino Arduino 檔案,

並按下箭頭圖示即可上傳,如下圖所示。

 

  • 測試 MP3 播放

燒錄成功,可以開啟序列埠監控視窗,會聽見”吱吱”的雜訊聲,接著就會撥放第一首歌,之後就可以下指令去控制歌曲播放。

 

根據程式,從command_1到command_10,可以相對應下列程式

 

若成功,可以看見OLED 顯示播放歌曲。

 

Python 環境操作

  • 安裝Python 虛擬環境及套件

請到部落格『【AI人工智慧-神經網路運算】環境建置:安裝Anaconda、JupyterNotebook(Windows篇)』中有完整的環境及套件安裝介紹。

 

執行本專案程式步驟

  • 開啟Anaconda Prompt

開始 > Anaconda3 (64-bit) >選 Anaconda Prompt

 

  • 開啟Python 專案的虛擬環境

在 Anaconda Prompt 終端機中,輸入conda activate 虛擬環境名稱,此時base 環境就會被更改

 

  • 更換至執行程式的資料夾

筆者的檔案按放在E 磁碟區,所以要輸入”E: “,然後按Enter鍵。

 

在移動到目標資料夾,需輸入”cd E:\XXXX

 

  • 開啟Jupyter notebook

輸入”jupyter notebook“,瀏覽器要選Google Chrome開啟

 

  • 執行程式

點選Virtual_Keyboard_Player_Arduino.ipynb兩下即可開啟程式。

 

選擇Kernel > Restart Kernel and Run All Cells…

 

輸入攝影機編號

 

輸入Arduino 序列埠號

 

若成功執行,歌曲會先撥放,然後開啟程式

 

  • Arduino 序列埠發生錯誤
  1. 請確認 MicroUSB 有插入電腦
  2. 請檢查當初燒錄 Arduino 的序列埠號碼,並重新插入
  3. 請確認沒有被 Arduino IDE 程式佔用,並重新插入

 

程式執行結果

虛擬鍵盤介面介紹,如下圖所示

 

操作時,應將食指與中指合併,然後移至虛擬鍵盤,進而做出相對應控制。

 

 

打造虛擬鍵盤手勢控制音樂播放器— 使用Arduino 首次接觸就上手〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

在Raspberry Pi 5使用SSD固態硬碟手把手開機教學

$
0
0

 

 

攝影/撰寫 郭俊廷 材料表 Raspberry Pi 5 樹莓派套組

Raspberry Pi 5專用 PCIe2.0 to dual M.2 擴充板

RK-Raspberry Pi 5 AI算力提升套件– 機器人王國商城

SSD固態硬碟

螢幕、鍵盤、滑鼠

 

時間 1小時
難度 2(滿分5)

 

本文將介紹如何使用Raspberry Pi 5專用 PCIe2.0 to dual M.2 擴充板也就是雙通道的M.2 hat來使用SSD開機並同時使用Raspberry Pi AI KIT。

 

以下是我們實測SD卡與SSD固態硬碟的讀寫速度,供大家評估

SD卡寫入的速度 53597 KB/s

Random write speed 810 IOPS (target 500) – PASS

Random read speed 4082 IOPS (target 1500) – PASS

 

SSD固態硬碟寫入的速度 389515 KB/s

Random write speed 94705 IOPS (target 500) – PASS

Random read speed 104690 IOPS (target 1500) – PASS

 

 

首先要先確定Raspberry Pi 5是使用Raspberry Pi OS 的最新的映像檔並可正常開機的

目前使用2024-07-04-raspios-bookworm-arm64-full.img.xz 版本映像檔測試是可正常使用SSD開機的

作業系統燒錄教學之前介紹過了這邊就不多介紹,ubuntu這邊目前還沒測試過

相關下載點可參考以下網址:

使用Raspberry Pi OS with desktop and recommended software System: 64-bit這個版本

https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit

 

 

如果想直接購買組裝並設定好使用SSD開機的Raspberry Pi 5可以直接連絡我們購買:

連絡電話:(02) 2306-2900

電子郵件:service@robotkingdom.com.tw

 

或是參考以下網站:

https://robotkingdom.com.tw/product/rk-raspberry-pi-5-ai-kit-1/

 

開箱及組裝教學

Raspberry Pi 5專用 PCIe2.0 to dual M.2 擴充板外盒如下圖所示:

 

打開後可以看到裡面有以下東西:

PCIe2.0 to dual M.2 hat本體,M.2 Hat 與 Raspberry Pi 之間的 PCIe 連接線、螺絲套組

 

接著我們要將這次會用到的東西先整理出來給各位看以下由左至右依序是:

Raspberry Pi 5(風扇建議先裝好,之後本體再裝不好裝)

PCIe2.0 to dual M.2 hat for Raspberry Pi 5

美光 P3 PLUS 500GB NVMe™ SSD

Raspberry Pi AI KIT

螺絲套、長螺絲、螺柱、PCIe 設備固定螺絲

 

本次要介紹無外殼版本的安裝教學

首先先把 PCIe 連接線上的膠帶移除掉(目前開箱的板子都有裝好一條在板子上如果沒有再把另外附的PCIe 連接線另外接上)

 

接著要將PCIe連接線接到Raspberry Pi 5的PCIe槽中,位置如下圖紅框處,先把卡槽退開再把To Pi5文字面朝上插入後把卡槽固定回去。

 

PCIe連接線接好後的樣子:

 

接著把兩片板子疊在一起準備用螺絲將兩個板子鎖緊,這裡要注意兩個板子要對齊。

 

這時候可以準備以下的螺絲套、長螺絲、螺柱各四個就可以組合多的一個是備用的。

 

將板子翻到背面把長螺絲跟短的螺絲套先鎖進去以下紅框四個位置。

 

鎖好螺絲後將板子翻到正面後可以將長的螺柱固定進去,這時候兩塊板子就會固定在一起。

 

將 SSD 和 AI KIT 插入 M.2 的插槽後,就可以準備將PCIe 設備固定螺絲(如下圖紅框處)鎖進去。

 

PCIe 設備固定螺絲鎖上去後硬體組裝就完成了,接著要進行軟體的設定才可以使用SSD來開機。

 

有外殼的安裝可以參考以下網址Installation with housing:

https://wiki.seeedstudio.com/raspberry_pi_5_uses_pcie_hat_dual_hat/#installation

 

使用 SD 卡複製工具將Raspberry Pi作業系統刷新到 SSD

首先執行以下指令更新系統並開啟raspi-config設定畫面

sudo apt update && sudo apt upgrade -y

sudo rpi-eeprom-update

sudo raspi-config

 

進入raspi-config設定畫面如下圖,按下捲動到Advanced Options並按 Enter:

 

向下捲動到Bootloader Version並按 Enter:

 

最後選擇Latest,然後按 <確定>:

 

這裡問將引導程式重設為預設配置,我們要是用最新的這裡選擇<否>:

 

這裡會顯示引導程式未重設為預設值的訊息,按 <確定>就好:

 

接著透過按右鍵選擇退出該工具<Finish>:

 

問你是否重新啟動,請選擇<是>。

 

在主介面點選左上角或左下角的樹梅派圖案 => 附屬應用程式=> SD Card Copier ,執行SD Card Copier程序,將作業系統複製到NVME SSD中,如下圖所示。

注意Copy From Device選記憶卡(名稱中有dev/mmcblk的裝置)

Copy To Device選SSD(名稱中有dev/nvme的裝置)

操作步驟可以參考以下影片:

 

將 Raspberry Pi 設定為從 NVMe開機

一樣要從raspi-config裡面設定,執行以下指令

sudo raspi-config

 

進入raspi-config設定後按下捲動到Advanced Options並按 Enter:

 

向下捲動選擇Boot Order並按 Enter:

 

選擇NVMe/USB Boot並按 <確定>:

 

設定完成後將出現以下訊息NVMe/USB is default boot device 。按 <確定>鍵:

 

接著透過按右鍵選擇退出該工具<Finish>:

 

問你是否重新啟動,請選擇<是>。

 

重新開機完可以使用以下指令檢查系統目錄是否已經變成SSD的空間了。

df -h

 

或是開啟檔案管理程式,查看右下角的硬碟空間是否已經變成SSD的空間大小了。

 

確認完畢,這時候就可以使用SSD來操作您的Raspberry Pi 5囉。

以下是SD卡的讀寫速度,寫入的速度 53597 KB/s

Random write speed 810 IOPS (target 500) – PASS

Random read speed 4082 IOPS (target 1500) – PASS

 

以下是SSD的讀寫速度,寫入的速度 389515 KB/s

Random write speed 94705 IOPS (target 500) – PASS

Random read speed 104690 IOPS (target 1500) – PASS

 

SSD卡的寫入速度大約比SD卡快了7倍多,讀取的IOPS速度大約快了25倍。

操作過程將每秒隨機寫入操作 500 次,每秒隨機讀取操作 1500 次。

IOPS(Input/Output Operations Per Second)是一個用於電腦儲存裝置效能測試的量測方式,表示每寫寫入/讀取次數。

如果將 IOPS 乘以 Transfer Size in Bytes 可計算出每秒可讀寫的頻寬(單位 MB/s)

之後會繼續介紹如何同時使用Raspberry Pi AI KIT。

 

參考資料:

https://wiki.seeedstudio.com/raspberry_pi_5_uses_pcie_hat_dual_hat/

https://piepie.com.tw/52880/sd-card-performance-in-raspberry-pi-5

在Raspberry Pi 5使用SSD固態硬碟手把手開機教學〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

將 NVIDIA Jetson 的強大 AI 效能濃縮進口袋:reComputer Mini Jetson 系列!

$
0
0

前言

reComputer Mini 是一款由 NVIDIA Jetson Orin Nano/Orin NX 模組驅動的小型 AI 電腦,提供高達 100 TOPS 的 AI 性能。其底部配備了 PCIe 端口來提供豐富的擴充性,還能靈活定制。整個系統是針對無人機、巡邏機器人、配送機器人嵌入式自動化裝置所設計。reComputer Mini 可以直接接收 60V 直流輸入,能夠廣泛應用於各種電池供電系統。

根據目前 (2024/10月底) 的 Seeed 原廠頁面,除了一些技術規格之外,還有四大主要需求,我都會整合到以下的 [阿吉 talk] 來一併說明 (什麼時候有這個東西了…)!

  • 提供更多擴充性:reComputer Mini 底部配備 PCIe 埠,提供豐富的擴展能力。這使得使用者可以整合各種模組和周邊設備,並根據專案需求進行彈性調整。本體已經  … 如果不夠的話,還可以購買擴充板!
  •  60V DC 最大輸入電源:reComputer Mini 支援範圍廣泛的電源輸入,包括最高 60V 的直流輸入。這使其能夠適應各種電源來源,特別適合電池供電系統,確保能夠在各種應用中使用。
  • 免除繁瑣接線:reComputer Mini 的設計簡化了佈線過程,減少了複雜的線路連接需求。這種人性化的設計使其能夠快速且輕鬆地整合到現有系統中,減少安裝所需的時間和精力。
  • 立即走向市場:reComputer Mini 以其緊湊和高效的設計,可以在購買後立即部署。這使得開發者和研究人員能夠迅速進行專案,無需進行大量修改或額外設定。

根據 CAVEDU 這幾年來對於 Jetson 系列的實際開發經驗,我想分成以下面向來介紹 ReComputer Mini Jetson,我們也即將開預購,敬請期待喔!

  1. 引言:NVIDIA Jetson、邊緣AI 與 reComputer mini Jetson
  2. 硬體規格與突破
  3. 邊緣 AI 應用優勢
  4. 連接與擴充性
  5. 軟體生態系統
  6. 實際應用案例與優勢

本文

1 引言:NVIDIA Jetson、邊緣AI 與 reComputer mini Jetson 

NVIDIA Jetson 平台作為邊緣 AI 運算的領導者,一直以來都代表著高效能邊緣運算的標竿。從最初的 Jetson Nano 到現今的 Orin 系列,每一代的推出都為 AI 運算帶來重大突破。特別是最新的 Jetson Orin 系列,憑藉 Ampere 架構 GPU 與進階的 Tensor 核心,實現了從 20 TOPS 到 100 TOPS 的 AI 運算性能,為各種邊緣端的 AI 應用開啟了更多可能性。

然而,在自動化與 AI 技術快速發展的今日,市場對於更輕巧、更靈活的部署方案有著強烈需求。reComputer Mini 正是為了回應這種需求而生,它突破性地將 Jetson Orin 模組的強大算力濃縮進只有 63x95x41mm (未安裝擴充板)的體積中。這款精巧的設計不僅保留了完整的運算效能,更透過創新的工程設計,實現了更高的整合度與更好的可攜性。

在自主機器與邊緣運算的應用場景中,設備的體積與整合性往往直接影響著專案的可行性。無論是空間受限的無人機、需要長時間運作的巡邏機器人,還是要求穩定性的工業自動化設備,都對運算裝置的體積、功耗和散熱提出了嚴格要求。reComputer Mini 的設計正是針對這些挑戰所提出的絕佳解決方案:

  • 全然整合:在手掌大小的體積中整合完整的 Jetson 生態系統
  • 靈活供電:9-60V 的電壓設計,完美符合各種供電情境
  • 自由擴充:豐富的 I/O 接口與底部擴充設計,滿足多樣化的應用需求

這種高度整合的設計理念,使得 reComputer Mini 不僅僅是一款運算裝置,更是能夠快速部署的 AI 解決方案,為各類自主機器的開發與應用開闢了新的可能性。


2 硬體規格與突破

2a 小型化的工程突破

reComputer Mini 的最大突破在於其精密的小型化設計。工程師們成功將完整的 Jetson 運算平台濃縮到成年人的手掌大小!。這樣的尺寸代表它比一般的手機還要小巧,卻擁有足以支撐複雜 AI 運算的強大效能。這種高密度設計不僅考驗著元件布局的優化,更挑戰著散熱與供電的極限。

2b 全面的效能配置

reComputer Mini 提供四種不同效能等級的配置選項,滿足不同應用場景的需求:

  • Orin Nano 4GB:20 TOPS,入門級 AI 應用的理想選擇
  • Orin Nano 8GB:40 TOPS,適合一般 AI 視覺處理任務
  • Orin NX 8GB:70 TOPS,支援複雜的多任務 AI 處理
  • Orin NX 16GB:100 TOPS,頂級效能,適合要求極高即時性的應用

這種靈活且全方位的算力配置選項使得開發者可以根據實際需求和預算選擇最適合的版本。

2c 創新的電源設計

reComputer Mini 採用了業界領先的 9-60V 寬電壓設計,這項特性帶來多重優勢:

  • 直接相容於 48V 工業級電池系統
  • 適配各類無人機、機器人的供電系統
  • 內建電壓轉換與保護電路,確保供電穩定性
  • 降低了外接電源轉換器的需求,進一步簡化系統整合

2d 先進的散熱方案

在如此精簡的體積下維持穩定運作,需要精密的散熱設計:

  • 整合式主動散熱系統,確保在高負載下的穩定性
  • 智慧風扇控制,根據負載自動調節轉速
  • -10°C 到 50°C 的高容忍度工作溫度範圍
  • 散熱效率最佳化設計,確保長時間運作的可靠性

上述特點使得 reComputer Mini 不只是一款小型化的 AI 電腦,更是一個為實際應用場景精心打造的完整解決方案。其硬體設計充分考慮了實際部署環境中可能遇到的各種挑戰,從電源到散熱,都體現出深思熟慮的工程智慧。reComputer Mini 特別適合:

  • 需要快速部署的原型開發
  • 空間受限的嵌入式系統
  • 要求高可靠性的工業應用
  • 需要長時間運作的自主設備

3 邊緣 AI 應用優勢

3a 極致體積帶來的部署靈活性

reComputer Mini 的精簡體積不僅是數字上的優勢,更為實際應用帶來各種突破契機:

  • 63 x 95 x 41mm 的尺寸實現了前所未有的部署彈性
  • 重量輕巧,適合運動載具的負載需求
  • 模組化設計便於維護與升級
  • 可輕易整合進現有設備的外殼設計中

這種高度的整合性讓開發者能夠專注於應用本身,而不需要過度考慮設備安裝的限制。

3b 多元化的應用場景

無人機應用

  • 體積輕巧不影響飛行性能
  • 9-60V 寬電壓設計完美匹配無人機電池系統
  • 支援即時影像處理與航線規劃
  • 適合執行:
    • 空中測繪與 3D 建模
    • 即時物體追蹤
    • 障礙物自動迴避
    • 精準著陸控制

Jetson Quick Start Platforms | NVIDIA Developer

(圖片來源)

巡邏機器人

  • 長時間運作的可靠性保證
  • 支援多攝影機即時串流處理
  • 適合室內外各種巡邏場景
  • 強大的 AI 運算能力支援多任務處理:
    • 即時人臉辨識
    • 異常行為檢測
    • 路徑規劃與避障

(圖片來源)

遞送機器人

  • 精確的環境感知與導航能力
  • 即時路徑優化
  • 人機互動介面處理
  • 多感測器資料融合:
    • LiDAR 資料處理
    • 視覺 SLAM
    • 動態障礙物偵測

Tag: Lidar | NVIDIA Technical Blog

(圖片來源)

 

3c 創新的電池供電整合方案

reComputer Mini 的電源系統設計特別考慮了移動應用的需求:

    電源管理優勢

  • 9-60V 寬電壓輸入範圍適配各類電池系統
  • 智慧電源管理延長電池使用時間
  • 支援熱插拔供電切換
  • 內建保護機制確保供電穩定性

    系統整合效益

  • 減少額外的電源轉換模組
  • 降低整體系統複雜度
  • 提高整體可靠性
  • 節省安裝空間與成本

實際應用案例

reComputer Mini 有機會在以下多個領域有很好的發揮:

  1. 智慧工廠
  • 自動導引車 (AGV) 的核心控制
  • 品質檢測自動化
  • 工業機器人視覺導引

 

  1. 智慧城市
  • 自動巡檢無人機
  • 智慧停車管理
  • 公共安全監控
  1. 物流配送
  • 最後一哩路配送機器人
  • 倉儲自動化
  • 路線優化系統

這些應用優勢使得 reComputer Mini 成為邊緣 AI 部署的理想選擇,特別是在需要高度可攜性和穩定性的場景中。它不僅解決了傳統邊緣運算設備在部署時遇到的諸多限制,更為未來智慧化應用開創了新的可能性。


4 連接與擴充性

4a 豐富完整的 I/O 接口

reComputer Mini 雖然體積小巧,但保有完整的專業級工業介面:

     高速資料傳輸

  • 4x USB 3.0 Type-A (5 Gbps)
  • 2x USB 3.2 Type-A (10 Gbps)
  • 1x USB 2.0 Micro-B(設備模式)
  • 1x USB 2.0 Type-C(主機模式)
  • 乙太網路接口

     專業通訊介面

  • 2x UART (JST-4pin, 3.3V)
  • 2x I2C (JST-4pin, 3.3V)
  • 2x CAN 匯流排
    • 1x CAN JST 4pin (3.3V)
    • 1x CAN (XT30 2+2)
  • 1x SPI (JST 6pin, 3.3V)

     儲存擴充

  • M.2 Key M 插槽(支援 2242 NVMe 儲存)
  • M.2 Key E 插槽
  • 高速 PCIe 通道支援

4b 創新的擴充板設計

reComputer Mini 的擴充性通過底部的 140 pin 高速接頭來實現:

    擴充板優勢

  • 模組化設計便於功能擴充
  • 保持系統的緊湊性
  • 可自定義專屬擴充功能
  • 支援多種擴充方案:
    • 雙通道 CAN
    • 多通道乙太網
    • GMSL 攝影機介面

    實用性設計

  • 安裝簡便,無需複雜接線
  • 熱插拔支援
  • 整體高度僅增加 25.7mm
  • 維護便利性高

4c 攝影機與感測器整合能力

reComputer Mini 為視覺應用與感測器整合提供完整解決方案:

    視覺系統支援

  • 支援多組相機同時接入
  • 高速影像處理能力
  • 靈活的影像輸出(Display Port)
  • 支援多種相機介面:
    • MIPI CSI
    • USB 相機
    • 工業相機

Sony IMX415 4K Camera for NVIDIA Jetson Nano/Xavier™ NX

(圖片來源)

    感測器整合

  • 多重感測器並行處理
  • 即時資料融合能力
  • 支援常見工業感測器:
    • IMU 感測器
    • LiDAR
    • 超音波感測器
    • 環境感測器

Waveshare JetRacer Professional Version ROS AI Kit, Dual Controllers AI Robot, Lidar Mapping, Vision Processing, Includes Waveshare Jetson Nano Dev ...

(圖片來源)

 

4d 實際應用整合範例

這種全方位的連接與擴充能力,使得 reComputer Mini 能夠適應各種複雜的應用場景,從簡單的單一感測器應用到複雜的多系統整合專案都能完美勝任。其模組化的設計理念更確保了系統的可維護性與未來擴充的可能性。

     多感測器機器人

  1. 視覺系統
    • 前方障礙物偵測相機
    • 後方監控相機
    • 深度 (RGB-D) 相機
  2. 環境感知
    • IMU 姿態感測
    • LiDAR 掃描
    • 超音波測距
  3. 通訊整合
    • CAN 匯流排控制
    • 工業乙太網即時控制
    • 無線通訊模組

     智慧 AGV 應用

  • 多相機視覺導航
  • 即時路徑規劃
  • 安全感測器整合
  • 工業控制網路連接

NVIDIA announces huge GenAI update to Jetson Orin, greatly advancing human-robot interaction - HardwareZone.com.sg

(圖片來源)

5 軟體生態系統

5a JetPack 6 全面支援

reComputer Mini 完整支援 NVIDIA 最新的 JetPack 6 開發套件,提供全方位的開發環境:

      核心功能

  • 基於 Ubuntu 的最佳化作業系統
  • CUDA 加速計算庫
  • cuDNN 深度學習加速
  • TensorRT 推論優化引擎
  • 多媒體 API(影像編解碼加速)
  • 視覺庫(NVIDIA VPI)

    開發工具整合

  • Docker 容器支援
  • NVIDIA SDK Manager
  • 系統監控與效能分析工具
  • 完整的驅動程式支援
  • 電源管理最佳化工具

5b AI 開發框架完整支援

reComputer Mini 提供廣泛的 AI 框架支援,滿足不同開發需求:

     深度學習框架

  • TensorFlow
  • PyTorch
  • ONNX Runtime
  • Keras
  • Caffe
  • MXNet

     專業視覺處理

  • OpenCV
  • OpenVINO
  • NVIDIA DeepStream SDK
    • 多串流視訊分析
    • AI 視訊管線開發
    • 即時串流處理

    機器人開發工具

  • ROS/ROS2 完整支援
  • Isaac SDK 相容性
  • 自動駕駛開發套件
  • SLAM 工具鏈

5c 快速部署特性

reComputer Mini 特別強化了部署流程的效率:

    即時部署優勢

  • 預裝優化系統映像檔
  • 快速開機與系統設定
  • 自動硬體偵測與設定
  • 雲端同步部署支援

    開發效率提升

  1. 容器化部署
    • Docker 容器支援
    • NGC 容器註冊表存取
    • 自動化部署腳本
    • 環境一致性保證
  2. 開發工具鏈
    • VSCode 遠端開發支援
    • Jupyter Notebook 整合
    • Git 版本控制
    • CI/CD 管線支援
  3. 監控與維護
    • 系統健康監控
    • 遠端更新支援
    • 效能分析工具
    • 故障診斷功能

6 實際應用案例與優勢

6a 與標準 Jetson 開發套件的比較

    體積與整合度優勢

  • reComputer Mini:63x95x41mm
  • 標準 Jetson 開發套件:100x79x21mm(僅主板) 對比顯示:
    1. 整體體積減少約 40%
    2. 更高的元件整合度
    3. 更靈活的安裝方式

    開發效率提升

  1. 容器化部署
    • Docker 容器支援
    • NGC 容器註冊表存取
    • 自動化部署腳本
    • 環境一致性保證
  2. 開發工具鏈
    • VSCode 遠端開發支援
    • Jupyter Notebook 整合
    • Git 版本控制
    • CI/CD 管線支援
  3. 監控與維護
    • 系統健康監控
    • 遠端更新支援
    • 效能分析工具
    • 故障診斷功能

 

實用性比較

reComputer Mini 的創新設計優勢:

  • 工業級防護設計
  • 更廣的工作溫度範圍(-10°C 到 50°C)
  • 9-60V 寬電壓輸入(vs 標準開發套件的固定電壓)
  • 模組化擴充設計
  • 免工具安裝/拆卸

部署效率

特性 reComputer Mini 標準開發套件
安裝時間 < 30分鐘 2-4小時
接線複雜度 低(整合式設計) 高(需額外配線)
維護難度 模組化,易於維護 需要專業技術支援
整合成本 較低 較高

6b 移動場景應用優勢

無人機應用實例

  1. 空中巡檢系統
    • 重量優勢:整機重量輕
    • 續航影響小:高效能功耗比
    • 即時處理:
      • 4K 影像即時分析
      • 障礙物自動迴避
      • 即時航線規劃
  2. 快遞無人機
    • 精準著陸控制
    • 包裹識別與追蹤
    • 即時路徑最佳化

移動機器人實例

  1. 室內導航機器人
    • SLAM 即時建圖
    • 人流分析
    • 動態路徑規劃
  2. 戶外巡檢機器人
    • 全天候運作能力
    • 多感測器資料融合
    • 異常事件即時檢測

6c 功耗與效能的平衡

智慧功耗管理

  1. 動態效能調整
    • 依負載自動調整運算資源
    • 智慧散熱控制
    • 電池壽命最佳化
  2. 工作模式配置
    15W 模式:全效能模式
    10W 模式:平衡模式
    7W 模式:節能模式

效能最佳化案例

  1. AI 視覺分析
標準模式(15W):
- 4K/30fps 影像處理
- 多目標即時追蹤
- 複雜場景分析
節能模式(7W):
– 1080p/30fps 處理
– 單一目標追蹤
– 基礎場景分析
  1. 邊緣運算應用
資源使用最佳化:
- TensorRT 加速
- 半精度運算
- 模型量化優化

 

以上是根據 這些實際應用案例充分展現了 reComputer Mini 資料表結合  CAVEDU 對於 NVIDIA Jetson / SeeedStudio reComputer 的實務經驗所給出的初步分析。很期待 reComputer Mini 在實際部署中的優勢,特別是其在移動場景中的傑出表現。透過靈活的功耗管理和優異的散熱設計,實現了效能與功耗的最佳平衡,為各類應用場景提供了可靠的運算平台。

將 NVIDIA Jetson 的強大 AI 效能濃縮進口袋:reComputer Mini Jetson 系列!〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

NVIDIA Jetson Orin實戰應用! FIRST Robotics Competition (FRC)比賽機器人如何透過 ROS2 精準控制與定位

$
0
0

前言

本篇文章將會展示如何使用FRC roboRIO控制器連接到ROS2機器人作業系統,並利用NVIDIA Jetson Orin Nano作為計算平台,提供影像物件辨識、AprilTag偵測等功能。

FRC roboRIO控制器是FIRST Robotics Competition機器人競賽指定使用的核心控制器,具有多樣的輸入輸出接口,可以同時控制多組馬達與驅動器。

ROS2機器人作業系統則是目前最先進的機器人軟體框架,提供模組化及可擴展的設計,適合各式機器人應用。

NVIDIA Jetson Orin Nano是NVIDIA最新的嵌入式AI運算平台,具有高效能與低功耗的特性,並且可以運用GPU加速AI推論,適用於先進的機器人應用。

結合以上三者,可以讓FRC競賽機器人與Jetson Orin上運行的ROS2應用結合,運用來自ROS2套件的多種資訊,更好地應對競賽中的各種項目。

 

文章中使用的軟硬體

  • Jetpack 6.0GA
  • L4T 36.3.0
  • Ubuntu 22.04 LTS
  • Isaac ROS 3.1
  • ZED SDK 4.2

 

roboRIO控制器連接ROS2

在使用roboRIO控制器連接ROS2時,需要讓做為執行平台的Jetson Orin Nano處於同一網路環境內,可以用乙太網路線將其接入機器人上的無線路由器或是網路交換機。

 

在Jetson Orin Nano上需要執行我們開發的ROS2橋接套件,並指定需要的資訊名稱,橋接程式在開啟時會偵測訊息類別,自動切換處理方式,將ROS2訊息資料透過NetworkTables,傳輸到roboRIO控制器上使用。

 

除了將資料傳往roboRIO控制器,也能透過roboRIO控制器傳輸資料到Jetson Orin Nano,轉換為ROS2訊息並發布。

 

另外還能將影像串流到roboRIO控制器上,透過Driver Station即時預覽攝影機畫面。

 

ROS2應用

透過NVIDIA Jetson Orin Nano,能夠執行許多強大的ROS2套件,並在roboRIO上以JSON或其他自訂格式利用運算完成的資訊。目前支援使用的攝影機有StereoLabs的ZED 2i深度攝影機與Logitech的C270網路攝影機。

 

AprilTag偵測 (isaac_ros_apriltag)

網址:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_apriltag/index.html

偵測並生成AprilTag與相機的相對座標,可以用於機器人在場地上的定位。

 

物件偵測 (isaac_ros_yolov8)

網址:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_object_detection/index.html

使用YOLOv8深度學習模型,偵測畫面中物體位置,能夠同時偵測多個物體,可用於目標識別與追蹤。也能夠自行訓練模型,針對特定的物體進行辨識。

 

光達里程計 (rf2o_laser_odometry)

網址:https://github.com/MAPIRlab/rf2o_laser_odometry

使用光學雷達計算移動資訊,提供機器人的里程計資訊,可以用來修正機器人位移時的誤差。

 

同時定位與繪製地圖 (cartographer_ros)

網址:https://github.com/ros2/cartographer_ros

使用光學雷達進行同時定位與地圖繪製(SLAM),可以讓機器人在場地上定位當前位置。

 

除了上述的ROS2功能套件,使用者也能透過新增與修改橋接程式,支援更多不同的套件,或是將資訊格式修改為適合的形式,讓使用更加得心應手。如果想要了解更多關於該專案的資訊,歡迎與我們聯絡。

 

特別感謝

感謝在開發過程中為我們提供協助的各方,不論是給予各種參考資訊與改進意見,又或是出借硬體設備進行測試,都對我們幫助良多,在此特別感謝:

  • 天主教新北市私立崇光高級中學Team 8806 – Our Lady of Providence Dream League
  • 洪子銘老師

 

  • 新北市立安康高級中學Team 7632 – An Kang Robotics Make
  • 蘇鼎欽老師

 

  • 新北市立板橋高級中學Team 7709 – Formosa Pangolin
  • 鄭琮翰、張博軒、陳立勛、賴睿杰

 

NVIDIA Jetson Orin實戰應用! FIRST Robotics Competition (FRC)比賽機器人如何透過 ROS2 精準控制與定位〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。


reCamera:輕巧、易用、AI相機

$
0
0

在找一款輕巧、開箱即用的 AI 相機嗎?reCamera 就是你要的!機器人王國熱烈販售中!

reCamera 特色

先就我個人的印象,特色就是本文標題:

輕巧、易用、AI相機

  • 輕巧:立方體 (4 cm) 設計,在配重上揮灑自如
  • 易用:支援有線/無線等連線方式,且無須安裝驅動程式
  • AI inside:快速將 AI 視覺整合到既有專案中,例如原廠頁面列出的 reCamera Robot Arm 專案

接著根據原廠所列出四大特點依序說明:

一、客製化感測器相容性

reCamera 支援多種客製化感測器,允許使用者根據特定需求選擇和安裝不同的感測器模組。無論是紅外線、熱感應還是高解析度鏡頭,都能靈活搭配,滿足各種應用場景。

二、小巧尺寸:40 x 40 x 36.5 毫米

reCamera 極為精巧,尺寸僅有 40 x 40 x 36.5 mm。如此小巧的設計方便安裝在空間受限的環境中,並降低對設備外觀的影響,非常適合需要隱藏式或講求整體性的安裝情境。

三、靈活的擴充介面

reCamera 提供多種擴充介面,讓使用者能夠輕鬆連接各種外部裝置或模組。這種靈活性使其能夠適應不同的功能需求,提升系統的擴充性與相容性。

四、內建 NODE-RED 工作流程,快速設置和 AI 部署

reCamera 攝影機內建了 NODE-RED,視覺化工作流程使得系統設置和配置變得簡單直觀。使用者有機會更快完成裝置設定與 AI 模型部署。另外藉由其內建的輕量化 Linux,可執行 Python / Node.js,並支援多執行緒。

硬體規格

以下是 reCamera 硬體規格,主要分為具備 WI-FI 與藍牙的 reCemera 2002w 與不支援無線網路功能的 reCemera 2002 兩款型號,並可再細分為 8GB / 64GB eMMC 兩個版本。

Camera sensor 為 OV5647 這款 500 萬像素 / 200°視角的彩色鏡頭。兩者皆有內建麥克風並支援外接喇叭,如果要做為資料收集裝置的話,還可外接記憶卡 (最高容量支援 2TB),功能相當完整喔!

 

開箱

根據原廠說明,reCamera 支援多種連線方式,且可說是隨插即用,相當無腦(方便)。

這邊我拿一個道歉企鵝公仔 (女兒幼稚園的小禮物) 來比較一下大小,但整體就是邊長四公分的正方體,中央的鋁塊據說可有很不錯的被動散熱效果,拿起來的手感也相當好。

看一下不同角度吧,比較”有趣”的地方在於,如果使用常見的相機腳架鎖孔會很容易把 usb type-C 孔擋住!?或是我手邊的腳架剛好容易擋住,可能要額外多 3D 列印一個座或是夾具囉

燈號意義

  • 中央綠燈:接上電源即亮燈
  • 紅燈:CPU 運作狀態指示燈
  • 藍燈:emmc 讀寫狀態指示燈

網路連線設定

reCamera 提供了三種連線方式,請根據實際需要來挑選合適的吧

  • 方法1 – USB 對連:
    使用 USB type C 傳輸線將 reCamera 連上您的電腦之後,就能透過 192.168.42.1 來進入 reCamera 的網頁介面,並在其中選擇所要連上的外部網路。
  • 方法2 – reCamera 作為 AP:
    reCamera 接上電源之後就會自動成為一個無線網路熱點。開啟您的手機或筆記型電腦的網路連線頁面,應該會看到一個名為 reCamera_****** 的 Wi-Fi。命名方式是 “recamera_” 加上 reCamera 的 mac address 後六碼,所以不用擔心重複。預設密碼為 12345678.

連上 reCamera AP 之後,請由 192.168.16.1 來進入如上上圖的網路設定頁面,接著一樣從中選擇您所要連上的外部網路名稱。如果你需要操作一台以上的 reCamera,請參考 裝置管理

  • 方法3 – 乙太網路連入:
    如果想要使用實體網路線連入的話,請用盒裝中隨附的轉接線。但請注意本接口不支援 POE (Power over Ethernet),因此還是要透過 type-c 接口來供電。接線示意如下圖。接線完成之後,請由您的路由器介面中找到 reCamera 的 IP,再連入即可。

連入相機之後

不論您是用上述三種方法哪一種連入,都可看到其網頁介面。左側選單依序介紹如下:

  • Security

可在此修改登入密碼與指定 SSH key

/security分頁
  • Network

在此進行網路連線設定,也可由本介面來關閉 Wi-Fi。

/network分頁
  • System

本頁面中可檢視相關系統資訊與軟體版號

  • Power

顧名思義,重開機、登入登出的問題就在這邊處理。

  • Terminal

相當有趣,給了很方便的終端機,可在此執行簡易的 python 或 .sh 腳本。另外如有必要的話,也可由外部軟體連入 reCamera 終端機,請參考後面說明。

/terminal分頁

相機畫面預覽

reCamera 已經整合了 Node-RED 圖形化程式開發平台,您可直接從 ip_address:1880 進入 Node-RED 儀表板。運用各種方便好用的預定義模組,您可在此預覽攝影機畫面、設定/修改AI模型,期待更快完成各種開發需求。詳情請參考原廠影片:

 

3. SSH 連線

除了網頁連線之外,也可以於終端機或 pyTTY / MobaXterm 等小軟體來遠端連入 reCamera:ssh recamera@recamera.local 或是 ssh recamera@<IP>,預設密碼為 recamera

如以下就是用 CAVEDU 愛用的 MobaXterm 軟體來連入 reCamera 的 terminal

以下畫面使用 MobaXterm 小軟體連入 reCamera:

攝影機畫面檢視與即時串流

以下使用 reCamera 內建之  NODE-RED 環境來檢視攝影機影像與建立即時串流。Seeed 原廠以針對 reCamera 提供了很多便於操作的指令。

簡單連接 camera / model / preview 等模組並完成相關設定之後,就能取得攝影機圖像與 RTSP H.264 的影像推播資料。可以直接在 Node-RED 儀錶板上看到結果。

或也可使用 VLC 軟體,就能用 rtsp://192.168.42.1:554/live 網址來觀看即時影像串流了!

開箱文就寫到這邊,後續會寫更多有趣的 AI 影像範例喔!

reCamera:輕巧、易用、AI相機〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

專題教學🌫️ 你每天呼吸的空氣乾淨嗎?用 Arduino 感測空汙狀態

$
0
0

近期,環境部於 11 月 21 日公告修正空氣污染防制區域劃分,將新北市、台中市、彰化縣、南投縣及嘉義市等五縣市增列為懸浮微粒 PM10 的三級防制區。這項政策調整標誌著政府在空氣品質管控上邁向更嚴格的標準,目的是加強資源分配與污染防制,以進一步改善大氣環境品質。

隨著空氣污染議題日益受到關注,空氣品質監測不再僅是政府的責任,民眾也應該參與其中。本篇文章將帶領讀者透過 DIY 的方式,使用 Arduino 和常見感測器,製作一個簡易的 PM2.5 空氣品質監測盒子,不僅能即時了解環境狀況,還能讓您更貼近環境保護的核心議題。

 

 

撰寫/攝影 許鈺莨
時間 1小時 材料
難度 2(滿分5)

 

為了讓讀者能輕鬆製作屬於自己的 PM2.5 空氣品質監測盒子,我們將通過以下 4 個部分一步步帶您完成專案:

  1. 硬體連接
    本節將說明如何將 PMS5003 感測器、OLED 顯示模組以及其他元件與 Arduino 正確接線,確保硬體配置穩定運行。
  2. 下載程式編輯器
    初學者可能尚未安裝 Arduino 開發環境,我們將介紹如何下載並設置 Arduino IDE,讓您的程式開發之旅順利起步。
  3. 程式撰寫
    從感測器初始化到讀取數據,我們將提供詳細的程式碼解說,幫助您瞭解程式的每一部分功能,並將數據成功顯示在 OLED 上。
  4. 功能展示
    最後,我們會展示完成的空氣品質監測盒子,並模擬在不同環境下的運作效果,讓您實際感受到此專案的實用性。

 

1、硬體連接

 

 

2、程式編輯器及程式下載

  • 下載編輯器

首先下載BlocklyduinoF2圖形化編輯器網址: https://reurl.cc/Eg21Aa,並解壓縮到桌面。

開啟BlocklyduinoF2圖形化編輯器

 

開起編輯器後,如下圖所示。

 

 

3、撰寫程式

程式會需要用到4種圖形化模組

  • 首先是 PM5003 粉塵感測器

吉哥積木 > 模組 > PMS7003 空品感測

[註] 我們感測器雖然是 PMS5003,但 PMS7003 的程式碼可以通用。

 

  • OLED 圖形化模組程式

法蘭斯積木 >  OLED 模組

 

  • 變數圖形化積木

變數中可以找到

 

  • 時間圖形化程式

時間 中可以找到

 

  • 全部的程式碼

 

4、上傳程式碼

由於本專案無法直接 BlocklyduinoF2 圖形化介面燒錄,所以還需再使用Arduino IDE 修改程式。

  • 另存新檔產生 ino 檔

 

  • 選擇要存到哪裡

 

  • 建立檔案名稱

可以任意命名,但不可以數字開頭。

 

存檔後,會產生兩種檔案,其中就有 ino 檔,後續要用 Arduino IDE 開啟。

 

  • 用Arduino IDE 開啟

Arduino IDE 在BlocklyduinoF2>arduino-1.8.19 > arduino.exe

 

  • 開啟 PMS5003 的Arduino 程式

 

  • 修改兩處程式碼

第1處: 將第7行的程式

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R2, /* reset=*/ U8X8_PIN_NONE);

(全緩衝模式)

 

改成

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R2, /* reset=*/ U8X8_PIN_NONE);

(頁面緩衝模式)
[註]

全緩衝模式會佔用更多的 RAM,但可以提高繪製速度。而頁面緩衝模式,適合Arduino RAM 較少的開發板。

 

第2處: 將第11行程式

PMS::DATA_PMS ljj_pms_data;

 

修改成

PMS::DATA ljj_pms_data;

 

修改完的Arduino 程式總覽

//Generated Date: Mon, 25 Nov 2024 10:31:21 GMT

#include "PMS.h"
#include <SoftwareSerial.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R2, /* reset=*/ U8X8_PIN_NONE);

SoftwareSerial ljjPmsSoftSerial(8, 9);
PMS pms(ljjPmsSoftSerial);
PMS::DATA ljj_pms_data;

void setup()
{
u8g2.begin();
u8g2.setFont(u8g2_font_10x20_me);
u8g2.disableUTF8Print();
ljjPmsSoftSerial.begin(9600);
delay(2000);
u8g2.setFont(u8g2_font_6x10_tf);
}

void loop()
{
if (pms.readUntil(ljj_pms_data)){
float PM1 = ljj_pms_data.PM_SP_UG_1_0;
float PM25 = ljj_pms_data.PM_SP_UG_2_5;
float PM10 = ljj_pms_data.PM_SP_UG_10_0;
u8g2.firstPage();
do {
u8g2.clearBuffer();
u8g2.setCursor(0,15);
u8g2.print("PM 1 (ug/m3): ");
u8g2.setCursor(90,15);
u8g2.print(PM1);
u8g2.setCursor(0,30);
u8g2.print("PM 2.5 (ug/m3): ");
u8g2.setCursor(90,30);
u8g2.print(PM25);
u8g2.setCursor(0,45);
u8g2.print("PM 10 (ug/m3): ");
u8g2.setCursor(90,45);
u8g2.print(PM10);
u8g2.sendBuffer();
} while ( u8g2.nextPage() );
}
delay(100);
}

 

完整積木程式下載:

https://reurl.cc/kMVQ3L

 

 

  • 上傳程式

要選擇開發板類型,在 工具 > 開發板 >  Arduino AVR Boards  >  Arduino Uno

 

選擇COM 號

 

上傳程式

按箭頭圖示即可上傳,如下圖所示。+

 

5、功能展示

 

 

更多文章

Ardunio首次接觸就上手-動手做主題總攬

 

專題教學🌫️ 你每天呼吸的空氣乾淨嗎?用 Arduino 感測空汙狀態〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

Arduino程式專題教學📦 智慧物流!打造屬於你的 Smart Warehouse 系統(上篇) | RaspberryPi pico

$
0
0

想了解智慧物流與倉儲系統是如何運作的嗎?在這支影片中,我們將教你使用 Raspberry Pi Pico 打造一個簡單又實用的智慧倉儲模型,結合程式設計與創意,讓你實作出智慧物流專題!

在這篇文章中,我們將分享如何利用Raspberry Pi PICO W 開發板,結合溫濕度感測器、OLED顯示器以及RFID讀取器,開發智慧倉儲應用的物聯網專案。這個專案不僅適合作為學習感測器偵測與程式開發,也可以實現在網頁顯示目前的倉儲環境監測、物品存取控制等實際應用功能。

文章大綱如下:

  1. 什麼是智慧倉儲(Smart Warehouse)?為什麼重要?
  2. 簡單介紹 Smart Warehouse 的概念:
  • 自動化分揀
  • 智能監控
  • 即時數據處理。
  1. 用 Raspberry Pi Pico W 實現智慧倉儲功能!
  • 硬體接線
  • 程式下載
  • 軟體環境設置及燒錄程式碼
  • 成果展示

 

撰寫/攝影 許鈺莨
時間 1小時 材料
  • Raspberry Pi Pico W 開發板
  • RK-Pico擴充板
  • DHT 22 溫溼度感測器
  • OLED 0.96吋顯示器
  • RC522 RFID讀取模組

購買連結:
https://robotkingdom.com.tw/product/rk-aiot-education-kit-005-picow/

難度 2(滿分5)

 

 

什麼是智慧倉儲?為什麼重要?

智慧倉儲 (Smart Warehouse) 是一種融合高科技的倉庫管理方式,它利用先進的設備和技術,如感測器、自動化機器、人工智慧,來提高物流效率、降低出錯率。

為什麼智慧倉儲這麼重要呢?

  • 提高效率:人工處理貨物耗時又容易出錯,智慧倉儲可以讓包裹自動分揀,速度更快。
  • 降低成本:減少人力需求,降低營運成本。
  • 實時監控:貨物的存放、進出都能掌握得一清二楚,避免丟失或出錯。
  • 客製化需求:面對複雜的訂單需求,智慧倉儲能快速調整並滿足。

 

簡單介紹 Smart Warehouse 的概念

1、自動化分揀

想像一下,每一個包裹就像坐上過山車,經過感測器掃描後自動分送到正確的地方。這就是自動化分揀!透過感測器和輸送帶,智慧倉儲讓貨物流動更快、更準確。

2、智慧監控

智慧倉儲能隨時追蹤每一件貨物的位置,幫助管理人員實時掌控倉庫情況。如果有溫度、濕度要求的貨物(像是食品或藥品),智慧監控系統也能幫助保持最佳環境!

3、即時數據處理

貨物進出倉的數據能夠即時記錄和分析,讓倉儲管理更透明、更高效。

舉個例子:當某款熱門商品庫存即將不足時,系統會立即提醒補貨。

 

用 Raspberry Pi Pico W 實現智慧倉儲功能!

  • 硬體接線

將Raspberry Pi Pico W 開發板接上RK-Pico擴充板後再接上RC522 RFID讀取模組、DHT22溫濕度模組、OLED顯示器等模組,為了方便讀者接線,故下列模組接線圖分別繪製。

RK-Pico擴充板接上RC522 RFID讀取模組

 

RK-Pico擴充板接上OLED顯示器

 

RK-Pico擴充板接上DHT22溫濕度模組

 

程式下載

以下提供完整程式碼載點:

https://reurl.cc/74RWQ9

 

程式開發是使用Arduino IDE 來開發,可以更好靈活的展示”網頁顯示”的功能,下列說明 ”網頁顯示” 的程式碼內容。

在物聯網應用中,實現動態網頁顯示感測器數據或設備狀態是非常實用的功能。本文將展示如何使用嵌入式系統生成即時更新的網頁,並提供使用者友好的介面來監控溫濕度與物品的狀態。

 

動態網頁顯示程式碼包含兩個主要部分:

  • generateHTML() 函式:動態生成 HTML 格式的網頁內容。
  • handleRoot() 函式:處理 HTTP 請求,將生成的 HTML 傳送給客戶端瀏覽器。
  • generateHTML() 函式解析

這是一個負責生成 HTML 網頁內容的函式。它會根據溫度、濕度,以及物品的狀態動態調整網頁的顯示內容。

String html = "<!DOCTYPE html><html>";
html += "<head><meta charset='UTF-8'><title>物品狀態監控</title>";
html += "<meta http-equiv='refresh' content='10'>";
html += "<style>";
html += "body { font-family: Arial; text-align: center; margin-top: 50px; }";
html += "h1 { font-size: 4em; }";
html += "p { font-size: 3em; }";
html += "</style></head><body>";

 

  • <!DOCTYPE html>:指定 HTML5 標準。
  • <meta charset=’UTF-8′>:設定網頁編碼為 UTF-8,確保支援中文等多語言。
  • <meta http-equiv=’refresh’ content=’10’>:讓網頁每 10 秒自動重新整理,實現數據的即時更新。
  • <style>:內嵌 CSS,簡單設計了網頁的排版樣式,讓內容居中並增加可讀性。

 

動態數據顯示部分

html += "<h1>物品狀態監控系統</h1>";
html += "<p>溫度: " + String(currentTemp) + "°C</p>";
html += "<p>濕度: " + String(currentHumi) + "%</p>";
  • 使用變數 currentTemp 和 currentHumi 來顯示目前的溫度與濕度數據。
  • 透過 String() 函式將數值轉換為字串,便於與 HTML 結合。

 

物品狀態顯示部分

if (itemPresent) {
html += "<p style='color: green;'>物品狀態:已上架</p>";
html += "<p>物品名稱: " + itemName + "</p>";
} else {
html += "<p style='color: red;'>物品狀態:已下架</p>";
}

 

  • 根據布林變數 itemPresent 的值,決定顯示物品是否上架:

若物品上架,顯示綠色文字「已上架」,並顯示物品名稱(itemName)。

若物品未上架,顯示紅色文字「已下架」。

 

  • handleRoot() 函式解析
void handleRoot() {

  server.send(200, "text/html", generateHTML());

}
  • HTTP 伺服器回應處理:當用戶端發送 HTTP 請求到伺服器的根路徑(/)時,執行這個函式。
  • send():以 HTTP 200 狀態碼,指定內容類型為 “text/html”,並傳送由 generateHTML() 函式生成的 HTML 網頁。

 

  • 軟體環境設置及如何上傳程式

程式是採用吉哥積木Blockly F2的Arduino IDE撰寫,有興趣的讀者可以到劉老師網站觀看。

Blockly F2 下載處及如何上傳程式可以看這篇教學網站:

https://cavedu.gitbook.io/cavedu/rk005/cheng-shi-zhuan-xie-ruan-ti-xia-zai

 

成果展示

 

 

 

Arduino程式專題教學📦 智慧物流!打造屬於你的 Smart Warehouse 系統(上篇) | RaspberryPi pico〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。

Viewing all 678 articles
Browse latest View live