Arduino UNO Qを使った基板外観検査機製作に挑戦 Part 1: はじめに
Arduino UNO Q と Edge Impulse を使用してプリント基板の検査を自動化してみました。
このシリーズの記事では、 Arduino UNO Q(708753)のユニーク機能が実際にどのように活用できるかを見ていきます。またエッジデバイス用AI開発プラットフォーム Edge Impulseでモデルのトレーニングを行い、UNO Q上のAIを使った制御システムの開発にチャレンジしてみようと思います。
注: 機械学習 (ML) は人工知能 (AI) のサブセットと見なされており、このシリーズの記事では両方の用語が同じ意味で使用される場合があることに注意してください。
アプリケーション
プリント基板の製造品質管理において、外観検査はとても重要です。ベアボードとはんだペーストの検査、リフロー前後の検査、スルーホールはんだ付け(存在する場合)など、ベア基板製造、配線、部品実装にいたるまでプロセスの各所で外観検査が行われます。
通常、量産では何らかの自動光学検査 (AOI)システムで外観検査をおこないます。目視で検査する事もありますが、時間がかかりヒューマンエラーも発生しやすくなるので、試作や少量生産など限定的です。
AOIにおけるマシンビジョン技術として、パターンマッチング、特徴ベース、機械学習アルゴリズムといった様々な手法がありますが、システムの柔軟性や関連ソリューションの選択肢の広さから、機械学習方式が最もポピュラーといえます。
特に昨今のトレンドであるエッジAI向けの機械学習用組込みハードウェアの進化が目を見張ります。サイズ、重量、消費電力、コスト(SwaP-C)において魅力的な条件で利用できるようになってきました。これにより、従来のリモートコンピューティングに必要だった大規模で高価かつ電力消費の大きい機材や部品を使わなくてもAOIが実現できる環境が構築できるようになってきました。更にAIモデルの学習や組込みハードへの最適化の面でも便利なソフトウェアプラットフォームが使えるようになりました。
そこで登場したのが今回の主役である「Arduino UNO Q」と「Edge Impulse」です。
Arduinoの新製品「Arduino UNO Q」
Arduinoファミリの最新ボード「Arduino UNO Q(以下「UNO Q」)」は、Linux対応MPUとリアルタイム制御マイコン(MCU)を組み合わせたハイブリッド構成の2つの長所を兼ね備えたインテリジェントプロトタイピングプラットフォームボードになっています。UNO Qは、利便性、モジュール性、そして高度なソリューションの迅速なプロトタイピングを実現することに特に重点を置いており、単なる部品の総和以上の価値を提供します。
ハード構成
MPUに使われているQualcomm製 Dragonwing QRB2210 SoCには、CPUとして4コアArm Cortex-A53(2.0GHz)、GPUとしてAdreno 702(845MHz)、ISP(デュアル画像信号プロセッサ)としてSpectra™ 340L Dual ISPが、それぞれ搭載されています。
メモリとしては2GB RAM + 16GBフラッシュ(オプション:4GB RAM + 32GBフラッシュ)を搭載しています。
一方、MCUはArm Cortex-M33コア(160 MHz)を搭載した STマイクロ製「STM32U585」が採用されています。
USB-Cポートは、ロールスイッチング機能を備えたUSB 3.1、DisplayPort Alt-Mode、USB Power Delivery(5V/3A契約のみ)をサポートします。キーボード、モニター、マウスなどの周辺機器は、USB Cハブを介して接続できます。
UNO Qボード上面にある、お馴染みのArduino UNOヘッダーは、アナログ・デジタル I/O へのアクセスを提供し、さまざまな Arduino UNO シールドが利用できるようになっています。
またUART、強制USBブート、PMICリセットに使える2x5 ヘッダーもあります。
ボード裏面のハイスピードヘッダーは、カメラ/ディスプレイインターフェース、SDIO、GPIO、電源を供給します。従来のArduinoヘッダーは3.3Vロジックですが、これらのヘッダーはMCUに接続するかMPUに接続するかによって、3.3Vと1.8Vが混在します。
最後に、802.11a/b/g/n/ac (デュアル バンド) + Bluetooth 5.1機能を搭載したワイヤレス モジュールのWCBN3536A (Qualcomm WCN3980)があります。
ソフト開発環境
Motion detection example.
MPU上で動作するDebian Linuxは、一般的なLinuxと同様操作でプログラミングできる他、さまざまなツール、言語、フレームワークなどが用意されています。
MCU では、Arduino Core API に対応した組込み用リアルタイムOS「Zephyr(ゼファー)」が動作します。つまり、従来の Arduino ボードと同じようにスケッチを実行し、使い慣れた Arduino IDE を使用してプログラムすることができます。
MPUとMCUは、「Arduino Bridge」というリモートプロシージャコール(RPC)ライブラリによって統合されており、これら2つを跨るような処理の開発が容易になっています。
この機能は、Pythonで記述された"building blocks"であるArduino "Brick(ブリック)" によってより強化されており、Pythonモジュールのようにパッケージ化することも、Dockerコンテナとしてパッケージ化することもできます。後者は、AIモデルや、多くの依存関係を持つ可能性のある同様に複雑なコンポーネントをデプロイする際に使用されます。
Arduino App Lab上のBrickセクション
UNO Qには、専用の統合開発環境「Arduino App Lab」があらかじめセットアップされています。この環境を利用することで、Brickとカスタムコードを統合し、MPUとMCUの両方で実行するアプリケーションを作成できます。この環境は、USB経由でローカル接続されたUNO Qでも、Wi-Fi経由でリモート接続されたUNO Qでも使用でき、デバイスのソフトウェアとファームウェアのアップグレードもサポートします。
従来のArduino IDEを使用してMCUコードを開発し、その後MPU上で動作するPythonコードやその他のコードを別途開発することも可能ですが、Arduino App Labならスケッチ、Pythonコード、その他のアセットを同一ツール上でまとめて開発・実行することができます。また、ブリックの追加やサンプルコードの活用も容易で、開発期間を短縮します。
コンテナ化されたAIモデルを実行できるコンパクトなLinuxプラットフォーム、リアルタイム制御用のMCU、物理的な入出力制御、さらにBrickやサンプルコードといった幅広い開発環境を同一ツールから即座にアクセスできるようになります。
次に、機械学習モデルをどのようにトレーニングするかを検討する必要があります。多数の画像を収集し、それらを処理し、アプリケーションとターゲットハードウェアに合わせて最適化する必要がある場合、これは非常に手間がかかり、必ずしも簡単な作業ではありません。幸いなことに、ここでも役立つツールがあります。
AI開発プラットフォーム「Edge Impulse」
Edge Impulseは、モデルの学習とデバイスへのデプロイを簡素化するAI開発プラットフォームです。Webベースのスタジオが提供されており、ユーザーはコードの記述なしに、データの収集と処理、モデルの学習とデプロイまでをガイドに従って進めることができます。Arduino UNO Qをサポートし、Qualcomm Dragonwing ArmプロセッサコンプレックスまたはそのAdreno 702 GPUにモデルをデプロイできます。
次のステップ
パート 2 では、開発用ハードウェアのセットアップ、Arduino App Lab と Edge Impulse の起動と実行、ML モデルの選択、カスタム画像データの収集と処理、そして最後にモデルのトレーニング、UNO Q へのデプロイとテストについて説明します。
— Andrew Back
コメント