1. WSL Ubuntu 20.04.6 LTSをインストール
Microsoft StoreからUbuntu 20.04.6 LTSを検索しインストールする。詳細は以下の通り。
2. Visual Studio Code + Remote WSL をインストール
3. ROS2 Foxyのインストール
- Visual Studio CodeからUbuntu20.04に接続
- スタートメニューのClone Git Repositoryから
https://github.com/TriOrb-Inc/pio_microros_base.git
をクローン - VSCode上部のTerminalからターミナルを起動し、https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html の手順に従いROSをインストール
- Python3をデフォルトにしておく:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 0
4. Raspberry pi Pico向けにmicro-ROS(Arduino言語)をビルド
- venvをインストール:
sudo apt install python3-venv
- VSCodeのExtensionsからPlatformIO IDEを検索しインストール
- インストールが完了後Reloadを促される
- ビルド
a. VSCode左側の蟻っぽいマークをクリック
b. PlatformIOのProject TasksにBuildなどのメニューが出てくるまでしばらく待つ
c. Buildが通ればOK - Windows PCにPicoを接続する
※既に何らかのソフトが書き込まれている場合はBOOTSELを押しながら接続 - ファイルエクスプローラーから
\\wsl.localhost\Ubuntu-20.04\home\<Ubuntu User Name>\pio_microros_base\.pio\build\pico
を開き「firmware.uf2」をPicoへドラッグアンドドロップで書き込む - PicoのLEDが1秒周期で点滅するのが確認できればOK
5. WSLからPico(USB Serial)を認識できるようにする
- 途中再起動が必要
- attachする際のコマンドは下記のような感じ:
usbipd wsl attach -d "Ubuntu-20.04" --busid 2-4
6. ROSトピックの受け取り
- Ubuntu 20.04 on WLSのターミナルに戻る
- 下記コマンドでDockerをインストールする
sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list sudo apt update sudo apt install -y docker-ce docker-compose-plugin sudo service docker start sudo gpasswd -a $USER docker su $USER # Ubuntu user password required
- Ubuntu上でPicoが認識できているかを確認する:
lsusb
でArduino RaspberryPi Pico
があればOK - Picoのdevice pathを確認する:
/dev/ttyACM0
もしくは/dev/ttyUSB0
のどちらか存在する方がPico -
docker run -it --rm -d --name micro-ros-agent -v /dev:/dev --privileged --net=host triorb/micro-ros-agent:galactic serial --dev /dev/ttyACM0 --baud 115200
でmicroROS-agentを起動する。/dev/ttyACM0
の箇所は適宜変更する。
※バックグラウンドでAgentが起動した状態になる。停止するときはdocker stop micro-ros-agent
- ノードが認識され、トピックが届いているか確認:
以下のような表示になればOK
source /opt/ros/foxy/setup.bash ros2 node list && ros2 topic list
<username>@<hostname>:~/pio_microros_base$ ros2 node list && ros2 topic list /pio_uros_base_node /cmd_topic /parameter_events /rosout /test1 /test2
以上。あとは良しなにPicoのソフトを作る。
参考サイト
https://ar-ray.hatenablog.com/entry/2022/04/07/121653
https://qiita.com/ousagi_sama/items/b4eb3d9c6b337cbe1b05
以下、備忘録
WSLではなくWindowsでもcolcon buildが通るように格闘しましたが、時間切れにより断念。
ROS2 Foxyのインストール
なお、大前提としてパッケージ管理ソフトChocolateyを入れる必要がある。ビジネス利用は有償だがライセンス費用は安い。
Chocolateyインストール(PowerShell管理者)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
以降、Foxyの公式マニュアルに従う
- DDS implementations (optional)は一旦スキップで試す(micro-ROSビルド時にエラーになるかも。その時はこの注釈を変更する)
-
python -m pip install
でライブラリーをインストールする前にpythonのバージョンが3.8.3であることを確認すること:python -V
- 公式手順に従った場合はPowerShell再起動で3.8.3が標準になる
-
python -m pip install
でライブラリーをインストールする前にpip自体をupgradeしておくこと:python -m pip install --upgrade pip
micro-ROSのビルドテスト(on Windows + VisualStudioCode + PlatformIO)
メモ
-
FileExistsError:
が出る場合はmicro_ros_platformioのbuildフォルダを削除する:rd /s /q .pio\libdeps\pico\micro_ros_platformio\build
-
RuntimeError: VisualStudioVersion is not set, please run within a Visual Studio Command Prompt.
が出る場合は。。。これが解決できなかった