本文主要介绍Ubuntu 使用clion调试运行ros2的代码,整体配置上比ros1.0繁琐一些,但并不是特别复杂
文章目录
一、clion打开ros2工程
1.1 编译ros2工作空间:
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja
此时在 ~/ros2_ws/build下会生产文件compile_commands.json。
1.2 启动clion
启动clion前需要source一下工作空间
source ~/ros2_ws/src/setup.bash
然后再这个窗口里启动
./clion #注意这个需要使用cd命令切换到clion的安装路径下才可以哈
1.3 clion打开ros2工作空间
点击 File | Open选择 ~/ros2/build/compile_commands.json文件。并以工程形式打开
1.4 更改工程根目录
点击Tools | Compilation Database | Change Project Root 选择 ros2_ws 作为根目录
到此可以使用clion开发ros2的代码了,但此时还不能使用clion编译和debug。
二、使用clion编译整个ros2工程
这步和debug程序没啥关系,只是让大家知道可以通过clion编译整个工程,方便快捷。debug程序需要看第三部分。
这里需要使用clion的external tool 来实现colcon build功能。
点击Settings | Tools | External Tools 点击+号,新增一个tool。具体填写内容就是之前编译ros2工作空间的命令,按下图填写:(确保自己是自己的工作路径,这里图片上的路径不是Ubuntu系统的,例如:~/ros2_ws)
保存这个工具。在clion的主页面的工具栏点击 Tools | External Tools 选择 colcon build,此时就可以编译整个工作空间了。
Make sure to reload the compilation database (press Ctrl+Shift+O or call Tools | Compilation Database | Reload Compilation Database Project form the main menu). To avoid reloading the project manually, configure auto-reload.
三、clion编译与debug调试程序
第二部分编译是编译了整个工作空间,和debug程序并没啥关系,这里开始编译调试功能包。
3.1 创建cmake_command.bat命令脚本
在自己的功能包下新建一个文件命名为 cmake_commands.bat,这里以ros2的example代码为例:
执行chmod 777 cmake_commands.bat
在cmake_command.bat文件中填入下面这些内容:(具体路径需要根据自己实际情况更改)
/usr/bin/cmake /home/jack/ros2_ws/src/examples_rclcpp_minimal_publisher -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -DCMAKE_INSTALL_PREFIX=/home/jack/ros2_ws/install/examples_rclcpp_minimal_publisher
/usr/bin/cmake --build /home/jack/ros2_ws/build/examples_rclcpp_minimal_publisher -- -j8 -l8
/usr/bin/cmake --install /home/jack/ros2_ws/build/examples_rclcpp_minimal_publisher
3.2 创建custom build target
在Settings | Build, Execution, Deployment | Custom Build Targets点击 + 号 增加一个新的target。
填入name, 并在 build那一栏的末尾点击那个三个点的小按钮。点击+号添加一个external tools ,选择自己刚刚创建的那个cmake_command.bat文件。具体填写按下图内容修改就行:注意working directory一栏不要写错位置
然后保存即可。
3.3 配置run/debug功能
在clion主页点击Run | Edit Configurations点击+号,选择 Custom Build Application,在target一栏中选择自己刚刚生成的那个命令,在excutable一栏中选择自己要执行的可执行文件名称,Ubuntu ros2 的路径为:
(/home/jack/ros2_ws/install/examples_rclcpp_minimal_publisher/lib/examples_rclcpp_minimal_publisher),这个需要根据自己实际情况更改。
此时点击 run和debug就可以正常使用了。
3.4 不能断点调试的解决办法
如果debug时候不能设置断点,则需要在CMakeLists.txt文件中加入下面这行命令就可以了:
SET(CMAKE_BUILD_TYPE "Debug")
此时可以正常断点调试代码了。
也可以参考这个:
https://blog.csdn.net/guaaaaaaa/article/details/126468697