産業オープンネット展2024 デモ展示について---①
東京と大阪で開催された産業オープンネット展2024でのデモ展示について、ご紹介します。
実はこれ、Raspberry Pi 4なんです。
Raspberry Pi 4でuITRONという事は、実はこれ、
SOLID OS(uITRON)とRaspbian Linux、両方が動いているデモです。
Raspberry Pi 4のメインチップであるBCM2711は4つのCPUが搭載されており、
CPU0と1にSOLID OS
CPU2と3にRaspbian Linux
という割り当てで動作しています。
SOLID for Raspberry Pi4について、公式サイトは以下です。
https://solid.kmckk.com/SOLID/solid4rpi4
1.デモで伝えたいこと
まず、ビデオの20秒目あたりから始まる、2つのデモを見比べてください。
着目点は、カメラでキャプチャしている画像のうち、色のシールが貼られた枠です。
カメラから動画を取っているように見えますが、実は静止画です。パラパラ絵です。
https://www.youtube.com/watch?v=EY1o9xqiUjg
高速で(本デモでは900rpm)回転している円盤には穴をあけてあり、その穴がカメラの下を通過するたびに静止画像を取っています。
シャッターを切るタイミングは、装置に設置している2つの光学センサによる出力値から、都度算出しています。
左側がLinuxのみで動作しています。
右側がLinux+リアルタイムOS(SOLID-OS)で動作しています。
左側に比べ、右側の方は、色のシールが貼られた枠がほぼブレていません。
このデモで伝えたい事。。。もうお分かりかと思いますが。
リアルタイムOSやっぱりすごい!
・光学センサによる出力値を取得する際の反応速度。
・計算によりはじき出された時間の正確さ。
・そしてきっちりとその時間後にシャッターを切る動作。
それだけでなく、
Linuxってやっぱり便利!
・カメラの画像データを取得し、静止画として目に見える形で即時に表示&更新。
本デモでは、一例として、画像データを「表示」する形にしていますが、ファイルに落としたり、ネットワークで送信したり、、、Linuxならいろいろできますよね。
2.ハードウェア構成
ハードウェア構成は以下のようになっています。
左端から、
カメラ、光学センサ(反射センサ)、光学センサ(透過センサ)、Raspberry Pi 4、回転数制御用電圧変換器
となっています。
カメラの少し上ある、カラフルなシールが、先ほどの動画で見えていた「枠」です。
本デモでは、この「枠」が少しかかる位置がシャッタートリガになるように、ファームウェアを作っています。
こうすることによって、静止画像取得タイミングのずれを、わかりやすくしました。
3.デモの仕様
ここで、ファームウェアの制御について、ご紹介します。
カメラとセンサ二つが一直線に並んでいます。
円盤には4つの穴があいています。
・透過センサによる光検出用の小穴二つ
・反射センサによる光検出とカメラによる画像撮影用の大穴二つ
こちらは一つしか使用しません。片方は、円盤回転を安定させるためのダミー穴です。
ファームウェアは以下の処理を行っています。
円盤が回転すると、
① 透過センサが光検出
② 反射センサが光検出 ⇒ ①-②間の時間測定=時間Aとする
③ 透過センサが光検出 ⇒ (時間A-α)のカウント開始
(α:枠が見えるようにするため少し時間を減らす)
④ 時間A(-α)後にシャッタートリガ操作
⇒ちょうど穴と上部の枠が、カメラの正面に来ている
この動作を視覚的に説明した資料が以下になります。
この資料にあるように、モータの回転数を動的に上げることも可能です。
実際に1800回転(30fps)で動作しているところを見ましたが、円盤が飛んでいきそうな勢いで回っていました。
4.Linux版デモについて補足
今回、比較のため、片方のデモは全てをLinuxで制御しました。
このLinux版デモについて、補足があります。
Linux上で動作するアプリは、厳密なリアルタイム性に乏しいことはご承知かと思います。
加えて、今回すべてアプリケーションレベルでのコーディングを行ったため、GPIOの割り込みはライブラリを使用しました。検出方法は内部的にポーリングしているとの事です。
Linuxなので、ビジーループでポーリングしているわけではなく、検出間隔が少なからずあるはすなので、ここにも待ち時間が存在していることになります。
もちろん、Linuxであっても、GPIOの端子割り込み発生時、割り込みベクタで動作するプログラムを書くことは、できます。
できるのですが、それは専用のデバイスドライバを作成する、という事になります。
とたんにハードルが高くなり必要工数が増えますし、ここを頑張ったからといってシステム全体にリアルタイム性が保証されるわけでもないため、今回のデモでは行っていません。
5.まとめ
以上、産業オープンネットでのデモについて、ご紹介しました。
uITRONとLinux、それぞれの長所が活かされていて、とても分かりやすいデモになっているかと思います。
少しSOLIDについて補足します。
リアルタイムOSであるというだけでなく、コンパイラ、デバッガも含めた統合化環境となっており、便利なデバッグ機能を適宜使いながら開発を行うことができます。
詳しくは以下の公式サイトにお立ち寄りください。
SOLID:
https://solid.kmckk.com/SOLID/doc/latest/
SOLID for Raspberry Pi4:
https://solid.kmckk.com/SOLID/solid4rpi4