一、前言(大神可以直接跳过)

本博客主要就是为了介绍ROS中环境变量的设置过程,还不是很了解ROS的可以去看一下我的博客,ROS简介-从零开始讲解ROS(适合超零基础阅读)

ROS为什么需要设置环境变量呢?首先大家需要清楚环境变量是什么东西,请看百度百科。

百度百科上说的可能像我这种计算机小白看了还是不懂,其实换句话说,环境变量的设置就是为了让计算机在执行命令的时候可以让计算机方便找到命令。

举个通俗易懂的栗子,假如你现在相当于一个计算机,你收到命令,命令是“去一个陌生的学校教学楼找一个手机”,教学楼那么多,你根本就不知道去哪里找手机,去学校的哪栋教学楼找?去教学楼的路线你也不知道,但是假如给你一个环境变量,环境变量=XX大学/XX校区/第一教学楼坐标/五楼/508室/讲台的桌子,那你是不是很好执行这个命令了?所以说,计算机操作系统里面设置环境变量其实就是设置一定的文件路径,让计算机执行命令的时候方便找到,否则大海捞针。

二、环境变量的设置

1.介绍

环境变量的设置分为ROS本身工作空间环境变量的设置和我们创建的工作空间的环境变量的设置。

我们在安装ROS的时候,ROS自身创建一个工作空间,路径一般是根目录下的opt/ros/…/…/,关于这个工作空间下面的各个文件夹我在我的一个博客里面也说过了,ROS简介-从零开始讲解ROS(适合超零基础阅读)博客里面的3.3.2有介绍。

我们在自己开发ROS的时候需要自己创建自己的工作空间,工作空间的创建大家就去看ROS wiki上面的教程吧,工作空间创建并且编译成功之后,会产生如图所示的文件夹。关于这几个文件夹的功能分别如下:

build:主要是放置程序编译的一些中间文件,可以不用了解;
devel:这个文件夹存放一些可执行文件以及环境变量配置的脚本文件,也就是待会我们主要讲解的一个文件夹;
src:主要存放程序代码、功能包。

上面这两个工作空间中都有存放功能包和源代码,我们调用这些功能包或者运行这些源代码的方式就是用终端来运行,这个大家应该都知道了,为了方便终端找到这些功能包和源代码,每一个工作空间在编译成功之后,ROS它自己都会自动生成一个setup.bash文件,这个文件就叫做这个工作空间的环境变量配置脚本。

ROS自身工作空间的环境变量配置脚本文件setup.bash在/opt/ros/kinetic路径下,我的ROS版本是kinetic版本,所以此处是kinetic。
我们创建的工作空间的环境变量配置脚本文件setup.bash就在上面我们说到的devel文件夹下。

接下来我们就开始为终端配置这两个环境变量脚本。

2.具体操作

由于要去吃饭了,所以这里直接说过程,此处的操作一步到位,是最简单的操作。
打开终端,依次输入如下三条命令,每一条输入之后回车一下:中间的kinetic是版本,还有melodic等版本,ros版本

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

这一条代码解释一下,首先是source这个单词,代表驱寻找的意思,后面一长串/opt/ros/kinetic/setup.bash就是ROS本身工作空间环境变量配置脚本文件的路径,>> ~/.bashrc表示将这个环境变量配置脚本写到终端配置文件.bashrc中。

这里出现了一个新的文件,也就是终端配置文件.bashrc,这是我们打开的终端的一个配置文件,拿我们上面的那个找手机的栗子来说,这个文件就相当于我们手里的一个记事本,我们要去找手机,工作空间相当于每个教学楼,工作空间的环境变量配置脚本就相当于是你去找教学楼的路线,配置环境变量就相当于把这个去教学楼的路线记录在你的记事本上。回到计算机上,配置环境变量就相当于将工作空间的环境变量脚本,包括其路径,记录到这个终端配置文件.bashrc上。

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

这个代码就是配置我们所创建的工作空间的环境变量,/home/zq/catkin_ws/devel/setup.bash这个是路径,但是你们不可以完全照抄,其中的那个zq是我自己的计算机名字,你们换成你们自己的计算机名字。

source ~/.bashrc

这行命令的意思是将重新编辑的终端配置文件.bashrc保存一下。

接下来,我们查看一下现在ROS内部的环境变量有哪些,在计算机内部

echo $ROS_PACKAGE_PATH 

回车之后会显示如下语句,这个语句中间有一个冒号,冒号前面是我自己创建的工作空间的路径,那个/src文件夹是专门存放源代码和功能包的,前面说过的。冒号后面是ROS本身工作空间下源代码和软件包所存放的文件夹的路径。

/home/zq/catkin_ws/src:/opt/ros/kinetic/share

然后,我们也可以直接打开这个.bashrc文件来看有哪些环境变量,运行下面这个命令即可。

gedit ~/.bashrc

至此,环境变量配置好了。

原文链接:https://blog.csdn.net/qq_25267657/article/details/84621585

ROS环境变量的设置的更多相关文章

  1. linux环境变量的设置

    linux中环境变量分为系统环境变量和用户环境变量(和window中一样),系统环境变量对所有系统用户都有效,用户环境变量只对当前用户有效,我们以ubuntu为例说明 用户环境变量 用户环境变量通常存 ...

  2. Eclipse的安装和java环境变量的设置

    首先准备工作是要下载好Eclipse和java JDK. 必须要注意的是,Eclipse和java JDK必须下载同一位数的版本,即64位同为64位,32位同为32位.否则在安装完成运行Eclipse ...

  3. Win7下JDK环境变量的设置

    JDK并不像Microsoft阵营vs那样智能,安装好后所有的东西都给你配置好了,我们还没需要手动配置很多东西 首先说为什么要配置JDK的环境变量在任何路径下识别java命令和java类 配置分为2个 ...

  4. Linux环境变量的设置和查看方法

    1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ ech ...

  5. uboot环境变量(设置bootargs向linux内核传递正确的参数)

    这是我uboot的环境变量设置,在该设置下可以运行initram内核(从内存下载到nandflash再运行),但是运行nfs根文件系统的时候一直出错,各种错误.查看了很多资料后猜想应该是uboot传递 ...

  6. linux —— 学习笔记(环境变量的设置)

    目录 环境变量概要 与环境变量相关的文件 设置环境变量 注意以及相关 1.环境变量概要 环境变量,简单来说,是储存了环境信息的变量.它可以让你在不指明全部路径的情况下执行某脚本或某应用程序,比如在 l ...

  7. hadoop搭建杂记:Linux下JDK环境变量的设置(三种配置环境变量的方法)

    Linux下JDK环境变量的设置(三种配置环境变量的方法) Linux下JDK环境变量的设置(三种配置环境变量的方法) ①修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种 ...

  8. Linux下Jdk的安装和jdk环境变量的设置

    我们在Linux下安装系统软件的时候,经常遇到一些系统环境变量配置的问题.什么是环境变量?如何定制环境变量?我将在下面做一些介绍.一.什么是环境变量?Linux是一个多用户的操作系统.多用户意味着每个 ...

  9. jdk环境变量的设置

    一.jdk下载网址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 二.环境变 ...

随机推荐

  1. bool 类型位逻辑运算符(| & ^)与条件逻辑运算符(|| &&)的区别

    bool 类型的运算符 & ^|   &&  ||   ! 运算符&&和|| 是短路的,这意味着如果左侧表达式的值足以确定结果,则它们将不会评估其右侧表达式. ...

  2. 关于JS继承

    关于JS继承 关于继承这个概念,是由面向对象衍生出来的.而JS身为一种基于面向对象而设计的语言,它和正统的面向对象语言又是有差别的. 面向对象语言 身为面向对象语言需要对开发者提供四种能力: ①:封装 ...

  3. C#里面操作COM组件

    //这种写法是在COM操作里面是很经常见到的   TestDefaultMethod(foo: "test", bar: "test");

  4. mapreduce 中 groupingComparator 用法

    groupingComparator是对reduce输入的数据进行分组,比如 public int compare(WritableComparable a, WritableComparable b ...

  5. Qt:QJsonDocument以及与QJsonArray、QJsonObject、QJsonValue的关联

    0.说明 QJsonDocument类提供了read/write JSON文档的方法. 用QJsonDocument::fromJson()方法,可以从将一个JSON文件(或者QByteArray数据 ...

  6. WPS:在Word中插入Visio绘制的流程图

    在Word菜单栏 插入->对象 如果Visio绘图已经保存为了文件,可以选择由文件创建

  7. Json字符串和Json对象相互转换

    字符串-->json对象:JSON.parse() var str = '{"code":"A001","name":"张三 ...

  8. python中的流程控制

    目录 引言 流程控制的分类 分支结构 单if结构 if与else结构 if与elif与else结构 if分支的嵌套 循环结构 while循环 while + break循环 while + conti ...

  9. 关于Union和 Union all,以及出现 ORA-12704:字符集不匹配问题

    一.Union和 Union all 1.Union 对两个结果集进行并集操作: 对结果进行去重操作,不包括重复行: 并进行默认排序. -----效率相对较低 2.Union all 对两个结果集进行 ...

  10. FlinkX

    FlinkX的安装与简单使用 目录 FlinkX的安装与简单使用 FlinkX的安装 FlinkX的简单使用 MySQLToHDFS MySQLToHive MySQLToHBase MySQLToM ...