学习ros是任务驱动,之所以要学习设置ros的工作空间,是因为不会写cmakelist文件……然后师兄就给我科普了先去创建ros的工作空间,在生成的cmakelist文件下添加pcl库的相应链接即可。
一、设置ros工作空间的代码解析
--------------------------------------------------------------------------------------------------------------------------
引用自
https://blog.csdn.net/weixin_44692299/article/details/104249834#:~:text=1.%20%E5%B7%A5%E4%BD%9C%E7%A9%BA%E9%97%B4%20%E5%B7%A5%E4%BD%9C%E7%A9%BA%E9%97%B4%20%EF%BC%88work%20space%EF%BC%89%E6%98%AF%20ROS%20%E7%B3%BB%E7%BB%9F%E4%B8%AD%E5%AD%98%E6%94%BE%E5%B7%A5%E7%A8%8B%E5%BC%80%E5%8F%91%E7%9B%B8%E5%85%B3%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%8C%E5%85%B6%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84%E5%A6%82%E4%B8%8B%EF%BC%9A%20,%E5%88%9B%E5%BB%BA%20%E4%B8%80%E4%B8%AA%E5%8F%ABcatkin_ws%E7%9A%84%E5%B7%A5.%20%E5%88%9B%E5%BB%BA%20%E4%B8%80%E4%B8%AA%20ROS%E5%B7%A5%E4%BD%9C%E7%A9%BA%E9%97%B4%20%EF%BC%88%20ROS%20Workspace%EF%BC%89.
--------------------------------------------------------------------------------------------------------------------------
//创建文件夹
$ mkdir -p ~/catkin_ws03/src
//到对应的路径
$ cd ~/catkin_ws/src/
//把当前目录初始化为ROS的一个工作空间
$ catkin_init_workspace
$ cd ~/catkin_ws
$ catkin_make
设置环境变量
//在catkin_ws03中打开终端,让ros环境变量生效。
$ echo "source ./devel/setup.bash" >> ~/.bash
$ source ~/.bashrc
创建包依赖
$ cd ~/code/catkin_ws03/src/
//设置包依赖
$ catkin_create_pkg package_name depend1 depend2 depend3
//我这里使用的是
$ catkin_create_pkg sub_pcl pcl_msgs pcl_ros roscpp rospy std_msgs pcl_conversions sensor_msgs
在VS code里面打开这个项目
$ cd ~/code/catkin_ws03/
$ code .
CMake
把.cpp文件放进src目录下
2.解决找不到库的问题
如图,PCL库和ROS库仍然找不到
找到这两行代码让他们从注释变成可执行的命令
更改文件名
可以看到此时的cpp文件已经不报错了
ctrl+shift+b编译
选择编译器 catkin_make build的小齿轮(别直接点)
得到如下的界面
更改内容
{
// 有关 tasks.json 格式的文档,请参见
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make:debug", //代表提示的描述性信息
"type": "shell", //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
"command": "catkin_make",//这个是我们需要运行的命令
"args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
"group": {"kind":"build","isDefault":true},
"presentation": {
"reveal": "always"//可选always或者silence,代表是否输出信息
},
"problemMatcher": "$msCompile"
}
]
}
得到如下界面