ROS智能小车DIY专题:机器人操作系统ROS基础知识

Posted hiram-zhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS智能小车DIY专题:机器人操作系统ROS基础知识相关的知识,希望对你有一定的参考价值。

###文章更新记录###

2018/12/26 创建文章《机器人操作系统ROS基础知识》

 

###写在前面###

ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用。本文主要内容:

1.ROS是什么

2.ROS系统整体架构

3.ubuntu16.04中安装ROS kinetic

4.如何编写ROS的第一个程序hello_world

5.编写简单的消息发布器和订阅器

6.编写简单的serviceclient

7.理解tf的原理

8.理解roslaunch在大型项目中的作用

9.熟练使用rviz

10.在实际机器人上运行ROS高级功能预览

 

###正文###

1.ROS是什么

技术分享图片

 

(图1ROS的图标

ROS是一个适用于机器人的开源的元操作系统。其实它并不是一个真正的操作系统,其底层的任务调度、编译、寻址等任务还是由Linux操作系统完成,也就是说ROS实际上是运行在Linux上的次级操作系统。但是ROS提供了操作系统应用的各种服务(如:硬件抽象、底层设备控制、常用函数实现、进程间消息传递、软件包管理等),也提供了用于获取、编译、跨平台运行代码的工具和函数。ROS主要采用松耦合点对点进程网络通信,目前主要还是支持Ubuntu系统,windowsMac OS目前支持的还不好,所以推荐在Ubuntu系统上安装使用ROS

1.1 ROS的特性

技术分享图片

(图2ROS的特性

总结起来就是,使用ROS能够方便迅速的搭建机器人原型。ROS使用了BSD许可证,这是一个很宽松的开放许可证,允许在商业和闭源产品中使用,这一点对开发产品的创业公司很重要。ROS当前的代码统计量,总行数超过1400万,作者超过2477名。代码语言以C++为主,63.98%的代码是用C++编写的,排名第二的是python,占13.57%,可以说ROS基本上都是使用这两种语言,来实现大部分的功能。

 

1.2 ROS的结构

 

这里主要从四个方面来解读ROS的结构,设计思想、核心概念、核心模块、核心工具。

 

ROS的设计思路主要是分布式架构,将机器人的功能和软件做成一个个节点,然后每个节点通过topic进行沟通,这些节点可以部署在同一台机器上,也可以部署在不同机器上,还可以部署在互联网上。

 

ROS的核心概念主要是节点和用于节点间通信的话题与服务。管理器Master管理节点与话题之间通信的过程,并且还提供一个参数服务用于全局参数的配置。ROS通过功能包集stack和功能包package来组织代码。

 

ROS的核心模块包括:通信结构基础、机器人特性功能、工具集。通信结构基础主要是消息传递、记录回放消息、远程过程调用、分布式参数系统;机器人特性功能主要是标准机器人消息、机器人几何库、机器人描述语言、抢占式远程过程调用、诊断、位置估计、定位导航;工具集主要是命令式工具、可视化工具、图形化接口。

 

 

 

 

 

 ROS核心工具很丰富,ROS常用命令工具是rostopicrosservicerosnoderosparamrosmsgrossrvroswtfROS常用可视化工具是rqtrvizROS用于存储与回放数据的工具rosbagROSlog系统记录软件运行的相关信息;ROS还拥有强大的第三方工具支持:三维仿真环境Gazebo、计算机视觉库OpenCV、点云库PCL、机械臂控制库MoveIt、工业应用库Industrial、机器人编程工具箱MRPT、实时控制库Orocos

 

1.3 ROS的学习资源

 

官网:  www.ros.org

 

源码:  github.com

 

Wiki:  wiki.ros.org

 

问答:  answers.ros.org

 

 

以上是关于ROS智能小车DIY专题:机器人操作系统ROS基础知识的主要内容,如果未能解决你的问题,请参考以下文章

0基础搭建ROS智能移动机器人小车

ros学习-从零开始搭建一台ros小车

ros学习-从零开始搭建一台ros小车

ROS机器人双驱小车制作BOM清单

SLAM+语音机器人DIY系列:ROS入门——1.ROS是什么

DIY你的低成本ROS机器人