この記事ではWindows11のWSL(仮想Linux環境)を用いてDockerによるROS2(iron)の構築する方法と最低限の設定内容を記載する。
Dockerを使って仮想空間にROS2を構築する
からあげさんが記事を書かれているので参考にROS2を構築した。
まずはWSLを有効にする
- コントロールパネルを立ち上げる。
- プログラムを選択
- プログラムと機能を選択
- Windowsの機能の有効化または無効化を選択
- Linux用Windowsサブシステムにチェックを入れて有効化する
- 仮想マシンプラットフォームにチェックを入れて有効化する(私の場合最初からチェックが入っていた)
Ubuntuをインストールする
- スタートボタンをクリックし検索バーに「Pow」と入力しPower Shellを選択。「管理者として実行する」から起動する。
- 以下のコマンドから選択できるディストリビューションを確認する。
wsl --list --online
- Ubuntuを選択してインストールする
wsl --install -d ubuntu
Ubuntuを起動する
- 初回起動時をすると以下の項目が表示される
- Enter new UNIX username: 任意のユーザ名を入力する
- New password: 新しいパスワードを入力する
- Retype new password: パスワードを再入力する - パスワードが正しく入力され認識されれば起動する
パッケージの更新とアップグレード
起動時は必ず更新とアップグレードを実施するのがお決まり。
sudo apt update
sudo apt upgrade -y
必要によりパスワードを聞かれるので入力する。
2回目以降のUbuntuの起動
2回目以降はPower Shellを管理者として実行し、コマンドラインにUbuntu
と入力すればUbuntuが起動する。
Dockerをインストールする
Dockerとは何か?についてはここでは省略します。
DockerとしてLinux環境+ROS2構築済み環境を呼び出すことによりROS2を簡単に構築する。
これは参考記事にからあげさんが公開されているスクリプトを使ったため2コマンドで終了。
-
sudo apt install -y curl
を入力する。 - 次に
curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/install-docker.sh | /bin/bash
ROS2を実行する
以下のコマンドを実行してROS2構築済みの環境を呼び出す。(初回起動時のみ呼び出しに時間がかかる)
docker run -v /home/hoge/ros2_ws:/home/ubuntu/ros2_ws -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m tiryoh/ros2-desktop-vnc:iron -m 1024m
ちなみに、-vオプションはdockerのデータを保存するためのオプション(ボリュームオプション)。Host側の/home/hoge/ros2_wsがバーチャル環境の/home/ubuntu/ros2_wsと同期され保存される。この設定がないとバーチャル環境で作成したデータは残らないので注意。-mオプションでメモリ容量を1024Mに設定。この設定もないとコンパイル時などにメモリ不足が多発したため必須。
(ちなみにスワップ設定を変更して少ないメモリで動かそうとしたがDockerではうまく有効化できなかった。)
これで構築完了。あとは任意のブラウザから以下のURLへアクセスすると仮想環境が立ち上がる。
http://127.0.0.1:6080
ROS2の設定
ROS2のチュートリアルにしたがってサンプルコードをコンパイルする。
cd ros2_ws/
git clone https://github.com/ros2/examples src/examples -b iron
colcon build --symlink-install
これで無事コンパイル実行することを確認できた。