zoukankan      html  css  js  c++  java
  • ROS学习笔记1-1安装过程的几点理解

    安装部分

    在安装后,有一个步骤1.6是设置环境,中间用到的指令echo是常用指令,它的功能是将输入的字符串送往标准输出。当格式为:echo 文件内容 >> 文件名 时,是向文件中增加文件内容。

     

    bash文件中其实主要就是运行所需要的各种所需环境变量的定义。

    source setup.bash 是把ros中的setup.bash文件挂载到ROS的文件系统中去,这样当用户执行一些文件系统的命令时,就不会提示找不到该工作空间里的包或者文件。

    ~/.bashrc:该文件包含专用于你的bash shellbash信息,当登录时以及每次打开新的shell时,该文件被读取。

    通过source ~/.bashrc使其生效。

    source功能:使shell读入指定的shell程序文件并依次执行文件中的所有语句。

    source命令通常用于重新执行刚修改的初始化文件,使之立即生效而不必注销并重新登录。

    安装过程中还有一步骤是配置source.list文件,用到的语句如下

     

    其中sh命令是shell命令语言解释器,执行命令从标准输入或从一个文件中读取。通过用户输入命令,和内核进行沟通。  -c 参数表明指令从-c后的字符串读取。

    两个重要的ROS环境变量

    ROS_PACKAGE_PATH     ros包查找的路径.

    ROS_WORKSPACE   工作路径  .  roscd 对应的位置.

    两个环境变量都在 /opt/ros/indigo/setup.bash

    /home/xuhao/ros/ros_ws/devel/setup.bash

    中有定义,所以会重合,后一个覆盖前一个,然后我们又在 ~/.bashrc中自定义了ROS_WORKSPACE

    而在那两个bash文件里,所用的语言我看不懂

    ROS工具

    rosed

    rosed rosbash套件之一,借助它,我们可以使用名字直接编辑功能包中的文件,而 不必知道功能包的路径。

    用法:

    $ rosed [package_name] [filename]

    默认的rosed编辑器为vim,如果需要设置为其他的默认编辑器,则需要编辑文件 ~/.bashrc,修改EDITOR环境变量,包含如下信息:

    export  EDITOR='emacs -nw' 这个例子是采用emacs作为默认编辑器。

    rospack在下面说到

     

    catkin_make的过程

    catkin_make 实际和下面的指令是等效的

    $ cd ~/catkin_ws

    $ cd src

    $ catkin_init_workspace

    $ cd ..

    $ mkdir build

    $ cd build

    $ cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel

    $ make

    从指令中可以看出,catkin_make执行的时候一定是在ws文件夹,文件夹中需要有一个src子文件夹,执行完成后ws文件中出现builddevel两个新的子文件夹。

    最先被编译的是在src下公用的CMakeList.txt文件

    这个文件的大部分内容都是在找catkin这个包的位置。最后执行一个cmake函数catkin_workspace。这个函数在/opt/ros/kinetic/share/catkin/cmake/catkin_workspace.cmake文件中定义。这个函数对catkin_make执行时的参数进行解析,比如CATKIN_WHITELIST_PACKAGES。然后开始遍历工作空间中的文件夹,如果文件夹中有package.xml文件就将其当作一个软件包。同时对每个软件包调用add_subdirectoryadd_subdirectory是一个cmake的内置函数,会调用这个文件夹内的CMakeList.txt文件。这样就开始了每个软件包的编译了。

    http://blog.csdn.net/bluewhalerobot/article/details/73658162

    生成的develbuild文件夹,develdevelop的缩写,所以就是开发环境。

     

    上面是devel文件夹的内容。

    其中bin内是编译的可执行文件。lib是pkg.pc文件和python的库文件。include用来放置头文件。share放置生成的pkgConfig.cmake文件。

    对于build文件夹,生成是一些编译中的中间文件,比如用来存储一些环境变量之类的文件。这个文件夹意义不大。

    总结一下整个编译的过程 
    1. 执行catkin_make 
    2. 执行catkin_workspace。解析catkin_make的参数同时遍历整个工作空间把所有的有package.xml的文件夹添加进软件包列表里面。对每个软件包执行add_subdirectory 
    3. 执行每个软件包内部的CMakeList.txt文件。 
    4. 执行 catkin_package。解析package.xml文件,载入对应的参数。根据依赖参数,载入对应的软件包参数。根据载入参数生成当前软件包的配置文件。

    创建一个ROS的包(package) 

    ROS文件系统中的两个最基本的概念:package和manifest,即包和清单文件。

    Package是组织ROS代码的最基本单位,每一个Package都可以包括库文件,可执行文件,脚本及其它的一些文件。

    Manifest文件是对Package的相关信息的一个描述。他提供了Package之间的依赖性,以及一个包的元信息,比如版本、维护着和许可证等信息。即每个包中的package.xml文件。

    一个典型的工作空间结构如下:

     

    rospack被用来获取一个包的相关信息,这里只介绍它的find选项,用法如下:

    rospack find [package_name]  

    roscd命令允许您利用包的名字直接切换到相应的文件目录下,当然这是对ROS文件系统而言,它的使用方法如下:

    roscd [package_name]  

    roscd将只能打开存在与环境变量ROS_PACKAGE_PATH中的目录及其子目录。

    一个包主要由以下几部分组成:

    1)必须包括一个package.xml文件,由catkin_make的过程可知,package.xml 文件就是包的标识。

    2)必须包括一个CMakeLists.txt文件,也是catkin_make所必须。

    3)在每一个文件夹下只能有一个包,且包不允许嵌套。包就是存在于工作空 间下,由很多代码文件组成的具有一定功能的集合。

    一个最简单的包类似于如下的形式: 
    my_package/ 
    CMakeLists.txt 
    package.xml

    可以使用catkin_create_pkg方便地创建一个包:

    使用catkin_create_pkg命令的时候,要求你给出包的名字,及选择性的给出所创建的包依赖于哪一个包。它的使用方法如下: 
    catkin_create_pkg package_name [depend1] [depend2] [depend3]

    例如 catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

    可以创建一个名字为beginner_tutorials的包,它直接依赖于后面的三个包:

    std_msgs,rospy以及roscpp。 
    进入beginner_tutorials的文件夹可以看到package.xml和CMakeLists.txt。

    或者用roscreate-pkg package_name [depend1] [depend2] [depend3]创建包

    然后用rosmake package_name

    **catkin是ROS的一个官方的编译构建系统,是原本的ROS的编译构建系统rosbuild的后**继者。

  • 相关阅读:
    20201016---不做清单
    20201014--增删改查
    20201013--什么是真实的自己?
    多态
    继承
    关键字
    分类思想
    常用的linux命令
    九九乘法表
    稀疏数组
  • 原文地址:https://www.cnblogs.com/xuhaoforwards/p/8401184.html
Copyright © 2011-2022 走看看