ロボット研究開発、ソフトウェア開発、コンテンツ制作配信

【自作ロボット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
R32.7.1 18.04 dustynv/ros:humble-ros-base-l4t-r32.7.1
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で動くように変更していこうと思います。
それでは!

スポンサーリンク

いいね!を押すと、
最新記事をお届けします。

Twitter で
関連記事(一部広告含む)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


ページトップボタン