ROSのCLionのセットアップ方法


13

ROSを使用しているときにドキュメントと自動補完を正しく表示するために、C ++ IDE CLionをセットアップするにはどうすればよいですか?

回答:


11
  1. ソースROSワークスペースを使用してコマンドラインからCLionを起動します(呼び出し後source devel/setup.bash
  2. プロジェクトのCMakeLists.txtを開き、ファイルとしてではなくプロジェクトとして開くように指示します。
  3. これで、ワークスペースが統合されました:)

デバッグ:

  • ビルドされたファイル(実行するノード)のデバッグrosrunは簡単で、通常はIDEで実行します。
  • IDEで起動できないため、起動ファイルのデバッグはより複雑です。コマンドラインから起動ファイルを起動し、デバッグするノードのPIDを見つけて、IDEデバッガーをそれに接続します(「実行->ローカルプロセスにアタッチ」)。もちろん、これは初期化バグをキャプチャするために使用するのは困難です。
  • シェルスクリプトまたはサポートされていない言語のスクリプトであるノードをデバッグすることはできません。

統合を深めるために、さらにいくつかの手順を実行できます。

  • 「ビルド、...-> CMake->生成パス」でCMake生成パスをワークスペースのビルドディレクトリに設定します。これにより、IDEで1回だけコンパイルし、コンソールで結果を使用できます(それ以外の場合は、 2つの異なるビルド、1つはIDE、もう1つはコンソール)。残念ながら、https://youtrack.jetbrains.com/issue/CPP-1887が修正されるまで、デフォルトの生成パスで変数を使用できないため、catkinレイアウトを設定するには手作業が必要です。
  • CLionの起動時にROSを自動的にソースするには、ソースをに追加できます~/.xsessionrc。ただし、これは予期しない結果になる可能性があります。そうしたくない場合は、次のアプローチを使用します。
  • 正しい環境でシステムメニュー(ダッシュ、ランチャーパネルなど)からCLionを起動するデスクトップランチャーを作成します(あなたがROSをソースしている場合.bashrc):デスクトップファイル~/.local/share/applications/jetbrains-clion.desktopを次のように編集しました。また、アップデータースクリプト/ Jetbrainsツールボックスに対してファイルが書き込み可能でないことを確認する必要があります。書き込み可能でない場合、更新ごとに上書きされます。

[Desktop Entry]
Version=1.0
Type=Application
Name=CLion
Icon=/home/peci1/bin/jetbrains/apps/CLion/.icon.svg
Exec=bash -i -c "/path/to/clion/bin/clion.sh" %f
Comment=A smart cross-platform IDE for C and C++
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-clion
  • Jetbrainsツールボックスを使用してCLionをインストールする場合(IMOを使用する必要があります)、バイナリパスは更新ごとに変更されますhttps://youtrack.jetbrains.com/issue/ALL-653が解決されるまで)が、このトリックを使用して、常にインストールされている最新バージョンを起動します。

    Exec=bash -i -c "$(ls -td /path/to/jetbrains/apps/CLion/ch-0/*/ | head -n1)/bin/clion.sh" %f

  • Pythonサポートプラグインをインストールして、単一のIDEからC ++とPythonの両方でコーディングできるようにします。


1
または、自動起動のJetbrains Toolboxを使用すると、bashでツールボックスを起動するようにデスクトップファイルを変更できるため、Jetbrains Toolboxアプリを使用してプロジェクトまたはCLionを開くと、環境もセットアップされます。
ステファンファビアン

@StefanFabian素晴らしいアイデア。起動時に起動されるツールボックスのデスクトップファイルへのパスを投稿してください。デスクトップファイルを起動時に起動できることすら知りませんでした:)
Martin Pecka

2
承知しました!ツールボックスの設定で自動起動が有効になっている場合、デスクトップファイルはにあります~/.config/autostart/jetbrains-toolbox.desktop。行Exec={TOOLBOX-COMMAND}をに変更するだけExec=/bin/bash -i -c "{TOOLBOX-COMMAND}"です。ただし、ツールボックスアプリはこの変更を上書きすると思います(おそらく起動するたびに)。そのため、を使用してそのファイルを不変にすることをお勧めしますsudo chattr +i jetbrains-toolbox.desktop
ステファンファビアン

6

CLionとROSの統合は実際には簡単であり、方法を知っていればすぐに使用できます。

  1. コンソールを使用して、ROSワークスペースに移動し、それぞれのsetup.bashファイルを入手します。
  2. srcワークスペースのディレクトリに移動します。
  3. srcディレクトリからコンソールからCLionを起動します。
  4. CLionで開いているプロジェクトをすべて閉じて、選択します Import Project from Sources
  5. インポートするワークスペース内のディレクトリのみを選択srcします。
  6. CLionがCMakeList.txt既に存在することについて不平を言う場合、単にクリックOpen Project
  7. CLionは数分間シンボルを作成します。これで準備が整います。

それでも動作しない場合.ideaは、ワークスペースからすべてのファイルを削除してください。これは、ROSでCLionを使用する以前の試みで作成された可能性があります。


起動ファイルを使用してプログラムを実行する方法と、clionを使用してデバッグをサポートする方法を含めてください。
エリック

私は本当にコードを書くためだけにCLionを使用しています。残りの部分では、ROSコマンドラインツールを使用します。この点でも、ROSで動作するようにCLionを設定できるかどうかはわかりません。
ヤルノ

0

ROSでCLionをセットアップする

ROS Answersの素晴らしい説明です。

https://answers.ros.org/question/284786/setup-clion-with-ros/


Robotics Max へようこそ。回答いただきありがとうございますが、可能な限り自己完結的な回答を希望します。リンクは腐敗する傾向があるため、リンクされたコンテンツが消えると、リンクに依存する回答が役に立たなくなる可能性があります。リンクからより多くのコンテキストを追加すると、人々があなたの答えを役に立つと思う可能性が高くなります。
マークブース

0

ここに記載されているように、CLION内から直接roslaunchファイルを実行することもできます:http ://wiki.ros.org/IDEs#CLion ただし、IDEで起動ファイルを起動すると、次のエラーが表示されます。オプション:--master-logger-level

どうやらプラグインは次の方法で起動ファイルを開始します:

/opt/ros/kinetic/bin/roslaunch --master-logger-level=info FOLDERNAME/FILENAME

しかし、私はこのパラメーターを自分で指定しませんでした。なぜ導入されたのか誰にもわかりますか?


0

新しくて簡単なアプローチ:

  1. ROS-Robot Operating SystemCLionにプラグインをインストールします。

    [ファイル]メニューから[設定]を開く必要があります。次に、左側のパネルからプラグインを選択して右側にプラグインパネルを表示し、マーケットプレイスタブを選択します。次に、ROS-Robot Operating Systemプラグインを検索してインストールします。

  2. [ファイル]メニューのインストール済みプラグインによってros_workspaceをインポートします。

    既存のワークスペースをインポートするには、ROSワークスペースのインポートメニューを使用して、ワークスペースフォルダーを選択する必要があります。この場合、プラグインは構成済みのROSバージョンから検索し、ROS依存関係を解決するためにプロジェクトをセットアップします。


参照

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.