LEGO Mindstorms EV3のROS再対応(中断)
以下の4つの記事でLEGO Mindstorms EV3のROS再対応を進めていたのですが、また一度中断させてください。
- http://ros.youtalk.jp/2017/07/04/setup-ev3dev.html
- http://ros.youtalk.jp/2017/07/05/ev3dev-freertps.html
- http://ros.youtalk.jp/2017/08/21/python3-ev3dev.html
- http://ros.youtalk.jp/2017/08/23/paho-mqtt.html
かなり色々と手を替え品を替え、時間を投入して挑戦してみたのですが、どの手段も上手くいきませんでした。 失敗の経緯も残しておくことで、次に挑戦される方が現れたときに役立てば幸いなので、メモ代わりに残しておきます。
python3-ev3dev
2年前はEV3のPythonドライバに公式のものがなくて、python-ev3というホビーユーザが作ったライブラリを使っていましたが、こちらは2015年に開発を終えており、その後音沙汰がなく、最新のev3dev OSでは動きません。
そこで、現在できた公式Pythonドライバpython3-ev3devを使ったのですが、こちらは名前の通り、Python 3にしか対応しておらず、試しにPython 2で動かしたところ呆気なくダメでした。
ROS1はPython 2にしか対応しておらず、Python 3で動作させることもできるとはあったのですが、少し試したところ茨の道すぎて諦めました。
また、一瞬python3-ev3dev
をPython 2対応させる修正を書こうかとも頭をよぎりましたが、なぜこの時代にPython 2に対応させなくてはいけないのかと思い至って止めました。
ros_comm on ev3dev
そこで、自前のmindstorms_ros
を再利用することを諦め、ROS Wikiにあった他のEV3のROS対応を試してみることにしました。 ros_comm
パッケージをそのままev3dev上で動かし、roscore
を起動したクライアントPCと接続して使う方法です。
http://wiki.ros.org/Robots/EV3
2種類挙げられていて、僕はYocto LinuxというOSに詳しくなかったので、ev3dev OSそのままで行える方を試してみました。
- https://github.com/moriarty/ros-ev3
- https://github.com/moriarty/ros-ev3/blob/master/brickstrap-build-status.md
ros_comm
パッケージ入りカスタムev3devを作るためのbrickstrap
というクロスコンパイルツールを使う必要があるのですが、これがUbuntu 16.04では動きません。 brickstrap
はUbuntu 14.04までの対応で、Ubuntu 16.04からはDockerコンテナを使った方法に変わったそうです…
http://www.ev3dev.org/docs/tutorials/using-docker-to-cross-compile/
しかし、Dockerコンテナを使った方の情報はほとんどないので、VMWareにUbuntu 14.04をセットアップして古いbrickstrap
をインストールしてみましたが、aptでは依存パッケージが入れられなくなっており、ソースコードを取ってきて使う必要があります。
https://github.com/ev3dev/brickstrap
Installationマニュアル通りセットアップして、いざツールを使うぞとコマンドをマニュアル通り打ち込んでもオプションが違うだの、なんだのいわれて動きませんでした。 helpも見ましたが、合っているように見えます…
というような経緯で、今回の中断に至ります。地球の裏側からメッセージを送ってくれた方には、上手くいかなかった旨を返信しました。
実は、ブログの読者の方からEV3でのFreeRTPSビルドに成功したとの報告をいただきました。
http://ros.youtalk.jp/2017/07/05/ev3dev-freertps.html#comment-3487938045
残念ながら通信自体は上手くいかず、FreeRTPS自体に改善が必要とのことなのですが、FreeRTPSの修正をしていく方が、EV3のROS対応は早いかもしれません。 またいずれ再開したいとは思いますが、時間を使いすぎたので一度中断させてください。
Comments powered by Disqus.