Comment configurer CLion pour ROS?

13

Comment puis-je configurer le C ++ IDE CLion pour afficher correctement la documentation et la complétion automatique lorsque je travaille avec ROS?

Jarno
la source

Réponses:

11
  1. Démarrez CLion à partir d'une ligne de commande avec votre espace de travail ROS d'origine (c'est-à-dire après l'appel source devel/setup.bash)
  2. Ouvrez CMakeLists.txt d'un projet et dites-lui de l'ouvrir en tant que projet plutôt qu'en tant que fichier.
  3. Ça y est, vous avez votre espace de travail intégré :)

Débogage:

  • Le débogage des fichiers construits (nœuds que vous parcourez rosrun) est facile, vous les exécutez normalement dans l'IDE
  • Le débogage des fichiers de lancement est plus compliqué, car ils ne peuvent pas être lancés par l'EDI. Vous pouvez lancer le fichier de lancement à partir de la ligne de commande, puis trouver le PID du nœud que vous souhaitez déboguer et y connecter le débogueur IDE ("Exécuter -> Attacher au processus local"). Bien sûr, cela est difficile à utiliser pour capturer les bogues d'initialisation.
  • Le débogage de nœuds qui sont des scripts shell ou des scripts dans des langues non prises en charge est impossible.

Il existe plusieurs autres étapes que vous pouvez effectuer pour approfondir l'intégration:

  • Définissez le chemin de génération de CMake dans "Build, ... -> CMake -> Chemin de génération" sur le répertoire de construction de votre espace de travail, afin que vous ne puissiez compiler qu'une seule fois dans l'EDI et que les résultats soient disponibles dans la console (sinon, vous aurez deux versions différentes, une en IDE et une en console). Malheureusement, jusqu'à ce que https://youtrack.jetbrains.com/issue/CPP-1887 soit corrigé, vous ne pouvez pas utiliser de variables dans le chemin de génération par défaut, donc la configuration de la disposition catkin nécessite un travail manuel.
  • Pour approvisionner automatiquement ROS lors du lancement de CLion, vous pouvez ajouter le sourcing à ~/.xsessionrc. Cela pourrait cependant avoir des conséquences inattendues. Si vous ne voulez pas faire cela, utilisez l'approche suivante.
  • Créez un lanceur de bureau qui lance CLion à partir du menu système (Dash, panneau de lancement, etc.) avec un environnement correct (si vous source ROS dans votre .bashrc): J'ai édité le fichier de bureau ~/.local/share/applications/jetbrains-clion.desktoppour ressembler à ce qui suit. Vous devez également vous assurer que le fichier n'est pas accessible en écriture pour vos scripts de mise à jour / boîte à outils Jetbrains, sinon ils le remplaceront à chaque mise à jour.

.

[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
  • Si vous utilisez la boîte à outils Jetbrains pour installer CLion (que vous devriez IMO), le chemin vers le binaire change à chaque mise à jour (jusqu'à ce que https://youtrack.jetbrains.com/issue/ALL-653 soit résolu), mais vous pouvez utilisez cette astuce pour toujours lancer la dernière version installée:

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

  • Installez le plugin de prise en charge Python pour pouvoir coder en C ++ et Python à partir de l'IDE unique.

Martin Pecka
la source
1
Alternativement, avec Jetbrains Toolbox à démarrage automatique, le fichier de bureau peut être modifié pour démarrer la boîte à outils avec bash et donc lors de l'ouverture de projets ou de CLion via l'application Jetbrains Toolbox, l'environnement de configuration sera également configuré.
Stefan Fabian
@StefanFabian Excellente idée. Pourriez-vous s'il vous plaît publier le chemin d'accès au fichier de bureau de la boîte à outils, qui est lancé au démarrage? Je ne savais même pas que les fichiers de bureau peuvent être lancés au démarrage :)
Martin Pecka
2
Sûr! Le fichier du bureau - si le démarrage automatique est activé dans les paramètres de la boîte à outils - doit se trouver dans ~/.config/autostart/jetbrains-toolbox.desktop. Vous devez simplement changer la ligne Exec={TOOLBOX-COMMAND}en Exec=/bin/bash -i -c "{TOOLBOX-COMMAND}". Cependant, je pense que l'application Toolbox écrase ce changement (peut-être à chaque fois qu'il démarre). Donc, je recommanderais de rendre ce fichier immuable en utilisant sudo chattr +i jetbrains-toolbox.desktop.
Stefan Fabian
6

L'intégration de CLion avec ROS est en fait simple et fonctionne dès le départ si l'on sait comment le faire:

  1. Avec votre console, accédez à votre espace de travail ROS et sourcez le setup.bashfichier correspondant.
  2. Accédez au srcrépertoire de votre espace de travail.
  3. Démarrez CLion à partir de la console à partir de votre srcrépertoire.
  4. Fermez tous les projets ouverts dans CLion et sélectionnez Import Project from Sources
  5. Sélectionnez UNIQUEMENT le srcrépertoire de votre espace de travail pour l'importation.
  6. Si CLion se plaint d’être CMakeList.txtdéjà existant, cliquez simplement surOpen Project
  7. CLion construira des symboles pendant plusieurs minutes, alors vous devriez être prêt à partir.

Si cela ne fonctionne toujours pas, assurez-vous de supprimer tous les .ideafichiers de votre espace de travail, qui ont peut-être été créés lors de précédentes tentatives d'utilisation de CLion avec ROS.

Jarno
la source
Pourriez-vous indiquer comment exécuter des programmes avec des fichiers de lancement et prendre en charge le débogage avec clion?
Eric
J'utilise CLion vraiment juste pour écrire du code. Pour le reste, j'utilise les outils de ligne de commande ROS. Je ne sais pas si vous pouvez également configurer CLion pour qu'il fonctionne avec ROS à cet égard.
Jarno
0

Configurer CLion avec ROS

est une belle description de ROS Answers.

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

Max
la source
Bienvenue dans Robotics Max. Merci pour votre réponse, mais nous préférons que les réponses soient autonomes dans la mesure du possible. Les liens ont tendance à pourrir, donc les réponses qui s'appuient sur un lien peuvent être rendues inutiles si le contenu lié disparaît. Si vous ajoutez plus de contexte à partir du lien, il est plus probable que les gens trouveront votre réponse utile.
Mark Booth
0

Vous pouvez également exécuter des fichiers roslaunch directement à partir de CLION comme mentionné ici: http://wiki.ros.org/IDEs#CLion cependant quand je démarre mes fichiers de lancement dans l'EDI, j'obtiens l'erreur suivante: roslaunch: erreur: aucune telle option: --master-logger-level

Apparemment, le plugin démarre le fichier de lancement via:

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

Cependant, je n'ai pas spécifié ce paramètre moi-même. Quelqu'un sait-il pourquoi il a été introduit?

Franco
la source
0

Nouvelle approche et plus simple:

  1. Installez le ROS-Robot Operating Systemplugin sur CLion:

    vous devez ouvrir les paramètres (à partir du menu Fichier); puis dans le panneau de gauche, sélectionnez le plugin afin d'afficher le panneau de plugins sur le côté droit et sélectionnez l'onglet marketplace; puis recherchez le plug-in ROS-Robot Operating System et installez-le.

  2. Importez votre ros_workspace par le plugin installé dans le menu Fichier:

    Pour importer un espace de travail existant, vous devez utiliser le menu Importer l'espace de travail ROS, en sélectionnant le dossier de l'espace de travail. Dans ce cas, le plugin recherchera à partir des versions ROS configurées et il configurera le projet afin de résoudre la dépendance ROS.


Référence

Benyamin Jafari
la source