#経緯
rosserialをwifi経由で使ってみたく、色々探してみました。まず@aNo研 nnnさんの以下の記事が参考になったのですが、自分の環境ではすんなり行かなかったので、自分なりに挑戦した内容を記載してみます。
ROSのrosserialを使って、M5stackとUSB通信してLチカする
#1. Windows10では何故か失敗
Windows10では上記で参考にさせて頂いたスケッチをArduinoIDEでM5stackに書き込もうとすると、大量のエラーが吐き出され、コンパイルすることを断念しました。そこでUbuntuよりArduinoIDEを起動してコンパイルすることにしてみました。(結果成功!)そのためUbuntuで実施した内容を記載します。
#2. Ubuntu18.04LTSにROS Melodicをインストール
いつも通りROSをインストールします。インストールは以下を参考にしております。もう既にROSをインストールしている場合は飛ばしてください。
#3. Ubuntu18.04LTSにArduinoIDEをインストール
ArduinoIDEのインストールは以下を参考にしました。ただしArduinoのバージョンが新しくなっているため、2020/8/27時点では"arduino-1.8.5"となっている個所を"arduino-1.8.13"にしております。
Ubuntu 18.04にArduino IDEをインストールして、プログラムをArduinoに書き込む
#4. M5stackをArduinoIDEで書き込める環境を作る
M5stackにスケッチを書き込む環境を構築していきます。
##4.1. ボードマネージャの設定
以下を参考にしてM5stackへ書き込める環境を構築しました。
LinuxでM5Stack向けArduinoIDE環境を構築する
##4.2. ライブラリの登録
ArduinoIDEを起動し、”スケッチ”→”ライブラリをインクルード”→””イブラリを管理”をクリックする
そして"M5stack"と記入して、表示された”M5stack”をインストールする。
##4.3. エラー< avr/pgmspace.h >が見つからない場合の対処
ArduinoIDEでスケッチを書き込もうとすると< avr/pgmspace.h >が見つからないと言うエラーが出てきました。そこでRosserial_Arduino_Libraryディレクトリにあるros.hを修正します。
私の場合ros.hは、”/Arduino/libraries/Rosserial_Arduino_Library/src”ディレクトリにありました。
ここで、ros.hの40行目に書かれている
#include <avr/pgmspace.h>
を
#include <pgmspace.h>
に変更しました。
##4.4. permissionの許可
M5stackに書き込む際permissionの許可を与える必要があります。そこで以下のコマンドを使いました。
sudo chmod 666 /dev/ttyUSB0
##4.5. スケッチの記述
スケッチは参考として@aNo研さんのスケッチを使わさせていただきました。
ROSのrosserialを使って、M5stackとUSB通信してLチカする
##4.6. M5scackへの書き込み
以下の様に”ツール”→"ボード"→”ESP32Arduino”→”M5stack-Core-ESP32”と選択します。
そしてCtrl+Rで書き込みます。
#5.試してみる!
では実際にrosserialを動かしてみましょう!新しいターミナルを開きroscoreを起動します。
roscore
その後M5stackに電源を入れます。
更にその後、新しいターミナルを開きrosserialを起動します。
rosrun rosserial_python serial_node.py tcp
rosserialによってM5stackと通信できたら以下のようなメッセージが出てきます。
もしうまく動いていないなら、電源ボタンを”トン、トン”とダブルクリックしてみてください。
これで動いたら、最後に新しいターミナルで以下のコマンドを打ってみて下さい。
rostopic pub toggle_led std_msgs/Empty --once
これで画面が光ったのではないでしょうか?
おしまい!
#最後に
@aNo研さん。とても参考になりましたありがとうございます!