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

本博客主要就是为了介绍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. c语言结构体中的一个char数组怎么赋值?

    目录 前景提示 这里的结构体处理的步骤 一.char数组类型的处理 二.char数组指针类型的处理 三.全部代码 1. char数组 2. char数组指针 结语 前景提示 定义一个结构体,结构体中有 ...

  2. dockerfile 使用 entrypoint,导致 docker 无法正确挂载的问题

    一开始 Dockerfile 如下: FROM golang:latest WORKDIR $GOPATH/src/hellodocker COPY . .RUN go build . EXPOSE ...

  3. docker配置tomcat

    docker pull tomcat tomcat的目录结构 /usr/local/tomcat/webapps web目录 /usr/local/tomcat/logs 日志目录 /usr/loca ...

  4. Codeforces Round #725 (Div. 3) A-D,F题解

    A. Stone Game 思路:总共3种情况,都从最左端被拿走,都从最右端被拿走,左侧的从最左端被拿走且右侧的从最右端被拿走,取最小值即可 代码: //CF-725.A #include<bi ...

  5. VS Code远程链接报错Could not establish connection to “hz.matpool.com”

    VS Code远程链接报错Could not establish connection to "hz-t2.matpool.com" 输出的部分内容 安装Git git for w ...

  6. Swagger 接口文档

    目录 Swagger 介绍 Swagger 依赖 SpringBoot 集成 Swagger 配置类 常用注解 效果示例 Swagger 介绍 Swagger UI 允许任何人(无论是开发团队还是最终 ...

  7. zabbix5.0监控mysql

    最近开发让对mysql数据库进行监控,由于公司的开发大部分都是以WINDOWS环境下运行的,只有少部分是在LINUX下.我自己先在linux做了一个测试.按照网上教程折腾了三天.最后看着官方教程很轻松 ...

  8. Pulsar 也会重复消费?

    背景 许久没有分享 Java 相关的问题排查了,最近帮同事一起排查了一个问题: 在使用 Pulsar 消费时,发生了同一条消息反复消费的情况. 排查 当他告诉我这个现象的时候我就持怀疑态度,根据之前使 ...

  9. [SPDK/NVMe存储技术分析]011 - 内核态ib_post_send()源码剖析

    OFA定义了一组标准的Verbs,并在用户态提供了一个标准库libibverbs.例如将一个工作请求(WR)放置到发送队列的Verb API是ibv_post_send(), 但是在Linux内核,对 ...

  10. MVC 生成安全验证码(例:用于登陆验证) 方法2

    MVC前台页面中,重新获取图片验证码的第二种方式:(前端页面代码如下,后台页面请参考上一篇文章) ---------html <td> <img id="imgValida ...