ogochan
先日、「目玉親父」プロジェクトを始めますよという話を書きました。
これについては、追い追い進捗とか報告して行きたいと思います。
その前から「VR徘徊」というシステムを考えていました。これは今すぐ着手できるというものではない(技術的ハードルが高い)ので、今回は詳しく書きませんが、「自分の代わりに徘徊してストリーミングしてくれるロボット」です。以前に書いたの「ロボット頭」とか、技術基盤として同じものと言うか、それの制御マイコンが「ロボット頭」です。
今回はそーゆーもので使うコントローラのことです。
背景
「VR徘徊」というのは、「人の目線くらいのところに双眼カメラのある自走式雲台」です。
要するに「立って移動するロボット」です。こういったものを作る時には、まずは「立つ」ことを確実にする必要があります。そして、ここはいわゆる「反射神経」にあたる部分ですから、かなりリアルタイム処理を要求されます。
他方、人間の歩行する程度の速度だという前提に立てば、「動作を決める」という処理、たとえば「障害物を発見して事前に避ける」とか「自動的に帰宅する」というような処理は、処理としては高度な演算が必要ですが、そこまでリアルタイム性を要求されることではありません。
「目玉親父」でも、障害物を検出するとか、様々な「指令」に応答するような処理やガイドをすることは高度な演算処理ですが、装着者に合図を送るようなことはそれほど処理は高度ではない代わりにリアルタイム性が要求されます。また、人の安全に関するシステムですから、システムダウンは避けたいところではありますが、高度な演算処理をする計算機やソフトウェアは複雑ですから、システムダウンは避けられないでしょう。でも、そのような時であっても装着者が安全な場所に移動するまでは、ある程度の処理は続けていて欲しいと思います。
そうして考えると、このようなデバイスにとって、計算機の求められるものは二分されていることがわかります。つまり、
- 高速リアルタイム処理。その代わり高度な処理はいらない
- 高度な計算処理。リアルタイム性はそこまで要求されない
に分けられます。そして、
- 障害発生しても一蓮托生にならない
ことも求められます。
そうなると、高度な計算処理すなわち思考を司る「大脳」にあたるプロセッサと、高速なリアルタイム処理すなわち運動神経を司る「小脳」にあたるプロセッサが連携して動作するようなものがあれば、
- いい感じに処理の分担ができる
- 一つのプロセッサに無理な要求をしなくて済む(得意なものが選択できる)
- 一蓮托生を避けられるので信頼性も高められるかも知れない
ということが期待されます。
既にPLCと(組み込み用)パソコンを組み合わせたようなシステムはあるわけなので、そういったものを簡単に実現出来るといろいろ都合が良いなと考えます。
検討
こういったものを作るのは面倒臭いので、出来れば市販品で済ませたいところなのですが、既製品はなかなかいい感じにフィットしてくれません。
いわゆる「マイコンPLC」の類はあちこちから出ていて、Arduinoを核としたものやRaspberryPiを核としたものとかあります。これらがいい感じに使えると良いのですが、
- RaspberryPiを核にしたものだと、下手に処理能力があるのでシステム設計が面倒になる
「割り切り」が難しくなってしまいますし複雑なハードウェアです - Arduinoを核としたものはArduino.CCからも出ているのだけれど、インターフェイスの自由度が低い
何か特定の使い方を想定しているんだろうなぁ - 他から出ているArduino PLCはいくつかあるのだけど図体が大きい
制御盤に入れるのであればそれでもいいんだけど
ということで、私が必要としているような、
- 後からボード(シールド)を交換すればインターフェイスは変更可能
- 組み込んで手軽に使えるサイズ
- ホストインターフェイスがちゃんとしている
ようなものがなかなかありません。この辺、多分いわゆる制御屋さんと私の求めるものが違うからだろうなと思います。
とは言え、
- ホストとの連携が簡単に取れる
- ソフトウェア開発が容易
- インターフェイスは拡張可能
- 電気的にも機械的にもしっかりしている
- あまり大きくない
というハードウェアはあっても良いじゃないかと思ういます。そうすれば、ロボット類の試作〜とかお手軽に出来るのではないかと。もちろん、制御盤に組み込んでもいい。
仕様
ということで、なんとなくの仕様を考えてみました。
- マイコンはArduino互換
ソフト開発はArduinoの環境が使えますね - USBやEthernetの口を持つ
IT屋にとっての普通のインターフェイスでつながると楽で良いです。レイテンシはあまり問題にならない場所のはず - Arduino(UNO)と同等以上のインターフェイスが出ている
- 入出力端子はコネクタとネジ止めターミナルブロック
はんだ付けとかジャンパー線はちょっと... - 電気的に普通のPLCと同じインターフェイス
マイコンのピンがそのまま出てるのは心許ないと言うより気持ち悪いです - パワーのあるプロセッサを載せる
ハードのコストダウンよりソフト開発の工数削減
つまり、電気的機械的に強化されてホストインターフェイスを充実させたArduinoです。
何も自分で作るまでもないという話も聞こえそうですが、後でもっと小さくしたいとかインターフェイスを厳選したいとか考えると、自前で作っていつでも作り直せるようにしてある方が、後々都合が良いです。
仮にレイアウトだけ考えてみたのがこんな感じ。配線を進めているので、基板上のレイアウトはこの通りではありません。
箱は、いつものTAKACHI PR-140です。
この箱は制御盤に入れてもおかしくないし、これ単体で使うのも大き過ぎないので気に入ってます。ミスミとかTAKACHIに注文すれば、後加工も綺麗にやってくれます。蓋のネジが裏側にあるので、DINレールとかで取り付けたまま蓋が開かないのが残念ですが。
上のレイアウトを見るとわかりますが、おそらくは基板の四隅をサグった形状(ここは蓋を固定するステーがあります)でなくても納まるでしょう。
基盤は親子で、小さいArduino Unoみたいなのが、ここで言っているプロセッサボードで、箱いっぱいになっているのがインターフェイス接続用の基板です。こんな感じに分けておけば、プロセッサボード作る気がなくなった時(やる気が失せたり必要性を感じなくなったり)や、工程的に合わなかった時でも、とりあえず普通のUno互換の板を使うことができますからね。
と言うか、プロセッサボードにここで言っているようなものが必要でない用途でもインターフェイスボードが使えてムダがないです。また、インターフェイスの構成を変えたければ、プロセッサボードそのままで変更ができます。電気的機械的な強化は、このインターフェイスボードの方で行います。
Unoと違ってコネクタが2列になっているのは、それだけ外に引き出したかったからです。どうせ作るなら他の用途にも使えたら良いなとか、OpenCR互換のインターフェイス(シリアルサーボとか)が用意できると良いなとか、そういった使い方のためです。外側だけ使えばUnoと同じ。インターフェイスボードとの接続は、普通のシールドとは逆で、Arduinoの裏面に背の低いピンを出します。Uno互換の市販ボードでも、ソケットが実装されてないものがありますから、それが使えます。
まとめ
半導体不足も徐々に解消して、そろそろここで予定しているプロセッサも現実的な納期が書かれるようになりました。
弊社のビジネスも受託開発中心からこういった機器も含めての自社開発を中心にしようとしています。
今のところここで書いているハードウェアは、
が想定用途なのですが、いい感じに使えることがわかればこれ自体を販売しようかと思ってます。「欲しいから早く作れ」という声があれば、早く出せるようにしたいと思います。