LoginSignup
0
0
個人開発エンジニア応援 - 個人開発の成果や知見を共有しよう!-

【WSL2 + Docker + Ubuntu 22.04】megarover3 Ver3.0を接続する方法【ROS 2】

Last updated at Posted at 2023-10-01

本記事の対象者

WSL2上のDocker上のUbuntu22.04コンテナを実行しROS2を使ってメガローバーVer3.0を制御したい方向けの記事です。
メガローバー (1).gif

はじめに

メガローバー Ver3.0をROS2を使って制御します。詳しい製品情報は以下を御覧ください
ヴイストン株式会社 メガローバー Ver3.0
またヴィストン株式会社が公開しているリポジトリを利用してメガローバーVer3.0を制御します。加えてご確認ください。
GitHub repository メガローバー Ver3.0 ROS2パッケージ

本記事で使用するDocker imagesについて

本記事ではTiryohさんが作られたROS2Docker環境を利用します。
https://github.com/Tiryoh/docker-ros2-desktop-vnc
image.png

私の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を管理者で開く

image.png

注意
Powershellを開く前にメガローバーVer3.0はPC本体と接続しておいてください。

手順② シリアルポート情報をWSL2 Ubuntuに渡す

シリアルポート情報をWSL2 Ubuntuに渡します。この作業をしなければWindows側でシリアルポートを利用する設定になってしまいWSL2 Ubuntuに情報が行き届きません。

でははじめにMicrosoft社のWSL2の公式ページを参考にしてUSBIPDパッケージをWindows本体にインストールしてください
USBIPD-WIN プロジェクトをインストールする
image.png
このリンクを押して、
image.png
最新版のusbipd-win_xxx.msiをダウンロードしてインストールしてください。

インストール完了後以下の操作を続行してください。

Powershell
usbipd wsl list

この入力をした後にUSB Serial Converterと書かれているものを見つけてください。その行のBUSIDの番号を使います
次に

Powershell
例)usbipd wsl attach --busid 2-1

のようにコマンドの語尾の数字をBUSIDの数字にしてください。
するとWindows11 のパン↑ポン↓という音がなってWSL2 UbuntuにUSB情報が行きます。

手順③ WSL2 Ubuntuで接続確認を行う

WSL2 Ubuntuで正しくシリアルポート接続が完了したか確認します。

bash
lsusb

この時にSerial Converterが存在していると正しく接続できています。

注意
毎回PCにメガローバーのUSBを指す度にこの操作を行って接続確認をおすすめします。

手順④ シリアルポート接続ができるDocker container作成

Dockerのコンテナを作成するときにシリアルポート接続を有効にしなければなりません。
本記事ではTiryohさんのDocker imagesを利用し、そのオプション機能としてtty/USB0を有効にしてコンテナを作成します。

以下の操作を行ってください。

bash
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が表示されます。そしてターミナルで以下を入力してください。
image.png
これでエラーが出なければ完了です。
お疲れさまでした!!!

メガローバー Ver3.0を操作

以下のREADME.mdを参考にしてDocker Ubuntuにインストールしてください。

有線シリアル接続が問題なく成功するとteleopなどが使えるようになりました。

私の場合はインストールがすべて終わった状態で以下の操作で簡単にできました。

bash
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0
ros2 launch megarover3_bringup_mouse_teleop.launch.py

最後に

WSL2は完全なるLinuxカーネルが使えるため、個人的にデュアルブートしなくてもよくなるという点がとても魅力的に思いました。
今後もAI ロボット開発に注力するのでよければフォローやいいねなどお願いいたします。

ご購読いただきありがとうございました。不明点がございましたらコメント欄にて教えていただけると幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0