ROS 官网学习资料整理 1-初级阶段
目 录
目录 ................................................................................................................................................................. 1
一、基本命令 ................................................................................................................................................. 3
二、创建一个 WorkSpace .............................................................................................................................. 3
三、创建一个 Package ................................................................................................................................... 3
3.1 一个包的组成 .................................................................................................................................. 3
3.2 包与 catkin WorkSpace 空间关系 ................................................................................................... 3
3.3 创建一个 catkin Package ................................................................................................................. 4
3.4 包的依赖 .......................................................................................................................................... 5
3.4.1 First-order dependencies ........................................................................................................ 5
3.4.2.Indirect dependencies ............................................................................................................. 5
3.5 定制自己的包 .................................................................................................................................. 5
3.5.1 认识 package.xml 文件各部分含义 ..................................................................................... 5
四、编译一个 ROS 包 .................................................................................................................................... 6
4.1 Building Packages ............................................................................................................................. 6
五、理解 ROS 节点 ........................................................................................................................................ 6
5.1 熟悉如下几个概念 .......................................................................................................................... 7
5.2 Client Libraries .................................................................................................................................. 7
5.3 roscore ............................................................................................................................................... 7
5.4 开始使用 rosnode ............................................................................................................................ 8
5.5 用 rosrun. .......................................................................................................................................... 9
六、理解 ROS 中的 Topics ........................................................................................................................... 10
6.1 键盘遥控乌龟 ................................................................................................................................ 11
6.2 ROS Topics...................................................................................................................................... 11
6.3 介绍 rostopic .................................................................................................................................. 12
6.3.1 rostopic echo ........................................................................................................................ 12
6.3.2 rostopic list ........................................................................................................................... 13
6.4 ROS Messages................................................................................................................................. 13
6.4.1 用 rostopic type ................................................................................................................... 14
6.4.2 用 rostopic pub 命令 ........................................................................................................... 15
6.4.3 用 rostopic hz 命令 ............................................................................................................. 16
七、理解 ROS 中的 Services 和 Parameters ................................................................................................ 18
7.1 ROS Services................................................................................................................................... 18
7.2 用 rosservice 命令 .......................................................................................................................... 18
7.2.1 rosservice list ........................................................................................................................ 19
7.2.2 rosservice type ...................................................................................................................... 19
7.2.3 rosservice call ....................................................................................................................... 20
7.3 用 rosparam .................................................................................................................................... 21
7.3.1 rosparam list ......................................................................................................................... 21
7.3.2 rosparam set 和 get 命令 ...................................................................................................... 21
7.3.3 rosparam dump 和 rosparam load 命令 ............................................................................... 23
八、使用 rqt_console 和 roslaunch ............................................................................................................. 24
8.1 安装 rqt 和 turtlesim 包。 ............................................................................................................. 24
8.2 rqt_console 和 rqt_logger_level 的用法 ......................................................................................... 24
1
Version:1.0;Date:20140430;Author:LiGaofeng,NKU
ROS 官网学习资料整理 1-初级阶段
8.2.1 关于 logger 的输出等级。 ................................................................................................. 26
8.2.2 roslaunch 的用法 ................................................................................................................. 27
8.2.3 roslaunching ......................................................................................................................... 27
九、用 rosed 编辑文件 ................................................................................................................................ 29
9.1 rosed 的使用 ................................................................................................................................... 29
9.2 用 tab 键编辑一个包下的所有文件。 ......................................................................................... 30
9.3 Editor ............................................................................................................................................... 30
十、创建一个 ROS msg 和 srv ..................................................................................................................... 31
10.1 msg 和 srv 介绍 ............................................................................................................................ 31
10.2 msg ................................................................................................................................................ 32
10.2.1 创建一个 msg ................................................................................................................... 32
10.2.2 使用 rosmsg ...................................................................................................................... 33
10.3 使用 srv ........................................................................................................................................ 34
10.3.1 创建一个 srv ..................................................................................................................... 34
10.3.2 使用 rossrv ........................................................................................................................ 35
10.4 msg 和 srv 的一般步骤 ................................................................................................................ 35
10.5 一些帮助工具 .............................................................................................................................. 37
十一、写一个简单的发布者 Publisher 和订阅者(Subscriber)(C++语言)............................................. 37
11.1 写一个 Publisher 节点 ................................................................................................................. 37
11.2 写一个 Subscriber 节点。 ........................................................................................................... 39
11.3 编译你的节点 .............................................................................................................................. 40
十二、测试发布节点和订阅节点。 ........................................................................................................... 41
12.1 运行 Publisher .............................................................................................................................. 41
12.2 运行 Subscriber ............................................................................................................................ 42
十三、写一个简单的 Service 和 Client ....................................................................................................... 42
13.1 写一个 Service 节点 .................................................................................................................... 42
13.2 写一个 Client 节点 ...................................................................................................................... 43
13.3 编译你的节点 .............................................................................................................................. 44
十四、测试 Service 和 Client ....................................................................................................................... 45
14.1 运行 Service(记得先运行 roscore) ........................................................................................ 45
14.2 运行 Client ................................................................................................................................... 45
十五、记录数据以及回复数据 ................................................................................................................... 46
15.1 记录数据(创建 bag 文件) ...................................................................................................... 46
15.1.1 记录所有发布的 topics .................................................................................................... 46
15.2 查看 bag 文件及 playing bag 文件.............................................................................................. 47
15.3 记录数据的一部分 ...................................................................................................................... 48
十六、roswtf 的使用 ................................................................................................................................... 48
2
Version:1.0;Date:20140430;Author:LiGaofeng,NKU
ROS 官网学习资料整理 1-初级阶段
一、基本命令
cd [file_name]: 进入某一文件路径
cd .. : 返回上一级目录
ls:列出当前路径下的所有文件
rospack find [package_name]: 返回所要找的包的路径
roscd: 将当前路径设置为某一个 ROS 包或栈的路径或其子路径
pwd: 显示出当前
roscd log:将路径设置为 ROS 存储日志文件的路径。
rosls [locationname[/subdir]]:直接将路径改为某个包下的某个子目录
TAB 键,相当于 Eclipse 里面的 ALT+/。但没有 ALT+/功能那么强大,只能在路径唯一时才会自动出
来。不会给出可选列表
二、创建一个 WorkSpace
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
初始化了工作空间,创建了一个 catkin_ws 空间,在该空间下有一个 src 文件夹。
$ cd ~/catkin_ws/
$ catkin_make
执行完该命令后,查看当前路径,会发现该空间除了 src,又多了 build 和 devel 文件夹。这两个文
件夹中是一些配置信息、编译信息等。
三、创建一个 Package
3.1 一个包的组成
必须满足三个要求:
1. 一个包里必须包含一个 package.xml 文件,用于说明关于包的基本信息(meta information)——
相当于 Android 里德 Manifest.xml 文件。
2. 包必须包含一个 CMakeLists.txt 文件。
3. 一个文件夹里只能有一个包。这也意味着,不会有多个包共用相同的路径。
3.2 包与 catkin WorkSpace 空间关系
一个包通常要在一个 catkin WorkSpace 中。也可以单独创建包。
包在 WorkSpace 空间中的结构是这样的:
workspace_folder/ -- WORKSPACE
src/ -- SOURCE SPACE
CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin
package_1/
3
Version:1.0;Date:20140430;Author:LiGaofeng,NKU
ROS 官网学习资料整理 1-初级阶段
CMakeLists.txt -- CMakeLists.txt file for package_1
package.xml -- Package manifest for package_1
...
package_n/
CMakeLists.txt -- CMakeLists.txt file for package_n
package.xml -- Package manifest for package_n
3.3 创建一个 catkin Package
首先要先进入之前创建的一个 WorkSpace 的 src 目录中
$ cd ~/catkin_ws/src
然后用 catkin_create_pkg
[depend1] [depend2] [depend3]创建一个包。
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
依照上述命令,创建了一个名为 beginner_tutorials 的包。这个包里包含了一个 package.xml 和
CMakeList.txt 文件。进入 src 文件可以看到多了一个名为 beginner_tutotials 的包。
进入 beginner_tutorials 查看一下。里面有如下文件:
4
Version:1.0;Date:20140430;Author:LiGaofeng,NKU
ROS 官网学习资料整理 1-初级阶段
那么,什么是包的依赖呢?上述的命令里,有三个依赖,std_msgs rospy roscpp,他们分别是什么含
义呢?
3.4 包的依赖
3.4.1 First-order dependencies
一个包直接依赖的文件?类?包?库?
3.4.2.Indirect dependencies
包所依赖的文件可能还依赖别的文件。
用 rospack depends1
查询想要查询的类的依赖
rospack depends 列出包所有依赖的对象
3.5 定制自己的包
3.5.1 认识 package.xml 文件各部分含义
1. description 标签
this can be your description
2. maintainer 标签
user
这个标签描述了谁是这个包的维护者。至少需要一个维护者。标签中给出了维护者的邮箱
3. license 标签
BSD
需要选择一个开放源码许可证。开放源码许可证有:BSD, MIT, Boost Software License, GPLv2, GPLv3,
LGPLv2.1, and LGPLv3 等,在 ROS 里采用 BSD 开源许可证
4. dependencies 标签
给出了该包依赖于哪些包或文件
默认为 buildtool_depend、编译 build_depend、运行 run_depend
切换行号显示
12 catkin
13
14 roscpp
15 rospy
16 std_msgs
17
18 roscpp
19 rospy
20 std_msgs
5. 去掉各种注释和无用的标签之后的 packag.xml 文件如下:
beginner_tutorials
0.1.0
The beginner_tutorials package
Li Gaofeng
5
Version:1.0;Date:20140430;Author:LiGaofeng,NKU
ROS 官网学习资料整理 1-初级阶段
BSD
http://wiki.ros.org/beginner_tutorials
Li Gaofeng
catkin
roscpp
rospy
std_msgs
roscpp
rospy
std_msgs
四、编译一个 ROS 包
4.1 Building Packages
1. 利用 catkin_make 命令
该命令是一个命令行工具,为标准 catkin 工作流程提供了方便。可以看做 catkin_make 命令把 Cmake
工作流程中的 cmake 和 make 的响应结合到了一起。
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]
2. Building Your Package
$ cd ~/catkin_ws/
$ catkin_make
首先必须进入一个 catkin 空间,不然在进行 catkin_make 编译时,catkin_make 默认的编译路径是空
间下的 src 目录,如果不在空间目录,则找不到 src 文件,编译不成功。
如果更改编译路径:
# In a catkin workspace
$ catkin_make --source my_src
$ catkin_make install --source my_src # (optionally)
编译之后,在工作空间中除了 src 文件夹,还有 build 和 devel 文件夹。build 是 cmake 和 make 在编
译包时生成的一些设置文件。查看该文件夹会发现其中多了一个 beginner_tutorials 的包。devel 文件
夹是默认的 devel 空间路径,是安装包之前的一些必要的可执行文件和库。
五、理解 ROS 节点
我们会用到一个轻量级的模拟器,用下面命令安装:
$ sudo apt-get install ros-
-ros-tutorials
6
Version:1.0;Date:20140430;Author:LiGaofeng,NKU
ROS 官网学习资料整理 1-初级阶段
将其中的 distro 替换成自己安装的 ros 版本的名字,比如 ros-hydro
5.1 熟悉如下几个概念
Nodes: 节点
Messages: 消息。一种数据类型,用来向一个 Topic 订阅或发布数据。
Topics: 话题
Master: 主节点
rosout: 标准输出/标准错误的输出
roscore: Master+rosout+parameter server
5.2 Client Libraries
ROS client library 允许节点以不同的变成语言与其他节点通信。其中有两个包:
rospy = python client library
roscpp = c++ client library
5.3 roscore
在运行 ROS 时应该首先运行的。运行:
$ roscore
会看到如下样式的输出:
... logging to ~/.ros/log/9cf88ce4-b14d-11df-8a75-00251148e8cf/roslaun
ch-machine_name-13039.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://machine_name:33919/
ros_comm version 1.4.7
SUMMARY
========
PARAMETERS
* /rosversion
* /rosdistro
NODES
7
Version:1.0;Date:20140430;Author:LiGaofeng,NKU
ROS 官网学习资料整理 1-初级阶段
auto-starting new master
process[master]: started with pid [13054]
ROS_MASTER_URI=http://machine_name:11311/
setting /run_id to 9cf88ce4-b14d-11df-8a75-00251148e8cf
process[rosout-1]: started with pid [13067]
started core service [/rosout]
5.4 开始使用 rosnode
好了,现在打开一个新的 terminal,让我们用 rosnode 来看看 roscore 都做了什么吧。
Note: 打开一个新的 terminal 会重设环境,~/.bashrc 文件会 is sourced,如果在运行像 rosnode 这
样的命令时出现问题,你需要添加以下环境设置文件到~/.bashrc 文件中,或手动重新 source 他们。
下面的命令会列出当前处于活动状态的所有节点:
$ rosnode list
如果什么都没有运行,会看到只有 rosout 节点
下面命令会返回关于某指定节点的信息:
$ rosnode info /rosout
返回信息如下所示:
---------------------------------------------------------------------
---
Node [/rosout]
Publications:
* /rosout_agg [rosgraph_msgs/Log]
Subscriptions:
* /rosout [unknown type]
Services:
* /rosout/set_logger_level
* /rosout/get_loggers
8
Version:1.0;Date:20140430;Author:LiGaofeng,NKU