ROS机器人从零开始——ROS的认识与理解
**说明:博客的主要目的是帮助想要学习ROS的朋友建立一套系统的ROS学习流程,快速的掌握基于ROS的开发过程,避免走弯路。本系列博客记录了ROS的仿真学习以及实物平台搭建,主要从ROS无人车和无人机着手。因为手中项目较多,博客更新可能不够及时,若有交流学习需要,可以关注我们的博客私信我,或者加我个人QQ625821004。
一、为什么要学习ROS机器人操作系统
ROS是一款机器人通用软件框架,并且集成了大量的工具和、代码库、以及各种协议,提供了类似操作系统所提供的功能,可以极大的简化机器人的开发流程。
通俗的说,ROS提供了大量的复用功能包,可以根据自己的需要选择合适的功能包完成自己希望的功能,并且可以在ROS框架下灵活的开发自己的机器人功能。需要提出的是,当前ROS机器人操作系统已经可以在多个平台上应用,常见的足式机器人、轮式机器人、无人机、无人船、水下机器人、机械臂等等,都可以通过ROS进行开发。
二、ROS的设计目标
ROS的设计目标是提高机器人的软件复用率,所以它被设计为一种分布式结构,使得框架中的每个功能包模块都可以单独的设计、编译、运行,便于功能包的共享。
三、ROS的特点
ROS的核心在于——分布式网络通信,使用了基于TCP/IP的通信方式,实现了模块间点对点通信的松耦合连接,可以执行若干种类型的通信,包括基于话题(Topic)的异步数据流通信,基于服务(service)的同步数据流通信,还有参数服务器上的数据存储灯。总体来讲,ROS主要有以下几个特点:
(1)点对点的设计
在ROS中,每一个进程都以一个节点的形式运行,可以分布在多个不同的机器。这种点对点的设计可以让定位、导航等功能在不同的机器人上运行,分散控制器的计算压力,适应多机器人的协同工作。
(2)多语言支持
ROS支持多种语言开发,包括Python、C++、Java、Octave、LISP等等,但是最为常用的是C++和Python,友情提示,初学者应当掌握C++或者Python,官网的例程以及第三方功能包,以这两种语言的居多。
(3)架构简单、集成度高
ROS框架具有的模块化特点使得每个功能节点可以进行单独的编译运行,并且使用了统一的消息接口,让模块的移植、复用更加方便。
(4)组件化工具包丰富
比较常用的是RVIZ可视化平台以及gazebo三维仿真平台,还有许多其他的基于QT开发的组件化工具,不再一一列举。
(5)免费、开源
免费开源的方式,使得ROS社区的功能包呈现指数级增长,开发者可以根据自己的需要下载对应的功能包,极大的加速了机器人的应用开发。
四、常见的ROS学习网站