Windows上で手軽にROS2を使いたかったので、WSL2上のUbuntuにROS2をインストールしたときのメモです。
WSL2のおかげで、思った以上にすんなりROS2が動いている。GUIも動く。DockerとかUbuntuを入れたPCを用意した方がトラブルが少ないんだろうけど、気軽にサクッと動かしたかったのでその目的は達成。軽く動かした限りではとても快適。
書籍「ROS2とPythonで作って学ぶAIロボット入門」に合わせてROS2 Foxyをインストールしているけど、もうすぐサポートが終わるので注意。
- 環境
- セットアップ
- ros2のコマンドを試す
- 亀で遊ぶ
- rviz2の起動確認
- gazeboの起動確認
- Turtlebot3 シミュレーション
- 高解像度環境だと、GUIの描画が小さい問題の対処法
- リンク
環境
Windows 11 バージョン22H2 (OSビルド 22621.1105)
WSL2で、Ubuntu 20.04インストール済み
セットアップ
WSL2上にUbuntu 20.04のセットアップは終わっている前提。
ROS2のセットアップ方法は、基本的には公式セットアップ方法でOK
https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html
なんだけど、途中のsudo apt updateで、GPGエラーになった
$ sudo apt update 省略 Reading package lists... Done W: GPG error: http://packages.ros.org/ros2/ubuntu focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654 E: The repository 'http://packages.ros.org/ros2/ubuntu focal InRelease' is not signed.
こちらを参考に、修正して無事インストール完了
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
「.bashrcの最後にROSのアンダーレイ設定を追加」するためのコマンドを実行
$ echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
これで別ターミナルを立ち上げてwslで切り替えれば、簡単にros2が使える。
> wsl $ ros2 usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ... 省略
ros2のコマンドを試す
それぞれ別ターミナルでtalkerとlistenerを実行
$ ros2 run demo_nodes_cpp talker [INFO] [1673743375.176243923] [talker]: Publishing: 'Hello World: 1' [INFO] [1673743376.176115401] [talker]: Publishing: 'Hello World: 2'
$ ros2 run demo_nodes_py listener [INFO] [1673743314.915376650] [listener]: I heard: [Hello World: 115] [INFO] [1673743315.138655164] [listener]: I heard: [Hello World: 210] [INFO] [1673743315.909535684] [listener]: I heard: [Hello World: 116]
順調順調
亀で遊ぶ
$ ros2 run turtlesim turtlesim_node
別ターミナルで下記も実行
$ ros2 run turtlesim turtle_teleop_key
あまりにもあっけないぐらい、すんなり動いた。。。
Windowsで何か設定した記憶は無いけど、もしかしたらコレはやったかも。それともWindows11 だから?
rviz2の起動確認
とりあえず起動は確認
$ rviz2
こちらもすんなり動作
gazeboの起動確認
適当にgazeboをインストール
$ sudo apt -y install ros-foxy-gazebo-*
gazebo起動
$ gazebo
こちらもすんなり(略)
Turtlebot3 シミュレーション
初回セットアップ
.bashrcの最下行に次の2つを追加。
(他の人と同じネットワークで使う場合はROS_DOMAIN_IDの値に注意が必要)
export ROS_DOMAIN_ID=30 export TURTLEBOT3_MODEL=burger
必要なパッケージをインストール
$ sudo apt-get install ros-foxy-gazebo-* ros-foxy-cartographer ros-foxy-cartographer-ros ros-foxy-navigation2 ros-foxy-nav2-bringup ros-foxy-dynamixel-sdk ros-foxy-turtlebot3-msgs ros-foxy-turtlebot3
TurtleBot3シミュレーション パッケージのインストール
$ mkdir -p ~/turtlebot3_ws/src/ $ cd ~/turtlebot3_ws/src/ $ git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git $ cd ~/turtlebot3_ws && colcon build --symlink-install $ source ~/turtlebot3_ws/install/setup.bash
起動
シミュレータ起動
$ ros2 launch turtlebot3_gazebo empty_world.launch.py
turtlebot3_world.launch.py の代わりに empty_world.launch.py や turtlebot3_house.launch.py といったものもある。
キーボード操作を起動(別ターミナルで実行)
$ ros2 run turtlebot3_teleop teleop_keyboard
自動操作を起動(別ターミナルで実行)
$ ros2 run turtlebot3_gazebo turtlebot3_drive
rvizでセンサー等のデータを表示(別ターミナルで実行)
$ ros2 launch turtlebot3_bringup rviz2.launch.py
高解像度環境だと、GUIの描画が小さい問題の対処法
WSLによるGUI表示は便利だけど、高解像度環境ではGUIの描画が小さすぎた。
こちらで紹介されていた方法で解決できた。
内容は管理者権限のあるプログラムで、C:\ProgramData\Microsoft\WSLに.wslgconfigを追加。
ファイルの中身は下記の通り
[system-distro-env] ;hi-dpi WESTON_RDP_DISABLE_HI_DPI_SCALING=false WESTON_RDP_DISABLE_FRACTIONAL_HI_DPI_SCALING=false ;100 to 500 WESTON_RDP_DEBUG_DESKTOP_SCALING_FACTOR=150
上記ファイルを置いたあと、wslを再起動
> wsl --shutdown > wsl
これでGUIの表示が小さすぎる問題も解決。
補足:別の解決方法に「 export QT_SCALE_FACTOR=1.5」を設定するという方法もあるけど、rviz2やgazeboの表示が一部おかしくなった。
リンク
MS公式:Linux GUI アプリのインストール サポート
GPUによる表示もサポートしているようなので、必要になったらインストール
ROBOTIS e-Manual TB3 シミュレーション
Windows 11の標準機能でLinuxを動かす、GUIアプリもサクサク
Windows 11のWSLでは、Linuxのコマンドラインアプリだけでなく、WSLgという仕組みでGUIアプリも動かせるようになったとのこと。知らなかった。