5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ROS講座127 rosdepを使う

Posted at

環境

この記事は以下の環境で動いています。

項目
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の最後のほうに記述しています。

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を送って追加する必要があります。参考

参考

rosdep

目次ページへのリンク

ROS講座の目次へのリンク

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?