embeddedなブログ

組み込みシステムに関することや趣味に関することをダラダラと書いていきます(^^)

ROSをWindows(WSL2)上で使用する

2021-05-12 18:57:22 | Windows Embedded Standard

ROSはWindows非対応なので、通常はUbuntuを別PCあるいは仮想PC環境に用意しないといけません。ただ、普段はWindows PCを使っているため、Ubuntuとのデータやり取りが面倒になるので、なんとかWindows上でROSを使うことが出来ないのかについて調べましたので、その方法についてご紹介します。具体的にはWindows上でLinux環境を扱うことのできるWSL2(Windows Subsystem for Linux 2)上でROSを使用する方法について説明をします。

まず、管理者権限でWindows PowerShellを起動して、WSL2をインストールします。下記コマンドを実行してインストールします。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

インストール環境後、PCを再起動します。
古いバージョンのWSLではなく、WSL2をデフォルトに設定するために下記コマンドを実行します。

wsl --set-default-version 2

Microsoft Storeを起動して、[検索]で「ubuntu」を検索します。検索結果から下図の通り「Ubuntu 18.04 LTS」を選択します。

「入手」をクリックしてUbuntu 18.04をインストールします。

Ubuntuにログインするためのユーザー名とパスワードを設定します。

これでWSL2 + Ubuntuのインストールは完了です。

エクスプローラからUbuntuのファイルシステムにアクセスするには、エクスプローラ上でアクセス先フォルダ名として「\\wsl$\Ubuntu-18.04」を指定します。この方法で、通常のWindowsファイルシステムと同様にUbuntuのファイルシステムにアクセスできるので、Windows-Linux間でのファイルやり取りを簡単に行うことができます。

次にROSをXサーバーアプリケーションとして実行するために、WSL2からGUI転送をするためのアプリをインストールします。 ここではVcXsrvというアプリを使います。https://sourceforge.net/projects/vcxsrv/ からダウンロードしてインストールします。

[Multiple windows]を選択します。

[Start no client]を選択します。

下記の通りオプションを設定します。

[Save configuration]で上記設定を保存します。次回起動時にはここで設定したファイルをダブルクリックすることで、同じ設定でVcXsrvを起動出来ます。

Xサーバーを転送する先のIPアドレスを設定するために下記でDISPLAY環境変数を設定します。

echo 'export DISPLAY=XXX.XXX.XXX.XXX:0.0' >> ~/.bashrc

XXX.XXX.XXX.XXXに使用しているPCのIPアドレスを入力します。例えば、192.168.0.2の場合は、

echo 'export DISPLAY=192.168.0.2:0.0' >> ~/.bashrc

とします。
下記コマンドを実行して~/.bashrcの変更を反映します。

source ~/.bashrc

余談ですが、実は私は10年くらい前にLPI(Linux Professional Institute) Level 3まで資格取得しています。ただ、普段はMicrosoft MVPとしてM系OSを愛用しているので、なかなかL系OSのコマンド、忘れてしまっていますね...

Xサーバー転送がちゃんと動作しているかを確認するために基本的なXサーバーアプリをインストールします。下記のコマンドを実行してください。

sudo apt update
sudo apt install x11-apps

下記コマンドで電卓アプリがXサーバーで開くことを確認します。

xcalc

ここからROSをインストールしますが、その前に下記コマンドでOS環境を最新版に更新します。

sudo apt update
sudo apt upgrade

ROSのパッケージ情報をWSLのソースリストに追加します。

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

追加したパッケージリポジトリ用のキーを設定します。

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

新たに追加したROSのパッケージを有効なパッケージとするために下記コマンドを実行します。

sudo apt update

rqt, rviz, simulators, navigation, perceptionなどのパッケージを全てインストールします。

sudo apt install ros-melodic-desktop-full

ROSのsetup.bashをbashシェルを起動した際に毎回実行するために下記でbashrcを更新します。

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc

更新を有効にします。

source ~/.bashrc

ROSの開発で必要なパッケージをインストールします。

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

ROS用のシステム依存をインストール、初期化します。

sudo apt install python-rosdep
sudo rosdep init
rosdep update

さあ、これでROSのインストールは完了です。いよいよRvizのXサーバー上での起動です。

roscore & rosrun rviz rviz

うまく行けば下記のようにRviz画面を見ることが出来るはずです!Windows上でこの画面を見ることが出来ると感動ですね。


最新の画像もっと見る