ROS2 设置教程
ROS2 是 ROS(机器人操作系统)的最新版本,它是一组为机器人应用设计的库和工具。
本教程介绍如何使用 CLion 作为 IDE 来开发使用 colcon 构建的 ROS2 应用程序。 如果您正在使用较旧的 ROS 发行版,该版本使用 catkin 构建工具,请参考 之前的教程。
以下说明展示了在 Windows 上的以下操作:创建 ROS2 工作区,将其作为编译数据库项目在 CLion 中打开,构建、运行/调试包,添加另一个包以及重建工作区。
创建工作空间
我们将以官方的 简单发布者和订阅者(C++)指南为例。
以管理员模式打开终端。
Source ROS2 安装。 在我们的案例中,命令是
call C:\dev\ros2\ros2-windows\local_setup.bat为新工作区创建一个目录并进入该目录
md \dev_ws\src cd \dev_ws\src创建一个 publisher-subscriber 包
ros2 pkg create --build-type ament_cmake cpp_pubsub按照以下 步骤获取源文件, CMakeLists.txt 和 package.xml ,直到构建为止。
此时,我们有以下文件夹结构:
在终端中构建工作区并生成编译数据库
为了能够在 CLion 中打开 ROS2 工作区,我们将使用 JSON 编译数据库 ,并通过 CMAKE_EXPORT_COMPILE_COMMANDS CMake 标志生成它。
此选项仅在 CMake 的 Makefile 和 Ninja 生成器中受支持,因此我们还需要使用 -G 在生成器之间切换。
在最初 source ROS2 安装的同一终端中,导航到工作区级别的文件夹(在我们的案例中为 dev_ws )并运行
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja构建完成后,请确保 dev_ws\构建 包含一个 compile_commands.json 文件。 如果文件不存在,请确保您的 colcon版本支持生成工作区级别的编译数据库(请参阅此 问题)。
在已 source 的环境中启动 CLion
在同一终端中,source 工作区的设置文件:
call install/setup.bat接下来,从同一个 shell 启动 CLion。 有关更多信息,请参阅 命令行界面。
例如,在使用 Toolbox 的情况下,您可以创建一个 启动 IDE 的脚本。 在我们的案例中,它位于 C:\IDE_shell_scripts 。
cd C:\IDE_shell_scripts\ clion结果是,CLion 将在已准备好的 ROS2 环境中启动。
在 CLion 中打开工作区
在 CLion 中,从主菜单调用 并选择顶级 构建 目录中的 compile_commands.json 文件:

点击 作为项目打开:

检查项目是否成功加载:

更改项目根目录
默认情况下,CLion 将包含 compile_commands.json 文件的目录视为项目根目录。 在我们的案例中,它是 构建 目录。 在项目树中,实际的源文件被标记为外部文件:

为了获得正确的项目结构,我们需要将项目根目录设置为实际的工作区目录。
从主菜单调用 并选择工作区目录(在我们的案例中为 dev_ws )。
检查项目视图中的更改:

此时,所有 CLion 的 编辑功能都完全可用于工作区的源代码。
如何构建包
为了在 CLion 中构建并启动包,我们将为 colcon build 期间实际执行的 CMake 命令创建一个 自定义构建目标 ,然后为该目标创建一个 自定义应用程序配置。
1. 为 'colcon 构建' 命令创建脚本
导航到构建日志目录。 在我们的案例中,它是 C:\dev_ws\log\latest_构建\cpp_pubsub 。 打开最新构建的 command.txt 文件。
将命令复制到另一个文件中并将其修改为以下内容:
"C:\Program Files\CMake\bin\cmake.EXE" C:\dev_ws\src\cpp_pubsub -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -DCMAKE_INSTALL_PREFIX=C:\dev_ws\install\cpp_pubsub "C:\Program Files\CMake\bin\cmake.EXE" --build C:\dev_ws\build\cpp_pubsub -- -j8 -l8 "C:\Program Files\CMake\bin\cmake.EXE" --install C:\dev_ws\build\cpp_pubsub将文件保存为 .bat 脚本。 在我们的示例中,它被称为 cmake_commands.bat 并放置在 c:\dev_ws\src\cpp_pubsub\ 中。
2. 创建自定义构建目标
在 CLion 中,转到 并点击
以添加新目标。
将 工具链 设置为 Visual Studio。 有关在 CLion 中配置 Visual Studio 工具链的更多信息,请参阅 Windows 教程。
点击 构建 字段旁边的三点图标。 然后点击
以添加外部项。
在 程序 字段中,选择新创建的脚本。 将 工作目录 设置为包的构建目录。

保存自定义目标。
3. 为自定义构建目标创建运行/调试配置
为了能够构建并启动我们为包创建的目标,我们需要创建一个相应的 配置。
在主菜单中,转到 ,点击
并选择 自定义构建应用程序。
在配置设置中,选择 目标 并确保从 启动前 区域中移除 构建。

4. 构建包
在工具栏切换器中选择配置:

点击锤子图标或按 Ctrl + F9 。 或者,从主菜单调用 构建 | 构建 '构建 cpp_pubsub'。
在运行工具窗口中检查结果。
运行/调试包
再次打开 编辑配置 对话框。
将 构建配置修改为以下内容:
将 可执行文件 设置为实际的包二进制文件。
请选择 以管理员权限运行 复选框。 有关更多信息,请参阅 以 root 身份调试。

保存配置后,它已准备好 运行
或 已调试
。 所有 CLion 的 调试和 动态分析功能都将可用于工作区代码。
CLion 将从目标的工具链中获取调试器。 在我们的案例中,它是 MSVC LLDB。
如何构建工作区
现在让我们看看如何在 CLion 中添加一个新包并重建整个工作区。 为了说明这一点,我们将以向 dev_ws 工作区添加一个 简单服务和客户端包为例。
构建整个工作区
为了(重新)构建整个工作区,我们将在 colcon build 中配置一个 外部工具 ,并在不离开 CLion 的情况下调用它。
转到 并点击
以添加新工具。
将工具配置为执行与我们从命令行构建时使用的
colcon build命令相同的操作:
保存工具后,通过主菜单中的 调用它。
在运行工具窗口中检查结果:

检查 compile_commands.json 是否已重新生成并现在包含两个包的实体:

确保重新加载编译数据库(按 Ctrl+Shift+O 或从主菜单调用 )。 为了避免手动重新加载项目, 配置自动重新加载。
此时,两个包都已包含在 CLion 项目模型中,您可以像往常一样使用它们。 要构建并运行第二个包,请按照 上述描述的步骤操作。