ROS2を使ってみる その3(環境構築、WSL2 Ubuntu 22.04)
はじめに
最近WSL2でUbuntu環境を複数インストールできるようになったので、ROS2の環境を改めて構築してみました。
大学の研究でロボットの遠隔操作にも取り組み始めているのですが、通信周りを改善させるにはROS1からROS2に移行する必要がありそうだなと思っています。色々検証していきたいところです。
▼以前の記事はこちら
環境を構築する
WSL2でUbuntu環境のインストール
▼PCは10万円ぐらいで購入したゲーミングノートPCを利用しています。Windows 11の環境です。
WSL2でUbuntu 22.04の環境を新しく作成しました。
▼詳しい手順は以下の記事をご覧ください。
今回はUbuntu2204_ROSという名前にしました。
mkdir W:\Ubuntu2204_ROS
wsl --import Ubuntu2204_ROS "W:\Ubuntu2204_ROS" "C:\Users\mgs_1\Downloads\ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz"▼問題なく登録されました。

この後以前と同様にユーザーの登録などを行いました。
ROS2をインストールする
今回はROS2 Humbleをインストールします。
▼以下のUbuntu用のページを参考に進めていきます。
https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html
▼localeは確認するとすべてUTF-8になっていました。

以下の必要なコマンドを実行していったのですが、特に問題なく実行できました。
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository universesudo apt update && sudo apt install curl -y
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb追加の機能はすべてインストールしておきました。
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
sudo apt install ros-humble-ros-base
sudo apt install ros-dev-toolsROS2の環境を有効化するときは、以下のコマンドを実行します。
source /opt/ros/humble/setup.bashターミナルを開いたときにROS2の環境が有効化されるように、.bashrcに追記しておきました。
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc動作を確認する
TalkerとListenerで通信の確認を行いました。先程のターミナルで以下のコマンドを実行しました。
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker新しく別のターミナルを起動し、以下のコマンドを実行しました。
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener▼Listenerの方でデータを受信できていませんでした。

この問題に対して他の方が対処していないか調べてみました。
▼以下の記事でも同じ問題に直面されていました。
https://fan4fun2rc.blog.jp/archives/30669359.html#02
以下のコマンドを実行してから、再度TalkerとListenerを実行すると解決しました。
ros2 daemon start▼TalkerとListenerで通信できました!

multicastのコマンドもあったので試してみました。
▼以下のページに書かれていました。
https://docs.ros.org/en/humble/How-To-Guides/Installation-Troubleshooting.html
▼こちらは先程のros2 daemon startを実行する前から実行できていました。

ROS2のRVizが起動できるかも確認しました。
▼ROS2のRVizについては以下のページで説明されています。
https://docs.ros.org/en/humble/Tutorials/Intermediate/RViz/RViz-User-Guide/RViz-User-Guide.html
以下のコマンドを実行しました。
ros2 run rviz2 rviz2▼問題なく起動できていました。

最後に
ROS2の環境を改めて構築できたので、またOpenManipulatorなどで動作を確認したいなと思っています。ROS1とROS2のブリッジもあるようなので、既存のシステムと共存できるか気になるところです。
▼ROS1とROS2のブリッジについては以下のページに書かれているようでした。
https://github.com/ros2/ros1_bridge/blob/master/README.md
▼UnityとROS1を連携させて開発しているのですが、ROS2に置き換えていきたいなと思っています。


