ユニバーサルビルドツールColcon
実は本ブログの運用をTumblrからGitHub Pagesに移行しました。Tumblrは運営元が二転三転しており、心許ない状態が続いているため、完全に自分で制御できるブログシステムに変更しました。 これまで、ツイートやプレゼン資料の埋め込みが正しく表示されたりされなかったり、Tumblrのメニューバーなどが邪魔をしてスマフォで快適に読みづらかったりしたのですが、ようやく解放されました。
過去のリンクは全て新しいアドレスにリダイレクトされるように設定したので、読者の皆さんは何の変更もなく読み続けられると思います。
デザインやフォーマットなどは順次改善していこうと思いますが、Jekyllの現状のミニマルテーマもそれなりに好きです。せめてキーワード検索やタグ検索はを追加していきます。
ビルドツール変遷
ROS 2 Bouncyからは、ROS 1のcatkin
に代わって登場したROS 2のビルドツールament
がなぜか早速代替わりしてcolcon
というものが新たに登場しました。
ROS 1/2のこれまでのビルドツールの変遷を振り返ってみましょう。
rosbuild
ROS 1 Fuerteまで現役だったビルドツールです。独自のPythonスクリプトを組み合わせてROSパッケージをビルドすることができました。
catkin
しかし、そのPythonスクリプトではOS依存性が高く、Ubuntu以外のLinuxプラットフォームやmacOSなどに対応することが難しかったため、純粋なCMake拡張であるcatkin
が登場します。 Windows/macOS/Linuxに対応しているCMakeを基にすることで、プラットフォーム対応が行いやすくなりました。非公式ではありますが、この頃からmacOSでも徐々にROS 1が動くようになっていきます。
ament
モノリシックに設計されたcatkin
をプラグイン構造に再設計し、ROS 2パッケージをビルドできるようにしたものがament
です。 ament
プラグインを追加することで、CMakeLists.txt
プロジェクトのC++プログラムやsetup.py
しかない(ROS 1ではPythonパッケージでもCMakeLists.txt
は必須でした)Pythonスクリプト、その他のプログラミング言語のプログラムのビルドにも対応させることができるようになりました。
colcon
ただし、ament
は現状、ROS 2パッケージのビルドのみを扱っており、ROS 1パッケージを扱うことができませんでした。そこで登場したのがcolcon
です。 colcon
はROS 1パッケージにはcatkin
を、ROS 2パッケージにはament
を呼び出すことで、両バージョンを混在したワークスペースを作成することができるようにしているようです。ROS 1/2だけではなく、GazeboもIgnitionパッケージ(Gazebo用の計算ライブラリ)もcolcon
でビルドできるそうです。
colcon
はPythonで実装されており、rosbuild
の二の舞にならないか心配ですが、これまでのところ、マルチプラットフォーム展開は上手くいっているようです。
colconの使い方
colcon
の使い方はまだ情報が少ないですが、以下の文書にまとめられています。
- https://colcon.readthedocs.io/en/latest/
- https://github.com/ros2/ros2/wiki/Colcon-Tutorial
- http://design.ros2.org/articles/build_tool.html
一番網羅的なのはreadthedocs
の文書です。 基本的な使い方は以下の通りです。
https://colcon.readthedocs.io/en/latest/user/quick-start.html
1
2
3
4
5
6
7
8
9
$ mkdir -p /tmp/workspace/src # Make a workspace directory with a src subdirectory
$ cd /tmp/workspace # Change directory to the workspace root
$ <...> # Populate the `src` directory with packages
$ colcon list -g # List all packages in the workspace and their dependencies
$ colcon build # Build all packages in the workspace
$ catkin test # Test all packages in the workspace
$ catkin test-result --all # Enumerate all test results
$ . install/local_setup.bash # Setup the environment to use the built packages
$ <...> # Use the built packages
catkin_tools
やament
を使ったことがある方なら、ほとんど同じように使えるようにはなっています。
ちなみにこれまでの他のビルドツールと同様に、ソースコードのクローンや依存ライブラリのインストール、インストールパッケージ化といった処理はビルドツールは担当しません。それぞれ別のコマンドが用意されています。
Comments powered by Disqus.