想做一个机器人?那先花一分钟了解下ros吧

振华OPPO 振华OPPO     2022-12-14     546

关键词:

ROS诞生背景

机器人是一种高度复杂的系统性实现,机器人设计包含了机械加工、机械结构设计、硬件设计、嵌入式软件设计、上层软件设计…是各种硬件与软件集成,甚至可以说机器人系统是当今工业体系的集大成者。

机器人体系是相当庞大的,其复杂度之高,以至于没有任何个人、组织甚至公司能够独立完成系统性的机器人研发工作。

一种更合适的策略是:让机器人研发者专注于自己擅长的领域,其他模块则直接复用相关领域更专业研发团队的实现,当然自身的研究也可以被他人继续复用。这种基于"复用"的分工协作,遵循了不重复发明轮子的原则,显然是可以大大提高机器人的研发效率的,尤其是随着机器人硬件越来越丰富,软件库越来越庞大,这种复用性和模块化开发需求也愈发强烈。

在此大背景下,于 2007 年,一家名为 柳树车库(Willow Garage) 的机器人公司发布了 ROS(机器人操作系统),ROS是一套机器人通用软件框架,可以提升功能模块的复用性,并且随着该系统的不断迭代与完善,如今 ROS 已经成为机器人领域的事实标准。

1 ROS概念

ROS全称Robot Operating System(机器人操作系统)

ROS是适用于机器人的开源元操作系统;

ROS集成了大量的工具,库,协议,提供类似OS所提供的功能,简化对机器人的控制;

还提供了用于在多台计算机上获取,构建,编写和运行代码的工具和库,ROS在某些方面类似于“机器人框架”;

ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。

2 ROS设计目标

机器人开发的分工思想,实现了不同研发团队间的共享和协作,提升了机器人的研发效率,为了服务“ 分工”,ROS主要设计了如下目标:

  • 复用:ROS的目标不是成为具有最多功能的框架,ROS的主要目标是支持机器人技术研发中的代码重用。
  • 分布式:ROS是进程(也称为Nodes)的分布式框架,ROS中的进程可分布于不同主机,不同主机协同工作,从而分散计算压力
  • 松耦合:ROS中功能模块封装于独立的功能包或元功能包,便于分享,功能包内的模块以节点为单位运行,以ROS标准的IO作为接口,开发者不需要关注模块内部实现,只要了解接口规则就能实现复用,实现了模块间点对点的松耦合连接
  • 精简:ROS被设计为尽可能精简,以便为ROS编写的代码可以与其他机器人软件框架一起使用。ROS易于与其他机器人软件框架集成:ROS已与OpenRAVE,Orocos和Player集成。
  • 语言独立性:包括Java,C++,Python等。为了支持更多应用开发和移植,ROS设计为一种语言弱相关的框架结构,使用简洁,中立的定义语言描述模块间的消息接口,在编译中再产生所使用语言的目标文件,为消息交互提供支持,同时允许消息接口的嵌套使用
  • 易于测试:ROS具有称为rostest的内置单元/集成测试框架,可轻松安装和拆卸测试工具。
  • 大型应用:ROS适用于大型运行时系统和大型开发流程。
  • 丰富的组件化工具包:ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用,如RVIZ(3D可视化工具),开发者根据ROS定义的接口在其中显示机器人模型等,组件还包括仿真环境和消息查看工具等
  • 免费且开源:开发者众多,功能包多

3 ROS发展历程

ROS是一个由来已久、贡献者众多的大型软件项目。在ROS诞生之前,很多学者认为,机器人研究需要一个开放式的协作框架,并且已经有不少类似的项目致力于实现这样的框架。在这些工作中,斯坦福大学在2000年年中开展了一系列相关研究项目,如斯坦福人工智能机器人(STandford AI Robot, STAIR)项目、个人机器人(Personal Robots, PR)项目等,在上述项目中,在研究具有代表性、集成式人工智能系统的过程中,创立了用于室内场景的高灵活性、动态软件系统,其可以用于机器人学研究。

2007年,柳树车库(Willow Garage)提供了大量资源,用于将斯坦福大学机器人项目中的软件系统进行扩展与完善,同时,在无数研究人员的共同努力下,ROS的核心思想和基本软件包逐渐得到完善。

ROS的发行版本(ROS distribution) 指ROS软件包的版本,其与Linux的发行版本(如Ubuntu)的概念类似。推出ROS发行版本的目的在于使开发人员可以使用相对稳定的代码库,直到其准备好将所有内容进行版本升级为止。因此,每个发行版本推出后,ROS开发者通常仅对这一版本的bug进行修复,同时提供少量针对核心软件包的改进。

版本特点: 按照英文字母顺序命名,ROS 目前已经发布了ROS1 的终极版本: noetic,并建议后期过渡至 ROS2 版本。noetic 版本之前默认使用的是 Python2,noetic 支持 Python3。

建议版本: noetic 或 melodic 或 kinetic

学习是一个循序渐进的过程,具体到计算机领域的软件开发层面,每当接触一个新的知识模块时,按照一般的步骤,我们会先去了解该模块的相关概念,然后再安装官方软件包,接下来再搭建其集成的开发环境…这些准备工作完毕之后,才算是叩开了新领域的大门。

ros2机器人程序设计课程大纲-chatgpt版本

...专业教师只需专注细节和创新部分。一课程说明:ROS2机器人程序设计课程是一门教授ROS2机器人操作系统的课程,旨在帮助学习者掌握ROS2的基础知识和编程技能,从而能够开发和运行自己的ROS2机器人应用程序。在课... 查看详情

ros2机器人程序设计课程大纲-chatgpt版本

...专业教师只需专注细节和创新部分。一课程说明:ROS2机器人程序设计课程是一门教授ROS2机器人操作系统的课程,旨在帮助学习者掌握ROS2的基础知识和编程技能,从而能够开发和运行自己的ROS2机器人应用程序。在课... 查看详情

ros2机器人实验报告提示01➡入梦⬅

有学生说清醒的时候是不会选择学ROS的,太痛苦了,那索性把入门改称“入梦”吧。*注意-提供镜像使用galactic版本,实验报告为foxy,需自行修改哦!这一节,所需内容都已经在课程镜像中提供了,嵌... 查看详情

ros2机器人实验报告提示01➡入梦⬅

有学生说清醒的时候是不会选择学ROS的,太痛苦了,那索性把入门改称“入梦”吧。*注意-提供镜像使用galactic版本,实验报告为foxy,需自行修改哦!这一节,所需内容都已经在课程镜像中提供了,嵌... 查看详情

借助chatgpt学习ros2机器人编程

...xff01;空洞的问题和回复:如何在一个月时间内掌握ROS2机器人操作系统的全部核心内容?要在一个月时间内掌握ROS2机器人操作系统的全部核心内容,建议您采用以下步骤:首先,阅读ROS2官方文档,了解系统... 查看详情

ros机器人仿真(六)-航行,路径规划和slam

...e_base运行之前需要设置四个文件。这些文件定义了障碍,机器人半径,路径需要规划多远,机器人运行多快等。这四个设置文件可以在config文件夹下找到:movebase节点需要一个环境地图才能运行,不过使用一个空地图也是可以的... 查看详情

花一分钟体验大数据任务调度系统-apachedolphinscheduler第一个官方docker镜像(代码片段)

...据任务调度-ApacheDolphinScheduler(incubator)在近期发布了其第一个官方Docker镜像。下面就带大家来 快速试用DolphinScheduler官方推荐以docker-compose的方式启动,这种方式需要先安装docker-compose,docker-compose的安装网上已经有非常多的资... 查看详情

ros1/ros2机器人如何才算入门???

...龟太简单了……一学就会。那么,真是如此吗?机器人学真那么简单?ROS1、ROS2真那么好学,容易上手?其实并不是的。至少我觉得不是,能用ros解决简单问题,才算是入门,多简单呢?如下吧... 查看详情

谷歌机器学习速成课程---2深入了解机器学习(descendingintoml)

...库作为生日礼物送给您,并邀请您自己利用该数据库训练一个模型,从而预测鸣叫声与温度的关系。首先建议您将数据绘制成图表,了解下数据的分布情况: 图1.每分钟的鸣叫声与温度(摄氏度)的关系。毫无疑问,此曲线... 查看详情

ros下kinect2的驱动安装及简单应用(代码片段)

...兴趣的同学可以自行Google,在MS官网上面查看。ROS做机器人相关的工作的同学,同时对该部分也不会陌生吧。机器人操作系统(ROS),应用非常广泛,并且有很多开源库,包可以使用。同时,主流的... 查看详情

ros的安装与使用(代码片段)

...说起ROS,可能大家现在或多或少都有所了解。现如今世界机器人发展之迅猛犹如几十年前计算机行业一样,机器人也逐渐进入到千家万户,大到工业机器人,小到家用的服务型机器人,各式各样,为各种人们生活所需的机器人以... 查看详情

机器人操作系统(ros)教程4:ros的框架

转自:http://www.arduino.cn/thread-11351-1-1.html在进行ROS的代码开发前,有必要了解一些ROS的概念。首先,ROS的系统代码分为两部分:main和universe。1.main:是ROS的核心部分,它提供了一基本的工具,以及整个ROS的核心部分的程序编写。2.... 查看详情

ros机器人技术-编写一个launch启动多个节点

参考技术A为了不用在小车的Ubuntu上每次都source自己的工作空间,我把自己的workspace加到~/.bashrc文件末尾:然后重启shell,之后就会自动source我得工作空间,可以使用roscd直接进入指定包中:每次调试小车,都要分别启动很多节点... 查看详情

ros与ros2通讯机制的区别

...源,它有一套非常完备的工程系统,可以适用于大部分的机器人场景。一般来说,ROS需要有一个roscore作为主节点来运行其他所有的进程,如果这个主节点出现错误,整个系统都会冗机。同时由于ROS在消息转发当中要经过很多个... 查看详情

创建一个移动标记。机器人操作系统(ROS)

】创建一个移动标记。机器人操作系统(ROS)【英文标题】:Createamovingmarker.RobotOperatingSystem(ROS)【发布时间】:2018-10-3017:46:20【问题描述】:我正在尝试使用OSM数据在ROS中规划路线,并使用Python在Rviz中显示结果。到现在为止,... 查看详情

借助媛如意让ros机器人turtlesim画出美丽的曲线-云课版本

...入问题得到答案在蓝桥云课ROS验证如何通过turtlesim入门ROS机器人您可以通过以下步骤入门ROS机器人:安装ROS:您需要安装ROS,可以在ROS官网上找到安装指南。安装turtlesim:turtlesim是ROS中的一个仿真器,可以帮... 查看详情

技术分享|ros2下控制px4仿真无人机

...历了十年以上的发展,到如今已成为家喻户晓的开源机器人操作系统,随着越来越多人加入到ROS当中,ROS存在的问题也逐渐暴露出来,为了解决这一问题,ROS2诞生了,目前来说,大部分ROS用户还集中于... 查看详情

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

###文章更新记录###2018/12/26创建文章《机器人操作系统ROS基础知识》 ###写在前面###ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”... 查看详情