因为要研究SLAM相关的课题,要用到ROS。越学越发现ROS的强大(吹一波)。随着学习的深入,知识点甚多,因此做一下记录与大家分享,有不对的地方望及时提醒。
ROS
官方给出关于ROS的介绍
https://www.ros.org/about-ros/
总的的来说ROS是一款便于编写机器人软件的框架,是库,工具和约定的一个集合。ROS提供了一套通信机制,该通信机制降低了机器人系统的耦合度,提高鲁棒性。Ros简化跨各种机器人平台创建复杂而强大的机器人行为的任务。
ROS通信机制
ROS我认为最重要的就是它的通信机制了,可以说想要明白ROS到底是怎么运行的就是要明白它的通信机制。
1.关键词
-
Nodes:节点
一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。 一个节点就表示一个进程。ROS中可以有多个节点。 -
Topic:话题
消息通过发布/订阅(Publish/Subscribe)方式传递。
发布者节点(Talker)针对一个给定的话题发布消息,订阅者节点(Listener)订阅某个话题及其特定数据。
话题通信是【异步通信】。
无反馈,有缓冲,弱实时,节点关系多对多,适于数据传输。 -
Service:服务
服务是节点之间通讯的另一种方式。
服务允许节点发送请求(request) 并获得一个响应(response) -
Param:参数
rosparam能够让我们存储并操作ROS参数服务器(Parameter Server)上的数据。
参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。
rosparam使用YAML标记语言的语法。
一般而言,YAML的表述很自然:
1是整型
1.0是浮点型
one是字符串
true是布尔
[1,2,3]是整型列表
{a:b,c:d}是字典 -
ROS Master:节点管理器
统筹管理所有节点,进行节点间的查找、连接等
为系统提供参数服务器,管理全局参数
节点管理器也体现了ROS的弊端:ROS Master 如果 broken down,整个系统将崩溃