为什么我选择并且推崇用ROS开发机器人?

2023-05-16

origin: http://www.leiphone.com/news/201701/zBHXGJcsRTioj4gH.html

雷锋网(公众号:雷锋网)按:本文来自知乎,作者贾子枫,雷锋网已获授权。

如果我们现在想研发一款机器人,应该选择哪一个操作系统呢?其实我们大家平常接触到的操作系统寥寥无几,Windows,MacOS,Linux,iOS,Andoird。ROS虽然全名是Robot Operating System,但本质上不是操作系统,是Linux发行版Ubuntu下的一个用来开发机器人的Middleware,这个没有什么好辩驳的。Android虽然意思是人形机器人,但是我觉得这就只是名字而已,Andy Rubin难道真的是想通过智能手机探秘智能机器人?而且机器人学里的人形机器人一般写成Humanoid。为了规避因“操作系统”产生的歧义,本文中我们讨论研发一款机器人需要怎样的“环境配置”?所以很多概念没有区分是否称得上操作系统。

选择怎样的环境配置,有几点是我们先要搞清楚的。首先我们需要知道实时性是不是必须的。简单的说,如果在系统中是关键变量,系统就需要实时,例如双足机器人动态行走系统就必须实时,但是静态行走的话其实不实时也可以。如果实时性是必须的,我们可以选择Windows + VxWorks,这是在传统运动控制领域非常常见的一个组合。也可以选择QNX操作系统,或者LabView,不过这两个实时的我并没有很多经验。我最早接触的实时操作系统是Windows + Ardence RTX,后来应该改名为IntervalZero。还有就是是否系统需要整体上实时?我们在做双足机器人的时候,运动控制就用到了RTX,但是图像处理并没有。后来我们将运动控制的部分移到了一个ARM7的下位机,上位机的Windows只需要发送action的指令。所以,即便是需要实时,架构也是很灵活的。上位机是没有实时性的强需求的。

当我们希望稍微提高一下机器人复杂度的时候,就会发现另一个需要考虑的问题,进程间通信。在我们用Windows + RTX的时候,进程间通信使用RTX提供的shared memory,不过都是比较慢的图像处理进程向shared memory中写数据,决策和运动控制进程读数据。shared memory显然并不是很好的通信方式,这里不再多加讨论。ROS则使用了一个很好的通信架构,并且是ROS整个框架的一个基础(不论是对于ROS中的topic,service,plugin,actionlib等基础概念还是rviz,navigation package等功能包。想了解这些概念最近多关注下@Top Liu),所以很多人简单的理解ROS只不过是做了一个通信的架构而已。我必须说明下,进程间通信并不是ROS能够占领机器人开发环境的主要原因。在2010年,我们开发一款类似Atlas的大型人形军用机器人的时候,就用到了进程间通信工具IPC。IPC就是Inter Process Communication,开发者是CMU的Reid Simmons,应该是出现在2000年左右。后来我在帮助本科生参加RoboCup Standard Platform League的时候用过Nao的操作系统NAOqi,这个系统大概是出现在2006年。在NAOqi中,整个通信的架构和ROS非常像了,ROS中的Node在NAOqi中叫一个broker,都是占用一个系统的端口。所以,2010年ROS正式发布Box turtle的时候,通信架构并不是颠覆性的。Android的进程间通信的机制据我了解也是非常强悍的。根据@邵天兰 之前的一次讲座,我也了解到ROS的通信机制放到现在看其实已经有点过时了。所以仅仅从通信机制上评价ROS,意义不大。再有,ROS中的通信机制并不是说不能绕过,其程序本质上还是C++和Python。

我认为ROS最大的贡献就是制定了机器人开发的统一接口标准。因为Willow Garage当年是做移动服务机器人,所以这些标准是首先在移动机器人界统一的。所以ROS的意义,我概括的时候就是六个字,“书同文,车同轨”,极大加速了交流与进步。也是因为这样,机器人学界才慢慢能够形成一些BenchMarking,能够在开源社区形成百花齐放的态势,能够让大家不再深陷于又要搭建硬件又要搭建软件的重复造轮子的困境。其实最主要就是ROS的message,看起来不过是一些头文件,但是可以让我们轻松的替换各种传感器和执行机构,替换软件中的各个算法,现在搭建机器人在我们眼中,就像玩乐高积木,组装一台电脑。

当然,作为一个开发工具,只做到这里是不够的。我看过LabView的开发工具,支持硬件很多,应该标准也很好。Microsoft Robotics Developer Studio是个不错的开发工具,可惜挂掉了,也算是流行了一段时间。针对机器人开发,ROS则提供了很好的可视化、模拟仿真和Debug的工具,专业上讲是非常developer friendly,这也是很多人说为什么ROS适合学习和做研发的原因。不过我觉得这不能支持ROS不适合做产品开发的观点,因为产品成型后,这些调试工具平时都是可以去掉的。关于可视化工具Rviz,模拟仿真的Gazebo,Debug的log等级以及在线调参的rosparam和rqt等等,ROS星火计划都有详细的讲解。

最后,就要说说基因,社区,支持和人才的问题。ROS的基因是移动式服务机器人,LabView的基因是NI,Android的基因是Google和智能手机。ROS社区还算是活跃,虽然机器人的高端玩家比较多,但是整体开发者数量估计也就在十万的量级(ROS answer注册用户也就三万吧),总量不能和如日中天的Android相比,也是现在背后支持OSRF和google的差距。我也在不同场合聊过很多次,硅谷的机器人创业公司基于ROS开发的比较多(相对国内而言,具体比例不清楚,从RosCon的支持厂商就能看到一些端倪),但是国内用Android的公司明显在数量上占据上风 。

所以最后要支持本文论点了。不讨论工业机器人(以及类工业机器人的医疗机器人等,以控制为核心),我们把剩下的机器人品类再划分的细致一些。首先,教育机器人(这里指学习机器人的套件等,不是说用来学习英文或者唐诗的对话机器人,这个归属到情感陪护类),主要面向k-12的学生,也就是我国高等教育之前的学生,大多就是scratch+单片机,不需要什么系统。不过我觉得这种情况会在未来不久发生改变,主要是教育机器人业内已经有人发现机器人教育和机器人开发的脱节是个问题,那么也就是个商机,但是要等到产业足够大。玩具类机器人不需要开发环境,所以就是玩各种单片机。这些都不是支撑机器人能成为一项颠覆性技术的方向。所以以下主要分析用Android和ROS开发的机器人。

情感陪护类机器人,从学术上讲是social robotics,也是研究了很久的一个方向,不过作为这两年机器人产业的一个爆点,也就是@机器人孔博士 提到的消费级服务机器人,我在2014年以前是从来没想到过的。因为整体上来说,机器人的智能还不足以支撑情感陪护这个概念。但是,借助智能手机的发展,尤其是现在集成了大量传感器的智能手机,使Android对硬件比如摄像头、IMU、麦克、通讯元件等等支持很好;其次,一直在致力于改变人机交互方式的巨头们做出了很多惊人的贡献,语音对话取得突破性进展(没有语音的话,触屏交互或者触摸交互也还能将就下。在交互这一点上,基于Linux的ROS很吃亏);再有,因为Android系统的一些附属产品的发展,Android平板、智能家居产品、故事机等,使得儿童陪护机器人整个产业链从硬件到内容都非常完善,一切的一切造就了儿童情感陪护类的机器人爆发。其实从需求和市场上来讲,老年陪护类的机器人应该是未来更大的蛋糕。无论如何,这两年做情感陪护机器人,Android应该是Donimating(要用dota配音去念!)了。

但是,若要进入机器人行业,趁着机器人行业的爆发飞起来,把机器人作为一生的事业,用Android怕是不够的。

首先,由于Android的基因,我们发现情感陪护机器人的大多功能都是手机和平板能够实现的,虽然集成了更多的传感器,比手机这种被动设备在主动性上进步了一些,但是对于实现复杂的功能上和ROS相比后劲不足,也导致产品同质化比较明显。第二,情感陪护类机器人这两年增长确实很快,算在机器人行业里是非常大的体量,但是如果算在Android的阵营呢?机器人行业整体很小,中国服务机器人市场2016年销售额大概100多亿人民币,占大头儿的还是扫地机器人,而华为2016年消费者业务销售额1780亿人民币,我理解主要就是Android手机业务。所以,作为Anroid的衍生品,情感陪护类机器人在这个存量市场的份额并不大,是否能颠覆这个市场?未知数。 最后,面向行业的服务机器人, 前几日我分享的算法并不决定一切!迅雷创始人程浩谈国内机器人创业,其中有观点谈到短期内创业To B的机器人更容易实现,暗含的意思To B的机器人在短期内会迎来爆发(投资人认为适合创业,一定是要爆发的)。那让我们看看国内外做To B的服务机器人的公司,做酒店运送的Savioke和云迹科技,做Mobile Manipulation的Fetch Robotics和蓝胖子,做机械臂的Baxter,应该还有一些做物流机器人的公司。这些公司的共同点就是产品直接应用在第二和第三产业,目标都是直接推动生产力,如果真正降低成本,是毋庸置疑的刚性需求。这些机器人技术难度比较高,沿袭了机器人学的发展,用ROS开发有很大的优势。

对机器人产业来说,需要有足够的开发人员,需要有一小撮精英的研究人员做出技术突破。对于机器人开发人员来说,不仅仅要选择一个开发的系统和环境,还需要通过整个体系了解机器人运作的原理,即使未来最主流的机器人操作系统不是ROS,一定会有ROS深深的烙印。

编者按:1月12日晚上8点,雷锋网硬创公开课邀请到文中提到的Top Liu和大家分享一点自己学习和使用的经验和心得。本次雷锋网硬创公开课将会有「 斗鱼直播+微信群问答」两个环节,嘉宾直播授课分享结束后,将会在微信群与群友问答互动。


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

为什么我选择并且推崇用ROS开发机器人? 的相关文章

  • C++设计模式20:状态模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • stm32直流电机驱动与测速

    stm32直流电机驱动与测速 说实话就现在的市场应用中stm32已经占到了绝对住到的地位 xff0c 51已经成为过去式 xff0c 32的功能更加强大 xff0c 虽然相应的难度有所增加 xff0c 但是依然阻止不了大家学习32的脚步 x
  • C++设计模式22:模板方法模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++ 设计模式23:访问者模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式17:中介者模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式14:命令模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • GPS 和 RTK 定位

    refers xff1a https blog csdn net u012241570 article details 80802675 GPS定位的基本原理 测量出已知位置的卫星到地面GPS接收器之间的距离 xff0c 然后接收器通过与至
  • 关于GD32的CMakeLists以及gcc部分编译选项的解释

    set CMAKE SYSTEM NAME Generic cmake最低版本 cmake minimum required VERSION 3 0 0 工程名称 语言 project TEST PRJ NAME LANGUAGES C C
  • ulimit -s 指定栈上的内存上限

    转自 xff1a http blog chinaunix net uid 24439730 id 144094 html ulimit s 指定栈上的内存上限 xff0c 单位为KB xff0c 如 xff1a root 64 wdqf1w
  • C++头文件重复包含问题

    为了避免同一个文件被include多次 有两种方式 1 span class token macro property span class token directive keyword ifdef span SOMEFILE H spa
  • TCP(select函数模型)

    客户端代码 include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt arpa inet h gt include lt st
  • i2c那些坑

    origin http bbs ntpcb com simple t126695 html I2C 的那些坑 一般情况下 xff0c i2c 设备焊接没什么问题 xff0c 按照设备手册一步步来 xff0c 基本上就顺风顺水能够用起来 如果
  • stm32f103系列引脚定义-功能图

    器件功能和配置 STM32F103xx增强型 STM32F103xx增强型模块框架图 STM32F103xx增强型VFQFPN36管脚图 STM32F103xx增强型LQFP100管脚图 STM32F103xx增强型LQFP64管脚图 ST
  • 用数百行代码实现60亿设备互联:微软重金收购的ThreadX硬在何处

    origin https www sohu com a 315222502 485057 2019年4月 xff0c 微软收购了ThreadX的母公司Express Logic 公司 而ThreadX有几亿个设备在运行 1 物联网操作系统简
  • Cache和DMA一致性

    cache读必须要buffer是cacheline对齐的 DMA应该多多少少知道点吧 DMA Direct Memory Access 是指在外接可以不用CPU干预 xff0c 直接把数据传输到内存的技术 这个过程中可以把CPU解放出来 x
  • stm32几种低功耗模式的实现和差别

    origin https blog csdn net jian3214 article details 99818603 01 前言 按功耗由高到低排列 xff0c STM32具有运行 睡眠 停止和待机四种工作模式 上电复位后 STM32
  • threadx也开源了

    前一段时间ucos开源了 xff0c 今天微软收购的threadx也开源了 xff0c 行业剧变呀 xff01 xff01 xff01 2020 5 26
  • armv8-M 32bit处理器

    https www eet china com mp a14579 html https developer arm com ip products processors cortex m 最早的Cortex M0属于Armv6 M架构 x
  • 作为ARM Cortex-M家族的继承者 Cortex-M23与M33有哪五大特色?

    http news eeworld com cn xfdz article 2017011259937 html 集微网消息 xff0c ARM处理器在嵌入式设备领域的应用非常广泛 基于ARM Cortex处理器的片上系统 xff08 So
  • emmc5.1, ufs2.0, ufs3.0

    总的来说 xff0c UFS3 0的综合性能 xff0c 特别是持续读写速度有着秒杀UFS2 1前辈的表现 xff0c 只是在随机读写和SQLite性能上 xff0c 却依旧和双通道的UFS2 1持平 xff0c 有些小遗憾 最后 xff0

随机推荐

  • 串行Norflash是如何实现XIP的?

    先说问题 xff1a 要想程序在串行的Norflash中运行 xff0c 到底需要做哪些工作 xff1f Norflash和Nandflash想必大家都知道 恕本人才学疏浅 xff0c 最近突然发现Norflash可以并行连接实现XIP x
  • ARM汇编语言 - 简介 [一]

    origin https zhuanlan zhihu com p 82490125 ARM汇编语言 简介 一 兰新宇 talk is cheap 说明 xff1a 本系列文章将主要以ARMv7和ARMv8架构为例 xff0c 介绍ARM汇
  • ARM汇编语言 - 简介 [二]

    上文介绍了ARM的数据传送指令 xff0c 本文将主要介绍ARM中的移位 序转和位操作等数据处理指令 移位指令 移位包括逻辑移位和算术移位 xff0c 所谓 逻辑 就是将寄存器中存放的内容仅仅视为一串bits xff0c 移位的时候只需要将
  • 智能小车开发的重点之一电机该如何选型

    一 智能小车的分类 二 电机的分类 无刷电机要好于有刷电机 xff0c 优点 xff1a 1 没有损耗 xff0c 有刷电机有寿命 2 静音 xff0c 有刷电机噪音比较大 无刷电机分为带霍尔传感器和不带霍尔传感器两种 xff0c 因为无刷
  • ARM汇编语言 - 简介 [三]

    上文介绍了ARM的数据处理指令 xff0c 本文将主要介绍ARM中的跳转指令 跳转指令 无条件跳转 ARM中的基础跳转指令就一个字母 34 B 34 xff0c 代表Branch xff0c 相比起x86中和它功能基本相同的 34 jmp
  • CAN总线35周年特别篇 -- CAN总线的前世今生

    origin https mp weixin qq com s MloRz 4sio8QGdNItNRBjQ CAN总线35周年之际 xff0c 花了一晚上时间整理翻译了下 xff0c 通过这个帖子大家会对当前市场上各种CAN名词有的全面系
  • 微控制器CPU性能测试基准CoreMark

    origin https www cnblogs com henjay724 p 8729364 html 痞子衡嵌入式 xff1a 微控制器CPU性能测试基准 EEMBC CoreMark 大家好 xff0c 我是痞子衡 xff0c 是正
  • 意外发现,Cortex-M7的性能和诸多关键参数碾压A7和R7

    origin https www amobbs com thread 5676525 1 1 html 之前一直以为ARM A R M M排在最后也最便宜 xff0c 肯定性能最低 xff0c 但最近意外发现并非如此 xff0c M7居然完
  • gcc之-fomit-frame-point

    Kernel里的dump stack oops打印出来的backstrace调用链表是怎样实现的呢 xff1f 大家都知道当发生函数调用的时候 xff0c 函数的参数传递 xff0c 返回值传递都要遵循一定的规则 xff0c 在ARM体系架
  • Lauterbach trace32与 jlink

    一直不太明白trace32为何这么贵 xff0c 这篇文章讲了一些 xff0c 稍微明白一点了 一个小工具背后的故事 昨天我们推送了华为任正非2012年的讲话稿 真正的出路 xff1a 重读任正非2012实验室讲话 任总是在商场上真刀真枪干
  • 嵌入式开发输出调试信息的几种方法(常规法及非常规法)!

    origin https mp weixin qq com s 7LolqWUeJ4tCENh6yVmvXw 嵌入式开发的一个特点是很多时候没有操作系统 xff0c 或者没有文件系统 xff0c 常规的打印log到文件的方法基本不适用 最常
  • 从零开始,耗时两年,19岁小伙自制一块32位Risc-V处理器,可玩「贪吃蛇」

    从零开始 xff0c 耗时两年 xff0c 19岁小伙自制一块32位Risc V处理器 xff0c 可玩 贪吃蛇 脚本之家 今天 关注 脚本之家 xff0c 与百万开发者在一起 本文经机器之心 xff08 微信公众号 xff1a almos
  • 揭秘被Arm编译器所隐藏的浮点运算~

    以下文章来源于Mculover666 xff0c 作者mculover666 引言 笔者接触嵌入式领域软件开发以来 xff0c 几乎用的都是 ARM Cortex M 内核系列的微控制器 感谢C语言编译器的存在 xff0c 让我不用接触汇编
  • main之前初始化流程

    本文分别介绍Keil调用的ARMCC以及ARM NONE EABI GCC两个编译器在main之前的操作 xff1a Keil MDK启动文件 总结一下MDK的启动流程 xff1a 1 系统初始化 xff0c 包括中断向量表的重新映射 2
  • 嵌入式单片机之STM32F103C8T6最小系统板电路设计参考

    STM32F103C8T6最小系统板电路设计 一 电源部分 设计了一个XH插座 xff0c 以便使用3 7V锂电池供电 xff0c 接入电压不允许超过6V 二 指示灯部分 电源指示灯可以通过一个短路帽控制亮灭 xff0c 以达到节电的目的
  • 国产射频前端,攀登新高峰

    2022年 xff0c 国产射频前端开启新篇章 射频前端包括功率放大器 xff08 PA xff09 滤波器 xff08 Filter xff09 开关 xff08 Switch xff09 低噪声放大器 xff08 LNA xff09 天
  • slam相关文章

    1 视觉SLAM漫谈 http www cnblogs com gaoxiang12 p 3695962 html 2 学习SLAM需要哪些预备知识 xff1f https www zhihu com question 35186064 3
  • 工业机器人主要核心

    主要核心为三部分 xff0c 控制器 xff08 就是用来控制机器人动作的那个手持设备 xff0c 可以用来编程 xff0c 一般用vxworks和linux xff0c wince来实现 xff09 伺服电机和减速器用来实现机器人的动作
  • 想搞工业机器人 这五大方面你必须了解

    origin http www robot china com news 201510 09 25754 html 1 工业机器人控制系统硬件结构 控制器是 机器人 系统的核心 xff0c 国外有关公司对我国实行严密封锁 近年来随着微电子技
  • 为什么我选择并且推崇用ROS开发机器人?

    origin http www leiphone com news 201701 zBHXGJcsRTioj4gH html 雷锋网 公众号 xff1a 雷锋网 按 xff1a 本文来自知乎 xff0c 作者贾子枫 xff0c 雷锋网已获授