暁の電子工作奮闘記

知識も経験もないのにArduinoとRaspberryPiを買ってしまった大学生が、勉強しながらあれこれ試行錯誤するブログ。

[ROS Noetic] catkin build が使えない…?の解決策

はじめに

ROSでワークスペースをビルドをするとき、ROS Wikiでは
「catkin_make」というコマンドを使っています。

ところが調べてみるとcatkin_makeを改善した
「catkin build」というコマンドがあるようです。

catkin build については下の記事がわかりやすくまとめてありました。 miyutomori.com

ではいざ使おうとインストールしようとすると、

$ sudo apt install python-catkin-tools
(略)
インストールすることができないパッケージがありました、おそらく、あり得ない状況を要求したか、(不安定版ディストリビューションをしているのであれば)必要なパッケージがまだ作成されていなかったりIncomingから移動されていないことが考えられます。
(略)
以下のパッケージには満たせない依存関係があります:
python-catkin-tools : 依存:python-catkin-pkg (>=0.2.9) しかし、インストールすることができません。
          依存:python-osrf-pycommon しかし、インストールすることができません。
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

とエラーが出てインストールできませんでした。
依存関係にあるパッケージが存在しないせいでインストールできないということですかね。

というわけで解決策を探しました。

先に結論だけ

sudo apt install python3-osrf-pycommon python3-catkin-tools

これで catkin build が使えるようになりました。

解決に至った経緯

python3-catkin-tools を発見

「Python2.7が2020/1/1にサポート終了したため
 ROS Noetic は Python3のみ対象になる」
と ROS Wiki に書いてあります。 wiki.ros.org

Python3版のcatkin-toolsが出ているのでないかと思い、
apt search でパッケージの検索してみました。

$ apt search catkin-tools
python-catkin-tools/...
python3-catkin-tools/...

ありましたね。

python3-catkin-toolsのインストール

$ sudo apt install  python3-catkin-tools

でエラーも出ずにインストールができました。

しかし、使えるかどうか確かめるためにヘルプを見ようとすると…

$ catkin -h
Traceback (most recent call last):
(略)
pkg_resources.DistributionNotFound: The 'osrf-pycommon>0.1.1' distribution was not found and is required by catkin-tools

catkin-toolsに必要な'osrf-pycommon>0.1.1'がないと言われてますね。

python3-osrf-pycommonのインストール

先ほど出た

pkg_resources.DistributionNotFound: The 'osrf-pycommon>0.1.1' distribution was not found and is required by catkin-tools

というエラーをそのままコピーして検索をかけると、 github.com このページに辿り着きました。
catkin-toolsのIssueですね。

9/7のmintarさんのコメントを見ると、

Yes, all that's still missing is the apt dependency. If you manually install python3-osrf-pycommon, everyhing works:
sudo apt-get install python3-osrf-pycommon python3-catkin-tools

「aptの依存関係が足りないから手動で python3-osrf-pycommon をインストールすると解決するよ。」

とのことなので、

$ sudo apt install python3-osrf-pycommon

を実行すると、catkin build が使えるようになりました。

解決したけど…

catkin-tools がインストールできました。
catkin build も "Build Succeeded!" と言ってるので無事ビルドできたのでしょう。

ただ、catkin-toolsの公式ドキュメントのインストールページでは、 catkin-tools.readthedocs.io python3-catkin-toolsについて言及してなさそうなんですよね。

今python3-catkin-toolsがどういう扱いか、ROS Noetic で正式にサポートしているか
もう少しGitHubのIssue読んでみたりして確認してみようと思います。

今日はここまで。 お付き合いありがとうございました!