LEGO Mindstorms EV3 を パソコンのキーボードから操作してみます。
私は、LEGO Mindstorms EV3の教育版を買ったので、家庭版と違いリモコンがありません。でも、ラジコンのようにロボットカーを操作したい!そこで、MQTTというプロトコルを利用して、ノートPCのキーボードを使ってロボットカーを制御する方法を思いつきました。
まずは、結果をどうぞ!
環境
- Publisher(PC) Ubuntu 16.04
- Subscriber(ev3) ev3dev
- Python 3.6
- ev3dev-lang-python
ロボットの組み立て
この本に載っているtribotを作成しました。
Setup
MQTTという軽量な通信プロトコルを使った方法がev3devのサイトに紹介されていたので、それを参考にする。
MQTTではpublisher(出版者)が発するメッセージをbroker(仲介者)がsubscriber(購読者)へ配信する。今回は、publisherが ノートPC, brokerとsubscriberが ev3になる。
ev3に brokerサーバソフトをインストールする。mosquittoというソフトをインストール
sudo apt-get install mosquitto
インストールが完了すると、サービスが立ち上がる。
続いて、mqttをPythonで使うための pahoというソフトをノートPCと ev3の両方にインストール。
sudo apt-get install python3-pip
sudo pip3 install paho-mqtt
PC 側
pip3 install paho-mqtt
これで、MQTT で通信する準備は整った。
punput
Pythonで押されたキーボードのキーの取得をするために、punputというライブラリを利用する。
ラズパイカーで同じようなことを考えている人のブログ記事を発見した。これはありがたい。
-
Pythonでキーイベントを取得したかったけどできなかった話←できました。 - 豆腐とコンソメ
pip install pynput
コード
最後に、書いたコードが以下。これで、キーボードの十字キーを使ってロボットカーをリモコン代わりに操作することができた。
https://gist.github.com/tsu-nera/86761c607c33ec1fb2cedc074fbf286d