Open3
WSL2 + DockerでROS1をセットアップ
環境
HW
- CPU: Intel Core i5-3570K
- RAM: 8GB
- GPU: Radeon RTX570
SW
- Microsoft Windows [Version 10.0.19044.1889]
- WSL2: version 5.10.102.1
WSL2はUbuntu 20.4を動かす - Docker Desktop for windows: version 4.11.1 (84025)
ROS環境のセットアップ
ROSのDocker imageをダウンロード
ROSのdocker imageは公式にもあるが、ビジュアリゼーション関連の設定が結構面倒らしい。
その辺の設定をを行わなくても実行できる"docker-ros-desktop-vnc"というDocker imageを使用する。
"docker-ros-desktop-vnc"は、Ubuntu LXDE + ROSにアクセスするためのHTML5 VNCインターフェースを提供する。
以下のコマンドをUbuntu上で実行
docker run -p 6080:80 --shm-size=1024m tiryoh/ros-desktop-vnc:noetic
ROSのディストリビューションは2022年8月現在最新のNoeticを使用する
動作確認
-
ブラウザで"http://127.0.0.1:6080/"を開く
-
左下のメニューからターミナル(SystemTools/LXTerminal)を開く。
- ROSのバージョンを確認
$ rosversion -d
noetic
- roscoreの起動
以下のコマンドを実行する(ターミナルは前のものを使用しても良い)
$ roscore
起動に成功すると以下のようなコンソールログが表示される
- turtlesim_nodeの起動
新しいターミナルを開いて以下のコマンドを実行する
$ rosrun turtlesim turtlesim_node
起動に成功すると以下のような画面が表示される
- turtle_teleop_keyノードの起動
新しいターミナルを開いて以下のコマンドを実行する
$ rosrun turtlesim turtle_teleop_key
turtle_teleop_keyを起動したターミナルを選択した状態で、カメを方向キー操作できる
参考
疑問点
- Docker Desktop for WindowsとUbuntu上にdockerを直接入れる場合の違い
2023/2/3 追記
公式でDocker Desktopの使用を推奨されているので、特に理由がない限りDocker Desktopを導入した方がよい。(パフォーマンスが向上する模様)
https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-containers
https://docs.docker.com/desktop/windows/wsl/
Issue?
- WSL2を落としてもRAMのリソースが開放されていないようにみえる
2023/1/21 追記
WSL2を落とした後にタスクマネージャーを開くと、"Vmmem"というプロセス名でRAMを使用し続けている。
過去からある不具合のようだが未だに修正されていない模様。
参考: https://qiita.com/yoichiwo7/items/e3e13b6fe2f32c4c6120
以下のコマンドで実行されているディストリビューションは完全に終了させることが出来る。
これを実行しても完全にRAMが開放される訳では無いが、使用量は減るので作業中に重くなったときなどに使える。(現状根本の解決手段にはPC再起動しかない)
wsl --shutdown
WSLがGUIアプリに対応したため、Dockerのコンテナを使用しなくてもROSのGUIアプリが起動できるようになった。