Catkin buildの使い方
Q これはなんですか?
A これはROS Catkin buildの使い方の簡単な説明です.
そして,catkin buildの公式ドキュメントはこちらです.
さらに,自分用のメモでもあります.
Catkin buildとは?
catkin buildとはROSのパッケージをビルドするための新しいコマンドです.
catkin buildが新しいコマンドということは当然,古いコマンドもあるわけです.
古いコマンドはcatkin_makeというコマンドで,このコマンドは並列ビルドができなかったり
catkin_ws/srcにいないとコマンドが有効でなかったりしました.
そこで,catkin_makeに代わる新しいコマンドが開発されました.このコマンドはcatkin_makeでは
できなかった種々のことができるようになりました.
もちろん,デフォルトで並列ビルドで,どのディレクトリにいてもcatkin buidを実行することが可能です.
注意点として,catkin_makeでビルドしたパッケージはcatkin buildではビルドできないということがあります.そのため,catkin buildに移行する場合は,一旦,srcデレクトリをどこかへ退避して,
catkin buildの流儀でcatkin_wsを作り直す必要があります.
では,その使用方法を見ていきましょう.
インストール
catkin buildはデフォルトではROSに含まれていません.そこで,下記のコマンドでインストールしましょう.
sudo apt install python-catkin-tools
ROS NoeticからはPythonのバージョンが2系から3系に上がったので,下記のコマンドを使用してください.
sudo apt-get install python3-catkin-tools
ワークスペースの初期化
catkin_makeでは,一般的にcatkin_wsと名付けられるワークスペースの初期化にcatkin_init_workspaceというコマンドを用いていましたが,catkin buildでは,そのような初期化コマンドは必要なくcatkin buildを実行したときに,ワークスペースが初期化されていなければ自動的に初期化が実行されます.
具体的には,ワークスペースの作成から初期化までは下記のコマンドを用いて行います.
source /opt/ros/melodic/setup.bash
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin build
source devel/setup.bash
陽に初期化を行う場合は下記のコマンドを使用して行うことができます.
source /opt/ros/melodic/setup.bash
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
パッケージのビルド
全体をビルド
catkin_makeのcatkin_makeコマンドに相当するもので
ワークスペースにある全てのパッケージをビルドします.
ワークスペース内ならどこの階層にいてもいいので
下記のコマンドを打つだけです.どこにいてもいいと言うのがcatkin_makeと違って便利なところです.
catkin build
一部のパッケージをビルド
毎回,全てのパッケージをビルドするのは時間もかかりますし,ムダも多くなります.そこで,特定のパッケージだけビルドを行いたいということもあると思います.その場合は下記のコマンドを利用します.
catkin build package_name
catkin buildの後ろにビルドしたいパッケージ名を付け加えるだけでした.とても簡単ですね.
また,いちいち,パッケージの名前なんか,覚えてられないよ.
とにかく今いるところをビルドしたいんだ!ということも多いかと思います.そのような場合は,下記のコマンドを使用してください.
catkin build --this
なんのことは無い,引数に--thisをつけるだけです.
これが最も使用頻度が高いコマンドになるのではないでしょうか.
パッケージの追加
特筆すべきことは無く,catkin_ws/src以下にパッケージを入れるだけです.
ココらへんはcatkin_makeと変化ありません.
catkin listと打つと,パッケージ一覧が表示されます.
パッケージの作成
catkin_create_pkgと同様にコマンドでパッケージの雛形を作成可能です.
cakin_ws/src以下で下記のコマンドを叩きましょう.
じゃないとコマンドを叩いた場所にパッケージが作成されます.
一番簡単な例は下記のようになります.
catkin create pkg great_pkg
色々引数で指定することもできます.
catkin create pkg great_pkg -l BSD -m harumo11 s_harumo@todo.com --catkin-deps roscpp rospy std_msgs
ここではライセンス,メンテナーの名前とアドレスおよび依存パッケージを指定しています.-mのオプションは引数を2つ取ることに注意しましょう.
他に指定できるオプションについては公式をみてください.
あと,みんなこの設定忘れてるけど,パッケージの名前は小文字と_しか使ってはいけない.
パッケージのパスの読み込み
roslaunchなどのコマンドでパッケージ名をタブ補完するためには,各パッケージにパスが通っている必要があります.catkin buildしたあとに下記のコマンドを打つことによって各パッケージのパスが新しく追加されたり更新されたりします.
cd ~/catkin_ws/
source devel/setup.bash
ワークスペースの掃除
catkin_ws/src以外のディレクトリを消したいという場合にcatkin cleanコマンドは便利です.develやlogsディレクトリが無くなります.