【自作ロボットROS2化】jetsonNanoにROS2 Humble環境を構築
どうもこんにちは、
まもなくROSのサポートも終了するということで、今までROSで開発していた自作ロボットをROS2へ移行することに決めました。
ということで、ROS2への移行作業の内容をブログにまとめていこうと思います。
まずは、私が使っているメインボードjetsonNanoにROS2を入れることを目指します。
ちなみにjetsonNanoは発売からかなり時間が経っており、サポートしているjetPackでは、OSは、ubuntu20.04までとなるようです。
最新のROS2 Humble(2024.10月時点)を入れるなら、ubuntu22.04にする必要があります。
ということで、今回は、DockerでROS2環境を構築することにしてみました。
※将来的には、jetsonNanoではなく、最新のラズパイを使う、などの選択肢も考えられますが、まずはjetsonNanoにROS2を入れる方法を模索します。
以下のサイトを確認すると、jetPack4.6.1(R32.7.1)に対応したROS2 HumbleのDockerイメージが用意されているようです。
あまりjetsonNanoでROS2 Humbleを動かしたという情報がないのでできるのかわかりませんが、やってみます。
<参考>
ROS2 Humble
R34.1.1 20.04 dustynv/ros:humble-ros-base-l4t-r34.1.1
R35.4.1 20.04 dustynv/ros:humble-ros-base-l4t-r35.4.1
JetPack4.6.1のイメージを作成し起動
以下からJetPack4.6.1のSD Card Imageをダウンロードします。
nvidia jetpack sdk
jetsonNanoに作成したイメージSDを指して、起動します。
起動後、初期セットアップを行い、以下でjetpackのバージョン確認しました。
cat /etc/nv_tegra_release
# R32(release), REVISION: 7.1
問題なくJetPack4.6.1(R.32.7.1)が入ってます。
ROS2 humble dockerコンテナ作成
次にdockerでJetPack4.6.1(R.32.7.1)用のROS2 Humbleイメージを落とし、ROS2 Humble用コンテナを立ち上げてみます。
ターミナルから以下コマンドを入力します。
sudo docker run --network host --runtime nvidia -it --name ros2_test dustynv/ros:humble-ros-base-l4t-r32.7.1
コンテナ内で、以下コマンドを入力しROSバージョンを確認します。
echo $ROS_DISTRO
humble
問題なく、ROS Humbleが入っているようです!
ワークスペースを作ってみる
以下コマンドでROS2作業用のワークスペースを作ります。
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
問題なく作成できました。
動作テスト
簡単な通信動作テストしてみます。
jetsonNano側(Dockerコンテナ)で、以下を実行
source /opt/ros/humble/install/setup.bash
ros2 run demo_nodes_cpp talker
もう1台、ros2 humbleが入ってるPCで以下を実行
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener
talkerから通知されてくるデータをlistenerで受信することができました。
逆もやってみます。(jetsonNano(Docker)が受信、他PCが送信)
トピックの送受信は問題なさそうです!
最後に
とりあえず、jetsonNanoにDockerでROS2 Humble環境をセットアップしました。
次は、rplidarやモーター周りなど、ROS2で動くように変更していこうと思います。
それでは!
スポンサーリンク