micro-ROS for Arduinoという名前ですが、古いArduinoUNOでは現在(2023/03/28)では使えそうにないので、別のプログラムを作っています。
このページの例ではM5StackBasicとM5StackIMUで動作確認をしています。
Micro-ros-for Arduinoのページはここ。Humbleがデフォルトになってる。
Foxyなら下記アドレスからzipファイルをダウンロード
https://github.com/micro-ROS/micro_ros_arduino/archive/refs/heads/foxy.zip
Humbleなら下記のアドレスからzipファイルをダウンロード
https://github.com/micro-ROS/micro_ros_arduino/archive/refs/heads/humble.zip
Arduino IDEを立ち上げてから上のメニューの「スケッチ(Sketch)」ー>「ファイルのインクルード(Include Library)」ー>「.Zip形式のライブラリをインストール(Add .ZIP Library...)」を選んで、ダウンロードしたzipファイルをインストール。
micro_ros_setupのページに記載の通り、Micro_ros_Agentをインストールする。
source /opt/ros/$ROS_DISTRO/setup.bash
mkdir uros_ws && cd uros_ws
git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup
rosdep update && rosdep install --from-paths src --ignore-src -y
colcon build
source install/local_setup.bash
今後よく使うなら下記で.bashrcに追記しておく。
echo "source ~/uros_ws/install/setup.bash" >> ~/.bashrc
Arduino IDEのサンプルは、「File」 ー>「Example」ー> 「micro_ros_arduino」の中にあるので試してみること。
micro-ros_publisherを試しに開いてみてArduinoUNOに書き込んでみる。古いArduinoUNOとArduino Megaに使いたかったのですが、Micro-ROS for Arduinoの対象外のようです。
このページを見て対応ボード買いましょう。。。Arduino Zeroとかを使うときはボードマネージャでArduino SAMDを検索して「Arduino SAMD Boards」をインストール。
M5Stackに書き込んでみました。
有線で繋いでトピックが出ているか確認します。
まず、接続したUSBの権限を確認。すでに知っている人は必要ないと思いますが一応記載。
sudo chmodで権限をあたえる。この方法ではUSBシリアルを抜き差しするたびに実行する必要がある。
sudo chmod 666 /dev/ttyUSB0
ユーザーをdialoutグループに追加する。この方法だと永続的に効果が付く。
sudo gpasswd --add $USER dialout
コマンド実行後に再ログインすること。
次に、Micro_ros_agentを立ち上げます。
ros2 run micro_ros_agent micro_ros_agent serial --dev [デバイスの場所] -v6
/dev/ttyUSB0につながっているのであれば下記のように記載
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0 -v6