Ubuntu ServerでROS2 Humbleをインストールする手順を解説

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

今回はUbuntu ServerROS2 Humbleをインストールする手順について解説します。

手順自体は簡単なステップで完了しますが、環境によってはインストール時にエラーが発生する場合があります。

私の環境の場合に発生したエラーとその対処法をまとめました。

目次

動作環境

ハードウェア:Raspberry Pi 4
OS:Ubuntu22.04LTS

ROS2 Humbleのインストール手順

ここからは具体的なインストール手順を解説します。

aptリポジトリの追加

sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

リポジトリをsource listに追加

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

ROS2 インストール

sudo apt update
sudo apt install ros-humble-desktop

インストール完了

以下のように表示されたらインストールが完了です。

pi@ubuntu:~$ sudo apt install ros-humble-desktop
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
ros-humble-desktop is already the newest version (0.10.0-1jammy.20240127.080159).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

環境変数の設定

以下のコマンドを実行してROS 2環境をアクティベートします。

source /opt/ros/humble/setup.bash

この操作をシェルを開くたびに行いたくない場合は、.bashrcファイル(または使用しているシェルに応じた適切な設定ファイル)にこの行を追加して、シェル起動時に自動で実行されるようにすることができます。

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

ROS2の動作テスト

最後にROS2 Humbleの動作テストを行います。

ターミナルで以下のコマンドを実行してください。

ros2 run demo_nodes_cpp talker

以下のように「Hello World」が表示されれば問題なくROS2が動作しています。

発生したエラー

ここからは私の環境でインストール時に発生したエラーと、その対処法を紹介します。

以下のコマンドを実行した際にエラーが発生しました。

sudo apt install ros-humble-desktop

エラー内容は以下となります。

Errors were encountered while processing:
 /tmp/apt-dpkg-install-RNL2UZ/0851-python3-catkin-pkg-modules_1.0.0-1_all.deb
 /tmp/apt-dpkg-install-RNL2UZ/0894-python3-rospkg-modules_1.5.0-1_all.deb
 /tmp/apt-dpkg-install-RNL2UZ/0895-python3-rosdistro-modules_0.9.0-1_all.deb
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)

dpkgが特定のパッケージの処理中に問題に遭遇したことを示しています。問題のパッケージはpython3-catkin-pkg-modulespython3-rospkg-modules、そしてpython3-rosdistro-modulesです。このような問題が発生する一般的な理由には、依存関係の問題、破損したパッケージファイル、または以前のインストールから残っている設定の不整合があります。

依存関係の修復

aptには依存関係の問題を修復するための機能があります。以下のコマンドを実行してみてください。

このコマンドは、不足している依存関係をインストールし、未完成のインストールを修復しようとします。

sudo apt --fix-broken install

パッケージキャッシュの更新とアップグレードの実行

依存関係やパッケージの問題を解決した後、システムのパッケージキャッシュを更新し、利用可能なアップグレードをすべて適用します。

sudo apt update
sudo apt upgrade

aptのアップデートを実行したところ以下のエラーが発生しました。

Errors were encountered while processing:
 /var/cache/apt/archives/python3-catkin-pkg-modules_1.0.0-1_all.deb
 /var/cache/apt/archives/python3-rospkg-modules_1.5.0-1_all.deb
 /var/cache/apt/archives/python3-rosdistro-modules_0.9.0-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

dpkgpython3-catkin-pkg-modulespython3-rospkg-modulespython3-rosdistro-modulesの3つのパッケージを処理中に問題に遭遇しています。これらはROSのインストールに関連するパッケージであり、依存関係の問題、破損したダウンロード、または以前のインストールの不整合が原因でエラーが発生している可能性があります。

キャッシュのクリア

最初に、APTのキャッシュをクリアして、問題のあるパッケージファイルを削除します。これにより、次回のapt updateapt install時に新鮮なパッケージファイルがダウンロードされます。

sudo apt clean

依存関係の修復

依存関係の問題が原因である可能性があるため、aptの修復オプションを使用して、壊れた依存関係を修復します。

sudo apt --fix-broken install

コマンド実行時に以下のエラーが発生しました。

pi@ubuntu:~$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies... Done
The following additional packages will be installed:
  python3-catkin-pkg-modules python3-rosdistro-modules python3-rospkg-modules
The following NEW packages will be installed:
  python3-catkin-pkg-modules python3-rosdistro-modules python3-rospkg-modules
0 upgraded, 3 newly installed, 0 to remove and 3 not upgraded.
1192 not fully installed or removed.
Need to get 99.4 kB of archives.
After this operation, 658 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://packages.ros.org/ros2/ubuntu jammy/main arm64 python3-catkin-pkg-modules all 1.0.0-1 [43.2 kB]
Get:2 http://packages.ros.org/ros2/ubuntu jammy/main arm64 python3-rospkg-modules all 1.5.0-1 [24.2 kB]
Get:3 http://packages.ros.org/ros2/ubuntu jammy/main arm64 python3-rosdistro-modules all 0.9.0-1 [31.9 kB]
Fetched 99.4 kB in 2s (60.1 kB/s)
(Reading database ... 205029 files and directories currently installed.)
Preparing to unpack .../python3-catkin-pkg-modules_1.0.0-1_all.deb ...
Unpacking python3-catkin-pkg-modules (1.0.0-1) ...
dpkg: error processing archive /var/cache/apt/archives/python3-catkin-pkg-modules_1.0.0-1_all.deb (--unpack):
 trying to overwrite '/usr/lib/python3/dist-packages/catkin_pkg/__init__.py', which is also in package python3-catkin-pkg 0.4.24-2
Preparing to unpack .../python3-rospkg-modules_1.5.0-1_all.deb ...
Unpacking python3-rospkg-modules (1.5.0-1) ...
dpkg: error processing archive /var/cache/apt/archives/python3-rospkg-modules_1.5.0-1_all.deb (--unpack):
 trying to overwrite '/usr/lib/python3/dist-packages/rospkg/__init__.py', which is also in package python3-rospkg 1.3.0-1
Preparing to unpack .../python3-rosdistro-modules_0.9.0-1_all.deb ...
Unpacking python3-rosdistro-modules (0.9.0-1) ...
dpkg: error processing archive /var/cache/apt/archives/python3-rosdistro-modules_0.9.0-1_all.deb (--unpack):
 trying to overwrite '/usr/lib/python3/dist-packages/rosdistro/__init__.py', which is also in package python3-rosdistro 0.8.3-2
Errors were encountered while processing:
 /var/cache/apt/archives/python3-catkin-pkg-modules_1.0.0-1_all.deb
 /var/cache/apt/archives/python3-rospkg-modules_1.5.0-1_all.deb
 /var/cache/apt/archives/python3-rosdistro-modules_0.9.0-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

dpkgが特定のファイルを上書きしようとしたときに発生しています。これは、既にインストールされているパッケージ(python3-catkin-pkgpython3-rospkgpython3-rosdistro)が、新しくインストールしようとしているモジュール版パッケージ(python3-catkin-pkg-modulespython3-rospkg-modulespython3-rosdistro-modules)と同じファイルを含んでいるためです。

このような問題を解決するには、既存のパッケージと競合するファイルを持つパッケージを削除(または置き換え)する必要があります。

競合するパッケージの削除

上書きしようとしてエラーが発生したファイルを含むパッケージを削除します。これにより、競合が解消され、残りのパッケージを正常にインストールできるようになります。

sudo apt remove python3-catkin-pkg python3-rospkg python3-rosdistro

コマンド実行時に以下のエラーが発生しました。

pi@ubuntu:~$ sudo apt remove python3-catkin-pkg python3-rospkg python3-rosdistro
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 python3-rosdep2 : Depends: python3-catkin-pkg but it is not going to be installed
                   Depends: python3-rosdistro but it is not going to be installed
                   Depends: python3-rospkg but it is not going to be installed
 ros-humble-ament-cmake-core : Depends: python3-catkin-pkg-modules but it is not going to be installed
 ros-humble-qt-gui : Depends: python3-catkin-pkg-modules but it is not going to be installed
 ros-humble-ros2doctor : Depends: python3-catkin-pkg-modules but it is not going to be installed
                         Depends: python3-rosdistro-modules but it is not going to be installed
 ros-humble-ros2pkg : Depends: python3-catkin-pkg-modules but it is not going to be installed
 ros-humble-rqt-gui : Depends: python3-catkin-pkg-modules but it is not going to be installed
 ros-humble-rqt-msg : Depends: python3-catkin-pkg-modules but it is not going to be installed
 ros-humble-rqt-plot : Depends: python3-catkin-pkg-modules but it is not going to be installed
 ros-humble-rqt-publisher : Depends: python3-catkin-pkg-modules but it is not going to be installed
 ros-humble-rqt-shell : Depends: python3-catkin-pkg-modules but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

一部のROS Humbleパッケージがpython3-catkin-pkg-modulespython3-rosdistro-modulespython3-rospkg-modulesに依存していることを示していますが、これらの依存関係が満たされていない状態です。python3-catkin-pkgpython3-rospkgpython3-rosdistroを削除しようとすると、これらの依存関係が破損するため、エラーが発生します。

依存関係の修復

この問題を解決するには、まずapt --fix-broken installコマンドを使用して、破損した依存関係を修復する必要があります。このコマンドは、依存関係の問題を自動的に解決し、必要なパッケージをインストールすることでシステムを安定した状態に戻します。

sudo apt --fix-broken install

競合するパッケージの強制削除

依存関係の問題が解決しない場合、dpkgを使用して競合するパッケージを強制的に削除することができます。(この方法はリスクが伴うため、注意して実行してください。)

sudo dpkg --remove --force-remove-reinstreq python3-catkin-pkg python3-rospkg python3-rosdistro

コマンド実行時に以下のようなエラーが発生しました。

pi@ubuntu:~$ sudo dpkg --remove --force-remove-reinstreq python3-catkin-pkg python3-rospkg python3-rosdistro
dpkg: dependency problems prevent removal of python3-catkin-pkg:
 python3-rosdep2 depends on python3-catkin-pkg.

dpkg: error processing package python3-catkin-pkg (--remove):
 dependency problems - not removing
dpkg: dependency problems prevent removal of python3-rospkg:
 python3-rosdep2 depends on python3-rospkg.

dpkg: error processing package python3-rospkg (--remove):
 dependency problems - not removing
dpkg: dependency problems prevent removal of python3-rosdistro:
 python3-rosdep2 depends on python3-rosdistro.

dpkg: error processing package python3-rosdistro (--remove):
 dependency problems - not removing
Errors were encountered while processing:
 python3-catkin-pkg
 python3-rospkg
 python3-rosdistro

python3-catkin-pkgpython3-rospkg、およびpython3-rosdistroパッケージが他のパッケージによって依存されているため、通常の方法で削除することができないことを示しています。python3-rosdep2がこれらのパッケージに依存しているため、依存関係の問題が発生しています。

これらの依存関係の問題を解決するためには、依存しているパッケージを先に削除するか、または同時に削除する必要があります。

依存関係にあるパッケージも含めて問題のあるパッケージを強制的に削除し、その後でシステムの整合性を修復します。

実行する前にシステムのバックアップを取ることを強くお勧めします。

python3-rosdep2を含む依存しているパッケージを一時的に削除します。

sudo dpkg --remove --force-depends python3-rosdep2

コマンド実行時に以下のようなエラーが最後に発生しました。

needrestart is being skipped since dpkg has failed

このメッセージは、dpkg コマンドが完了した後に、システムが自動的に再起動が必要なサービスをチェックする needrestart パッケージによって生成されることがあります。この場合、dpkg が失敗したというメッセージは、実際には dpkg コマンドの実行によって問題が解決された後に、needrestart が正常に実行できなかったことを指しています。dpkg コマンド自体は、指定されたパッケージの削除に成功した可能性が高いです。

システムの整合性を再度チェックして、必要な修復を行います。

sudo apt --fix-broken install

その後、問題のあったパッケージが正常に削除されているかを確認するために、以下のコマンドを実行してください。

dpkg -l | grep -E 'python3-catkin-pkg|python3-rospkg|python3-rosdistro'

このコマンドは、上記のパッケージに関連するものがまだインストールされているかをリストアップします。もしリストに表示されなければ、削除が成功しています。

pi@ubuntu:~$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
pi@ubuntu:~$ dpkg -l | grep -E 'python3-catkin-pkg|python3-rospkg|python3-rosdistro'
ii  python3-catkin-pkg-modules                        1.0.0-1                                 all          catkin package library
ii  python3-rosdistro-modules                         0.9.0-1                                 all          A tool to work with rosdistro files
ii  python3-rospkg-modules                            1.5.0-1                                 all          ROS package library

表示された情報に基づくと、python3-catkin-pkg-modulespython3-rosdistro-modulespython3-rospkg-modules の各モジュールがインストールされていることが確認できます。これらは、以前の python3-catkin-pkgpython3-rosdistropython3-rospkg パッケージの代わりにインストールされたものであり、ROS 2 の依存関係を満たすために必要なモジュールです。

この状態は、依存関係の問題が解決され、システムが再び安定した状態にあることを示しています。ROS 2のインストールまたは使用に戻ることができます。

sudo apt install python3-rosdep2

以下のようにメッセージが表示され、ROS2のインストールが成功したことが確認できました。

pi@ubuntu:~$ sudo apt install ros-humble-desktop
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
ros-humble-desktop is already the newest version (0.10.0-1jammy.20240127.080159).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

まとめ

Ubuntu ServerでROS2 Humbleをインストールする手順を解説しました。

同じようなエラーが発生している方は、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。

参考

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次