ROS(Robot Operating System)
在调试SLAM程序时,数据来源有三种:传感器,数据集,bag文件。
若手里没有相应传感器,就需要用虚拟的数据来跑SLAM,其中最方便的当属利用ROS下的bag文件发布topic,然后SLAM程序就可以监视topic发出的数据,就像使用真实的传感器采集数据一样。
中文ROS维基 http://wiki.ros.org/cn
ROS入门教程-安装并配置ROS环境(Kinetic 版本)
功能包/软件包(Packages)
在 ROS 中,所有软件都被组织为软件包的形式,称为 ROS 软件包或功能包,有时也简称为包。 ROS 软件包是一组用于实现特定功能的相关文件的集合,包括可执行文件和其他支持文件。
查看软件包列表和定位软件包 使用下行命令,可以获取所有已安装的ROS软件包列表清单
rospack list
要找到一个软件包的目录,使用 rospack find 命令:
rospack find package-name
当然,有时你并不知道(或不记得)感兴趣的软件包的完整名称,这时使用 rospack 命令非常方便, 因为该命令支持 tab 命令补全。例如,你可以键入
rospack find turtle
查看软件包: 要查看软件包目录下的文件,使用如下命令:
rosls package-name
如果想“访问”某软件包目录,可以将当前目录切换至此软件包目录,使用如下命令:
roscd package-name
节点管理器(The Master)
ROS 的一个基本目标是使机器人专家设计的很多称为节点(node) 的几乎相对独立的小程序能够同时运行。为此,这些节点必须能够彼此通信。 ROS 中实现通信的关键部分就是 ROS 节点管理器。要启动节点管理器,使用如下命令:roscore 。这个命令非常简单易用: roscore 命令不带任何参数,也无需任何配置。
节点管理器应该在使用 ROS 的全部时间内持续运行。一个合理的工作流程是在一个终端启动 roscore,然后打开其他终端运行其他程序。除非你已经完成 ROS 的相关工作,否则一般没有理由终止 roscore 命令。当结束时,可以通过在 roscore 终端键入 Ctrl-C停止节点管理器
节点(Nodes)
一旦启动roscore后,便可以运行ROS程序了。 ROS程序的运行实例被称为节点(node)。
话题
ROS节点之间进行通信所利用的最重要的机制就是消息传递。在ROS中,消息有组织地存放在话题里。消息传递的理念是:当一个节点想要分享信息时,它就会发布(publish)消息到对应的一个或者多个话题;当一个节点想要接收信息时,它就会订阅(subscribe)它所需要的一个或者多个话题。 ROS节点管理器负责确保发布节点和订阅节点能找到对方;而且消息是直接地从发布节点传递到订阅节点,中间并不经过节点管理器转交。