実は本ブログの運用をTumblrからGitHub Pagesに移行しました。Tumblrは運営元が二転三転しており、心許ない状態が続いているため、完全に自分で制御できるブログシステムに変更しました。 これまで、ツイートやプレゼン資料の埋め込みが正しく表示されたりされなかったり、Tumblrのメニューバーなどが邪魔をしてスマフォで快適に読みづらかったりしたのですが、ようやく解放されました。

過去のリンクは全て新しいアドレスにリダイレクトされるように設定したので、読者の皆さんは何の変更もなく読み続けられると思います。

デザインやフォーマットなどは順次改善していこうと思いますが、Jekyllの現状のミニマルテーマもそれなりに好きです。せめてキーワード検索やタグ検索はを追加していきます。

ビルドツール変遷

ROS 2 Bouncyからは、ROS 1のcatkinに代わって登場したROS 2のビルドツールamentがなぜか早速代替わりしてcolconというものが新たに登場しました。

https://github.com/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の使い方はまだ情報が少ないですが、以下の文書にまとめられています。

一番網羅的なのはreadthedocsの文書です。 基本的な使い方は以下の通りです。

https://colcon.readthedocs.io/en/latest/user/quick-start.html

$ 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_toolsamentを使ったことがある方なら、ほとんど同じように使えるようにはなっています。

ちなみにこれまでの他のビルドツールと同様に、ソースコードのクローンや依存ライブラリのインストール、インストールパッケージ化といった処理はビルドツールは担当しません。それぞれ別のコマンドが用意されています。