Ros教程一(工作空间)

工作空间建立及初始编译

创建和初始编译工作空间:

$ mkdir -p ~/catjin_ws/src
$ cd ~/catkin_ws/
$ catkin_make 

          catkin_make命令是用于处理catkin工作空间的便利工具 。使用mkdir命令创建文件夹,这样所需的工作空间创建完毕;接下来进入catkin_ws文件夹内,第一次运行catkin_make命令,该命令会在src文件夹内创建一个CMakeList.txt文件;同时会在catkin_ws文件夹内创建两个同级别文件夹“built”和“devel”。在“devel”文件夹中,您可以看到现在有几个setup.* sh文件。运行这些文件中的任何一个都会将此工作区覆盖在您的环境之中。要了解更多相关信息,请参阅catkin文档:catkin。当使用catkin_make后,请先运行devel/setup.* sh文件:

$ suorce /devel/setup.bash

            运行此脚本确保当前工作环境包含新建立的工作空间。可以使用$ROS_PACKAGE_PATH查看当前环境是否包含:

$ echo $ROS_PACKAGE_PATH
/home/(lee)/catkin_ws/src:/opt/ros/kinetic/share

工作空间使用 :

           在工作空间如何将源码使用catkin_make工具编译和安装packages?有两种方法编译工作空间中的源码及部署源码:

       1、使用catkin_make

                 使用catkin_make编译及部署源代码非常方便,典型工作流程是:

$ cd ~/catkin_ws/src/yousource/src

# 添加或者编辑你的源代码

$ cd ~/catkin_ws/src/yousource

#添加或者更改源代码后,需要更新CMakeFiles.txt ,以保证正确编译

$ cd ~/catkin_ws

$ catkin_make -DCMAKE_BUILD_TYPE = Release
#具体cmake编译类型可查阅(http://cmake.org/cmake/help/v2.8.12/cmake.html#variable:CMAKE_BUILD_TYPE)

                  这将在源空间(〜/ catkin_ws / src)中构建任意包到编译空间(〜/ catkin_ws / build)。任何源文件,python库,脚            本或任何静态文件都将保留在源空间中;同时,任何生成的文件(如库,可执行文件或生成的代码)都将放在编译空间                中。此外,在devel空间中将生成setup。* sh文件,这些文件在获取时将为您的环境添加此devel空间的前缀。

                  如果你想要传递给catkin_make的参数。例如,您可以告诉它制作安装目标:

$ cd ~/catkin_ws
$ catkin_make install

                这相当于调用'cd~ / catkin_ws / build && make install'。运行以上命令后,现在应该有一个安装空间(〜/ catkin_ws /           install),它包含自己的setup.* sh文件。获取其中一个setup.* sh文件会将此安装空间覆盖到您的环境中。

                到目前为止,我们既有devel空间又有install空间,那么请注意,应该使用devel空间或install空间,而不是同时使用两           者。当在工作区中的包上进行开发时,开发空间很有用,因为不必每次都调用安装目标,这在使用Python开发或运行测试时         特别有用。

                当准备在工作区中分发或“安装”软件包时,安装空间很有用。例如,从源代码构建ROS时,可以使用“安装”目标将               CMake参数'-DCMAKE_INSTALL_PREFIX = / opt / ros / groovy'传递给catkin_make:

# This is an example
$ cd ~/catkin_ws
$ catkin_make install -DCMAKE_INSTALL_PREFIX=/opt/ros/groovy  # 可能需要sudo

               如果有一个以前编译过的工作区并且在其中添加了一个新包,则可以通过添加以下参数告诉catkin将此新包添加到已编        译的二进制文件中:

$ catkin_make --force-cmake

               如果要查看用于运行编译器和链接器的命令行,请使用以下选项运行catkin_make: 

$ catkin_make -DCMAKE_VERBOSE_MAKEFILE=ON

             1.1.1使用catkin_make的局限性

                     所有命令都作为CMake和make的一部分执行,并使用与调用相同的环境。使用rostest运行一个例子。如果测试本                 身依赖于Python代码,假如生成的代码的路径与PYTHONPATH路径不一致。这时catkin_make没有提供解决此问题的机                制。这个问题有两种解决方法:

                    1、手动解决:catkine_make,  devel/setup.bash,catkin_make  run_tests三个步骤。

                    2、使用catkin_make_isolated:catkin_make_isolated,catkin_make_isolated --make-args run_tests

2、不使用catkin_make

        1、创建build文件夹:

$ mkdir  ~/catkin_ws/build
$ cd ~/catkin_ws/build

          每个工作区只有一个build空间目录。CMake用户可能会发现这个异常,将为所有的catkin项目提供一个build文件夹。这是catkin的一个关键特性,它将像一个大型CMake项目一样工作。

          此文件夹很重要,因为可以在此文件夹中调用构建脚本。可以使用与build不同的名称来命名,特别是如果您需要多个配置,但“build”是一个很好的默认值,其他名称最好也可以按照惯例以“build_”为前缀。

         2、配置Packages

         build过程的下一步是配置步骤。在build文件夹中调用CMake,以便cmake和catkin可以配置Packages。每当从源码空间添加或删除Packages包时,更改其中哟个软件包的构建文件或者想要更改构建系统设置时,都需要执行“配置”。现在可以调用CMake来配置catkin软件包并生成构建脚本:

$ cd ~/catkin_ws/build
$ cmake ../src

              这会将一些CMake行输出到控制台,目前为止源空间中没有catkin包,因此它不会做太多其他操作。

              当然也可以配置安装前缀或其他CMake / catkin设置之类的点。例如,您可以使用CMake变量                              CMAKE_INSTALL_PREFIX设置不同的安装前缀,如下所示:

$ cd ~/catkin_ws/build
$ cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel

                   这些配置CMake将东西安装到〜/ catkin_ws / install目录而不是默认的/ usr / local目录。

注意:可以将devel space目录设置为工作空间中的文件夹,并将此附加选项添加到CMake:cmake ../src -DCATKIN_DEVEL_PREFIX = .. / devel

注意:可以使用此CMake命令将安装目录设置为工作空间中的文件夹:cmake ../src -DCMAKE_INSTALL_PREFIX = .. / install

         3、编译Packages

         在上一步配置此工作空间的src目录中存在的catkin包,并将生成的构建脚本放入build目录中,可以从该目录中调用构建脚本来构建catkin包。默认情况下,Make脚本由CMake创建,因此在build目录中调用make来构建catkin包:

$ cd ~/catkin_ws/build
$ make

           在构建catkin包之后,将生成的构建文件放置在devel空间中。devel空间反映了符合FHS的安装空间的布局。这将会在开发空间中生成一些新文件:

catkin_ws/               -- WORKSPACE
  src/                   -- SOURCE SPACE
    ...
  build/                 -- BUILD SPACE
  devel/                 -- DEVEL SPACE
    setup.bash          \
    setup.sh            |-- Environment setup files
    setup.zsh           /
    etc/                 -- Generated configuration files
    include/             -- Generated header files
    lib/                 -- Generated libraries and other artifacts
      package_1/
        bin/
        etc/
        include/
        lib/
        share/
        ...
      package_n/
        bin/
        etc/
        include/
        lib/
        share/
    share/               -- Generated architecture independent artifacts
    ...

             不用手动修改build空间中的大多数这些文件。唯一的例外是CMakeCache.txt,这个可以手动更改或使用标准的cmake工具,如ccmake(cmake-curses-gui)或cmake-gui(可通过apt-get在Ubuntu上安装)。

            devel目录仅包含构建步骤生成的文件。位于src目录中的任何源文件,头文件或资源都使用多种类型的重定向提供给devel目录。这意味着,例如,在开发Python时,您可以在src目录中编辑Python模块,然后在调用CMake或make生成的情况下测试devel目录中的这些更改。

       CMake用户可能会发现这种不寻常,因为更传统的工作流程需要在使用前进行安装。这是catkin的一个关键特性,允许更快的开发周期。是否要使用此功能取决于您。

        1.4安装Packages

        在工作区中构建catkin包后,您可以直接通过Develpace使用它们,也可以安装它们。安装catkin包可以通过调用CMake生成的特殊安装目标来完成。

       在之前配置包部分,特别提到可以通过将CMAKE_INSTALL_PREFIX传递给cmake来更改安装前缀的地方。此安装前缀指示安装步骤放置文件的位置。此位置称为安装空间。让我们将其设置为工作区中的某些内容并运行安装步骤:

$ cd ~/catkin_ws/build
$ make install

         如果make install因缺少权限而失败,那么可使用-DCMAKE_INSTALL_PREFIX选项调用cmake。在这种情况下,在尝试make install之前再次使用该选项运行cmake。 由于src文件夹中仍然没有任何软件包,因此不会安装任何catkin软件包,但会在工作区中获得一些额外的文件。

         在make install期间,文件复制到您指定的CMAKE_INSTALL_PREFIX中。创建“bin”,“lib”,“share”和其他一些文件夹。另外,还有setup.* sh文件,这些文件特定于catkin。这些环境设置文件非常有用,将当前编译生成的文件,配置成当前环境,方便使用,请考虑您刚刚调用make然后make install on您的一个包含可执行文件的包,现在您希望该可执行文件位于PATH中。

catkin_ws/               -- WORKSPACE
  src/                   -- SOURCE SPACE
    ...
  build/                 -- BUILD SPACE
  devel/                 -- DEVEL SPACE
    setup.sh
    setup.bash
    setup.zsh
    ...
  install/               -- INSTALL SPACE
    setup.sh
    setup.bash
    setup.zsh
    ...

     install 目录布局与devel目录非常相似。如果使用非catkin软件,需要手动扩展PATH变量或将软件包安装到PATH上已经存在的位置,如“/ usr”,但使用catkin,您只需通过获取环境设置文件来扩展您的环境:

source ~/catkin_ws/install/setup.bash

       软件包的需要安装哪些文件,静态或生成,由CMakeLists.txt中的CMake命令决定。通常,可执行文件放在“bin”文件夹中,库放在“lib”中,依此类推,但这些文件夹的前缀由CMAKE_INSTALL_PREFIX设置。CMAKE_INSTALL_PREFIX默认为'/ usr / local',这是默认构建软件时的UNIX约定,但可以在CMake调用时覆盖它。强烈建议开发人员使用不同的文件夹,以便轻松卸载并使用多个ROS分发。管理员并且知道有卸载命令,否则请勿从源安装到共享计算机的默认位置。Catkin将安装空间的空间称为安装空间。

       1.5清理

       随时删除构建空间和安装空间,并使用上述步骤重新创建它们。这样做的主要目的是“卸载”之前构建或安装的软件包。

$ cd ~/catkin_ws
$ rm build devel install

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值