ubuntu16.04下ROS操作系统学习笔记(三 / 一)ROS基础-工作空间

简介: ubuntu16.04下ROS操作系统学习笔记(三 / 一)ROS基础-工作空间

主要知识点:

1.src、build、devel、install各文件夹的功能介绍。

2.创建工作空间(创建文件夹,初始化工作空间)、编译工作空间、设置环境变量,检查环境变量

(echo $ROS_PACKAGE_PATH)

3.创建功能包:catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

4.编译功能包、工作空间的覆盖。

1.创建工作空间

工作空间(workspace)是一个存放工程开发相关文件的文件夹。

src:代码空间(Source Space)。放置功能包源码的代码空间。

build:编译空间(Build Space)。放置在编译过程当中产生的一些功能文件。

devel:开发空间(Development Space)。放置的是编译完成之后的可执行文件,环境变量配置的一些脚本。

install:安装空间(Install Space)。与devel类似,在ros2里面将其合成了一个文件夹。

接下来我们实际操作一下,创建一个工作空间。

a.创建工作空间

创建一个名字为catkin_ws,在其文件夹内创建src文件夹放置功能包源码:

mkdir -p ~/catkin_ws/src

之后进入src文件夹下面,将其初始化为ROS工作空间:

1. cd ~/catkin_ws/src
2. catkin_init_workspace

之后的话会看到一个简单的日志回复。然后在这个src文件夹下面会有一个CmakeLists文件。这个文件会告诉系统,这个文件是一个ROS的工作空间。

之后的话我们就可以去编译这个工作空间。

b.编译工作空间

编译是在工作空间的根目录下的,所以我们需要cd到工作空间的根目录下面对其进行编译

1. cd ..
2. catkin_make

上面的source activate kinetic命令是由于我的ROS装在anaconda里面,如果你没有装anaconda的话,可以直接忽略这个命令,然后,我的电脑报了一个错误:

是由于我们缺少包的原因,我们需要安装一下:

pip install catkin_pkg

之后再执行:

catkin_make

如果没有报错的话,就说明安装成功了。之后在我们的src目录下面就会生成两个文件夹build和devel。build文件里面是编译过程当中产生的中间文件;devel里面是编译过程当中产生的一些可执行文件和一些环境变量设置的脚本。

我们接下来需要设置环境变量。

c.设置环境变量

因为我们需要在之后的学习过程当中需要linux系统知道我们功能包的位置,所以我们要设置环境变量,告诉系统功能包在哪里。这些路径的设置都是通过环境变量设置的。我们可以通过命令source来对其进行设置。

source devel/setup.bash

如果你使用的终端是zsh的话,那么你需要选择setup.zsh文件。这样的话我们的系统就会知道功能包是放在哪个文件夹下面的。

但是上述命令只是在当前终端里面会生效,如果我们新打开一个终端的话,这个环境变量依然会找不到。如果我们需要系统每次新打开一个终端都能找到相应的路径的话,我们需要将上述命令放入到终端的配置文件里面去。命令如下:

gedit ~/.bashrc

我们将会打开一个新的界面,在界面的最下面添加下面这句话:

source ~/catkin_ws/devel/setup.bash

之后保存退出就可以啦。使用以下命令使其在当前终端中生效:

source ~/.bashrc

我们接下来检查环境变量是否存在。

d.检查环境变量

我们新打开一个终端,输入以下命令检查环境变量:

echo $ROS_PACKAGE_PATH

可以看到其生成了两个路径,一个是我们刚刚创建的功能包的路径,一个是ROS安装完成之后默认的一个工作空间路径。

我们接下来就可以在我们创建的工作空间下做具体的工作。

2.创建功能包

一个功能包就是我们实现机器人一个具体功能的单元。我们在功能包里面能够去创建具体的代码。创建功能包的命令格式如下所示:

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

所表达的意思就是使用catkin_create_pkg,后面接上功能包的名字,还有此功能包依赖的其他一些功能包(这个可以有多个或者没有)。

创建功能包的命令要求我们在src文件目录下面去进行。

上述命令的意思就是创建一个名字叫做learning_communication的功能包,依赖三个功能包,一个叫做std_msgs:是ROS给我们定义好的一些标准的数据结构。rospy是ROS给我们提供的一系列的python接口。roscpp是ROS给我们提供的c++的编程接口。

进入我们刚刚创建的功能包里面,我们可以看到一些文件。在src里面是我们功能包里面一些具体的代码。incluude里面放置的是一些头文件。最重要的是CMakeList.txt和package.xml文件。这两个文件是所有功能包都必须具备的文件。CMakeList.txt里面是我们编译这个功能包的编译选项。package.xml放置的是描述这个功能包的一些具体信息。像名字,版本号等一些具体信息,还有这个功能包会具体依赖哪些功能包。

如果后期我们需要加一些功能包的依赖的话,我们都是在这个地方对其进行修改的。接下来我们我们需要编译这个功能包。

2.编译功能包

我们首先需要退出到工作空间目录里面,然后对其进行编译:

catkin_make

由于我们之前已经将我们的环境变量写入到文件当中去了,所以这里不用再次设置环境变量了。

这里还有要注意的一点是:在同一个工作空间下,不允许存在同名功能包的。不同工作空间下,允许存在同名功能包的

既然存在同名的功能包,那么我们的ROS将会以什么样的顺序去查找呢?

我们首先查看一下ROS的环境变量,env是查看系统整个的环境变量,我们通过grep就能够查看只与ros有关的环境变量。

其中的:

ROS_PACKAGE_PATH=/home/zhiqianghe/catkin_ws/src:/opt/ros/kinetic/share

就是我们功能包会去查找的路径。当我们运行某个功能包的时候,我们会从上述这个路径依次向后查找。新设置的路径在ROS_PACKAGE_PATH中的最前端。

我的微信公众号名称:深度学习与先进智能决策

微信公众号ID:MultiAgent1024

公众号介绍:主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
3月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
283 2
|
3月前
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
956 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
3月前
|
Ubuntu Shell Python
Ubuntu学习笔记(一):pycharm设置快捷启动图标详解
这篇博客详细讲解了如何在Ubuntu 20.04系统中为PyCharm设置快捷启动图标,包括创建.desktop文件、编辑文件内容以及添加到收藏夹的步骤。
434 0
Ubuntu学习笔记(一):pycharm设置快捷启动图标详解
|
2月前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
前言 最近开始接触到基于DDS的这个系统,是在稚晖君的机器人项目中了解和认识到。于是便开始自己买书学习起来,感觉挺有意思的,但是只是单纯的看书籍,总会显得枯燥无味,于是自己又开始在网上找了一些视频教程结合书籍一起来看,便让我对ROS系统有了更深的认识和理解。 ROS的发展历程 ROS诞生于2007年的斯坦福大学,这是早期PR2机器人的原型,这个项目很快被一家商业公司Willow Garage看中,类似现在的风险投资一样,他们投了一大笔钱给这群年轻人,PR2机器人在资本的助推下成功诞生。 2010年,随着PR2机器人的发布,其中的软件正式确定了名称,就叫做机器人操作系统,Robot Op
91 14
|
2月前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
【11月更文挑战第4天】ROS2的学习过程和应用,介绍DDS系统的框架和知识。
113 1
|
3月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
170 1
|
3月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
54 3
|
3月前
|
Ubuntu
Ubuntu学习笔记(七):ubuntu下jupyter指定虚拟环境
本文介绍了如何在Ubuntu系统下使用Anaconda和Jupyter Notebook指定并切换不同的虚拟环境。
125 0
Ubuntu学习笔记(七):ubuntu下jupyter指定虚拟环境
|
4月前
|
Ubuntu 网络安全 开发工具
Ubuntu19.04的安装过程详解以及操作系统初始化配置
本文详细介绍了Ubuntu 19.04操作系统的安装过程、初始化配置、网络设置、软件源配置、SSH远程登录以及终端显示设置。
148 1
Ubuntu19.04的安装过程详解以及操作系统初始化配置
|
5月前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
256 1

热门文章

最新文章