LoginSignup
17
17

More than 3 years have passed since last update.

Windows Subsystem for Linux の Ubuntu に ROS2 をインストールする

Last updated at Posted at 2019-12-10

はじめに

ROS2 は皆様ご存じのとおり、Windows をサポートし、インストールできるようになっています。
ROS2ではじめよう
Windows 10とROS 2のインストール
Installing ROS 2 on Windows
ROS2.0をWindows10にインストールする
ですが、いろいろな事情で Linux を使いたい方々の中には Windows Subsystem for Linux (WSL) を使用する方もいると思います。
Windows Subsystem for Linux の使用を開始する

そんなわけで WSL で ROS2 を使ってみようと思いましたので、そのインストールまでの手順を記録します。
基本的には書籍のインストール手順にしたがって導入すれば OK です!

WSL の導入

すでにまとめられている記事がありますので割愛します。
Windows Subsystem for Linuxをインストールしてみよう!
WSL: Windows Subsystem for Linuxのインストールと設定
後者の出村先生のサイトでは、WSL で GUI を表示するための方法も説明されています(後述します)。

標準のターミナルだと表示が崩れることがあるので、wsltty をインストールしています。
https://github.com/mintty/wsltty
WSLのコンソールを便利で高機能な「wsltty」に置き換える

<オプション>
日本語環境をインストール
apt install language-pack-ja

日本語環境を起動時に設定するために .bashrc に以下を追記
export LANG=ja_JP.utf8
Linuxのローカライゼーション系LANG変数:langについて

なお、ROS 公式では en_US.utf8 ですが、言語はお好みでよいかと思います。

ROS2 のインストール

ROS2 インストールについては公式、書籍、Biggs さんの記事も参照ください。
Installing ROS2 via Debian Packages
Ubuntu LinuxでROS 2のインストール

curl, gnupg2, lsb-release をインストール
sudo apt update
sudo apt install curl gnupg2 lsb-release

リポジトリのキーを導入
curl http://repo.ros2.org/repos.key | sudo apt-key add -
2019-09-22.png

ROS のディストロを設定
export ROS_DISTRO=dashing

ROS2 本体をインストール
sudo apt install ros-$ROS_DISTRO-desktop python3-colcon-common-extensions python3-rosdep python3-argcomplete
注意:python3-rosdep2 というのもありますが、無印と間違えないように。

セットアップ環境を自動的に読み込む設定を .bashrc に記述
echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc

ここまでは標準的なインストールで進むと思います。

Talker and Lister のデモ

無事にインストールが完了していれば、「ROS2ではじめよう」P47 2-3-6 に記載のデモプログラム「Talker and Listener」が動くはずですが、動きませんでした。これは Windows のファイアウォールが通信をブロックしているためです。ファイアウォールをオフにすれば問題なくデモプログラムが動きましたが、これではセキュリティホールになりますので、例外処理をするべきでしょう。
以下のフォーラムでも同様の症状が報告されており、WSL 2 の環境では解消されるようですが、未確認です。
Problem of ROS2.0 talker/listener example on WSL1.0
WSL 2 のインストール手順
※WSL 2 のインストールには Windows Insider Program への登録が必要です。

GUI の導入

WSL は基本的にはコンソールのみですので、GUI がこのままでは使用できません。WSL から X サーバを介して GUI を生成するには VcXsrv などの X サーバを別にインストールして、起動しておく必要があります。
WSL上にXサーバをインストールしてGUIを実現する(VcXsrv編)
VcXsrv Windows X Server

ROS1 で Rviz や Gazebo を表示するためには必須ですが、X サーバの以下の設定に注意が必要です。
WSL: Windows Subsystem for Linuxのインストールと設定
echo ‘export DISPLAY=localhost:0.0’ >> ~/.bashrc
echo ‘export GAZEBO_IP=127.0.0.1’ >> ~/.bashrc

WSL: RvizやGazeboが起動しない
以前の設定と主な変更点は.bashrcのLIBGL_ALWAYS_INDIRECT=1をコメント化し、VcXsrvの起動オプションに-nowglを追加した。


ROS2 ではまだ試行していませんが、おそらく同じような設定になると思います。

追記
WSL2 での X サーバの設定についてコメントいただいたので、引用します。

WSL2ではDISPLAYの設定をちょっと変える必要あります。

localhost:0.0では上手くいかないようです。
WSL2の方でifconfig等でIPアドレスを調べるとわかりますが、IPアドレスが別にあてられています。

対応方法としては以下をすればよいです。
- xserver側に-acオプションをつける
- localhost:0.0ではなく、Windows側のIP:0.0を設定する

詳細は以下が分かりやすいと思います。
https://qiita.com/ryoi084/items/0dff11134592d0bb895c

おわりに

WSL は Windows 上で Linux を走らせることができ、Linux から Windows アプリケーションを呼び出すこともできるツールです。Ubuntu はもともと ROS がサポートしてきただけに情報も豊富にあります。WSL がそれぞれの利点をうまく組み合わせて活用できるようになればと思います。

17
17
3

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
17
17