3
4

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 5 years have passed since last update.

amentからcolconに移行したときに依存関係で悩んだ話

Last updated at Posted at 2019-01-22

せしまるです。

ros2 ardentからbouncyもしくはcrystalにバージョンアップした際に、ビルドシステムが変わりましたよね。

そう、amentからcolconに。
他の使ってる方は関係ないかも…。

私の環境では、amentで全ビルドできていたものをそのまんまcolconで全ビルドしようとしてコケました。

依存関係

問題としてはこれです。
自前のパッケージを他のパッケージで使用する場合に発生します。
amentの時はrclcppとかのros2のパッケージをpackage.xmlとかに書いておけば通ったのですが、colconでは自前のものもしっかりと書いておかないとダメ見たいです。

以下簡単に
使われる側

package.xml
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format2.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>marumaru</name>
  <version>0.1.0</version>
  <description>seshimaru package for ROS2</description>
  <maintainer email="xxxxxxx@xxxx.com">seshi maru</maintainer>
  <license>Apache License 2.0</license>

  <buildtool_depend>ament_cmake</buildtool_depend>

  <build_depend>rclcpp</build_depend>

  <exec_depend>rclcpp</exec_depend>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>

使う側

package.xml
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format2.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>hogehoge</name>
  <version>0.1.0</version>
  <description>seshimaru package for ROS2</description>
  <maintainer email="xxxxxxx@xxxx.com">seshi maru</maintainer>
  <license>Apache License 2.0</license>

  <buildtool_depend>ament_cmake</buildtool_depend>

  <build_depend>rclcpp</build_depend>
  <build_depend>marumaru</build_depend>

  <exec_depend>rclcpp</exec_depend>
  <exec_depend>marumaru</exec_depend>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>

これがないとcolcon buildをかけたときに、marumaruがないよ!と言われてしまいます。
以下のコマンド実行してlocal_setup.bashを読み直せば通るけど多分間違った方法。

console
// パッケージを指定してビルドするオプション.
$ colcon build --packages-select marumaru
$ source install/local_setup.bash

ちなみにpackage.xmlの記述についてはこんな感じ
書いてないタグも載せておきます。

記述 説明
build_depend ビルドするときに必要なパッケージ
build_export_depend ライブラリをビルドするときに必要なパッケージ
exec_depend 生成した実行ファイルを実行するときに必要なパッケージ。これがないと実行時に落ちたりする
test_depend テストを実行するときに必要なパッケージ
depend 上記のtestを除いた3種類を合わせたもの。別々で書くなら纏めたほうが簡潔になる
build_type パッケージを処理するときに何を使って処理するかを指定する

一番下のbuild_typeは人それぞれですかね。
ament使う場合やcatkin使う場合もありますし。

3
4
1

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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?