環境
この記事は以下の環境で動いています。
項目 | 値 |
---|---|
CPU | Core i5-8250U |
Ubuntu | 18.04 |
ROS | Melodic |
インストールについてはROS講座02 インストールを参照してください。
またこの記事のプログラムはgithubにアップロードされています。ROS講座11 gitリポジトリを参照してください。
概要
rosdepはROSのシステムの依存関係を扱うためのシステムです。こういうとたいそうな感じですが要するに
- catkin_makeする前に必要なROSパッケージやライブラリをapt等でinstallする。
- roslaunchする前に必要なROSパッケージをapt等でinstallする。
というものです。
いままでこのシリーズの記事中では、新たなパッケージやライブラリが必要な場合はいちいちaptのコマンドを書いていましたが、このシステムの依存の記述をしっかり行っていればrosdepを使って自動的に解決できます。
rosdepのインストール
ここで改めて書きますが、ROSのインストール手順に従っていれば最初に行っているはずです。
sudo apt install python-rosdep
またこれも手順に入っていますが、以下で初期の依存の解決をします。
sudo rosdep init
rosdep update
rosdepを使ってシステムの依存関係を解決する
以下のコマンドで出来ます。
cd ~/catkin_ws/src/
rosdep install -i --from-paths ./
- -i はローカルにあるパッケージについてはインストールしないというものです。例えば手元で作ったROSパッケージのmy_testがmy_msgsに依存していた場合、もちろんmy_msgsはインターネット上のリポジトリを探してもありません。しかし、しかしローカルにROSパッケージがあるので、それでビルドや実行ができるのでそれで足ります。-iオプションがない場合はこのような場合にエラーになります。
- --from-pathsはROSパッケージのあるパスを指定するものです。
システム依存を記述する
ROSパッケージの依存関係はpackage.xmlの最後のほうに記述しています。
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>std_msgs</exec_depend>
上記のようにbuildやexecを別々に書いてもいよいですし。まとめて<depend>roscpp</depend>
と書くこともできます。
依存している先がrosパッケージならそのパッケージ名を書きます。
そうでない場合はリポジトリを見て名前を探します。aptで入れるものはbase.yamlを参照します。
例えばubuntuでapt install cppad
とインストールする依存関係をrosdepで解決したい場合はbase.yamlのここをみるとcppda
と記述すればよいことが分かります。
もし上記のリポジトリにない場合はPRを送って追加する必要があります。参考