本記事の対象者
WSL2上のDocker上のUbuntu22.04コンテナを実行しROS2を使ってメガローバーVer3.0を制御したい方向けの記事です。
はじめに
メガローバー Ver3.0をROS2を使って制御します。詳しい製品情報は以下を御覧ください
ヴイストン株式会社 メガローバー Ver3.0
またヴィストン株式会社が公開しているリポジトリを利用してメガローバーVer3.0を制御します。加えてご確認ください。
GitHub repository メガローバー Ver3.0 ROS2パッケージ
本記事で使用するDocker imagesについて
本記事ではTiryohさんが作られたROS2
のDocker
環境を利用します。
https://github.com/Tiryoh/docker-ros2-desktop-vnc
私のPC構成
Windows 11 Home
Intel Core i7 11390H
メモリ 16GB
Ubuntu-20.04 WSL
この記事を読み進めるにあたって
「Windows11」➡「WSL2」➡「Ubuntu20.04」➡「Docker」➡「Ubuntu22.04 (tiryohさんのDocker image)」で本記事は進みます。
本記事では誤解を招く表現を避けるため以下の言葉を使用します。
- WSL2上のUbuntu20.04 ➡ WSL2 Ubuntu
- Docker上のUbuntu22.04 ➡ Docker Ubuntu
メガローバーをDocker Ubuntuで制御できるようにする
まずWindowsPC本体にメガローバーVer3.0
のUSBを接続します。しかし、接続しただけではWSL2 Ubuntu
に認識はしません。そのためPowershell
を使ってWSL2 Ubuntu
にメガローバーの接続情報をパスしましょう。
手順①Powershellを管理者で開く
注意
Powershellを開く前にメガローバーVer3.0はPC本体と接続しておいてください。
手順② シリアルポート情報をWSL2 Ubuntuに渡す
シリアルポート情報をWSL2 Ubuntu
に渡します。この作業をしなければWindows側でシリアルポートを利用する設定になってしまいWSL2 Ubuntu
に情報が行き届きません。
でははじめにMicrosoft社のWSL2
の公式ページを参考にしてUSBIPDパッケージをWindows本体にインストールしてください
USBIPD-WIN プロジェクトをインストールする
このリンクを押して、
最新版のusbipd-win_xxx.msi
をダウンロードしてインストールしてください。
インストール完了後以下の操作を続行してください。
usbipd wsl list
この入力をした後にUSB Serial Converter
と書かれているものを見つけてください。その行のBUSIDの番号を使います
次に
例)usbipd wsl attach --busid 2-1
のようにコマンドの語尾の数字をBUSID
の数字にしてください。
するとWindows11 のパン↑ポン↓という音がなってWSL2 UbuntuにUSB情報が行きます。
手順③ WSL2 Ubuntuで接続確認を行う
WSL2 Ubuntu
で正しくシリアルポート接続が完了したか確認します。
lsusb
この時にSerial Converter
が存在していると正しく接続できています。
注意
毎回PCにメガローバーのUSBを指す度にこの操作を行って接続確認をおすすめします。
手順④ シリアルポート接続ができるDocker container作成
Docker
のコンテナを作成するときにシリアルポート接続を有効にしなければなりません。
本記事ではTiryoh
さんのDocker images
を利用し、そのオプション機能としてtty/USB0
を有効にしてコンテナを作成します。
以下の操作を行ってください。
sudo docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m tiryoh/ros2-desktop-vnc:humble --device=/dev/ttyUSB0:/dev/ttyUSB0
初回の方は10分程度時間がかかってコンテナが作成されると思います。
これでtty/USB0
が使えるコンテナが作成されました!!!
手順⑤ Docker Ubuntuでtty/USB0を有効化
ラストの操作です!
DockerのコンテナをGUI操作するためにDocker run
した状態で以下のローカルアドレスにアクセスしてください。
http://127.0.0.1:6080/
二回目以降Docker runする場合は $ sudo docker start です
するとGUIのUbuntuが表示されます。そしてターミナルで以下を入力してください。
これでエラーが出なければ完了です。
お疲れさまでした!!!
メガローバー Ver3.0を操作
以下のREADME.md
を参考にしてDocker Ubuntuにインストールしてください。
有線シリアル接続が問題なく成功するとteleop
などが使えるようになりました。
私の場合はインストールがすべて終わった状態で以下の操作で簡単にできました。
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0
ros2 launch megarover3_bringup_mouse_teleop.launch.py
最後に
WSL2は完全なるLinuxカーネルが使えるため、個人的にデュアルブートしなくてもよくなるという点がとても魅力的に思いました。
今後もAI ロボット開発に注力するのでよければフォローやいいねなどお願いいたします。
ご購読いただきありがとうございました。不明点がございましたらコメント欄にて教えていただけると幸いです。