techno_memo

個人用の技術メモ。python・ROS・AI系のソフトウェア・ツールなどの情報を記載

電子工作プロトタイピングの開発プラットフォームについて

この記事の目的

 電子工作のプロトタイピング用開発プラットフォーム下記3つについて、それぞれの特徴・どう使い分けるべきかを整理する。

f:id:sd08419ttic:20190321222121p:plain

Raspberry pi

特徴

IoT用プロトタイピング環境として最もよく用いられるコンピュータである (Amazonなどで容易に入手できる)

2019年3月現在で初代~Raspberry pi 3 までリリースされている。5000円程度で購入可能。

参考:最新のラインナップ

ja.wikipedia.org

f:id:sd08419ttic:20190321225731p:plain

  • SDカードにOS(様々な種類が公開されている。大多数はLinux系)をインストールし、本体のUSB端子にキーボード・マウス・ディスプレイを接続して操作する。 (上記以外でも別PCからのリモート接続による開発が可能)

  • ネットワークは有線EthernetWifiモジュール・Bluetooth (Raspberry pi2以降)を利用できる

  • GPIOにジャンパーワイヤ・ブレッドボードを用いて各種センサ・アクチュエータをつなげて開発するのが一般的である。

  • 給電はUSB type B端子から行う。スマートフォン用のモバイルバッテリからの給電もできる。

長所

  • ネット上に公開されている情報/サンプルコードが多くトラブルシューティングがしやすい

  • 無線ネットワークに標準で対応しており、バッテリ・本体ともに小型であるためリモートでの開発・移動機器でのデータセンシングなどの用途で利用しやすい。

  • python/scratchなどプログラム初心者でも扱いやすい開発環境が提供されている。

短所

  • リアルタイム制御には向かない (OSなし・リアルタイムOSの開発環境も構築できるらしいが、後述のArduinoのほうが開発しやすい)

  • 画像処理/DeepLearningに関する試作をしたい場合は計算能力が不足している。

Arduino

特徴

電子工作教育用の汎用マイコンとして、Raspberry pi と並んで最もよく用いられるプラットフォームの1つである。

(ハードだけでなくプログラム言語・統合開発環境なども含めたプロジェクト全体がArduinoと呼称されている)

2019年3月現在でIOやネットワーク機能の違いを含む多数のバリエーションのArduino対応ハードが発売されている。また、Arduino開発環境に対応した互換機も多数発売されている。

最も標準的な構成であるArduino uno は公式であれば3000円、互換機であれば1200円程度で購入できる。

参考:最新のラインナップ

www.arduino.cc

f:id:sd08419ttic:20190321233651p:plain

  • 開発用のPC (Arduino統合開発環境をインストール)からUSBケーブルで接続したArduinoのFlashROMにソフトを書きこんで動作させる

  • 開発はArduino言語で行う (C言語互換)。公式サイトが公開しているIDEの他に、Visual Studio Codeを用いた開発プラグインなども提供されている。

  • Raspberry pi と異なりIDE・デバッガを利用したソフトウェアの動作状況確認ができない。RAM値を確認するためにはシリアル通信で出力された値のモニタなどが必要となる

  • センサ・アクチュエータはGPIOに接続して利用する。 (Raspberry pi と同様。GPIOの数はArduinoの種類によって異なる。最も標準的なArduino unoで20本)

  • 給電はUSB or ACアダプタ。 USBからの給電(モバイルバッテリなど)もできる。

長所

  • 非常に多くのArduino対応センサ・アクチュエータが世界中で公開されており、ライブラリの流用性が高い。 (OSがないため開発環境違いでハマることもほぼない)

  • OSがないため、リアルタイム性の高い組込み制御(モーター制御など)が制度よく実現できる

短所

  • Raspberry pi と比較すると計算能力・ROM・RAM容量ともに小さく、作成するアプリケーションの制約が大きい

  • 作成したソフトのデバッグがしにくく、C言語に慣れていない人にとってのハードルが高い

Jetson

特徴

エッジ用のAI(特にDeep Learning)に特化した小型コンピュータとしてnvidiaが販売している。

Deep Learningで多く用いられているnvidiaGPU/CUDAに対応したライブラリを小型コンピュータで動かせるのが最大の特徴。

2019年3月現在で Jetson TX1 ~ Xavierまでが発売済み。価格は8万(TX1) ~ 15万(Xavier)とPC並みに高額。

OSはUbuntu16系をインストールする。内蔵のeMMC (TX1 16GB ~ TX2・Xavier 32GB) + SSDによる拡張も可能。

標準の開発ボードはAC電源接続であり、コンセントがない移動機器への取り付けはできない。ただし、開発者ボードを使えば可能。(ただし一般的な電圧のモバイルバッテリは使えないので苦労する)

f:id:sd08419ttic:20190322003459p:plain

長所

  • Deep Learningフレームワークで一般的であるCUDAを使った処理を組込み機器でそのまま動かすことができる。(画像認識系の処理で非常に強力)

  • 上記に限らず、演算能力が高くRaspberry pi では厳しいROSの画面描画などもかなり高速に動かすことができる

  • Ubuntu16 を使った開発ができる。 PCで構築している開発環境に近いツールを利用できる。

短所

  • Raspberry pi/ Arduinoと比較すると参考とできるWebサイトが少ない。 (ハードウェアの追加やライブラリがインストールできない場合のトラブルシュートに苦労する可能性あり)

  • Raspberry pi/ Arduinoと比較すると非常に高額

  • モバイルバッテリでの運用が難しく(キャリアボード・12Vモバイルバッテリなどが必要)移動機器で気軽に利用できない。(次期モデルJetson Nanoで改善されるとの情報あり)

どう使い分けるべきか

処理能力・価格などを総合的に判断すると、汎用かつ手軽に利用できるのはRaspberry pi である。ただし、下記用途ではArduinoやJetsonを利用したほうが良い。

  • Arduinoを使うほうが良い場合

    モーター制御などリアルタイム性の高い制御が必要

    組込み機器で使うC言語での開発を体験したい

  • Jetsonを使うほうが良い場合

    電子工作より、画像処理・物体検出などに特化したアルゴリズムを作りこみたい

    Deep Learning用に作ったpythonロジックを組込み機器で最短で推論させたい

Arduinoについては、単体で利用してもネットワークと連携したアプリケーションを作ることが難しいので、Raspberry piと併用してリアルタイム性の高い処理だけを行うアーキテクチャとしたほうが良い。

また、Jetsonの利点であるDeepLearningについては、GoogleのTPUがRaspberry piでつかるようになるようなので、

Raspberry piであっても十分な処理速度のDeep Learningの推論/画像処理などができる可能性がある。