What's next?

今回紹介した内容は、ROSを用いたロボットシステム構築のごく一部であり、「ROSを使い始める」という点に重点を置いています。ここでは、本セミナーに引き続いてROSを習得していくために必要なキーワードと概要を説明します。

tf

ROSでは、tfと呼ばれる、座標変換(transformation)ライブラリが提供されており、広く使われています。tfを用いると、ロボット上に任意の位置姿勢で搭載されているセンサデータの座標を、ロボット座標系や、地図座標系などの任意の座標系に、簡単に座標変換することができます。また、ロボットの座標を、地図座標系で取得するといった処理もサポートされています。

たとえば、演習課題Bで紹介したようなロボット位置の取得や、センサデータの座標変換に使用することができます。

パッケージの新規作成・依存パッケージの追加設定

catkin_create_pkgコマンドを使用して新規にパッケージを作成することができます。また、既存のパッケージ(たとえば、今回のセミナーで使用したrsj_robot_testパッケージ)をディレクトリごとコピーし、CMakeLists.txt、package.xmlを編集して、新規パッケージを作成することも可能です。

パッケージのディレクトリにある、CMakeLists.txt、package.xmlを編集することで、依存パッケージの設定を追加したり、追加で使用したいライブラリのリンクといったビルド設定を追加できます。特によく変更するのは、以下の項目です。

git

ソースコードを書く際、以下のような問題や要求がよく発生します。

  • コードを変更したら動かなくなった
    • 以前の状態に戻したい
  • 複雑なプログラムに多くの変更を加えたい
    • 試行錯誤を繰り返し、部分的に元に戻したい
  • デスクトップPC、ノートPC、ロボット搭載PCなど複数のコンピュータでプログラムを管理したい
    • ソースコードの同期を取りたい
  • 複数人で一つのコードを編集したい
    • 変更履歴を管理したい

これらは、gitなどの分散型バージョン管理システムを正しく用いることで、解決できます。以下のコマンドで、今回のセミナーで使用した、rsj_seminar_navigationの変更の履歴を確認してみましょう。

$ cd ~/catkin_ws/src/rsj_seminar_navigation/
$ git log

いくつかの変更履歴の情報が表示されます。この中で、「enlarges costmap size」と説明が付いている変更が具体的にどのような変更だったのか、確認します。

$ git diff dc4d4f dc4d4f^

これは、dc4d4fのコミット(git logでcommit dc4d4f... の行に対応)と、その一つ前(^)のコミットの差分を表示するコマンドです。この結果から、costmap_local.yamlファイルのwidth、heightの値が変更されていることが確認できます。

更に詳しいgitの説明は、公式の解説書、Pro Git (https://git-scm.com/book/ja/v2)などを参考にして下さい。