ROS五个特点
1.点对点设计
- 节点单元
- 分布式单元
- RPC+TCP/UDP通信系统
- 适合多机协同
2.多语言支持 - 支持python、C++、java等编程语言
- 语言无关的借口定义
- 架构精简、集成度高
- 每个功能节点可以单独编译
- 集成众多开源项目
- 接口统一、提高软件复用性
4.组件化工具包丰富 - 3D可视化工具--rviz
- 物理仿真环境--gazebo
- 数据记录工具--rosbag
- Qt工具箱--rqt_*
5.免费并且开源 - BSD许可,可修改、可复用、可商用
- 软件包数量指数级增加,良好的生态系统
四位一体
ROS = 通讯机制+开发工具+应用功能+生态系统
ROS系统实现-三个层次
- 计算图
描述程序是如何运行 - 文件系统
程序文件是如何组织和构建的 - 开源社区
ROS资源是如何分布式管理的
计算图
1.节点(node)--软件模块
执行任务的进程
2.节点管理器(ROS Master)控制中心,提供参数管理
记录每个节点信息
3.话题(topic)--异步通信机制,传输消息(Message)
-
服务(service)--同步通信机制,双向-传输请求/应答数据
l#话题通信机制
Talker与Listener 先后顺序无关
一般需要如下七个步骤
- Talker注册
- Listener 注册
- ROS Master 进行信息匹配
- Listener发送连接请求
- Talker 确认链接请求
- 建立网络连接
-
Talker向Listener发布数据
服务通信机制
双向同步通信机制,类似于常用的web服务器
一般需要如下五个步骤
- Talker注册
- Listener 注册
- ROS Master 进行信息匹配
- 建立网络连接
-
Talker向Listener发布服务应答数据
参数通信机制
类似与全局变量的概念
需要及时的更新参数:动态更新参数机制
- 1.Talker设置变量
- 2.Listener查询参数值
-
3.ROS Master向Listener发送参数值
话题与服务的区别
文件系统
- 功能包清单(package manifest)记录功能包的基本信息,包括作者信息,许可信息,依赖选项、编译标志等;
- 元功能包(meta packages):组织多个用于同一目的的功能包;
- 元功能包清单(meta packages):类似功能包清单,不同之处在于元功能包清单中可能会包含运行是需要依赖的功能包或者声明一些引用的标签;
- 消息类型(Message):消息是ROS节点之间发布/订阅的通信信息,可以使用ROS系统提供的消息类型,也可以使用.msg文件在功能包的msg文件夹下自定义需要的消息类型;
- 服务类型(service):服务类型定义了ROS服务器/客户端通信模式下的请求与应答数据类型,可以使用ROS系统提供的服务类型,也可以使用.srv文件在功能包的srv文件中进行定义;
-
代码(code):放置功能包节点源代码的文件夹
三个层次
- 开源社区 Ros 资源是如何分布式管理的
- 文件系统 程序文件是如何组织和构建的
- 计算图 描述程序是如何运行的
ROS安装
这里主要介绍通过软件源的方式安装;如果是一些嵌入式设备可以通过编译源码的方式安装。
1.按照官网步骤安装:http://wiki.ros.org/kinetic/Installation/Ubuntu;
2.参考一下步骤:
将 ubuntu 的源设置为其自带的主服务器的源,并且将"restricted" "universe" 和"multiverse"都选上。
可能存在改完源仍更新不成功的情况,需要手动修改源
sudo gedit /etc/apt/source.list
把所有的末尾以 universe 的注释都取消然后执行
sudo apt-get update
ROS常用命令
roscore
命令启动rosmaster节点ctrl + c
退出rosmaster![](https://upload-images.jianshu.io/upload_images
/8789591-6065a9cf97ad21b6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
ROS 第一个实例
roscore // 启动ros master
rosrun turtlesim turtlesim_node //启动小海龟仿真器
rosrun turtlesim turtle_teleop_key //启动海龟控制节点
通过
rqt_graph
打开计算图rosnode info / 节点名
可以看见该节点发布的话题,订阅的信息以及提供的服务
rostopic info /话题名
话题信息rostopic echo /话题名
监听话题具体信息具体的消息开始发布,主要包含两个内容,小海龟的线速度和角速度。单位分别为m/s和度/秒。
在机器人开发的时候可能没有终端去发布消息:可以通过命令行去简单测试。
rostopic pub /...
但上述命令只能发送一次,可以在pub后面加上一个频率参数
rosservice
可视化工具rqt_plot
Ros 应用框架
nodelet API提供共享内存的机制,让运行更加高效。
网友评论