这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 机器人操作系统(ROS)初级教程

共16条 1/2 1 2 跳转至

机器人操作系统(ROS)初级教程

高工
2015-11-19 21:50:07     打赏

机器人操作系统ROS(Robot Operating System)是一个机器人软件平台,它能为异质计算机集群提供类似操作系统的功ROS图标能。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。

ROS提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等)。目前ROS主要支持Ubuntu。

操作是一门理论与实践性很强的课程,而且学习起来相对较花费时间,需要学习者有一定的耐心与兴趣,还要有一些编程相关的语言基础(汇编、c/c++等)。

从今天开始,我会以连载的形式(点击提纲标题直达链接),结合笔者学习经历和过程总结的一些心得,希望广大ROS爱好者能通过系列文章快速了解“机器人操作系统”,同时又能在未来的学习过程中更加顺利。

一、ROS初级教程之-ROS安装

ROS初级教程之-文件系统介绍


三、 ROS初级教程之-文件系统工具介绍


四、ROS初级教程之-创建编译功能包


附件下载:

1、ROS初级教程大纲

2、ROS中级教程大纲

3、ROS命令整理

4、ROS_学习附件






关键词: ROS     Ubuntu    

高工
2015-11-19 21:51:28     打赏
2楼

1、环境

操作系统:Ubuntu 12.04

ROS版本:Hydro

操作系统介绍:ROS 渔龟的首选平台为 Ubuntu 12.04 LTS (Precise)发行版,而ROS 渔龟对其他Linux发行版,Mac OS X,Android以及Windows也有不同程度的支持

ROS版本介绍:ROS Hydro(渔龟)是第七个ROS发行版, 发行时间为2013年9月4日。升级了众多ROS程序包,使其为可支持新的catkin底层系统,并修正并改进了ROS的核心组件。许多工具也得到了升级,如: rviz 和 rqt。与此同时,使用了官方标准的依赖包,而非创建我们自己的专用版本。实现这项改进的函数库有PCL,Stage和Gazebo,以及其它众多曾被ROS社区单独定制过的函数库。另外,ROS 渔龟可以更好的与Gazebo集成

以下所有的教程都是在hydro这个版本上的运行。

2、安装

第一步:配置软件仓库

配置Ubuntu软件仓库以允许系统安装"restricted"、"universe"和"multiverse"这三种组件类型的软件

第二步:添加Sources.list

作用:配置电脑使其能够接收来自packages.ros.org的软件。

目前ROS Hydro软件包只支持Precise、Quantal和Raring这三个版本的ubuntu操作系统。

在命令行下输入:

建议选择国内镜像地址,可以提高下载速度,毕竟full安装模式需要下载将近1GB的文件。

1、 国外镜像

Ubuntu 12.04 (Precise)

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'

Ubuntu 12.10 (Quantal)

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu quantal main" > /etc/apt/sources.list.d/ros-latest.list'

Ubuntu 13.04 (Raring)

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu raring main" > /etc/apt/sources.list.d/ros-latest.list'

2、 国内镜像

Ubuntu 12.04 (Precise)

sudo sh -c 'echo "deb http://www.cosrobotics.org/mirror-cn-sh/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'

Ubuntu 12.10 (Quantal)

sudo sh -c 'echo "deb http://www.cosrobotics.org/mirror-cn-sh/ros/ubuntu quantal main" > /etc/apt/sources.list.d/ros-latest.list'

Ubuntu 13.04 (Raring)

sudo sh -c 'echo "deb http://www.cosrobotics.org/mirror-cn-sh/ros/ubuntu raring main" > /etc/apt/sources.list.d/ros-latest.list'

3、更加详细的镜像源

链接

第三步:添加keys

命令:sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-key 0xB01FA116


第四步:安装

1、升级你的软件包列表,确保是最新

命令:sudo apt-get update

2、安装版本选择

我们选择的是apt-get的方式安装,而不是从源码安装,因为使用这些安装包比通过编译源码来安装更加高效,所以推荐你在Ubuntu系统下使用这种方式安装。

当然有些人是劝不住的,如果你想自己体验一下源码自己编译的话,给你:传送门。

最后你也会回来用安装包的方式安装的,

ROS_Hydro一共有四种安装方式:

第一种桌面完整版安装:包含ROS核心组件、rqt、rviz、机器人通用库、2D/3D模拟器、导航以及2D/3D感知,这个也是推荐的安装方式。

命令:sudo apt-get install ros-hydro-desktop-full

第二种桌面精简版安装: 包含ROS核心组件、rqt、rviz、机器人通用库

命令:sudo apt-get install ros-hydro-desktop

第三种ROS核心安装: 包含ROS核心组件、 编译工具以及通信相关的函数库,无GUI工具。

命令:sudo apt-get install ros-hydro-ros-base

第四种独立安装: 还有一种单独安装某个ROS程序包的方式,这个比较自由,需要什么装什么。(用需要安装的程序包名称替换破折号后的的“PACKAGE”):

命令:sudo apt-get install ros-hydro-PACKAGE

配合此安装模式可使用

命令:apt-cache search ros-hydro

查看可供安装的ROS程序包

综上所述:建议大家使用桌面完整版安装的方式。

第五步:初始化rosdep

功能:rosdep能够让你在编译程序包源码时轻松地安装编译所依赖的库,并运行一些必要ROS核心组件。

命令:sudo rosdep init

这行命令使用结束后会提示你输入:

命令:rosdep update

记住这行不能使用sudo的形式,会导致权限错误。

第六步:环境配置

功能:每次启动终端的时候自动配置ROS变量,而不需要每次启动终端的时候使用,类似:source /opt/ros/版本/setup.bash的命令配置一次ROS环境。

命令:

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

source ~/.bashrc

备注:如果你的电脑装了多个ROS,几个系统共存,只需要更改:echo "source /opt/ros/版本/setup.bash" >> ~/.bashrc 命令中的版本就行了。

当然你如果只是想切换当前终端环境下的ROS版本,只需要运行。

命令:source /opt/ros/hydro/setup.bash

第七步:安装rosinstall

功能:rosinstall是一个与ROS发行版无关的常用命令行工具。它只需一个命令就可以让你轻松地下载ROS程序包所需的资源树。

命令:sudo apt-get install python-rosinstall

ROS安装结束后

安装结束后

我们需要确认一下是否设置好环境变量

命令:export |grep ROS

出现类似如图3所示,就说明设置正常,否则运行第六步。

3、建立工作空间

我们开始创建一个catkin 工作空间,打开一个新终端,输入。

命令: mkdir -p ~/catkin_ws/src

命令:cd ~/catkin_ws/src

命令:catkin_init_workspace 初始化工作空间

命令:cd ~/catkin_ws/(或者输入cd ..)

命令:catkin_make 编译


输入ls后我们发现在catkin_ws目录下多了两个文件夹build和devel,其中在devel文件夹里面都是类似*.sh文件。我们可以和上面第六步一样使用source命令,将这些文件中的任何一个都可以设置在ROS工作环境的最顶层。

我们source一下当前的工作环境

命令:source devel/setup.bash

此时我们已经安装好ROS—Hydro并且建立好一个工作空间。

录应该能看到'build'和'devel'这两个文件夹。在'devel'文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层。关于这些想了解更多请阅读catkin文档。接下来首先source一下新生成的setup.*sh文件:

$ source devel/setup.bash

到此你的工作环境已经搭建完成,接下来可以继续学习 《ROS文件系统教程》。


高工
2015-11-19 21:58:43     打赏
3楼

一、ROS系统架构

第一种: 根据ROS系统代码的维护者、分布来区分,也就是一种笼统的分级方式。

(1)main:核心部分。

参与: Willow Garage公司和一些开发者设计、提供以及维护。

功能:提供了一些分布式计算的基本工具、整个ROS的核心部分的程序编写。

(2)universe:全球范围的代码

参与:不同国家的ROS社区组织、个人开发和维护。

功能:各种库代码,如OpenCV、PCL等;库的上一层是从功能角度提供的代码,如人脸识别,他们调用下层的库;最上层的代码是应用级的代码,让机器人完成某一确定的功能。ROS之所以流行离不开各大开源社区的支持,正是因为有了他们ROS才更加完善。

第二种:根据ROS文件系统层级进行分类,分成三个层级,文件系统级,计算图级,开源社区级。

二、ROS系统层级介绍

1、文件系统级:由ROS内部构成,文件结构,核心文件组成。

Packages(包): Package是ROS系统中最底层最基本的组织,里面包包含节点、ROS依赖库、数据套、配置文件、第三方软件、或者任何其他逻辑构成。package包含一个 manifest.xml 文件目录,功能包清单Manifest也就是Manifest.xml提供关于功能包,许可信息和包之间依赖关系,编译标志等信息。

Stacks(堆): Package的集合,比Package这个概念高一级别。Stack包含一个 Stack.xml 文件的目录。功能包集清单Stack manifect也就是Stack.xml提供关于功能包集的清单,包括它的许可信息和Stack之间依赖关系。

Packages和Stacks两者关系:

备注:ROS的编译系统有两种,一种叫做catkin,另外一种叫做rosbuild,rosbuild是ROS传统的编译系统,从最初沿用至今,但面临被抛弃的状态。catkin源于ROS fuerte这个版本,当时只是被一小部分人使用,在后一个版本groovy开始被正式使用,用于取代rosbuild。为什么要用catkin取代rosbuild?当然是因为catkin比rosbuild好很多,在实际应用过程中会感受到的 。基于catkin编写的package叫做wet package,基于rosbuild编写的package叫做dry package,在ROS相关的问答里面会常常看到这种说法的。

以后的教程都将使用:Catkin

2、计算图级:进程与系统之间的通信

计算图是ROS处理数据的一种点对点的网络形式,ROS建立一个连接到所有进程的,系统中的任何节点都可以访问这个网络,通过这个网络与其他节点进行数据交换,同时将自身数据发送到网络上。计算图级有几个很重要的概念:节点(Node)、消息(Message)、话题(Topic)、服务(Service),

节点Nodes:一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信,节点可以发布或接收一个话题,也可以提供或使用某种服务。

消息Messages:消息是一种ROS数据类型,每一个消息都是一个严格的数据结构,标准的数据类型(整型,浮点型,布尔型等等)都是支持的,同时也支持原始数组类型,消息可以包含任意的嵌套结构和数组,用于订阅或发布到一个话题。

话题Topics:节点可以发布消息到话题,也可以订阅话题以接收消息。

服务Service:ROS的通讯模式是基于话题的发布/订阅模型,服务是在发布主题时,正在发送的数据能够以多对多的方式交互。

节点管理器Master:ROS名称服务 ,用于节点的名称注册和查找可以帮助节点找到彼此。

3、开源社区级:全世界不同国家的ROS社区组织、个人共享的知识算法和代码,正是因为这种分布式的结构,ROS可以迅速发展,软件仓库中包的数量指数级增加。


院士
2015-11-19 22:09:12     打赏
4楼
现在牛X的东西都是在用linux吗?

专家
2015-11-19 22:19:03     打赏
5楼
好牛叉,硬件平台是什么?

高工
2015-11-20 14:03:57     打赏
6楼
我还是老实的搞单片吧,高大上,看不懂

高工
2015-11-23 19:27:34     打赏
7楼

在ROS中程序代码是分布在众多ROS软件包当中,当使用命令行工具(比如ls和cd)来浏览时会非常繁琐,因此ROS提供了专门的命令工具来简化这些操作。

在Linux下当要输入一个完整的软件包名称时比较繁琐,我们会使用Tab补齐,在ROS中同样支持这个功能,善用这个功能增加生产效率。

一、Rospack=ros+pack(age)

功能:rospack允许你获取软件包相关信息

格式:rospack find [package-name];package-name是包名称

例程:rospack find roscpp

返回结果:在ubuntu12.04下,返回/opt/ros/hydro/share/roscpp

二、Roscd=ros+cd

功能:对ROS文件系统允许利用包的名字直接切换到相应的文件目录下。

格式:roscd [locationname[/subdir]],[locationname[/subdir]]是[本地包名称/子目录]

例程:roscd roscpp

返回结果:就直接跳到那个目录下了,输入pwd看到

/opt/ros/hydro/share/roscpp

备注:

roscd将只能打开存在与环境变量ROS_PACKAGE_PATH中的目录及其子目录

使用命令

ROS_PACKAGE_PATH

export | grep ROS 查看 ROS_PACKAGE_PATH后的文件。

显示结果:

/opt/ros/hydro /share:/opt/ros/hydro/stacks,中间用冒号隔开。

其它roscd用法:

1、直接切换到一个软件包或软件包集中

命令:roscd roscpp/cmake

Cmake为roscpp下的子目录

2、直接切换到ROS保存日记文件的目录下

命令:roscd log

如果没有运行过任何ROS程序,则会报错,负责跳转到改目录下

三、Rosls=ros+ls

功能:直接利用包的名字,去列举包中的所有文件即文件夹,而不用使用绝对路径。它的使用和roscd是一样的,只有存在于ROS_PACKAGE_PATH中的目录及其子目录才能使用这个命令。

格式:roscd [locationname[/subdir]],[locationname[/subdir]]是[本地包名称/子目录]

例程:rosls_roscpp_tutorials

返回结果:列出目录roscpp_tutorials下的所有文件。


高工
2015-11-23 19:29:47     打赏
8楼

首先回顾第一章安装ROS后,创建工作空间

1、创建ROS工作空间

下面我们开始创建一个catkin 工作空间:

$ mkdir -p ~/catkin_ws/src

$ cd ~/catkin_ws/src

即使这个工作空间是空的(在'src'目录中没有任何软件包,只有一个CMakeLists.txt链接文件),你依然可以“build”它:

$ cd ~/catkin_ws/

$ catkin_make

catkin_make命令在catkin 工作空间中是一个非常方便的工具。如果你查看一下当前目录应该能看到'build'和'devel'这两个文件夹。在'devel'文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层。关于这些想了解更多请阅读catkin文档。接下来首先source一下新生成的setup.*sh文件:

$ source devel/setup.bash

2、创建ROS程序包

创建一个catkin程序包

本部分教程将演示如何使用catkin_create_pkg命令来创建一个新的catkin程序包以及创建之后都能做些什么。

首先切换到之前通过《创建catkin工作空间教程》创建的catkin工作空间中的src目录下:

# You should have created this in the Creating a Workspace Tutorial

$ cd ~/catkin_ws/src

现在使用catkin_create_pkg命令来创建一个名为'beginner_tutorials'的新程序包,这个程序包依赖于std_msgs、roscpp和rospy:

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

这将会创建一个名为beginner_tutorials的文件夹,这个文件夹里面包含一个package.xml文件和一个CMakeLists.txt文件,这两个文件都已经自动包含了部分你在执行catkin_create_pkg命令时提供的信息。

catkin_create_pkg命令会要求你输入package_name,如果有需要你还可以在后面添加一些需要依赖的其它程序包:

# This is an example, do not try to run this

# catkin_create_pkg[depend1] [depend2] [depend3]

catkin_create_pkg命令也有更多的高级功能,这些功能在catkin/commands/catkin_create_pkg中有描述。


菜鸟
2015-12-12 19:19:44     打赏
9楼
很棒的样子

高工
2015-12-19 21:44:33     打赏
10楼
这个相当于是个操作系统是吗?

共16条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]