🧊

ROS2: Ubuntu22.04にArduino, Teensy, micro-rosの環境を準備する

2022/11/16に公開

海洋ロボコンをやってた人です。
今回は、Teensy4.1 + micro-ros-arduinoの開発環境及びテストを以下のように試してみました。

すでに、素晴らしい記事がたくさんありますので、こちらではUbuntu22.04にArduino周りの開発環境を構築し、micor-ros-arduinoを試すまでの手段を雑になぐり書きしていきます。


開発準備環境
- Laptop PC
- Ubuntu 22.04 ROS2 Humble


※2023/02/26追記: 本記事の「ROS2」表記、正しくは「ROS 2」です。

Ubuntu22.04へTeensy4.xの開発環境を準備

各ソフトウェアをインストールするために、アーキテクチャを調べておきます

uname -m 
--------------------
x86_64

Ubuntu 22.04へArduino IDEへインストール

https://www.arduino.cc/en/software

Legacy IDE(1.8.x)からLinux 64 bitsを選択して.tar.xzファイルをインストールする

ファイル解答後、任意のディレクトリに場所を移動し、インストールする

tar xvf arduino-1.8.19-linux64.tar.xz
mkdir -p ~/.local/
mv arduino-1.8.19 ~/.local/
cd ~/.local/arduino-1.8.19/
bash arduino-linux-setup.sh $USER
sudo reboot

cd ~/.local/arduino-1.8.19/
sudo bash install.sh

ESP32ボードのインストール

ubuntu22.04にArduino環境を準備しているので、こちらもインストールしておく。

Arduino IDE側でFile > Preferences > Additional Boards Manager URLsと選択

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Tools > Boards > Boards Manager でesp32をインストール。

というエラーが発生した場合

sudo pip3 install pyserial
sudo pip3 install esptool

Teensyduinoのインストール

https://www.pjrc.com/teensy/td_download.html

Download Teensyduino, Version 1.57のページに飛ぶのでLinux Installer (X86 64bit)を選択してインストール

cd ./Downloads/
chmod u+x TeensyduinoInstall.linux64
./TeensyduinoInstall.linux64 --dir=/home/ubuntu/.local/arduino-1.8.19

また、アプリケーションを起動し

./TeensyduinoInstall.linux64

Nextで勧めてくと、ERROR in /etc/udev/rules.d/00-teensy.rulesとエラーが生じることがあるので

sudo cp /tmp/00-teensy.rules /etc/udev/rules.d/

で対応・解決させます。

micro_ros_arduinoライブラリのインストール

https://github.com/micro-ROS/micro_ros_arduino

Githubページ右上のCode > Download ZIPからZIPをダウンロード。

Arduino IDE側で

Sketch > Include Library > Add .Zip library

でダウンロードしたZIPを選択してインストールする。

micro_ros_arduinoでTeensy-ROS2を試す

ボードの選択

Tools > Board > Teensyduino > Tennsy4.1

サンプルプログラムを書き込む

File > Examples > INCOMPATIBLE > micro_ros_arduino

というエラーでプログラムを書き込めない場合は、micro_ros_arduinoのplatform_teensy.txtのコンパイル情報をarduino-1.8.19下のplatform.txtにデータ転送します。

export ARDUINO_PATH=/home/ubuntu/.local/arduino-1.8.19/
cd $ARDUINO_PATH/hardware/teensy/avr/
curl https://raw.githubusercontent.com/micro-ROS/micro_ros_arduino/galactic/extras/patching_boards/platform_teensy.txt > platform.txt

これで再び、プログラムを書き込んでみて、上手くできればOK

https://github.com/micro-ROS/micro_ros_setup

を参考に、micro_rosのワークスペース等を準備してサンプルプログラムを走らせる。

疑問/懸念点

マイコン側のボタンを押して再認識させないと、エージェントに再びつながらない。

下記コマンドで、USBのアンマウント/マウントしても変化なし。

lsusb -t
sudo su -c "echo -n "1-3" > /sys/bus/usb/drivers/usb/unbind"
ls /dev/tty*
sudo su -c "echo -n "1-3" > /sys/bus/usb/drivers/usb/bind"

自律型、ユニット化したロボットだとボタンやUSBの抜き差ししにくい環境なので、使いにくいのが懸念点かも。

※追記
聞いた話だと、メインPC/マイコン起動時にUSB接続されていれば上手くできるようで。
ただ、起動後にmicro ros agent止めたら、また再起動しないといけないのかな?

Reference

Arduino IDEをUbuntu 20.04にインストールする

[ROS2 foxy] ESP32を使ってmicro-ROS for Arduinoで遊ぼう

teensy4.1完全に理解した

Discussion