机器人操作系统(ROS)浅析(肖军浩 博士 译) 学习笔记
第一章:
第 1 章 绪论
1.1 选择 ROS 的理由
分布式计算 现代机器人系统往往需要多个计算机同时运行多个 进程,例如:
(1)一些机器人搭载多台计算机,每台计算机用于控制机器人的 部分驱动器或传感器;
(2)即使只有一台计算机,通常仍将程序划分为独立运行且相互 协作的小的模块来完成复杂的控制任务,这 也是常见的做法;
(3)当多个机器人需要协同完成一个任务时,往往需要互相通信 来支撑任务的完成;
(4)用户通常通过台式机、笔记本或者移动设备发送指令控制机 器人,这种人机交互接口可以认为是机器人软件的一部分。
软件复用:
(1) ROS 标准包(Standard Packages)提供稳定、可调式的各类重要机器人算法实现。
(2)ROS通信接口
快速测试 :
(1)精心设计的 ROS 系统框架将底层硬件控制模块和顶层数据处 理与决策模块分离;
(2)ROS 另外提供了一种简单的方法可以在调试过程中记录传感 器数据及其他类型的消息数据,并在试验后按时间戳回放,这类记录的数据叫作包(bag), 一个被称为 rosbag 的工具可以用于记录和回放包数据。
总结:ROS的主要代码由C++语言 3 编写,本书后续章节也会介绍如何在ROS中使用C++进行编程。 ROS 不仅是一个函数库,除包含客户端库(Client Libraries) 外,还包含一个中心服务器(Central Server)、 一系列命令行 工具、图形化界面工具以及编译环境。
1.2 内容概述
在groovy及之前的版本中,ROS采用rosbuild系 统来完成软件的编译,而在新的版本中,则改用catkin编译系统。
第 2 章 入门概述
2.1 安装 ROS
(1)创建文件/etc/apt/sources.list.d/ros-latest.list
(2)ros-latest.li文件中添加信息:deb http://packages.ros.org/ros/ubuntu trusty main
(3)wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key
(4)sudo apt-key add ros.key
(5)sudo apt-get update
(6)sudo apt-get install ros-indigo-desktop-full
(7)安装 turtlesim 功能包:sudo apt-get install ros-indigo-turtlesim
(8)为系统设置 rosdep:sudo rosdep init
2.2 配置账户
(1)rosdep update
(2)source /opt/ros/indigo/setup.bash
(3)编辑账户根目 录中的文件.bashrc,在最后一行输入:source /opt/ros/indigo/setup.bash
2.3 使用 TURTLESIM的小例子
2.4 功能包/软件包(PACKAGES)
(1)在 ROS 中,所有软件都被组织为软件包的形式,称为 ROS软件包或功能包,有时也简称为包。ROS 软件包是一组用于实现特 定功能的相关文件的集合,包括可执行文件和其他支持文件。
(2)使用下行命令,可以获取所有已安装的ROS软件包列表清单:rospack list
每个程序包由一个清单文件(文件名为 package.xml)定义。 该文件定义关于包的一些细节,包括其名称、版本、维护者和依赖关系。
使用新的 catkin 编译构建系统的功能包 ——编译产生的可执行文件并未存放在功能包目录下,而 是存放在一个单独的标准化目录层次结构中。
对于使用 apt-get 安装的功能包,其所在根目录为/opt/ros/indigo。可 执行文件存储在这个根目录下的 lib 子目录里。
要找到一个软件包的目录,使用 rospack find 命令: rospack find package-name
(turtlesim是一个软件包)一些命令: $ rosls turtlesim , $ rosls turtlesim /images ,
$ roscd turtlesim /images/ , $ roscd turtlesim /images/
图像查看命令: eog box−turtle . png
2.5 节点管理器(THE MASTER) ——》谈如何实际执行 ROS 软件?
ROS 的一个基本目标是使机器人专家设计的很多称为节点 (node)的几乎相对独立的小程序能够同时运行。为此,这些节点必须能够彼此通信。ROS中实现通信的关键部分就是 ROS 节点管理器。要启动节点管理器,使用如下命令: roscore
大多数 ROS 节点在启动时连接到节点管理器上,如果运行 中连接中断,则不会尝试重新连接。因此,如果 roscore 被终止,当前运行的其他节点将无法建立新的连接,即使稍后重启 roscore 也无济于事。
roslaunch 的工具,其目的是一次性启动多个节点。这是一个自适应工具,如果启动多节点时没有节 点管理器运行,它会自动启动节点管理器;如果已经有一个节点 管理器在运行,则会使用已有的。
2.6 节点(NODES)
要启动节点管理器,使用如下命令: roscore 。当结束时,可以通过在 roscore 终端键入 Ct