搭建ROS & CLion开发环境

2023-11-12

翻译自http://wiki.ros.org/IDEs#CLion,有小改动
更新:搭建ROS2 & CLion开发环境

1. 插件

目前CLion有三个积极维护的ROS插件:

  • Hatchery
  • ROS-Robot Operating System
  • ROS Support

2. 使用ROS-Robot Operating System插件

*注意:我使用的CLion版本为2020.3,该版本可以兼容ROS-Robot Operating System插件,后续新版本CLion可能出现与插件不兼容的情况,在Marketplace中无法搜索到该插件。

2.1 安装

打开CLion。
File | Settings | Plugins | Marketplace,搜索ROS-Robot Operating System安装。
重启CLion。

2.2 设置插件

安装之后,在File | Settings | Build, Execution, Deployment中出现ROS config配置,可以使用它来配置安装在计算机中的ROS版本。插件会自动找到安装在默认位置/opt/ros中的版本,所以通常插件已经准备好使用了。如果在不同的位置中安装了ROS,请按带有ROS图标的按钮以将其添加到插件中。

2.3 使用插件

2.3.1 创建新的工作空间

File | New Project菜单将显示新的选项:ROS workspace。你需要从中选择一个ROS版本。

2.3.2 导入已有的工作空间

File | Import ROS workspace,选择工作空间。在这种情况下,插件将根据选定的ROS版本对项目进行配置。

2.4 运行和调试节点

CLion自动为项目中的每个CMake target创建Run/Debug配置。对于自动创建的配置,CLion直接从CMakeLists.txt的target描述中获取target和executable。要查看、更改和创建更多配置,点击Run | Edit configurations
你可以通过各种Build操作同时或单独build/rebuild target。选择所需的配置,并将其作为CLion的常规application(或者一个单元测试)进行运行或调试。注意,你可能需要提前在终端中运行roscore。

2.5 运行launch文件

可以使用run/debug配置窗口运行.launch文件。在这种情况下,当执行launch文件时,插件将环境设置为你在执行source devel/setup.bash之后应该拥有的环境。

3. 原生CLion的支持(不使用ros插件)

(一个更详细一点的教程可见这里。)

3.1 启动CLion

sh PATH_TO_CLION/bin/clion.sh

3.2 打开/导入项目

方法一:
File | Open 在工作区的src目录中选择CMakeLists.txt文件
如果你正在使用catkin_tools,并且工作区中没有顶级的CMakeLists.txt,那么请使用特定包的CMakeLists.txt并“Open as project”。
方法二:
File | Import 选择工作区或功能包的src目录来导入项目。

CLion会将你的ROS项目视为常规的CMake项目。

3.3 配置build路径

默认情况下,CLion将build输出放在cmake-build-debug或cmake-build-release目录中,这些目录是自动创建的。对于ROS开发,这意味着在CLion和控制台中有两个不同的build版本。
要让CLion和控制台共享同一个build,你需要将CLion的build路径指向catkin工作区目录。进入File | Settings | Build, Execution, Deployment | CMake,并更改两个字段:

  • Build directory字段:改为workspace_folder/build
  • CMake options字段:追加-DCATKIN_DEVEL_PREFIX:PATH=workspace_folder/devel

3.4 运行和调试节点

CLion自动为项目中的每个CMake target创建Run/Debug配置。对于自动创建的配置,CLion直接从CMakeLists.txt的target描述中获取target和executable。要查看、更改和创建更多配置,点击Run | Edit configurations
你可以通过各种Build操作同时或单独build/rebuild target。选择所需的配置,并将其作为CLion的常规application(或者一个单元测试)进行运行或调试。注意,你可能需要提前在终端中运行roscore。

3.5 使用launch文件

launch文件不能在CLion中直接执行,但是可以使用XML语法高亮显示和完善它们,还可以将CLion debugger附加到运行的节点上。

  • 将launch文件作为XML文件进行编辑,包含代码突出显示和导航功能:File | Settings | Editor | File Types | Recognized File Types选择XML,在File Name Patterns列表中添加*.launch扩展名。
  • 将debugger附加到运行节点:从命令行运行launch文件,并获得所需节点的名称或PID。Run | Attach to Process选择该节点。调试过程将像往常一样启动。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搭建ROS & CLion开发环境 的相关文章

随机推荐

  • 蓝桥杯打卡Day7

    文章目录 阶乘的末尾0 整除问题 一 阶乘的末尾0IO链接 本题思路 由于本题需要求阶乘的末尾0 由于我们知道2 5 10可以得到一个0 那么我们就可以找出2的数和5的数 但是由于是阶乘 所以5的数量肯定是小于2的数量 因此我们只需要知道5
  • Python中configparser读取配置

    Python中的configparser模块可以帮助开发者轻松地读取和写入配置文件 配置文件通常用于存储应用程序的设置 例如数据库连接信息 API密钥等等 在本篇博客中 我们将介绍如何使用configparser模块来读取和写入配置文件 读
  • leetcode No1833 雪糕的最大数量

    题目 题解 贪心 排序 贪心 顾名思义就是贪到最多的 本题要求一定数额的钱 要获得最多数量的雪糕 那以我们平常人的思维去买 就是 先买最便宜的 然后再买次便宜的 因此我们可以先将数组排序 排序后从头开始遍历 一直算到前i个雪糕价钱之和大于c
  • 高效素数判断

    素数是指在大于1的自然数中 除了1和它本身以外不再有其他因数的自然数 那么 对于任意数N 判断其是否是素数 就需要从 2 N 一一枚举整除判断 若都不能整除 则N为素数 public static boolean isprime int n
  • 魔改并封装 YoloV5 Version7 的 detect.py 成 API接口以供 python 程序使用

    文章目录 Introduction Section 1 起因 Section 2 魔改的思路 Section 3 代码 Part 1 参数部分 Part 2 识别 API Part 3 完整的 DetectAPI py Part 4 修改
  • 免费商品信息查询接口(条形码)

    最近公司有一个需求 扫描商品条形码显示商品信息 原以为国内应该会免费提供接口 理想总是美好的 现实都是残酷的 在阿里云 京东等API开放平台找了一番 基本都是按次调用收费 公司的需求每位用户一天可能多次调用接口 这样一算 成本太高 既然没有
  • thrift介绍及应用(二)—简单应用

    原文 http blog csdn net guxch article details 12162131 六 一个最简单的实例 Thrift文件 demo thirft 来自官网 如下 plain view plain copy struc
  • 力扣160链表相交(c++版)

    力扣160链表相交 c 力扣题目链接 思路 如果两个链表相交 又都不存在环 那么不难想象这两个链表共同构成了一个Y型 相交部分全部都相同 两链表交点处指针相等 声明指针A指向链表A的头结点 指针B指向链表B的头结点 我们求出两个链表的长度
  • 【基础】创建react脚手架

    React day01 Hello world 一 升级node 1 进入官网 https nodejs org en 2 重新下载最新版本 3 重新安装 一直选择next 既会被覆盖 4 输入 node v 查看最新版本 注 window
  • vue项目中用 cdn 优化

    在我们写项目中 优化问题是不容忽视的 尤其是首屏优化更是重中之重 这里介绍两种方法优化方法 cdn和异步加载 异步请看 http blog csdn net gang456789 article details 78224751 1 cdn
  • Fiddler 八个实用技巧

    目录 前言 1 双击Session时 使响应页始终显示到 json tab页 使请求页始终显示到 webform tab页 2 显示每个Session 的请求IP地址 3 修改响应Header中的Content Type 4 右键sessi
  • 2023AE软件、Adobe After Effects安装下载教程

    2023AE软件是一款由Adobe公司开发的视频编辑软件 也被称为Adobe After Effects 它在广告 电影 电视和网络视频等领域广泛应用 用于制作动态图形 特效 合成和其他视觉效果 该软件支持多种视频和音频文件格式 具有丰富的
  • mybatis增删改查

    MyBatis 是一款优秀的持久层框架 它支持定制化 SQL 存储过程以及高级映射 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息 将接口和
  • C语言第五章第3节用do...while语句实现循环学习导案

    课 题 5 3 用do while语句实现循环 课时安排 2课时 课 型 新授 学 习目标 掌握do while循环语句的一般形式 掌握do while循环语句的执行过程 掌握do while语句和while语句的区别 重点 do whil
  • STM32F4 IAP实现总结

    目录 IAP相关 IAP概念 IAP与ICP ISP的区别 STM32F4的启动模式 FLASH相关 STM32F4 FLASH简介 STM32的内部闪存组织架构和其启动过程 应用IAP时的FLASH分配 IAP工程在Keil中的设置 跳转
  • 通过深度学习实现安全帽佩戴的检测

    北京 上海巡回站 NVIDIA DLI深度学习培训 2018年1月26 1月12日 NVIDIA 深度学习学院 带你快速进入火热的DL领域 阅读全文 gt
  • 广度优先遍历(邻接表,邻接矩阵)

    广度优先遍历又称为广度优先搜索 简称BFS 如果说图的深度优先遍历 图的深度优先遍历相关内容 图的深度优先遍历 类似树的前序遍历 那么图的广度优先遍历就类似于树的层序遍历 具体遍历过程如下图所示 就如上面的第三个图上所编写的序号进行遍历 我
  • vue axios请求设置content-type无效

    vue admin template开发中在request请求中设置了Content type 但是在在浏览器中查看请求主体并没有Content type service interceptors request use config gt
  • Python刷题-6

    1 下面哪个不是Python合法的标识符 B A int32 B 40XL C self D name python中的标识符 1 第一个字符必须是字母表中字母或下划线 2 标识符的其他的部分由字母 数字和下划线组成 3 标识符对大小写敏感
  • 搭建ROS & CLion开发环境

    翻译自http wiki ros org IDEs CLion 有小改动 更新 搭建ROS2 CLion开发环境 1 插件 目前CLion有三个积极维护的ROS插件 Hatchery ROS Robot Operating System R