1.ROS 工作空间、package 及 catkin 编译系统

2.jenkins 更改工作空间

ROS 工作空间、package 及 catkin 编译系统

工作空间设置-工作空间电脑系统

本文内容都可以在 ROS 官网 wiki ( )中找到,作者只是根据自己的理解重新阐述了其中的某些内容,或许能帮助读者更好的理解 ROS 系统中的一些概念。首先保证 ROS 已经正确安装了。安装方式可以参考 本博客的另一篇文章 。

简单地说,ROS workspace (工作空间)就是统一存放 ROS 文件的地方,比如一个项目的所有 ROS 文件最好都放在一个 workspace 中,便于统一管理、编译和调用。

catkin 是目前 ROS 的编译系统,自 ROS Groovy 版本开始使用,取代了之前的 rosbuild 编译系统。

ROS workspace 中可以包含若干 ROS package,每个 package 内部包含实现某些特定功能的文件。

其中,~ 表示当前用户的 home 目录, -p (parent)参数可以创建某个文件夹和它的父文件夹,也就是两层的路径。这里 workspace 的名字是 catkin_ws,这个名字可以按照自己项目的内容设定,但是 src 这个文件夹的名字是固定的。

初始化工作空间。这里 src 就是以后存放 ROS 源文件的地方。上述命令之后,会在 src 目录下产生 CMakeLists.txt 文件,这实际上是一个链接到ROS 安装目录下的 /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake 一个超链接文件,对工作空间做了一些初始设置。不用去管它,也不要随便修改它。

会一次性编译 src 文件夹中的所有源文件,同时生成 devel 和 build 两个文件夹。

实际上,catkin_make 这个命令并没有特别神奇的地方,它只是把一系列基本的编译命令整合在了一起,一个 catkin_make 命令相当于如下的一系列命令:

如果要深入研究 catkin_make 编译方式,可以参考 这篇文章 。

将 workspace 的信息载入系统环境变量。

这种方法载入的信息只对当前 terminal 有效。新开一个 terminal 就无效了。如果要对每个 terminal 都有效,可以将上述命令写入用户 home 路径下的 .bashrc 文件中:

注意,.bashrc 文件是隐藏文件,在 home 路径下通过命令

命令可以看到。

还要注意, >> 是将 echo 后边的内容写入文件的尾部,如果用 > 则要覆盖原文件,一定不要搞错。

编译之后,由于我们只是一个空的 workspace,还没有任何 package,所以没有什么实质性的东西,只是告诉系统这里有个 ROS workspace,算是在系统中注册了一下。

package 是组织 ROS 文件的基本单元,一般来说,每个 package 完成一些特定功能。

package 中至少包含两个文件: package.xml 和 CMakeLists.txt.

package 在 workspace 中的存放结构一般如下:

也可采用其他的结构,但是要注意 package 之间不能嵌套,也就是在一个 package 中,不能再创建另一个 package ,所有 package 都必须是相对独立的目录。

用 catkin 创建 package 的过程很简单,用如下命令:

其中 depend 为依赖的其他 package。这样创建之后,package 中的 CMakeLists.txt 和 package.xml 中会体现出这种依赖关系。创建时也可以不指明依赖关系,在后续编译 package 的时候再补上。

创建好了 package,就可以使用 rospack 相关的命令进行查找、进入等操作了。不过,有时会有延迟,可以用命令

或者

查找、更新一下。

上述方式创建了 ROS package,然后就可以在其中编写 源文件了,可用的语言主要是 c++, python,我们现在的项目中还用到了 Julia。这里就不再细述具体的源文件编写过程了。

创建好了源文件,如果是 c++ 编写的,要编译一下。这里要设置好 package.xml 和 CMakeLists.txt 中的信息。如果依赖的 package 已经设置好了,就不需要修改 package.xml 了,只需要在 CMakeLists.txt 中添加源文件对应的编译信息如下:

实际上在 CMakeLists.txt 中有非常全面的模板,很容易找到在哪里添加这些编译文件信息。

设置好了编译信息,就可以回到 workspace 的 src 所在文件夹中,用如下命令编译:

该命令可以一次性编译 src 中的所有 package。如果只想编译指定的 package,可以用如下命令:

但是,这个命令似乎有时不太管用,根据我们的实际经验,最有效的方法是用如下的 whitelist 命令:

这样就是只编译 package1 和 package2。但是要注意,该命令中的 whitelist 具有记忆功能。用完该命令之后,下次如果要编译 src 中所有的 package,如果只用 catkin_make,则还是只编译 whitelist 中的 package,需要用如下命令清除一下 whitelist

以上就是我们使用 ROS 中的一些基本操作,希望其中的一些内容对读者有帮助。

Written by SH

Revised by QP

jenkins 更改工作空间

win10、Jenkins、JDK_1.8、tomcat

由于在Jenkins中我们需要对自己构建的项目进行维护,为了维护方便起见,我们一般都会指定一个自己的目录作为Jenkins的工作空间目录,但是Jenkins与其它软件不太一样的地方在于,其修改工作空间目录并不是在Jenkins本身的配置文件中进行,而是在电脑操作系统的环境变量中进行的。而Jenkins所做的操作是显示该工作空间目录的所在位置,如果工作空间位置被修改了的话,那么它显示的就是修改之后的新的工作空间目录。

?查找Jenkins工作空间目录显示位置:

在系统管理页面点击系统设置进入系统设置页面![jenkins更改工作空间2.png( )

Jenkins的在查找工作空间时是这样运行的,Jenkins默认的内置工作空间为系统用户的根目录下,其文件夹名称为“.jenkins”,比如说我的,其工作空间目录显示的就是“C:\Users\HP.jenkins”,而Jenkins默认的查找顺序是先是在操作系统的环境变量中查找名为“JENKINS_HOME”的环境变量,如果存在该变量,那么Jenkins就采用“JENKINS_HOME”中所指定的目录作为工作空间目录,但是我们在初次装好Jenkins时我们是没有配置“JENKINS_HOME”环境变量的,所以说Jenkins在找不到配置的“JENKINS_HOME”环境变量时就采用了默认的环境变量配置,所以说它才会在“C:\Users\HP.jenkins”中创建工作空间。

依照上面的原理,我们修改Jenkins的工作空间,其实就是在电脑的环境变量中创建一个“JENKINS_HOME”环境变量,在该变量中我们指定Jenkins的工作空间目录即可。

以我的电脑为例,在我的电脑中创建环境变量是这样的:

右击我的电脑图标,在鼠标右键所显示的下拉菜单中选择属性,由此我们进入属性面板。

在该对话框中,变量名为“JENKINS_HOME”,注意,此变量名不能被修改,变量值为“F:\Dev\WorkSpace\Jenkins”,该变量值可以自定义,填写完之后,点击确定按钮。

该界面就是我们之前所操作过的解锁Jenkins的界面,但是与之前所不同的是,其新的解锁密码位于新指定的工作空间目录下。

后面的操作我在之前的章节中有介绍,具体可以参考前面的章节

Win10安装Jenkins

?再次查看Jenkins的工作空间目录如下: