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

发布于:2025-07-01 ⋅ 阅读:(25) ⋅ 点赞:(0)

一、前言

近日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.json

10 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_msgs

27 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少少~