Goodbye, World

日々のプログラミングで得た経験を個人的な備忘録としてまとめてます.他のブログ・ページを参考させて頂いている部分が多いので,参考ページへのリンクを併記しております.

ROSのコーディングのためのIDE:Qt Creator編

以前ROS用のIDEとしてEclipseの設定を紹介しましたが,今回はQt CreatorでROS packageの開発を行うための設定をまとめます.

参考サイト:
How to open ROS package by qtcreator - YouTube
catkin/Tutorials/using_a_workspace - ROS Wiki
Ide - Control Systems Technology Group
IDEs - ROS Wiki



1.Qt Creatorのインストール

Main - Qt Wikiから使用している環境に合ったインストーラーを選択しダウンロードします.ダウンロードはリンクから直接行っても,コマンドライン上で行ってもどちらでも構いません.下記はUbuntu 64bit, Qt5.5.0の場合のコマンドです.ブラウザでリンクを踏んでダウンロードした場合はwgetの部分を飛ばして下さい.

wget http://download.qt.io/official_releases/qt/5.5/5.5.0/qt-opensource-linux-x64-5.5.0-2.run
chmod +x qt-opensource-linux-x64-5.5.0-2.run
./qt-opensource-linux-x64-5.5.0-2.run

その他コンパイラOpenGL等の必要なファイルは下記を参照して下さい.
#私の場合は特に必要ありませんでした.
Install Qt 5 on Ubuntu - Qt Wiki


2.CMakeLists.txtを利用したQt creatorのプロジェクトの作成

Qt Creatorを立ちあげたら,"Open Project"で"~/catkin_ws/src/CMakeLists.txt"を選択する必要がありますが,このCMakeLists.txtはシンボリックリンクなので,下記のような方法で参照元を事前に引っ張ってくる必要があります*1

cd ~/catkin_ws/src/
mv ~/catkin_ws/src/CMakeLists.txt ~/catkin_ws/src/CMakeLists_symlink.txt
sudo cp /opt/ros/indigo/share/catkin/cmake/toplevel.cmake  ~/catkin_ws/src/CMakeLists.txt

このままでは各packageのヘッダファイルが読み込まれない可能性がありますので,Qt creator上でヘッダファイルも編集したい場合は全てを一読後この手順を行って下さい.
続いて出てくる"Build Location"のディレクトリは"~/catkin_ws/build"を指定して下さい.

次に"Run CMake"のArgumentsに下記を入力しRun CMakeして暫く待ちます.
#ここらへんはcatkin/Tutorials/using_a_workspace - ROS Wikiに詳しい説明が載っています.

../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel
or
../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel -DCMAKE_BUILD_TYPE=Debug (Debug機能を利用したいときはBUILD_TYPEにDebugを指定?)

これで各パッケージをQt Creator上で扱うことができます.このとき注意すべきなのが,全ての情報はCMakeLists.txtから拾われており,Eclipseの場合と違って後から追加のincludeフォルダ等を指定できない点です.
基本的に各packageにおけるCMakeLists.txtのadd_libraryに記載されているファイルがQt Createrに認識されるようです.一方,catkin_make自体は,add_libraryにcppファイル(ソースファイル)のみを記述しておけば機能するので,書き方によってはQt creatorにincludeフォルダ内のヘッダが読み込まれません.Qt creator上でヘッダも編集したい場合は,CMakeLists.txtに下記を追加します*2

file(GLOB_RECURSE HEADER_FILES include/*.h)
...
add_executable(my_program src/program.cpp ${HEADER_FILES})

なお,各package内で上記のような変更を行った場合,それをQt creatorに反映させるには,(catkin_make後?)再度/opt内のtoplevel.cmakeを~/catkin_ws/srcへコピーしてあげる必要があるので注意して下さい.

設定は以上です.これでインテリセンス等が働くようになっていると思います.またデバッグ機能も使えるので,変数の中身等確かめながらコーディングを進められて楽です.ただ,CMakeLists.txtにReleaseでのmakeを指定してる場合はそもそもDebugができない*3ので注意してください.使った感じではEclipseよりもQtの方がお手軽+デバッグもしやすくて良さげですが,プロジェクトの編集がしづらい面もあり,ここらへんは好みの問題かと.Vimがデフォルトで利用できるのが個人的には有難いですね!