当前位置: 首页 > 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.dtcms.com/a/263324.html

相关文章:

  • [ C++ ] | unordered_map 底层实现原理
  • Linux-进程概念(1)
  • 亚马逊,塔吉特采购,测评防砍单封号的养号下单黄金法则
  • 华为云Flexus+DeepSeek征文 | Word办公软件接入华为云ModelArts Studio大模型,实现AI智能办公
  • 【C++指南】C++ list容器完全解读(三):list迭代器的实现与优化
  • Deploy StarRocks with Docker
  • ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
  • Deepoc 大模型在无人机行业应用效果的方法
  • Python函数参数实例练习--输出信息
  • 抗量子域名系统:全面的系统级研究
  • 前端领域的技术热点与深度解析
  • 对selenium进行浏览器和驱动进行配置Windows | Linux
  • [面试]手写题-Promise.all() Promise.race()
  • 博图SCL编程:结构体(STRUCT)使用详解与实战案例
  • HTML<span>元素详解
  • 安装bcolz包报错Cython.Compiler.Errors.CompileError: bcolz/carray_ext.pyx的解决方法
  • 条件运算符和逗号运算
  • Intel Fortran Compiler (ifx) 详细使用指南:新一代 Fortran 编译器在流体动力学模拟中的应用
  • 51单片机CPU工作原理解析
  • python环境快速搭建
  • 深入比较 Gin 与 Beego:Go Web 框架的两大选择
  • Spring Boot 统一功能处理:拦截器详解
  • 机器视觉检测系统的影响因素解析
  • Prompt 精通之路(七)- 你的终极 AI 宝典:Prompt 精通之路系列汇总
  • 《Building REST APIs with Flask》读后感
  • 打造现代Web应用的高效解决方案:Full Stack FastAPI模板
  • JVM 垃圾回收(GC)笔记
  • Nestjs框架: Nestjs 复杂企业应用场景架构设计分析
  • WPF中依赖属性和附加属性
  • API接口安全-2:签名、时间戳与Token如何联手抵御攻击