エッジにあるマイコンボードにPCから命令を送る
はじめに
この記事には目的の動作をさせたコードは書いていません。
目的の動作をさせたコードは他人のものです。
私が使ったコードは文中のリンク先を参照ください。
この記事は、そのコードがなぜこう書かれているのか自分なりに考えたお気持ちの表明です。
モチベーション
現場で走り回るロボットなりロボアームなりには一定の処理能力があるが
例えば機械学習みたいな重い計算を走らせることは難しかったりする。
また、機械学習は機械学習でpythonなりで書くとして、ロボット・ロボアーム上で同じコードを走らせる環境を作れるとは限らない。
なので、ハードの制御(サーボモータの制御など)はエッジのマイコンボードに任せて制御の目標値をPCから命令できる状況にしておくと良さそう。
やること
話を単純化して、
「PCから命令を送り、arduinoに接続されたLEDをキーボード操作で自由に点滅させる」
という問題を解く
答え
恥ずかしげもなく他人のQiitaを貼ります・・・・。
やってることは超シンプルだしね。
計測機器との通信と何が違うか?
我々実験系物理屋はLabVIEWなりで計測機器にアクセスしてセンサーの値を取得したり
電流源にアクセスして所望の電流を流して試料の温度をPID制御で安定化させたりしていたと思う。
その時、僕らがやっていたのは以下のようなことだと思う
「あの装置に命令を送りたいからあの装置のマニュアルをみよう」
↓
「マニュアルには『この文字列を送ったあとにlistenすると値が取れるよ』と書いてある」
↓
「なのでGPIBなりで計測機器に文字列を送信しよう」
こういう思考になれきっていた私は
「arduinoの端子から電圧を出力させる命令はどういう名前なんだろう」
と考えてしまった。
なんのことはない、arduinoはその「電圧を出力させる命令」を自分で定義しなきゃいけないのだ。
arduino側のプログラミングが必要なのはそういう理由である。
計測機器の場合は普通機器側のソフトはいじくれないので、あらかじめメーカー側で決まった命令を調べて実行することになる。
この点が大きく違うところで、マイコンボードは自由度があってよさだなあと思いました。
毎度毎度マニュアルひっくり返して命令語探すのだるいんですわ・・・。