【ROS入门1.1】ROS工作空间,ROS文件系统,ROS程序包

【ROS 官方教程网站】:http://wiki.ros.org/

1、创建ROS工作空间

【创建ROS工作空间】:http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment
如官网所说:
在这里插入图片描述
【注意】这里是必须的新建一个catkin_ws/src文件夹的,catkin_make命令会在src文件夹下生成一个总的CMakeLists.txt文件,如果没有设置这个文件夹,直接用catkin_make命令,会报如下错误:
在这里插入图片描述
会要求你必须得创建一个src文件。
创建完成后,执行catkin_make命令:
在这里插入图片描述
这时会创建一个catkin的工作空间。
创建的空间目录结构如下:
在这里插入图片描述
这些东西都是自动创建的。

在官网后面的教程中,会涉及到source ~/catkin_ws/devel/setup.bash这个命令的将当前的工作空间设置在ROS的最顶层,用到这个命令的条件是:当devel中通过编译生成了新的可执行文件的时候,需要source一下,使得ros系统能够索引到这个可执行文件,进而可以通过系统安装它。

【补充】这里还要说一下ROS_PACKAGE_PATH这个环境变量,这个变量在官网中也有所涉及

echo $ROS_PACKAGE_PATH

在这里插入图片描述
执行之这个命令会看到返回的包路径,一共有两个,以冒号(:)分割开
这两个路径下都是ros系统中涉及到的包,就是所谓的package。这样的话,知道这个package_path的话,就可以轻松使用后面的roscd、rosls等之类的命令了

cd /home/tiamo/catkin_ws/src

显示如下:
在这里插入图片描述
可以看到这个路径下有三个包:beginner_tutorials, foobar, test

cd /opt/ros/melodic/share

在这里插入图片描述
里面的包就数不胜数了,有了这两个路径,就可以查看路径下的包,就可以用roscd随意cd包了,非常方便。

2、ROS文件系统

【Catkin Workspaces】:http://wiki.ros.org/catkin/workspaces
在这里插入图片描述
这是官方给的文件系统目录,对应于每一个src下的package包,它的目录结构如图所示:
在这里插入图片描述
在这里插入图片描述
对文件系统进行分析:
工作空间包括三部分,如官方给的图所示,分为src、build、devel:

  1. src源文件空间:这个文件夹放置各个功能包和一个用于这些功能包的CMake配置文件CMakeLists.txt。这里做一下说明,由于ROS中的源码采用catkin工具进行编译,而catkin工具又是基于cmake技术的,所以我们会在src源文件空间和各个功能包中都会见到一个文件CMakeLists.txt,这个文件就是起编译配置的作用,这个文件在使用cmake进行catkin project配置的时候会被使用。src源文件空间包含了各种包的源代码,在这里你可以编辑你想build的包的源代码,在源文件空间里面你可以放置很多个catkin包,注意,这个空间在你进行build,install的时候最好不要进行修改。

  2. build编译空间:从最上面的图中可以看到官方说这个build space 文件夹是catkin_ignore的,说需要禁止catkin进入这个文件夹。这个文件夹放置CMake和catkin编译功能包时产生的缓存、配置、中间文件等。这个文件是cmake指令build src文件夹下catkin package的地方,这个文件夹其实没必要非得在工作空间catkin_ws目录下,也没有必要非得在src文件夹的外面,这一切只不过是推荐这样做。

  3. devel开发空间:这个文件夹放置编译好的可执行程序,这些可执行程序是不需要安装就能直接运行的。一旦功能包源码编译和测试通过后,可以将这些编译好的可执行文件直接导出与其他开发人员分享。devel工作空间的位置被一个叫做CATKIN_DEVEL_PREFIX的变量控制着。官网上说它的默认路径其实是build文件夹下,但是这个默认操作,可能会使用户感到迷惑。所以推荐将devel放置在build文件夹的同级目录下。

  4. 其实官网还说了另外两个space,但是我觉得官网上说的可能过时了,因为确实,可执行文件不需要安装就可以执行,但是官网上说,还需要安装之类的,官网链接地址:http://wiki.ros.org/catkin/workspaces
    在这里插入图片描述

其他的我个人作为一个补充:
在这里插入图片描述
在这里插入图片描述
对ROS的文件系统中的文件层级进行了解后,就可以按照官网的教程进行相应的命令学习了。

这里我也只是说几个需要注意的地方:

官网中主要提供了几个命令,

【ROS文件系统介绍】:http://wiki.ros.org/cn/ROS/Tutorials/NavigatingTheFilesystem

rospack find <package_name>
roscd [package_naem[/子目录]] # package_name 不写的话默认cd到devel文件夹下
rosls [package_name[/子目录]] # package_name 不写的话默认与ls功能相同

[]代表可选
<>代表必选
  1. 对于rospack命令,官网只给出了find选项,可以看到他是用来找包的,记住,这是找包的,这也就和本文一开始说的那个ROS_PACKAGE_PATH不谋而合,ROS_PACKAGE_PATH目录下的包都可被找到
  2. 对于roscd命令,这个命令可以跨越路径对cd的影响,直接从一个很遥远的路径下,cd到一个包内,或者一个包的子目录下。roscd还有一个比较特殊的作用,就是它可以cd到日志文件夹下,这个日志文件夹存储的日志是roscore所记录的日志,
roscd log

如图:
在这里插入图片描述
可以看到roscore存储的日志到了~/.ros/log文件夹下,而roscd log cd到的log文件夹就是这个文件夹。

  1. 对于rosls命令,大多数情况下它和ls命令差不多,不像roscd与cd差距那么大,rosls比ls先进的一点就是它可以直接跨越路径列出某一个包下的目录,这是ls所办不到的,其他情况下rosls与ls无差别。
    如:
    在这里插入图片描述
    可以看到当前目录是一个log文件夹,这就体现了rosls的先进之处了。

3、ROS程序包

【创建ROS程序包】:http://wiki.ros.org/cn/ROS/Tutorials/CreatingPackage
【编译ROS程序包】:http://wiki.ros.org/cn/ROS/Tutorials/BuildingPackages

其实对于这个,感觉没啥可说的,官网上已经说的很详细了,主要说几点:

在一开始,官网说的:
在这里插入图片描述
这里补充两句,对于一个catkin程序包,可以在src目录下使用catkin_create_pkg命令来自动创建一个包
在这里插入图片描述
如上图所示,自动创建了好多东西。
其实如果想要这个包被rospack命令找到,只需要满足有一个package.xml文件就可以被rospack find命令找到了,与CMakeLists.txt有无无关。
当然,CMakeLists.txt也是极其重要的,package.xml的作用仅仅是标识一个包,可以让开发人员方便的了解到包的依赖、简介、版本之类的。真正的编译源文件还是靠CMakeLists.txt文件,这也是为啥在CMakeLists.txt文件里面可以看到好多与package.xml重复的内容了,在执行cmake指令的时候,是针对的CMakeLists.txt文件的,与package.xml文件无关。

至于在编译的时候,我只是提醒一句,编译是在~/catkin_wscatkin工作空间下进行编译,同样是执行catkin_make命令,编译会生成可执行文件,可执行文件在devel文件夹下的lib里面,消息和服务生成的cpp文件在devel文件夹下的include文件夹下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值