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/
相关文章
|
17天前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
【11月更文挑战第4天】ROS2的学习过程和应用,介绍DDS系统的框架和知识。
|
6月前
|
传感器 人工智能 算法
ROS机器人操作系统
ROS机器人操作系统
178 1
|
3月前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
197 1
|
3月前
|
Ubuntu Apache
Ubuntu20.04下一键安装ROS1 Noetic
本文提供了一个简化在Ubuntu 20.04系统上安装ROS1 Noetic过程的一键安装脚本工具,该脚本通过优化配置和使用清华大学镜像源,加速了国内用户的下载速度,并自动完成环境设置和依赖安装,同时提供了详细的使用说明和源码。
355 0
Ubuntu20.04下一键安装ROS1 Noetic
|
3月前
|
Ubuntu 机器人 虚拟化
Ubuntu22.04配置ROS2 Humble
这篇文章是关于如何在Ubuntu 22.04系统上配置ROS2 Humble的详细教程,包括虚拟机安装、环境配置、网络设置、软件源更换、ROS1和ROS2的安装步骤。
276 1
|
3月前
|
Ubuntu 机器人 网络安全
ubuntu22.04 SSH和ROS2控制下位机
本文介绍了如何在Ubuntu 22.04系统中通过SSH远程控制机器人服务器,包括安装SSH服务、配置防火墙规则、修改`/etc/hosts`文件、使用密钥认证等步骤,并提供了使用ROS2控制下位机的方法和一些常用指令。
87 0
|
4月前
|
Ubuntu 机器人 Shell
ubuntu20.04创建ros环境、创建rospackage
至此,我们已经详细讲解了在Ubuntu 20.04上创建ROS环境及ROS包的步骤。这为进一步的机器人软件开发奠定了坚实的基础。
203 1
|
4月前
|
Ubuntu 机器人 Shell
ubuntu20.04创建ros环境、创建rospackage
至此,我们已经详细讲解了在Ubuntu 20.04上创建ROS环境及ROS包的步骤。这为进一步的机器人软件开发奠定了坚实的基础。
65 1
|
4月前
|
Ubuntu 机器人 Linux
Ubuntu查看ros版本-linux查看ros版本
通过上述方法,您可以轻松检查和确认您的Ubuntu或其他Linux系统上安装的ROS版本,以确保您的机器人项目能够顺利进行。
1394 0
|
6月前
|
监控 Linux 调度
操作系统学习笔记(一)
在Linux中,使用`ps -aux | grep PID`来查看特定进程的状态,或者用`top`指令监控进程和内存。通过`cat 文件名 | grep 关键词`或`grep -i 关键词 文件名`搜索日志文件。`grep`是一个强大的文本搜索工具,支持多种参数,如`-i`忽略大小写,`-c`计数,`-f`从文件读取关键词。要临时更改主机名用`hostname 新主机名`,永久更改则用`hostnamectl set-hostname 新主机名`
46 0

推荐镜像

更多