ROS简介

2023-05-16

1.什么是 ROS

机器人是一个系统工程,它涉及机械、电子、控制、通信、软件等诸多学科。以前,开发一个机器人需要设计机械、画电路板、写驱动程序、设计通信架构、组装集成、调试、以及编写各种感知决策和控制算法,每一个任务都需要花费大量的时间。然而随着技术进步,机器人产业分工开始走向细致化、多层次化,如今的电机、底盘、激光雷达、摄像头、机械
臂等元器件都由不同厂家专门生产,社会分工加速了机器人行业的发展。而各个部件的集成就需要一个统一的软件平台,在机器人领域,这个平台就是机器人操作系统 ROS。

ROS 是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。ROS 虽然叫做操作系统,但并非 Windows、Mac 那样通常意义的操作系统,它只是连接了操作系统和开发的 ROS 应用程序,所以它也算是一个中间件,基于 ROS 的应用程序之间建立起了沟通的桥梁,所以也是运行在 Linux 上的运行时环境,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。

以上几个关键词(框架、中间件、操作系统、运行时环境)都可以用来描述 ROS 的特性,作为初学者我们不必深究这些概念,随着你越来越多的使用 ROS,就能够体会到它的作用。

2. ROS 的特点

ROS 主要具有以下特点:

(1)分布式、点对点
ROS 采用了分布式的网络框架,使用了基于 TCP/IP 的通信方式,实现了模块间点对点的松耦合连接,可以执行多种类型的通信。通过点对点的设计让机器人的进程可以分别运行,便于模块化的修改和定制,提高了系统的容错能力。

(2)支持多种语言

ROS 支持多种编程语言。C++和 Pyhton 是目前应用最广的 ROS 开发语言。此外,ROS还支持 LISP、C#、Java、Octave 等多种不同的语言。为了支持更多应用的移植和开发,ROS采用了一种语言中立的接口定义语言来实现各模块之间消息传送。通俗的理解就是,ROS的通信格式和用哪种编程语言无关,它使用的是自身定义的一套通信接口。

(3)组件化工具包丰富

ROS 采用组件化的方式将已有的工具和软件进行了集成,比如 ROS 中三维可视化平台Rviz,Rviz 是 ROS 自带的一个图形化工具,可以方便地对 ROS 的程序进行图形化操作;ROS 中常用的物理仿真平台 Gazebo,在该仿真平台下可以创建一个虚拟的机器人仿真环境,还可以在仿真环境下添加一些需要的参数。

(4)免费且开源

ROS 具有一个庞大的开源社区 ROS WIKI(http://wiki.ros.org/)。ROS WIKI 中的应用代码以维护者来分类,主要包含由 Willow Garage 公司和一些开发者设计、维护的核心库部分,以及不同国家的 ROS 社区组织开发和维护的全球范围的开源代码。当前使用 ROS 开发的软件包已经达到数千万个,相关的机器人已经多达上千款。此外,ROS 遵从 BSD 协议,允许使用者修改和重新发布其中的应用代码,对个人和商业应用及修改完全免费。

ROS 也存在一些问题。如:通信实时性能有限;系统稳定性尚不满足工业级要求;安全性上没有防护措施;目前主要支持 Linux(Ubuntu)系统。但总体来说,ROS 为我们开发机器人带来了许多方便。它更适合科研和开源用户使用,如果在工业场景应用(例如无人驾驶)还需要做优化和定制。

3.历代 ROS 版本

ROS1.0 版本发布于 2010 年,基于 PR2 机器人开发了一系列机器人相关的基础软件包。随后 ROS 版本迭代频繁,目前已经发布到了 Melodic。推荐使用 Kinetic 和 Melodic 这两个长期支持的版本。

ROS 目前主要支持在 Linux 操作系统上安装部署,它的首选开发平台是 Ubuntu。同时,也可以在 OS X、Android、Arch、Debian 等系统上运行。时至今日 ROS 已经相继更新推出了多种版本,供不同版本的 Ubuntu 开发者使用。为了提供最稳定的开发环境,ROS 的每个版本都有一个推荐运行的 Ubuntu 版本。如下表所示:

在这里插入图片描述

如果你还没有安装 Ubuntu,建议选择 18.04 版本。并且建议在本地安装,不推荐用虚拟机,这样兼容性更好。下载网址:https://www.ubuntu.com/download/desktop。

如果你已经安装 Ubuntu,请确定系统版本。在终端中输入 cat /etc/issue 确定 Ubuntu 版本号,然后选择对应的 ROS 版本。如果没有安装正确的 ROS 版本,就会出现各种各样的依赖错误,所以安装时请谨慎。

安装ROS 可戳此

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS简介 的相关文章

  • gazebo通过sdf搭建仿真环境和机器人Husky

    具体格式要求可参考 http sdformat org spec ver 1 6 elem sdf
  • ROS系统基本功能的使用详解(基本指令/节点/服务/启动文件/动态参数)

    ROS系统基本功能的使用详解 一 创建工作空间 二 创建与编译ROS功能包 三 ROS的基本命令 3 1 节点 3 2 主题 3 3 服务 3 4 参数服务器 四 节点的创建与运行 4 1 创建源文件 4 2 修改CMakeLists tx
  • ROS中使用VLP16激光雷达获取点云数据

    ROS中使用VLP16激光雷达获取点云数据 个人博客地址 本文测试环境为 Ubuntu20 04 ROS Noetic 需要将激光雷达与PC连接 然后在设置 gt 网络 gt 有线中将IPv4改为手动 并且地址为192 168 1 100
  • 思岚RPLIDAR A2 在ubuntu 16.04上的测试

    1 下载雷达ROS包 首先在github上下载rplidar的ros包 下载指令为 默认安装了git git clone https github com Slamtec rplidar ros git 在ubuntu上创建工作空间 并将该
  • 无人驾驶论坛

    1 百度Apollo论坛 http www 51apollo com 2 人工智能中文资讯网 http www ailab cn
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • ROS学习(1)——ROS1和ROS2的区别

    因为机器人是一个系统工程 它包括了机械臂结构 电子电路 驱动程序 通信框架 组装集成 调试和各种感知决策算法等方面 任何一个人甚至是一个公司都不可能完成机器人系统的研发工作 但是我们又希望自己能造出一个机器人跑一跑 验证一下自己的算法 所以
  • ROS2踩坑记录

    Vscode 显示 找不到module 以此选择 设置 Python 在setting json中编辑 在 python autoComplete extraPaths 中添加额外的第三方库路径 如 opt ros foxy lib pyt
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • Ubuntu16.04及ROS Kinetic环境下安装使用RealSense SR300

    Ubuntu16 04及ROS Kinetic环境下安装使用RealSense SR300 1 准备条件 需要安装Ubuntu16 04及ROS Kinetic 2 安装驱动 安装realsense的驱动流程可以根据Github上的官方推荐
  • ubuntu18.04命令安装ros2

    ROS2官方文档 本教程为apt get命令安装方式 官网教程有点问题 借鉴一下大佬的安装方式 文章目录 1 安装ROS2 1 1 安装秘钥相关指令 1 2 授权秘钥 1 3 添加ROS2软件源 1 4 安装 2 设置环境 可选但是推荐 2
  • 如何将视频或图像序列转换为包文件?

    我是 ROS 新手 我需要转换预先存在的视频文件 或者large可以连接到视频流中的图像数量 bagROS 中的文件 我在网上找到了这段代码 http answers ros org question 11537 creating a ba
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • 什么是 void `std::allocator`?即:`std::allocator`

    自动生成ROS 机器人操作系统 message C 头文件包含如下类型定义 typedef std msgs Header
  • Kinect / Primesense (Xtion) ROS Ubuntu 通过虚拟机 (VMware)

    由于我花了相当长的时间才弄清楚如何让 Xtion Primesense 在 VMware 上工作 所以我想在这里与大家分享 使用 Kinect 时 即使 VMware 已成功连接该设备 我也无法让 ROS 查看该设备 roslaunch o
  • 不使用ros编译roscpp(使用g++)

    我正在尝试在不使用ROS其余部分的情况下编译roscpp 我只需要订阅一个节点 但该节点拥有使用旧版本ROS的节点 并且由于编译问题 我无法将我的程序与他的程序集成 我从git下载了源代码 https github com ros ros
  • ROS安装错误(Ubuntu 16.04中的ROS Kinetic)

    中列出的步骤顺序http wiki ros org kinetic Installat 已被关注 尝试在Ubuntu 16 04中安装ROSkinetic 输入以下命令时出错 sudo apt get install ros kinetic
  • 可以在catkin工作区之外创建ROS节点吗?

    我想在catkin工作区之外创建一个ROS发布者节点 可以创建吗 当然可以 像对待任何其他 cpp 库或 python 包一样对待 ROS 在Python中你必须保留PYTHONPATH环境变量指向ros包 opt ros kinetic
  • 如何订阅“/scan”主题、修改消息并发布到新主题?

    我想通过订阅message ranges来改进turtlebot3的LDS 01传感器 通过应用一些算法修改messange ranges并将其发布到新主题 如下所示 但是当我运行编码时出现错误 错误是 遇到溢出的情况 错误是 运行时警告
  • 无法在 Ubuntu 20.04 上安装 ROS Melodic

    我正在尝试使用这些命令在 Ubuntu 20 04 上安装 ROS Melodic sudo sh c echo deb http packages ros org ros ubuntu lsb release sc main gt etc

随机推荐

  • YOLO v5获取目标的坐标位置,以及将crop融合到全黑背景中

    可能很多人不知道我这个标题后面这句话的含义 xff0c 因为这个场景可能很多地方压根用不到 xff0c 暂时不细说 我是上个月开始接触yolov5 v6 2版本做目标识别的 xff0c 也没有什么深度学习和pytorch的概念 xff0c
  • slam的简单操作以及原理

    slam的原理以及应用 1 新建工作文件夹 使用mkdir命令新建文件夹 slambook和ch1文件夹 xff0c 并利用cd命令进入ch1文件下 xff0c 截图如 2 编写helloslam小程序 使用vim命令创建helloslam
  • 遗传算法实例解析

    遗传算法实例及MATLAB程序解析 遗传算法Genetic Algorithms xff0c GA xff09 是一种基于自然选择原理和自然遗传机制的搜索 xff08 寻优 xff09 算法 xff0c 它是模拟自然界中的生命进化机制 xf
  • nginx 反向代理 获取客户端真实IP和域名以供日志分析

    场景 xff1a 客户网站或者移动APP在请求到达后端服务之前 xff0c 会经过层层代理的转发 典型的是CDN xff08 反向代理 43 Squid缓存 xff09 xff0c 如果是带有安全或者WAF功能的则结构要更为复杂些 一般的解
  • Linux服务器上安装配置VNC Server

    前言 项目需要在Linux上进行数据抽取的相关任务 xff0c 使用的是Kettle这一ETL工具 xff0c 但是服务器就一个主机 xff0c 这里对应Kettle的job和trans等相关配置就无法进行 xff0c 所以需要使用远程图形
  • 几种简单的插值方法与实例

    插值方法及MATLAB实例解析 插值 xff1a 已知有限个已知数据点 xff0c 求得的插值函数必须过这些点 xff0c 然后在这个范围内用插值函数求得未知数据点的值 拟合 xff1a 已知有限个已知数据点 xff0c 但拟合函数不用过每
  • 模拟退火算法及实例解析

    模拟退火算法及MATLAB实例 同遗传算法一样 xff0c 模拟退火算法也是现代优化算法的一种 他对于解决组合优化问题 xff0c 如TSP xff0c JSP等问题效果较好 关于模拟退火算法的详细介绍 xff0c 可以参考这里模拟退火算法
  • MATLAB图像的读取和显示

    MATLAB图像的读取和显示 更新日期2021 06 08更新内容修正一些文字错误 xff0c 优化排版 直接看代码吧 xff0c 注释写的很清楚了 span class token operator span 图像读取 xff0c 参数为
  • 图像的点运算1

    图像的点运算MATLAB实例代码 span class token operator span span class token operator span 图像的点运算 span class token number 1 span spa
  • 二维插值-MATLAB

    二维插值与MATLAB实例解析 一 插值节点为网格节点二 插值节点为散乱节点Addition xff1a xff08 1 xff09 学会查看matlab帮助文档 xff08 2 xff09 matlab脚本类型 xff08 3 xff09
  • 曲线拟合-最小二乘法

    线性最小二乘法及matlab例程 线性最小二乘法 曲线拟合 xff1a 已知平面上一组横坐标互不相同的点 xff0c 寻求一个函数 xff0c 使其与所有数据点最为接近 拟合函数 xff1a f x 61
  • 时间序列分析

    确定性时间序列分析方法 确定性时间序列分析方法 一 移动平均法二 指数平滑法1 一次指数平滑法2 二次指数平滑法3 三次指数平滑法 三 差分指数平滑法1 一阶差分指数平滑法2 二阶差分指数平滑模型 四 具有季节特点的时间序列的预测 时间序列
  • Linux系统下用Ventoy制作Windows启动盘

    Ubuntu 18 04 制作Windows10企业版启动盘 xff08 U盘 xff09 概要 ubuntu18 04 xff0c ros对应的是melodic版本 转回Windows下使用Robot Studio时 xff0c 由于系统
  • Ubuntu 18.04开机卡在grub,引导修复的2种实用方法

    解决ubuntu18 04开机卡在grub命令行界面的问题 前情概要 xff1a 由于windows重装系统 xff0c 导致ubunru18 04的引导出了问题 下面提供两种解决方案 xff0c 本人采用第二种方式成功修复 知识补充 xf
  • Modbus Slave学习笔记

    第一章 初识Modbus 1 1什么是Modbus 简而言之 xff0c Modbus通信协议是工业领域通信协议的业界标准 xff0c 并且是当前工业电子设备之间相当常用的连接方式之一 Modbus 协议是应用于电子控制器上的一种通用语言
  • command 'gcc' failed with exit status 1错误问题的解决办法

    在写Python代码的时候 xff0c 需要用到psutil模块 xff0c 需要安装 在安装psutil 模块的时候出现的问题 xff0c 重新安装了gcc等各种我能想到的 xff0c 不过还是不行 网上说是其实安装一个对应的devel环
  • Ubuntu 18.04 配置Ros melodic

    更新时间2021 04 09 ROS简介 1 添加ROS软件源 你可能对源的概念理解不深 xff0c 没关系 xff0c 先简单理解为系统获取资源的地址 xff0c 跟着做即可 设置软件源 xff1a 国外 xff1a sudo sh c
  • Linux进程管理(一) Linux进程的基本概念

    Linux进程的基本概念 最后更新时间2020 04 09 Ubuntu linux的所有任务都是在操作系统内核的调度下由CPU执行 xff0c 很多时候 xff0c Linux是将任务和进程的概念合在一起 进程的标准定义 xff1a 进程
  • Ubuntu wifi适配器未找到

    先蓝牙共享手机网络或在usb共享打开 软件与更新 xff0c 进入 附加驱动 选项卡 xff0c 如果网络正常 xff0c 且源设置正常 xff0c 一般能搜到对应的无线网卡驱动 xff0c 安装之后再重启电脑就可以了 要注意你的bois是
  • ROS简介

    1 什么是 ROS 机器人是一个系统工程 xff0c 它涉及机械 电子 控制 通信 软件等诸多学科 以前 xff0c 开发一个机器人需要设计机械 画电路板 写驱动程序 设计通信架构 组装集成 调试 以及编写各种感知决策和控制算法 xff0c