什么是ROS

前言

当前,ROS(Robot Operating System) 系统已成为一种“标准”,它可以提供丰富的工具,在模块之间架起桥梁,使得团队协作更加方便。现在ROS支持非常多种类型的机器人,有很多人在此平台上进行开发,完成科研及实际应用的项目,已经形成了一个颇具规模的社区。该系列文章根据Momenta M4U 技术负责人陈凯的分享整理,主要是介绍ROS相关概念、使用和开发的常用工具/API。

简介

机器人操作系统(ROS- Robot Operating System)是用于编写机器人软件的灵活框架。目的在提高模块化能力和复用能力,从而简化任务量,方便多种机器人平台之间创建复杂和鲁棒的机器人行为,它是工具、库和约定的集合。

首先,ROS是中间件+工具链。中间件包括一些通信模块和通信底层,如TF或比较重要的核心库,ROS作为中间件连接了操作系统和用户开发的ROS应用程序。工具链是工程管理的一个工具,例如其中的可视化工具可以快速完成logging、回放和调试。

其次,ROS是一种事实上的标准,它已经集成了很多message的定义,这些定义不依赖于平台,也不依赖于语言,所以ROS是一个更高层的定义。

在此层面上来说,支持ROS的某一个message接口,就等于完成机器人系统中的一个模块,相当于搭积木,只要中间的接口一样,便能将其更换。即ROS平台具有很好的模块化性能。

此外,ROS也是开源社区,现在全世界已有超过2000个package在ROS的开源平台之上。
ROS中间件和工具链
ROS中间件和工具链
首先,作为中间件和工具链来说,ROS是一个对程序员非常友好的通信底层。

作为一个具有非常多模块的机器人操作系统,开发这么庞大的系统需要对不同参与者进行分工,开发难度非常高。而ROS通过message、service等跨语言的抽象,使自己变成中间层次,由此开发者不用再关心ROS到底产生于什么语言、需要做什么样的适配。只需要使用ROS提供的借口,开发自己需要的模块即可。

同时,ROS支持包括c++、python、java、lisp等在内的多种语言,也包含其他语言的多种接口实现,所以开发者无需担心在语言上做切换。

此外,ROS有自己的开发和调试工具链,工具catkin适用于工程管理,它基于CMake开发,还有同名包的overlay版本管理。而调试方面也有rosbag用于记录和回放数据,它有一个统一的时间戳rostime。

可视化方面,基于Qt的工具rviz+rqt,可以轻松定制扩展。

·ROS标准+社区
在这里插入图片描述
从标准+社区的角度来说, ROS使用消息进行通讯,而ROS已经预先定义了很多类型的消息,被添加进其中的消息都经过了充分的讨论。

基础消息指std_msgs,包括String、Header、Time都比较常用;sensor_msgs是封装的各种传感器消息,包括Image、Range、Imu、PointCloud等常见的传感器都有一个通用的格式;geometry_msgs是各种各样的几何消息,包括Point、Pose、Transform和Quaternion;nav_msgs是指SLAM消息,目前主要是室内的SLAM,包括Odometry、Path、OccupancyGrid等;diagnostic_msgs则是诊断机器人内部各个硬件状态的消息。

通过这些规范化手段,ROS社区形成了事实上的标准,从而得到了广泛的关注,在机器人、算法以及系统等领域都有使用。

·Why ROS?

为什么要用ROS呢?首先它是可以快速实现demo、高兼容性的、模块化的一个开发工具,极大地提高了机器人领域的代码复用率。所以核心点在于,如果有一个工具可用,而且很多人用的很好,并且能满足需求,那就不应该重新造一个轮子。

有些人可能喜欢自己做很底层的东西,以此彰显自己的coding技术很牛或者获取成就感。作为锻炼的话这是没有问题的,但写出的东西,如果要作为比较底层的布局使用,其实需要非常大量的测试。这些测试,如果只是随便完成的话,很可能会出现问题。尤其是将它放入一个工程中时,很可能会导致其他依赖它的东西受到巨大影响。

而现在ROS有庞大的使用人群和维护人群,所以它的核心库有非常高的质量保证。在此情况下,只要它真的能满足需求,我们就应该使用好这个工具,并且还大量支持工具、兼容产品。此外,它的软件协议比较友好,核心模块都是BSD,可以直接商用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盘古开天1666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值