CLionでROSC++開発
はじめに
私はJetBrainsのエディタを愛用していますが、roscppをCLionで開発する方法というのが意外と記事として残っていなかったので、今回はUbuntuでROS開発をJetBrainsのCLionで行う方法を紹介します。
事前準備
Ubuntu、そしてUbuntuのバージョンにあうROSのバージョンを予めインストールしておいてください。
CLionインストール
https://www.jetbrains.com/clion/
こちらのサイトからソフトウェアをダウンロードしましょう。
そして、ダウンロードしたファイルを解凍すれば完了です。
アイコンの設定
端末からCLionを実行する方法でもいいですが、いちいち端末を立ち上げるのが億劫なので、ランチャーにアイコンを設定します。アイコンの設定はこちらの記事を参考にしてください。
ただし、このままではROS特有のライブラリなどがCLionで認識されないので、以下の部分を変更する必要があります。
Exec=bash -c "/path/to/your/clion/bin/clion.sh %f"
# 以下の行を追記する(CLion, ROS Melodic の場合)
Exec=bash -c "source /opt/ros/melodic/setup.bash; source /path/to/your/catkin_ws/devel/setup.bash; /path/to/your/pycharm/bin/clion.sh" %f
ちなみにこれはPycharmでROS開発でも必要な設定になります。
CmakeLists.txtの設定
CLionはプロジェクトを読み込むときにCMakeLists.txtを参照しています。そのため、パッケージ1つだけ読み込んで開発するときには、パッケージ内にあるCMakeLists.txtを開けば問題なく開発ができます。しかし、ワークスペースまるごとをプロジェクトとして読み込むには少しだけ手間をかける必要があります。
catkin_ws/srcの中にCMakeLists.txtがない場合
rosのmelodicからsrcの中にCMakeLists.txtのシンボリックリンクが生成されなくなったようです(要確認)。CLionでプロジェクトを読み込む際にはそのCMakeLists.txtが必要になります。そこで、以下のコマンドでシンボリックリンクを生成し、ROSのライブラリなどを読み込めるようにします。
cd ~/catkin_ws/src #rosのワークスペースのsrcに移動
sudo ln -s /opt/ros/melodic/share/catkin/cmake/toplevel.cmake CMakeLists.txt
rosメッセージのincludeパス設定
さらにrosで独自にメッセージを作成した場合、パスを設定しなければCLionが正常に認識せずエラーを吐きます。そこで、catkin_ws/srcの中にあるCMakeLists.txtにincludeパスを追記します。
cd ~/catkin_ws/src #rosのワークスペースのsrcに移動。
sudo gedit CMakeLists.txt #root権限で開く。gedit以外のエディタでも可
とりあえず以上のコマンドでCMakeLists.txtを開きます。そして以下の一文を追記します。
include_directories(/home/<USER>/catkin_ws/devel/include)
<USER>の部分は自分のユーザー名に置換してください。
プロジェクトの読み込み
あとは特に難しいことはなく...
1. CLionのメニューの"開く"
2. catkin_ws/srcの中にあるCMakeLists.txtを選択
3. "プロジェクトとして読み込み"
という流れでCLionでROS開発ができるようになります!
参考サイト
Author And Source
この問題について(CLionでROSC++開発), 我々は、より多くの情報をここで見つけました https://qiita.com/HiroRittsu/items/cdcfb4a5925f271c857a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .