• 01 ROS的运行架构——环境变量和工作空间


    说明:ROS的运行架构是很容易让人产生疑惑的,始终感觉在机械模仿,本篇内容是建立在对ROS组织架构重新的审视和理解基础之上的。

    01.整体组织架构说明

    a. 安装包架构(包括5个文件夹),ubantu系统安装,默认在“计算机/opt/ros/版本号(kinetic/melodic)”目录下

    001 bin文件夹

    主要保存一些可执行的程序和命令(多数在ROS的终端界面可以直接运行)

    002 include文件夹

    主要存放命令行/终端安装的功能包代脉的头文件(借此建立各个功能包间的依赖关系,即头文件隶属于某功能包,且每个功能包均具有头文件,从而方便彼此之间进行调用)

    003 lib文件夹

    主要存放通过终端安装的功能包的节点(以.so结尾的可执行程序)

    004 etc文件夹

    主要存放ros和catkin配置的文件

    005 share文件夹

    功能包接口的具体的信息(话题、服务、action)

    b. 环境变量( ※)

    为什么要配置

    ROS是依赖于某种组合空间的概念,而这种概念就是通过配置脚本环境来实现的,即可以从源获取更多的ROS功能包,因此,运行前需要source多个setup.*sh文件中的某一个或将其添加至启动脚本环境里。

    查找配置环境路径的命令 

    export | grep ROS

    若发现调用功能包未进行有效配置,需要source某些setup.*sh文件

    配置方法

    如果你是通过ubuntu上的 apt 工具来安装ROS的,那么你将会在'/opt/ros/<distro>/'目录中看到setup.*sh文件,然后你可以执行下面的source命令:

    source /opt/ros/kinetic/setup.bash //每次打开终端时,都需要先运行上面这条命令后才能运行ros相关的命令,注意橘色部分是ros版本号,应作调整

    为避免繁琐,可以事先在.bashrc文件(初学者请注意:该文件是在当前系统用户的home目录下。)中添加上述命令,当每次登录后系统已经自动执行这些命令配置好环境。

    显示如下:

    echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc //echo写入,把source 这条命令写入.bashrc这个文件里;source的意思是立即运行,这个bash文件
    source ~/.bashrc  //.bashrc文件是电脑用户打开就会加载的文件,所以相当于一种永久性配置。在这里面,你可以写“命令简写”等方便,也可以加载一些软件配置。不source话,会下次生效。
    所以一般会source一下,立即运行

    工作空间创建及环境配置流程

    a. 创建

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/src
    catkin_init_workspace //catkin_init_worksapce命令和catkin_ws的名称无关,固定写法,但工作空间名字可以改,src这个文件夹的名字不能改

    b. 回到主目录,source一下新生成的setup.*sh文件

    cd ~/catkin_ws/
    catkin_make
    source devel/setup.bash

    运行成功,提示

    Creating symlink "/home/jpy/catkin_ws/src/CMakeLists.txt" pointing to "/opt/ros/melodic/share/catkin/cmake/toplevel.cmake"

    c. 配置情况检查

    echo $ROS_PACKAGE_PATH

    d. 设置环境变量自动配置

    echo "source /catkin_ws/devel/setup.bash" >> ~/.bashrc
    source ~/.bashrc

    workspace创建的各文件夹

    a. build

    build是编译过程当中产生的中间文件,一些二进制文件,我们基本上用不到,不用操心

    b. devel

    devel是开发空间,里面存放开发过程中产生的一些可执行文件,包括一些库,devel与install的一些功能是类似的,只不过一个是开发中,一个是开发结束之后发布给客户使用的可执行文件/结果文件

    c. install

    install是安装空间,里面存放编译生成的可执行文件

    d. src

    src文件夹存放之后功能包的源码

    代码创建

    创建代码一定要创建功能包,功能包是ROS里面源码的最小单元,所有源码都必须放到功能包里面,不能直接放到src下面去编译,这是不被允许的。必须要创建功能包。

    同一个工作空间下,不允许存在同名功能包。
    不同工作空间下,允许 存在同名功能包。

    02. 运行架构

    工作空间(work space)是ROS中非常重要的一个概念,可以把工作空间理解为一个大的工厂,里面的分成几个大的生产车间(package),每一个生产车间中会有若干个具有不同技能的工人(node)。当工厂运转时,每个车间中的工人node同时工作,他们通过话题(topic)进行信息沟通。各个大的车间之间也存在这互相依赖的关系,共同组成一个有机的整体。

    a. 层次架构

    b. 文件系统级别及概念

    文件系统级——综合功能包——功能包(功能包清单/消息/服务/代码/其它)

    功能包清单:

    含义:是一个文件名为package.xml的XML文件,文件中必须包括与任何兼容包的根文件夹。

    功能:文件定义了有关包的属性,例如包名称,版本号,作者,维护者以及其他catkin包的依赖关系。

    具体细节及构建方法,可参考博客 https://junjun.blog.csdn.net/article/details/82084707(感谢原文作者的详细总结)

    03 . 常用命令语句

    1、rqt_graph:系统中的主要资源以计算图的形式可视化的展示出来

    2、rosnode list:系统中所有节点

    3、rosnode info /turtlesim:查看节点的所有信息
    4、rostopic list:系统中所有发布或订阅的话题
    5、rostopic info /turtel/cmd_vel:话题信息的具体内容
    6、rostopic echo /turtlel/cmd_vel:监听信息的具体内容
    7、rosservice list:系统中的所有服务
    8、rosservice info /spawn:查看服务的具体内容
    9、rosservice call /spawn "":发布服务
    10、rqt_plot:将数据通过曲线的形式绘制出来
    ————————————————
    说明:仅记录供学习使用,侵权请联系删除,参考原文链接:

    1/ https://blog.csdn.net/qq_40817117/article/details/108579043

    2/ https://blog.csdn.net/cliukai/article/details/90448874

    3/ https://blog.csdn.net/qq_28306361/article/details/85142192

    4/https://blog.csdn.net/qq_43569735/article/details/108038384

  • 相关阅读:
    2013年第四届蓝桥杯C/C++B组省赛题目解析
    C++编程基础练习
    网络中TCP、IP、MAC、UDP的头部格式信息
    对C语言中指针的入门理解
    Linux命令_搜索文件
    【总结】牛客职播第九期:您的美团点评offer已送到门口,快来与我们一起影响世界!
    蓝桥杯题库基础练习:进制转换
    SQL存在一个表而不在另一个表中的数据, 更新字段为随机时间
    使用资源文件(内存)中的字体 或 使用文件中的字体
    C# 给某个方法设定执行超时时间 C#如何控制方法的执行时间,超时则强制退出方法执行 C#函数运行超时则终止执行(任意参数类型及参数个数通用版)
  • 原文地址:https://www.cnblogs.com/Pygoupfs/p/15215158.html
Copyright © 2020-2023  润新知