当前位置: 首页 > news >正文

机器人仿真(1)Ubuntu24.04下CLion的ROS2开发环境配置

目录

  • 一、前言
  • 二、配置要求
    • 安装ROS2
    • 安装CLion
  • 三、配置步骤
  • 四、后记

一、前言

近日CLion已开放非商用免费使用。相比教程中常用的VSCode,CLion在自动补全、调试和环境变量配置等方面表现更为出色。不过截至本文撰写时,CLion官网仅提供了Windows系统下的ROS2支持配置方案(ROS2 setup tutorial),需要通过--cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON选项导出编译命令,再手动加载和添加编译目标,操作较为繁琐。为此,我尝试采用顶层CMakelists方案来解决这一问题,最终成功打造了流畅的CLion+ROS2开发环境。

二、配置要求

安装ROS2

ROS2的安装已经有许多博客详细介绍,博主最常使用的安装方式是鱼香ROS一键安装,具体参考:动手学ROS2-3.动手安装ROS2

安装CLion

CLion的安装参考Jetbrains官网即可:Download CLion,官网为Ubuntu提供了命令行安装sudo snap install clion --classic,但是博主之前snap安装的CLion有很多bug,可能是对Ubuntu 24.04支持不好,所以仍然建议下载.tar.gz然后配合alias命令使用。

我的CLion安装路径如下

 ~/Softwares ------------------------------------------------------- 16:15:58 
> pwd
/home/star/Softwares~/Softwares ------------------------------------------------------- 16:15:59 
> tree -L 3 clion
clion
└── CLion-2025.1.2└── clion-2025.1.2├── bin├── build.txt├── help├── Install-Linux-tar.txt├── jbr├── lib├── license├── modules├── plugins└── product-info.json10 directories, 3 files

~/.zshrc中添加如下代码

alias clion="/home/star/Softwares/clion/CLion-2025.1.2/clion-2025.1.2/bin/clion"

这样就可以通过clion .的方式直接从命令行将一个目录打开为CLion项目了。

三、配置步骤

以博主的工作空间为例,一个ROS2的工作空间结构如下,可以发现相比于ROS1,ROS2的工作空间没有顶层的CMakeLists.txt,因此无法像CLion配置ROS1一样通过顶层的CMakeLists.txt管理整个工作空间。

├── build
│   ├── ament_cmake_environment_hooks
│   ├── ament_cmake_index
│   ├── ament_lint_cmake
│   ├── ament_xmllint
│   ├── CMakeFiles
│   ├── decomp_ros2_msgs
│   ├── decomp_ros2_utils
│   ├── decomp_util
│   ├── log
│   ├── poly_planner2
│   ├── quadrotor_msgs
│   └── Testing
├── install
│   ├── poly_planner2
│   └── quadrotor_msgs
├── log
│   ├── build_2025-06-30_14-37-21
│   ├── build_2025-06-30_14-37-52
│   ├── build_2025-06-30_14-43-14
│   ├── latest -> latest_build
│   └── latest_build -> build_2025-06-30_14-43-14
└── src├── DecompROS2├── poly_planner2└── quadrotor_msgs27 directories

那么我们可不可以通过手动引入CMakeLists.txt来管理整个工作空间呢?答案是肯定的,在Github上我找到了答案,可以参考:kai-waang/colcon-toplevel-cmake,具体操作如下

  1. 克隆上述仓库到/opt/ros/scripts/cmake
sudo git clone https://github.com/kai-waang/colcon-toplevel-cmake /opt/ros/scripts/cmake
  1. 切换到工作空间下
cd ~/Workspaces/px4_ws # 此处替换为自己的工作空间
  1. 将刚才克隆的仓库的toplevel.cmake拷贝到工作目录顶层(和src/同级)
cp /opt/ros/scripts/cmake/toplevel.cmake ./CMakeLists.txt
  1. 编译工作空间,从命令行启动CLion
colcon build	# 这一步是为了生成 install/setup.zsh
clion .
  1. 如果是第一次用CLion打开这个工作空间,会弹出下面的窗口,点击OK即可
    在这里插入图片描述
  2. 进入 Settings > Build, Execution, Deployment > ToolChains,在Environment file中选择当前工作空间下的install/setup.zsh
    在这里插入图片描述
  3. 进入 Settings > Build, Execution, Deployment > CMake,在Build directory中输入build
    在这里插入图片描述
  4. 通过修改顶层的CMakeLists.txt,可以控制只编译某几个包,类似于colcon build --packages-select xxx ,我的顶层的CMakeLists.txt修改如下:
cmake_minimum_required(VERSION 3.14)
project("PROJECT_NAME")include("/opt/ros/scripts/cmake/colcon.cmake")# only for clion highlighting and analysis
colcon_add_subdirectories(BUILD_BASE "${PROJECT_SOURCE_DIR}/build"BASE_PATHS "${PROJECT_SOURCE_DIR}/src/"--packages-select decomp_ros2_msgs quadrotor_msgs
)
  1. Reload CMake Project,可以看到如下的输出。
    在这里插入图片描述
    同时可以在Run/Debug Configuration下可以看到这个包下面所有的build targets,接下来就可以正常编译、运行和调试了!

四、后记

使用顶层CMakeLists带来了便捷智能的开发体验,但是不能存在同名的build targets,如果需要使用--cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON,我已经在JetBrains官网反馈了Ubuntu下教程的缺失问题,虽然对于CLion熟练用户来说看着Win的教程也可以完成配置,但是还是希望他们能够尽快给出更好的解决方案。

最后祝大家编程愉快,idea多多,bug少少~

http://www.lryc.cn/news/578198.html

相关文章:

  • C++ 快速回顾(五)
  • 接口测试之接口关联
  • OpenCV CUDA模块设备层----- 正切(tangent)运算函数tan()
  • 一文讲清楚React中类组件与函数组件的区别与联系
  • C/C++ 使用rapidjson库 操作Json格式文件(创建、插入、解析、修改、删除)
  • 【2025最新】Ubuntu22.04 安装 MySQL8.0 教程
  • 零成本接入+企业级部署:2025年AI大模型实战指南
  • Linux云计算基础篇(2)
  • 对称非对称加密,https和http,https通讯原理,Charles抓包原理
  • 三态门Multisim电路仿真——硬件工程师笔记
  • 大模型在多发性硬化预测及治疗方案制定中的应用研究
  • Python 安装使用教程
  • 探索未来AI的无限可能:使用oTTomator Live Agent Studio平台上的开源AI代理!
  • JSON-LD 开发手册
  • 衡石科技chatbot分析手册--钉钉数据问答机器人配置
  • 衡石科技使用手册-企业即时通讯工具数据问答机器人用户手册
  • java中agent的作用
  • 免费文件管理 智能转换GC-Prevue:PDF 转 Word 多种格式 一键完成
  • 云手机主要是指什么?
  • 纯前端本地文件管理器(VSCode风格)(浏览器对本地文件增删改查)
  • DAY 45 Tensorboard使用介绍
  • 2 大语言模型基础-2.2 生成式预训练语言模型GPT-2.2.2 有监督下游任务微调-Instruct-GPT强化学习奖励模型的结构改造与维度转换解析
  • 高效读取文件中指定行段的两种方法
  • 矩阵方程 线性代数
  • EA自动交易完全指南:从策略设计到实盘部署
  • 区块链技术有哪些运用场景?
  • CppCon 2018 学习:A Little Order! Delving into the STL sorting algorithms
  • 《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》
  • mkyaffs2img 的 命令行工具的编译
  • Dubbo3高并发控制实战技巧