本文已参与「新人创作礼」活动,一起开启掘金创作之路。
首先是一些基本操作了:
1)创建一个基本的ROS包,创建和构建ROS工作空间:
mkdir -p test/src
cd test
catkin_make
2)在工作空间中,创建一个名为my_package的包:
cd src
catkin_create_pkg hello roscpp rospy std_msgs
注:clion是以package为单位进行project管理的。当需要管理多个package包时,先参照进阶玩法装好插件。当需要切换到另一个包时,右键所在包的CMakeList.txt文件 ->Load CMake Porject
之后环境变量配置Clion
在命令行窗口下打开clion:
/home/daybeha/Programs/clion-2020.2.5/bin/clion.sh
如果你的clion.sh和我一样藏的比较深,并且和我一样懒得记路径的话,可以把clion的路径存到环境变量里:
gedit ~/.bashrc
内容加上:
export PATH=" /你的Clion路径/clion-2020.2.5/bin:$PATH"
然后命令行
source ~/.bashrc
之后你所需要敲的内容就少多啦:
clion.sh
即可
如果还是更喜欢Windows那种有桌面图标的方式,可以在Clion界面最上方的Tools->Create Desktop Entry 不过个人踩坑建议:对于Ros工程而言,命令行打开clion能避免一些问题
打开clion后
File -> Open 选择 src下的 CMakeLists.txt,点 Open as Project.
src/hello文件夹中新建C++文件helloworld.cpp
#include "ros/ros.h"
int main(int argc, char *argv[]){
//初始化ros节点
ros::init(argc,argv,"hello");
//创建ros节点句柄(not necessary)
ros::NodeHandle n;
//控制台输出 hello world
ROS_INFO("hello world!");
return 0;
}
在CmakeList.txt中加入
add_executable(hello src/helloworld.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})
终端打开roscore
再回到clion就可以运行啦:
下面是进阶版玩法
1、 clion安装插件ROS-Robot Operating System
之后你会发现,新建工程多了一个选项
并且File下也多了一个Import ROS workspace
2、 修改bulid路径
默认情况下,CLion 将build输出放在自动创建的 cmake-build-debug 或 cmake-build-release 目录中。对于 ROS 开发,这意味着我们会在 CLion 和控制台分别有一个不同的build目录。
要解决这个问题:进入File | Settings(Ctrl+Alt+S) | Build, Execution, Deployment | CMake ,修改两个地方
其中CMake option内是:
-DCATKIN_DEVEL_PREFIX:PATH=workspace_folder/devel
注意修改workspace_folder
使用Launch文件
使用XML格式编辑launch文件,使其能够高亮显示和自动补齐:
找到File | Settings (Ctrl+Alt+S) | Editor | File Types 选择XML ,添加*.launch
将调试器附加到正在运行的节点:
运行你的.launch文件。
示例:
roslaunch roscpp_tutorials talker_listener.launch
talker_listener.launch
<launch>
<node name="talker" pkg="rospy_tutorials" type="talker" />
</launch>
使用命令
rosnode list
获取目前正在运行的节点。在clion中选择Run | Attach to Process 或按 Ctrl+Alt+F5(按这个要谨慎,ubuntu下可能会黑屏,亲测),然后选择要连接的节点。
创建Msg文件
当需要根据*.msg, *.srv, *.action自动生成.h文件时,需要找到类似 xxx_generate_messages的CMake Application
不用管报错,Continue Anyway
之后就可以在
c++ : .../工作空间/devel/include/包名/xxx.h python: .../工作空间/devel/lib/python3/dist-packages/包名/srv/xxx.py
找到对应库文件
下面这步或许有用(有待验证)
3、编译使用的cmake版本
默认情况下,CLion编译使用的CMake是其内置的一个版本,而使用这个版本的CMake进行编译时会报出一些莫名其妙的错误,命令行中catkin_make明明可以正常编译,而这里就是会失败。解决这个问题的办法就是将CLion中的CMake更换为系统中的CMake,具体设置在Settings->Build->Toolchains,可以看到其中的CMake默认为Bundled,我们需要手动指定为系统中的CMake,具体看下图:
参考: ROS全局设置脚本加入.bashrc中:source /opt/ros/kinetic/setup.bash ROS setup tutorial(Clion官方文档) Installing and Configuring Your ROS Environment wiki.ros.org/IDEs#CLion (ROS官方文档) ROS Clion开发踩坑记录 Ubuntu20.04