全部版块 我的主页
论坛 站务区 十一区 新手入门区
1007 0
2020-08-18

一、引言部分 Introduction to ROS

  1. 本书前 章介绍 ROS 的基本概念和包管理系统(package management system),搞清几个关键知识:
  • ROS Master

  • ROS nodes

  • ROS parameter server

  • ROS messages

  • ROS services

  1. 有以下几个目标:
  • 为什么学ROS

  • 为什么倾向于用ROS来开发机器人

  • 上手ROS文件系统(ROS filesystem level)和计算图(computation graph level)

  • 理解ROS框架的元素

  • 上手ROS Master

  1. 熟悉 ROS 文件系统
  • Packages 包ROS最基本的单元,包含了一个或多个ROS程序,库,配置文件等,将这些集成在一起。包是ROS构建和发布的原子(atomic)项目。

  • Package mainfest 包说明 这个文件存在于一个包中,其中包含了包的信息、作者、证书、依赖项、编译标志等。package.xm l文件即时在Packages中的具体形式。

  • me tapackages 元包 元包指一个或多个相关的松耦合在一起的包。原则上来说,元包并不包含任何源码或普通包中常见的文件??

  • me tapackages manifest 元包说明 与包的mainfest文件类似,区别在于这里可能包含做为运行时依赖的别的Packages并声明export标志??

  • Messages(.msg) 消息 是从一个ROS过程到另一个ROS过程的一类信息,我们可以在Packages内的msg文件夹内自定义信息,.msg是信息文件的后缀。

  • Services(.srv) 服务 是一种ROS过程之间 “问/答” 形式的交互方式,问答数据可以在Packages内的srv文件夹内自定义信息,.srv是信息文件的后缀。

  • Repositories 仓库 大多ROS包都使用Version Control System(VCS) 版本控制系统,例如Git, svn等,共享同样的VCS进行包的收集可以称作仓库,仓库内的包可以利用catkin自动发布工具bloom来发布。

  1. 理解 ROS Package 结构,一个典型的包中含有以下文件夹:
  • config 配置 配置文件夹中包含所有的配置文件,这个文件夹是用户自己创建的,一个普遍共识是用config来命名,并保持所有配置文件都在其中。

  • include/package_name 包含 包含文件夹含有所有需要在包中使用的头文件和库。

  • sc ript 脚本 脚本文件夹包含可执行的Python脚本。

  • src 源 源文件夹存储C++源码。

  • lanuch 启动 启动文件夹存有用于启动一个或多个ROS node 节点lanuch文件。

  • msg 消息 消息文件夹包含各项消息的定义。

  • srv 服务 服务文件夹包含各类服务的定义

  • action 动作 动作文件夹包含动作文件。

  • package.xm l 说明 这就是上节提到的Package mainfest 包说明

  • CMakeList.txt 编译包的指导文件。

  1. 一些常用的 ROS 包 管理命令
  • catkin_create_pkg 产生新包

  • rospack 获取文件系统中包的信息

  • catkin_make 在工作空间中编译包

  • rosdep 安装该包所需要的系统依赖项

  1. 一些常用的 rosbash 命令
  • roscd 进入包路径或指定路径。

  • roscp 从包中拷贝文件

  • rosed 利用vim修改文件

  • rosrun 执行包中的可执行文件

  1. 理解 package.xm l 的常见格式
  • 一般包含以下语句

  • package name

  • version of the package

  • the package desc ription

  • author details

  • package build dependencies

  • runtime dependencies

  • <build_depend></build_depend> 标签 包含了编译包中源码所必需的其他包。

  • <run_depend></run_depend> 标签 包含了运行包节点所必需的其他包。

  1. 理解 ROS me tapackages 结构
  • ROS 元包是一类特殊的ROS包,其只包含一个文件,即 package.xm l ,它并不像普通包一样有子文件夹和文件。

  • 元包简单地利用 package.xm l 把多个包组合成一个逻辑包,在package.xm l文件中包含一个export标签 ,例如 <export> <me tapackage/> </export>

  • 在元包中,没有用于 catkin<buildtool_depend>依赖项,只有 <run_depend>依赖项,也就是元包中成组的这些包。

  • ROS navigation stack就是元包一个很好的例子,一旦ROS和Navigation包安装好后,我们可以利用 roscd navigation 来切换到该包的文件夹,打开 package.xm l 文件,就是一个元包的例子。

  • 我在这里发现我的ROS没有这个包,安装该包,参考链接

  1. 理解 Messages(.msg) 消息
  • ROS 节点可以读写不同类型的数据,数据的类型利用一种简化的消息描述语言来定义,也叫 ROS Messages ,这些数据类型的描述可以用于在不同语言中生成消息类型的源码。

  • ROS 消息的 data type 数据类型 描述储存于 msg/***.msg 文件中,用户可为其节点自定义消息类型。

  • 消息的定义可以包含两种类型: fieldsconstants 。field 分为 field 分为 field typefield name。其中 field type 即为发送消息的数据类型,名称即为消息名; constant 在消息文件中用于定义常量。

  • 一个简单的消息定义如: int32 number string name float32 speed。其中定义了三个消息,对于每个消息定义,第一部分是 field type 用于定义数据类型,后面跟着 field name 用于在消息中进行索引,比如 msg.number 可以提取到名为 number 的消息的值,定义类似变量定义,索引类似结构体。

  • ROS内建的常用数据类型如下

|基础类型|序列化|C++|Python|

|:—|:–|:—|:—|

|bool(1)|Unsigned 8-bit int|uint8_t(2)|bool|

|int8|Signed 8-bit int|int8_t|int|

|uint8 |Unsigned 8-bit int|uint8_t|int (3)|

|int16 |Signed 16-bit int|int16_t|int|

|uint16 |Unsigned 16-bit int|uint16_t|int|

|int32 |Signed 32-bit int|int32_t|int|

|uint32 |Unsigned 32-bit int|uint32_t|int|

|int64 |Signed 64-bit int|int64_t|long|

|uint64 |Unsigned 64-bit int|uint64_t|long|

|float32 |32-bit IEEE float|float|float|

|float64 |64-bit IEEE float|double|float|

|string |ascii string(4)|std::string|string|

|time |secs/nsecs unsigned 32-bit ints|ros::Time|rospy::Time|

|duration |secs/nsecs signed 32-bit ints|ros::Duration|rospy::Duration|

  • 其他数据类型一般用于特定的消息,例如几何消息geometry_msgs和传感器消息sensor_msgs。一类特殊的ROS消息叫做消息头 message header ,消息头能携带信息,例如时间、参考系、帧id、顺序号等。利用消息头我们能获取带有编号的消息,在时间序列中很清晰。消息头一般用来发送例如机器人关节变换等数据。一个例子: uint32 seq time stamp string fr ame_id 这个消息头中包含3个fields,分别代表序列号、时间戳和帧ID。

  • rosmsg 命令可用于检查消息头和 field type ,例如使用这个命令来查看一个消息的消息头: rosmsg show std_msgs/Header

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群