网上看了好多CLion调试ROS的教程,但是没一个能用的,自己摸索了好久才找到方法,所以记录了下来,原本这个是我记在Notion上的,现在搬运到CSDN上。
调试步骤
-
从命令行终端启动clion
之所以要在命令行启动而不是从图标启动,是因为如果点击图标的话,在
.bashrc
或.zshrc
中source的ROS环境无法生效,进而导致某些依赖库找不到 -
在打开项目中选择
<工作空间根目录的绝对路径>/src/CMakeLists.txt
以项目方式打开 -
打开设置,在CMake选项一栏加入以下内容
-DCATKIN_DEVEL_PREFIX:PATH=<工作空间根目录的绝对路径>/devel -DCATKIN_BUILD_PREFIX:PATH=<工作空间根目录的绝对路径>/build
构建目录一栏加入<工作空间根目录的绝对路径>/build
-
打上断点,调试运行看能不能命中断点,如果断点无法命中,那么在功能包的
CMakeLists.txt
下加入选项set(CMAKE_BUILD_TYPE "Debug")
就行了 -
编译项目
-
如果使用 catkin_make
使用
caktin_make -DCMAKE_BUILD_TYPE=Debug
编译 -
如果使用 catkin-tools
编译前配置好CMAKE选项,运行
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Debug
然后使用
catkin build
编译即可
注:
推荐使用
catkin build
的方式编译,如果使用catkin build
编译报错,可能是因为原来是用catkin_make
编译的,把工作目录下的除了src
以外的文件夹全都删了,再用catkin build
重新编译就可以了 -
注意,调试ROS节点时需要预先启动 roscore
调试Tips
-
调试ROS节点时,需要加载参数怎么办?
方法一:将参数配置到
.yaml
文件中,调试节点前预先使用rosparam
命令将需要的参数加载即可,rosparam
的具体用法参考ROS官方网站方法二:将参数配置写到
.launch
文件中,使用roslaunch
预先加载即可 -
CLion只能调试一个节点,如果一个节点的运行依赖其它ROS节点怎么办?
把其它节点及其参数配置写到
.launch
文件中,预先用roslaunch
加载,用CLion单独调试需要调试的节点即可 -
找不到
CMakeLists.txt
?把文件夹打开找,肯定找得到的