SLAM+语音机器人DIY系列:(二)ROS入门——1.ROS是什么
温馨提示
摘要
ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用。本章节主要内容:
1.ROS是什么
(图1)ROS的图标
ROS是一个适用于机器人的开源的元操作系统。其实它并不是一个真正的操作系统,其底层的任务调度、编译、寻址等任务还是由Linux操作系统完成,也就是说ROS实际上是运行在Linux上的次级操作系统。但是ROS提供了操作系统应用的各种服务(如:硬件抽象、底层设备控制、常用函数实现、进程间消息传递、软件包管理等),也提供了用于获取、编译、跨平台运行代码的工具和函数。ROS主要采用松耦合点对点进程网络通信,目前主要还是支持Ubuntu系统,windows和Mac OS目前支持的还不好,所以推荐在Ubuntu系统上安装使用ROS。
1.1.ROS的特性
(图2)ROS的特性
总结起来就是,使用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常用命令工具是rostopic、rosservice、rosnode、rosparam、rosmsg、rossrv、roswtf;ROS常用可视化工具是rqt、rviz;ROS用于存储与回放数据的工具rosbag;ROS的log系统记录软件运行的相关信息;ROS还拥有强大的第三方工具支持:三维仿真环境Gazebo、计算机视觉库OpenCV、点云库PCL、机械臂控制库MoveIt、工业应用库Industrial、机器人编程工具箱MRPT、实时控制库Orocos。
1.3.ROS的学习资源
官网: www.ros.org
源码: github.com
Wiki: wiki.ros.org
问答: answers.ros.org
后记
------SLAM+语音机器人DIY系列【目录】快速导览------
第1章:Linux基础
第2章:ROS入门
第3章:感知与大脑
第4章:差分底盘设计
第5章:树莓派3开发环境搭建
第6章:SLAM建图与自主避障导航
2.google-cartographer机器人SLAM建图
第7章:语音交互与自然语言处理
第8章:高阶拓展
2.centos7下部署Django(nginx+uwsgi+django+python3)
参考文献
[1] 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?