Clion 使用Docker中的 ROS1开发环境

Clion 使用Docker中的 ROS1开发环境

当前使用的是Ubuntu 22.04,有些项目是在ROS1上,无法使用CLION进行开发。可以借助Docker实现。
假设当前有一个Docker是px4io/px4-dev-ros-melodic。

Docker中获取环境变量

  • 首先进入docker,
docker run -it --rm \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-e DISPLAY=${DISPLAY} \
-e LOCAL_USER_ID="$(id -u)" \
--name=ros1-melodic px4io/px4-dev-ros-melodic /bin/bash
  • 然后, source ~/ros1_ws/devel/setup.bash
  • 之后 printenv 得到输出如下,其中ROS相关变量如下,
LD_LIBRARY_PATH=/home/up2/ros1_ws/devel/lib:/opt/ros/melodic/lib
CMAKE_PREFIX_PATH=/home/up2/ros1_ws/devel:/opt/ros/melodic
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_VERSION=1
ROS_PYTHON_VERSION=2
PYTHONPATH=/home/up2/ros1_ws/devel/lib/python2.7/dist-packages:/opt/ros/melodic/lib/python2.7/dist-packages
ROS_PACKAGE_PATH=home/up2/ros1_ws/src/Sample/self_checking:/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=/home/up2/ros1_ws/devel/share/common-lisp
PATH=/opt/ros/melodic/bin:/usr/lib/ccache:/opt/gradle/gradle-6.3-rc-4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PKG_CONFIG_PATH=/home/up2/ros1_ws/devel/lib/pkgconfig:/opt/ros/melodic/lib/pkgconfig
ROS_DISTRO=melodic

CLION中Docker设置

  • 打开Clion - Settings - Build - Toolchains
  • 添加Docker, 选择一个Docker Image,然后打开Container Settings

在这里插入图片描述

  • 添加 Enviroment varibales把上面获取的环境变量依次添加
  • 源代码有需要也可以映射进来,因为自定义的ros package都是在src下,需要映射进来
    在这里插入图片描述
  • 最后记得在这里把Docker设置为默认,返回Editor刷新reload即可
    在这里插入图片描述
<think> 我们在之前讨论的基础上,用户现在明确要求获取在Ubuntu 22.04系统上配置CLion用于ROS 2开发的教程。根据用户提供的引用内容,我们可以整合以下步骤: 引用[1]提到使用CLion远程开发ROS2并运行调试,其中涉及创建环境安装脚本setup_env.sh,该脚本用于设置ROS2环境和工作空间环境。 引用[2]说明了ROS2 Humble的安装环境要求(Ubuntu 22.04)以及使用虚拟机安装的方法(但用户已经在Ubuntu 22.04上,所以可以忽略虚拟机部分)。 引用[3]虽然讲的是使用Docker中的ROS1,但思路类似,即设置环境变量和映射目录,但用户需求是ROS2,所以我们主要参考前两个引用。 因此,我们可以整理出以下步骤: 1. 安装ROS2 Humble(如果尚未安装) 2. 创建工作空间并构建(如果需要) 3. 配置CLion的远程开发环境(这里引用[1]提到使用远程开发,但用户可能是在本地开发,所以需要调整。实际上,CLion支持本地开发ROS,但需要正确设置环境) 4. 设置CLion的环境变量以加载ROS2环境 但是,注意引用[1]中使用了远程开发,而用户可能不需要远程开发?用户问题是在Ubuntu 22.04上配置CLion,所以我们可以理解为本地开发。然而,CLion本身并不原生支持ROS2的项目配置,因此通常的做法是使用自定义环境脚本来加载ROS2环境。 我们也可以参考引用[3]中关于Docker的部分,但用户没有要求Docker,所以我们可以忽略。 因此,教程步骤如下: 步骤1:安装ROS2 Humble 按照引用[2]的指引,在Ubuntu 22.04上安装ROS2 Humble。具体步骤可参考ROS2官方文档。 步骤2:创建工作空间(可选,如果已有工作空间可跳过) 例如,创建名为`ros_ws`的工作空间,并构建: ``` mkdir -p ~/ros_ws/src cd ~/ros_ws colcon build ``` 步骤3:安装CLion 从JetBrains官网下载并安装CLion。 步骤4:创建环境设置脚本 如引用[1]所述,创建一个环境设置脚本(如`setup_env.sh`),内容如下: ```bash #!/bin/bash source /opt/ros/humble/setup.bash # 如果有工作空间,请加载工作空间环境 source ~/ros_ws/install/local_setup.bash exec "$@" ``` 注意:将`~/ros_ws`替换为你的工作空间路径。 步骤5:配置CLion使用该环境脚本 - 打开CLion,进入设置(Settings)> 构建、执行、部署(Build, Execution, Deployment)> 工具链(Toolchains) - 在右侧,选择你的工具链(例如默认的Local),点击环境变量(Environment Variables)后的按钮,添加环境变量。 - 或者,更通用的做法是:在运行/调试配置(Run/Debug Configurations)中,编辑任意一个配置(比如你的ROS2节点运行配置),在“环境变量”一栏中,点击右侧的文件夹图标,然后选择“从脚本加载环境”(Load Environment From),然后选择上一步创建的`setup_env.sh`脚本。 - 但是,CLion并没有直接提供在工具链级别加载环境脚本的功能。因此,我们通常在每个运行配置中设置环境。 步骤6:创建运行配置 -CLion中打开你的ROS2包项目(假设你已经将工作空间的src目录打开为项目) - 编写一个简单的节点程序(如果还没有的话) - 创建一个新的运行配置:选择“CMake Application”,然后选择你要运行的可执行文件(注意:在ROS2中,节点编译后是可执行文件) - 在运行配置的“环境变量”中,选择从脚本`setup_env.sh`加载环境。 但是,这种方法在每次创建新的运行配置时都需要设置。另一种方法是修改CMakeLists.txt,但这不是必须的。 步骤7:调试 设置断点,然后使用调试运行配置即可。 然而,引用[1]提到的是使用CLion的远程开发功能,但用户是在本地Ubuntu22.04上,所以我们可以忽略远程开发部分。 但是,如果用户希望使用CLion的远程开发功能(例如,在远程服务器上开发),则还需要配置远程工具链。由于用户没有明确要求远程开发,我们这里只提供本地开发配置。 因此,完整的本地配置教程如下: 教程:在Ubuntu 22.04上配置CLion用于ROS2开发 1. 安装ROS2 Humble 参考官方文档:https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html 2. 创建工作空间(可选) 如果你还没有工作空间,可以创建一个: ```bash mkdir -p ~/ros_ws/src cd ~/ros_ws colcon build ``` 3. 安装CLion 从官网下载CLion:https://www.jetbrains.com/clion/download/#section=linux 使用以下命令解压并运行(假设下载的是tar.gz包): ```bash tar xzf CLion-*.tar.gz -C ~/ cd ~/clion-*/bin ./clion.sh ``` 按照安装向导完成安装。 4. 创建环境设置脚本 在任意位置(例如在用户主目录下)创建脚本文件`ros2_clion_env.sh`,内容如下: ```bash #!/bin/bash source /opt/ros/humble/setup.bash source ~/ros_ws/install/local_setup.bash # 如果有自己的工作空间则取消注释并修改路径 exec "$@" ``` 然后赋予执行权限: ```bash chmod +x ~/ros2_clion_env.sh ``` 5. 在CLion中配置环境 - 打开CLion,打开你的ROS2工作空间(例如`~/ros_ws/src`) - 等待CMake加载项目(可能会提示错误,因为环境变量还未设置) - 打开菜单:Run > Edit Configurations... - 点击左上角的“+”号,选择“CMake Application” - 在右侧的“Target”中选择你要构建的可执行文件(例如你的节点) - 在“Executable”中选择编译后的可执行文件(通常在工作空间的build目录下) - 在“Environment variables”栏,点击右侧的文件夹图标,选择“从脚本加载环境”(Load Environment From),然后选择刚才创建的`ros2_clion_env.sh`。 - 应用并关闭。 6. 构建和运行 - 使用CLion的构建功能(Build菜单)构建项目。 - 运行或调试配置好的运行配置。 注意:每次启动CLion时,如果打开的是ROS2项目,可能需要重新加载CMake项目(Tools > CMake > Reload CMake Project)以确保环境变量正确加载。 另外,也可以考虑在CLion的启动脚本中设置环境变量,但CLion启动时会启动自己的shell,因此通过运行配置加载环境脚本是更直接的方法。 引用说明: [^1]: 如何优雅的使用CLION远程开发ROS2并运行调试 [^2]: ROS 2(一)开发环境搭建(Ubuntu22.04、ROS2 Humble) [^3]: Clion 使用Docker中的 ROS1开发环境 生成相关问题: §§相关问题§§ 1. 如何解决CLion在加载ROS2项目时出现的找不到ROS2包的问题? 2. 除了使用环境脚本,还有其他方法在CLion中配置ROS2环境吗? 3. 如何在CLion中调试ROS2节点? 4. 如何配置CLion使用colcon构建ROS2项目? </think> ### 在 Ubuntu 22.04 上配置 CLion 用于 ROS 2 开发的教程 以下是完整的配置流程(基于 ROS 2 Humble): #### 步骤 1:安装基础环境 ```bash # 设置软件源 sudo apt update && sudo apt install -y curl gnupg lsb-release sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null # 安装 ROS 2 Humble sudo apt update sudo apt install -y ros-humble-desktop source /opt/ros/humble/setup.bash ``` #### 步骤 2:创建工作空间 ```bash mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build ``` #### 步骤 3:创建 CLion 环境脚本 ```bash # 创建环境加载脚本 echo '#!/bin/bash source /opt/ros/humble/setup.bash source ~/ros2_ws/install/local_setup.bash exec "$@" # 执行传入的命令' | tee ~/ros2_clion_env.sh > /dev/null chmod +x ~/ros2_clion_env.sh ``` #### 步骤 4:配置 CLion 1. **安装 CLion** 下载官方包或使用 snap: ```bash sudo snap install clion --classic ``` 2. **项目配置** - 打开 CLion → 创建新项目 → `ROS Workspace` - 设置工作空间路径:`~/ros2_ws` - 在 `Settings → Build, Execution, Deployment → Toolchains` 中添加环境变量: ``` PATH=/opt/ros/humble/bin:$PATH ``` 3. **运行/调试配置** - 创建新的 `Custom Build Application` 配置: - **Target**:选择 ROS 2 节点 - **Executable**:指定节点可执行文件路径 - **Environment variables**:点击文件夹图标 → `Load from file` → 选择 `~/ros2_clion_env.sh` #### 步骤 5:验证调试功能 创建测试节点: ```python # ~/ros2_ws/src/py_node/node.py import rclpy from rclpy.node import Node class TestNode(Node): def __init__(self): super().__init__('clion_test_node') self.get_logger().info("CLion调试成功!") def main(): rclpy.init() node = TestNode() rclpy.spin(node) if __name__ == '__main__': main() ``` 在 CLion 中设置断点并调试,观察日志输出[^1][^2]。 #### 常见问题解决 - **环境加载失败**:检查脚本权限 `chmod +x ~/ros2_clion_env.sh` - **包路径识别问题**:在 CLion 中执行 `Tools → CMake → Reset Cache and Reload Project` - **Docker 开发模式**:如需容器化开发,可参考 Docker 环境映射方法[^3] > 关键提示:每次启动 CLion 后,首次运行需通过环境脚本加载 ROS 2 路径,否则会出现包识别错误[^1]。 [^1]: 如何优雅的使用CLION远程开发ROS2并运行调试 [^2]: ROS 2(一)开发环境搭建(Ubuntu22.04、ROS2 Humble) [^3]: Clion使用Docker中的ROS1开发环境
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值