摘要
环境为ROS2,Clion已安装完成,具体怎么下载Clion可以参考他人的教程,此回答不再讲。
在学习ROS2时,对C++不是特别熟悉,硬肝官网的代码例程时挺费劲的,最好能用IDE对例程里的C++代码进行实时调试、查阅,便于自己理解ROS库里调用的函数。Clion跟pycharm是同一个公司的,界面风格很好,网上看用的人也不少。但是Clion官网的ROS配置教程是ROS1的,并不适用于ROS2,在答主的摸索下,已基本实现了ROS2环境下Clion调试功能,现在把一些经验分享给大家!
流程
- 以官网例程(https://index.ros.org/doc/ros2/Tutorials/Writing-A-Simple-Cpp-Publisher-And-Subscriber/)为例,在按照此例程创建好包,先不要用colcon编译。这时在devc_ws/src/cpp_pubsub下有包含C++代码的src文件夹、CMakelist.txt和package.xml.
- 此时的CMakelist.txt已经按照官网的要求,补充好了各种依赖,但此时不能直接用Clion打开,不然就会出现报错:
Could NOT find FastRTPS(missing: FastRTPS_INCLUDE_DIR FastRTPS_LIBRARIES)
解决方案:在CMakelist.txt中添加两行代码【1】:
set(FastRTPS_INCLUDE_DIR /opt/ros/foxy/include)
set(FastRTPS_LIBRARY_RELEASE /opt/ros/foxy/lib/libfastrtps.so)
这是foxy版本的,如果是其他版本,相应的更改一下 /foxy/ 就行
添加位置在依赖前面就行:
set(FastRTPS_INCLUDE_DIR /opt/ros/foxy/include)
set(FastRTPS_LIBRARY_RELEASE /opt/ros/foxy/lib/libfastrtps.so)
# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
- 打开Clion,在open中打开目标目录下的Cmakelist.txt,以project形式打开。
- 还要注意一点,如果是在虚拟机中运行的ubuntu,运行内存要设置大一点,起码3G,不然编译过程中容易卡死。
- 这个适合就可以用Clion的debug来调试C++程序了!
参考
【1】: https://answers.ros.org/question/334581/could-not-find-fastrtps-missing-fastrtps_include_dir-fastrtps_libraries/