连载文章,长期更新,欢迎关注:
写在前面
第1章-ROS入门必备知识
1.1 ROS简介
1.2 ROS开发环境搭建
1.3 ROS系统架构
1.4 ROS调试工具
1.5 ROS节点通信
1.6 ROS其他重要概念
1.7 ROS2.0展望
第2章-C++编程范式
第3章-OpenCV图像处理
第4章-机器人传感器
第5章-机器人主机
第6章-机器人底盘
第7章-SLAM中的数学基础
第8章-激光SLAM系统
第9章-视觉SLAM系统
第10章-其他SLAM系统
第11章-自主导航中的数学基础
第12章-典型自主导航系统
第13章-机器人SLAM导航综合实战
大家如有任何技术问题,欢迎加入QQ技术群(117698356),进群一起交流讨论
可能很多初学者听到ROS机器人操作系统,就被操作系统几个字吓住了。其实,简单点说ROS就是一个分布式的通信机制,帮助程序进程之间更方便地实现通信。一个机器人通常包含多个部件,比如四肢、视觉、听觉等都有配套的控制程序。那么要协调一个机器人中的这些部件,或者协调由多个机器人组成的机器人集群,怎么办呢?这时就需要让分散的部件之间能够互相通信,在多机器人集群中,这些分散的部件还分散在不同的机器人上。解决这种分布式的通信问题正是ROS被设计出来的初衷,随着越来越多的人参与ROS开发及源码贡献,涌现了大量的第三方工具和实用开源软件包,ROS才变成现在的样子。ROS的前身是斯坦福大学人工智能实验室的STAIR(Stanford AI Robot,斯坦福人工智能机器人)项目,随后由美国的机器人公司Willow Garage承接进行ROS的实际开发,Willow Garage解体后ROS就转让给了OSRF(Open Source Robotics Foundation,开源机器人基金会),OSRF后来又更名为Open Robotics。目前ROS由Open Robotics管理运营,如图1-1所示为ROS的象征性图标,另外ROS的吉祥物是一只小海龟(Turtle)。
图1-1 ROS的图标
一个经常让初学者困惑的地方是,学会了ROS就算是学会机器人开发了吗?当然不是,严格意义上讲ROS只是一套通信机制而已,机器人中的各种算法和应用程序依然是用C++/Python等常见编程语言进行开发。
1.1.1 ROS性能特色
在正式学习ROS之前,先介绍ROS的几个特性来帮大家建立一些感性的认识。ROS的特性主要有以下几个:
- 元操作系统
- 分布式通信机制
- 松耦合软件框架
- 丰富的开源功能库
特性1:ROS是一个机器人领域的元操作系统。也就是说它并不是真正意义上的操作系统,其底层的任务调度、编译、设备驱动等还是由它的原生操作系统Ubuntu Linux完成。ROS实际上是运行在Ubuntu Linux上的亚操作系统或者说软件框架,但提供硬件抽象、函数调用、进程管理这些类似操作系统的功能,也提供用于获取、编译、跨平台的函数和工具。
特性2:ROS是一套分布式通信机制。其核心思想就是将机器人的软件功能做成一个个节点,节点之间通过互相发送消息进行沟通。这些节点可以部署在同一台主机上,也可以部署在不同主机上,甚至还可以部署在互联网上。ROS网络通信机制中的主节点(Master)负责对网络中各个节点之间的通信过程进行管理调度,同时还提供一个用于配置网络之中全局参数的服务。
特性3:ROS是松耦合软件框架。利用分布式通信机制,实现节点间的进程通信。ROS的软件代码以松耦合方式组织,开发过程灵活,管理维护方便。
特性4:ROS具有丰富的开源功能库。ROS是基于BSD(Berkeley Software Distribution,伯克利软件发行)协议的开源软件,允许任何人修改、重用、重发布、在商业和闭源产品中使用。得益于开源和ROS框架的协作精神,成千上万的贡献者为ROS提供了丰富的开源功能库。这些功能库大都采用现今流行的C++/Python进行编写,因此使用ROS能够快捷地搭建自己的机器人原型。
1.1.2 ROS发行版本
跟Linux发行版类似,ROS发行版是内置了一系列常用功能包的ROS系统安装包,即将ROS系统打包安装到我们的系统中来的安装包。ROS最初是基于Ubuntu系统开发的,ROS的发行版本名称也和Ubuntu采用了同样的规则,即版本名称由两个相同首字母的英文单词组成,版本首字母按字母表递增顺序选取。此外,每个ROS版本都配有一个海龟(Turtle)插图的海报。本书写作时最新的ROS版本是Melodic Morenia,如图1-2是ROS的一些主要版本。
图1-2 ROS的主要版本
1.1.3 ROS学习方法
要想学好以及用好ROS,需要进行大量的实践操作。因此在快速了解ROS的核心概念和编程范式后,就要结合大量的实际项目实战来深入理解ROS。遇到问题和报错不要慌,冷静地阅读错误提示,逐步定位错误来源,学会正确地提问和使用网络查找资料。学会用正确地方式解决问题,能帮你更快地提高能力。ROS的学习资源主要有以下几个:
- 官网:www.ros.org
- 源码:github.com
- Wiki:wiki.ros.org
- 问答:answers.ros.org
大量的教程和文档都被放在ROS的wiki页面上,所以要学会从ROS的wiki页面中获取第一手学习资料。另外就是各种ROS功能包在GitHub的源码,学会阅读Code、README、Issues等重要的内容。其次,还有很多网站和论坛收录了大量有关ROS开发和常见问题的文章。
源码仓库
参考文献
【1】 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)