Ubuntu 14.04 上のROS (Indigo) でQtCreatorを導入する | りさーちゃーのたまご

りさーちゃーのたまご

研究者になり損ねた社会人のつれづれ日記です。へっぽこソフトしかかけないけど、社会人研究職を目指します。
適当なソフト、語学(英語、中国語)、マラソン、旅行、ときどき小言。

【はじめに】
とりあえずROSのプログラムをC++で実装したりできるようになった.
だが,まだ大きな問題がある.開発環境だ.

しばらくvimで頑張ってみたが,やはり私にはIDEが必要である.
CUIでちゃちゃっとやりたいときは確かに便利だけど,プロジェクト全体を見渡したり
相互参照するにはIDEが圧倒的に便利.

そんなのvimのプラグインでやればいいじゃん,なんですが,どうもあの世界は私の肌には合わない.
なんでちょっと設定追加するだけであんなに苦労せないかんのだ笑.

目的に応じて最適化されたツールを使い分けて効率的に開発することを,私は悪いとは思わない考えをもっているので,もうIDEを入れようと思う.

【IDEの選定】
ちょっと調べたが,QtCreatorに決定.
CMakeListsに対応しているので,ツール向けに余計な設定をしなくても導入ができるっぽい.
ROSワークスペースに変な影響を与えたくないので,これにした.

【QtCreatorの導入手順】
※初版で書いた内容が余りにもひどいので,改版した.色々試したら問題だらけでした汗.
この動画が大変役に立った...本当に助かった.
How to open ROS package by qtcreator


■インストール
・Ubuntu 標準のソフトウェアセンターで"QtCreator"で検索して,インストールする.
※実はこのあとインストーラでver. 3.4を入れ直した.ソフトウェアセンターのバージョンver. 3.1と古く,しかもプロジェクトを再起動すると開けないというバグがあった.それに,上記動画サイトと同じ画面で設定できる.下記はver. 3.1の時のあがきの遺産なので,じきメンテします.


■ROSワークスペースのビルド
○初めにコマンドラインからROSのワークスペースをcatkin_makeしておく必要があります.QtCreatorは一からやってくれません.

○catkin_make と,その中身の挙動についてはROS wikiを参照.
 ROS.org - catkinTutorialsusing_a_workspace

○上記サイトにしたがって,勉強がてらcatkin_makeを使わずにビルドしてみました.
 すると,
 ・~/catkin_ws/devel
 に実行ファイルなど色々と出力されます.

ここまで一回手動でやっておく必要があります.
そうしないで初めからQtCreatorでやろうとすると,実行時に以下のパスを見に行こうとします.
 ・~/catkin_ws/build/devel
んなディレクトリねーよ!相当ハマりましたw.ツールからは設定しようがありませんでした.
カレントディレクトリで整合性が取れないためにこうなります.ROSでは,catkin_makeを~/catkin_ws で行いますが,下記のツール設定でビルドするとどうしても~/catkin_ws/buildになってしまいます.後述しますが,まずはROSのワークスペースでビルド,その後QtCreatorでプロジェクトを開く.を死守する必要があります!何度ハマったことか….


QtCreatorを設定
○立ち上げたら右上のOpen Projectを選択します.

Qt初期


○ROS パッケージのCMakeLists.txt を選択する.
~/catkin_ws/src/パッケージ名/CMakeLists.txt あたりになるはず.

Qt選択


○プロジェクト設定の"Default欄"を以下のディレクトリに変更するし,"Configure Project"を選択.
/home/ユーザ/catkin_ws/build

Qt初期設定

何やら色々な処理が始まる.無事に終わればプロジェクトが開く.
ツリー表示のルートが"Project"であればOK.

Qtプロジェクト初期

ここが特定のワークスペース名の場合,手動catkin_makeからやり直したほうがいい.何か間違えている可能性あり.build, develフォルダを削除して,ワークスペース直下でcatkin_makeをした後に,QtCreatorからプロジェクトを選択しなおしてみること.


○ビルド,実行の設定
左側のメニューから"Projects"選択.

 ◆ビルド
 CMakeの項目だけ確認.下記のようになっていること.
  ・CMakeDirectory: /home/ユーザ名/catin_ws/build
  ・Cmake aruguments: ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel -DCMAKE_BUILD_TYPE=Debug .

QtBuild設定


 ◆実行
 上部DesktopのRunを選択.Runの項目だけ確認.
  ・Arguments: お好きにどうぞ.私の場合はROS Parameter でTopic名を変えたかった.
  ・Working directory: /home/ユーザ名/catin_ws/devel/lib/ワークスペース名
  ※これは間違えないこと.

QtRun設定


【ビルド】

Ctrl+bでパッケージのビルド.

その後コンソールから
$ rosrun ビルドしたパッケージ名 ノード名
で実行したら,ちゃんと動いている.タイムスタンプも新しくなっている.

【おわりに】
最初これでいいじゃね?って思って書いた方法だ全然ダメだった.
そこから相当ハマって,ようやく正規の方法にたどり着く.

自動補完,デバッグ,相互参照もバッチシ.これで快適にROSの開発ができる!