~此文为翻译~


早在一月份,Marya和我就对ROS社区做了一个调查。我们的目标是收集一些数据,帮助我们建立起ROS社区的模型,以及它在文档方面的需求。更具体地说,我们希望得到一些数据来指导我们的文档开发。我们做了一个简短的调查,并将其搁置了大约六周。总的来说,我们的调查还算成功。我们总共收到了116份回复。上周,我把调查的数据拉了下来(它还在上面),并把它放到一个ipython笔记本里,让大家玩玩结果。下面你会发现原始数据以及清理后的数据集。如原帖中所说,出于隐私考虑,我已经删除了免费表格的文本部分和电子邮件地址。

如果你还没有,请在阅读结果之前进行调查。它只需要三分钟的时间。最好也是在你看结果之前接受调查。如果再有几百个回复,我会做一个更新。

开放数据和Jupyter笔记本

我们已经发布了这个存储库中的数据(不含个人身份信息)。有两个版本,原始数据和我所说的擦洗后的结果。擦洗后的结果是我处理了所有的数据,并将其清理后留下的结果,这样别人就更容易进行更深入的分析。如果你想试着分析一下数据,或者看看我是如何把这些数据放在一起的,我把我的Python Jupyter Notebook放在Google Collaboratory 上。请注意,我删除了词云代码,因为数据被编辑了。随意地把它分叉,调整它,并发布你的结果。这篇帖子的其余部分基本上跟笔记本一样,所以你可以在第二个选项卡中关注。

原始结果

任何数据分析的第一步就是清理数据。Google sheets同时返回一个书面值和分类问题的数值。为了使事情更容易理解和操作,我删除了数值,然后将字符串缩短。例如,"(高级)"变成了 "高级"。同样的多选题也是以字符串的形式出现,我写了一个小函数,把这些数据移动到python的字符串列表中。

技能级别的数据

首先,我们要求调查的参与者做的第一件事是自我报告他们在各种ROS相关的主题上的技能水平,如C++、Python、Shell脚本、机器人等。你可以看到下面这个情节。

在这个情节中,有三点我觉得很有意思。

  • 这个剧情要么是对高级用户有一定的样本偏见,要么就是Discourse上的ROS社区都是除了ROS 2以外的高手,都是高明的,都是高手。
  • 社区里的大多数人对ROS 2还不太适应。
  • 向社区询问一个特定的主题,比如C++,比起询问 "机器人 "这样一个更普遍的主题,返回的结果更符合正态分布。

综合技能

在发布之前,我联系了Steve Macenski,让他对这部作品进行回顾。他说,他和其他人都有一个问题,那就是如何在C++和Python之间适当地分配时间和资源。他很好奇社区中是否存在偏向于其中一个或另一个的问题。既然我们已经准备好了所有的数据,那么绘制结果就很简单了。我为两个技能创建了一个自我报告的技能矩阵,然后将其归一化为受访者的总人数。我并没有看所有的变化,因为我认为这并没有什么价值,但我看了一些最相关的数据。
看这几张图的方式是左下是两方面都不太熟练的,而右上是两方面都很熟练的。用颜色表示受访者的数量。在这些图中,大多数跳出来的第一感觉就是样本偏向,也就是说右上角几乎都是最亮的方块。至于C++和Python的问题,答案似乎是大多数回答者在这两个方面的技能大致相当。这个模式在我所看到的大多数其他技能比较中都是如此。另一种方法来解释这个数据是说,也许精通ROS 1需要掌握,或者至少需要精通C++、Python、shell脚本、机器人和软件工程基础知识。
在下面所有的图表中,唯一的例外是ROS 1与ROS 2技能水平的对比图。该图显示,即使是最熟练的ROS 1用户在掌握ROS 2方面也有困难。

不同类型文件的实用性

接下来,我想了解的是各种文档方法对社区的实用性。我的假设是,较有经验的开发者更喜欢直接的文档或概念描述,而经验较少的开发者则更喜欢更多的视频。

这些原始数据表明,社区最喜欢的是教程和指南,最不喜欢的是练习册和视频,概念文章和快速入门指南介于两者之间。

机器人平台和用户角色

接下来我们想了解一下这个群体在这个世界上的角色是什么样子的。有多少人在专业上使用ROS,而不是在研究或学术界。我经常听到有人声称ROS和Gazebo是学术或业余爱好者的工具,但实际情况并没有得到数据的支持。在接受调查的ROS社区中,有近一半的人是专业人员。

我们想回答的另一个问题是,"社会上用的是什么样的机器人?" 我们不清楚的是,我们是否应该继续将大部分的教程放在移动机器人上,还是像操纵机械臂和无人机这样的东西需要在文档中得到更多的体现。

我们收集到的数据显示,移动机器人和自主车辆占到了社区兴趣的近50%,工业应用也在其中。虽然无人机和水面车辆很重要,但它们只占社区中的一小部分。同样的,像医疗机器人、农业机器人等特定的应用领域仍然是小众领域。

ROS用户教育背景

接下来,我们想了解的是使用ROS的人的教育背景。具体来说,我们想了解专业的软件工程师/计算机科学毕业生与其他学科如机械工程和电气工程之间的平衡。

数据显示,约有一半的社区由软件工程师组成,其余来自其他工程学科。这个数据对于自我报告的技能水平如此之高是很有意思的。

用户是如何看待ROS的?

接下来我们想考察的是参与者是如何希望使用ROS 2的,我们反复听到的一个主题是,专业人员希望往机器人的方向发展,由各种交钥匙包组成的机器人。

这似乎得到了数据的支持,大多数参与者都希望进行一定程度的定制。值得注意的是,在这个情节中,只有22%的受访者希望将代码贡献回ROS 2。

模拟,有用还是无用?

最后,我们想了解社区是如何使用ROS和Gazebo的,他们是分开使用还是一起使用。除了SDF和URDF之外,我已经构建了没有仿真组件的机器人,我们有一些像ARIAC和DARPA SubT这样的going活动完全基于仿真的机器人。

平衡来看,ROS社区正在为他们的物理机器人建立模拟,那些只做纯ROS或纯Gazebo模拟的人占了少数,或者说是受访者。

词云

调查中还包含两个问题,我们问了社区用户在使用ROS的情况,以及他们打算使用ROS做什么。不幸的是,我们决定将这些数据保留下来,这样用户就可以放心地谈论他们的绝密计划。为了查看这些数据,我首先将这两个数据集进行了串联,并剔除了100个最常见的英文单词,以及其他一些经常出现的词汇(比如ROS、ROS 2、Gazebo等)。从这些数据中,我去生成了一个词云。

深入研究技能

当我们写文档时,经常会遇到的一个话题是谁是受众,如何才能最好地满足他们的需求。我很好奇,不同的文档方法对不同类型的用户来说是好还是不好。为了弄清楚这个问题,我根据报告的技能水平,通过计算所有自报技能的平均数,不包括ROS 2问题,将数据进行了拆分。我做了一个快速绘图,选择了一个任意的截止点,将原始数据分成三个队列:低技能、中技能和高技能。这些数据在被洗刷的数据集中的一列叫做 "skill_score"。技能分数在0到3之间变化,我们的任意切分值分别为1.75和2.75,这样,低技能组有23名受访者,中技能组有72名,高技能组有21名。然后,我重新绘制了这三个队列的数据,看看不同的技能水平可能需要不同的文档类型,以及队列的技能水平如何改变他们喜欢的工作平台。我会对所有这些数据持怀疑态度,因为受访者的数量仍然偏低。

技能水平和文档实用性

我们想回答的第一个问题是,某些类型的文档是否对不同类型的用户更有效?我经常听到有人说,学生更喜欢看视频。我可以相信这句话,因为我最好的教育时刻是站在高级工程师的身后,当他们工作的时候。在我看来,这种性质的视频是最好的选择。我很好奇,不那么熟练的用户是否也有同样的感受。

从这三个情节中,有几件事跳出来。

  • 教程是一贯的、压倒性的首选。
  • 指南、快速入门文档、概念文章是有帮助的,但不太理想。
  • 没有人喜欢小抄单。
  • 熟练度较低的用户比中高技能的用户更喜欢视频,但它们的作用还不如教程。

技能水平和平台

我们想了解的一件事是,人们在使用ROS时对哪些机器人平台感兴趣。我们知道,总的来说,社区的大部分用户对自主移动机器人感兴趣,但我们不确定用户之间是否一致。我们很好奇,不同的技术水平的用户是否表现出对某一平台的偏好。
也许技术水平较低的用户对无人机更感兴趣,因为他们一般比较容易获得。

出乎意料的是,在工业嵌入式方面,人们略微偏向于技术较差的ROS开发者。更有经验的开发者似乎都在研究自主车辆或移动机器人。这是一个潜在的有用信息,因为这意味着整合像TF2和MoveIt这样的主题可能需要更早开始。

技能水平和教育

作为一种理智的检查,我们想把一般的技能水平与教育类型进行对比。我们想了解是否有个人报告说他们的技能水平较低是因为他们的经验较少,还是因为他们的软件工程技能较少。

看来,我们的论文----技术较差的用户来自于非软件背景的用户,一般来说,这些数据是支持的。这一点是很有帮助的,这将是一个很好的用户角色的开始。

词云

只是因为这很琐碎,我们为我们的三个技能组生成了单词云。这使用了与之前相同的数据,即用户使用ROS的目的是什么,或者在去掉前1000个英语单词后,他们打算使用ROS的目的是什么。从这些云中跳出来的事情是,不太熟练的云相当强调,"乞丐机器人内容!",而更熟练的人讨论的是更细微的需求,如,"安全","操纵","DDS "和 "质量"。
熟练程度较低

熟练程度一般

熟练程度良好

教育工作者/学生/业余爱好者与专业用户的比较

最后我们想考察的是 "专业用户 "和其他所有人(教育工作者、研究人员、业余爱好者等)之间不同文档类型的实用性差异。并不是说研究者和业余爱好者不专业,而是我们想看看两者之间是否存在差异。我们根据自我报告的情况,将数据集一分为二。有75人自报为专业人员,41人非专业人员。从效用图上看,它们惊人地相似。我们重复了一些其他的实验,但两组之间都是合理地相似,所以我们在此省略。这让我们相信,"技能水平 "和教育背景对个人的文献需求的影响要比他们在这个世界上的作用更大。

总结

这些数据很有意思,也很有用,但我还是要谨慎对待。整体调查偏向于ROS话语的个人。幸好这里的分析是相当自动化的,所以我们可以继续收集数据并从中学习。我们很希望有更多的学生和教育工作者参加调查,这样我们就可以扩大样本量。
正如我之前所说,我们不公布调查的书面部分,但我在做完所有这些之后,重新阅读了一下。以下是一些多次出现或引起我注意的话题。

  • 初级教程,初级教程,初级教程,初级教程。
  • 导航2。大家都想知道如何做导航。
  • "最佳实践"。
  • 将ROS 1转换为ROS 2。
  • 初学者 "机械工程研究生 "级入门,介绍ROS2所需学习的主题教程 DDS/QoS配置的相关教程,特别是高带宽传感器的相关教程。
  • 构建系统和构建工具说明和教程。与此同时,还有一些关于基于IDE的教程的要求。

我很想听听社区的看法。这些数据是否与你的个人经历相吻合?在ROS 2文档方面,你希望看到什么?

提问:

想学导航吗?来加入导航工作群吧,

你可以在这里加入我们的活动日历:

  • https://index.ros.org/doc/ros2/Governance/

我们的repo在这里:

  • https://github.com/ros-planning/navigation2

我们的文档在这里:

  • https://ros-planning.github.io/navigation2/

每个人都想学,来投递PR,最好的学习方法就是做和专家手把手的指导,你可以在我们的工作群里找到。


2020年ROS机器人操作系统用户官方调查相关推荐

  1. ros机器人操作系统简介

    机器人操作系统   (Robot Operating System, 或简称 ROS),它可以帮助提高机器人软件的开发效率. ROS 系统的官方定义如下: ROS是面向机器人的开源的元操作系统(met ...

  2. ROS机器人操作系统底层原理及代码剖析

    0 目的 本文介绍ROS机器人操作系统(Robot Operating System)的实现原理,从最底层分析ROS代码是如何实现的. 1 序列化 把通信的内容(也就是消息message)序列化是通信 ...

  3. ROS机器人操作系统学习笔记(一)--基本概念

    ROS机器人操作系统学习教程(一)–基本概念 1. 基本概念 1.1 ROS背景 机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便.功 ...

  4. ROS机器人操作系统学习笔记(三)ROS通信架构

    ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...

  5. Windows使用ROS机器人操作系统全面资料汇总

    0 摘要: 本文以Win10系统中安装使用ROS1Melodic和ROS2Dashing为基础,并通过开源硬件设备Arduino与ROS的通信为示例,具体介绍机器人操作系统ROS1和ROS2的细节.部 ...

  6. ROS机器人操作系统暑期学校总结和感悟

    https://discourse.ros.org/t/ros-summer-school-in-china-2019-july-27-august-hefei/9494 中国ROS暑期学校将迎来五周 ...

  7. ROS 机器人操作系统进阶实战

    ROS(Robot Operating System) 是一个开源的机器人操作系统,目的是提供开发平台.工具及生态给开发人员,可以让开发人员快速开发.本课程通过精心设计的案例,分析技术要点.理解运行原 ...

  8. 入门ROS机器人操作系统——准备工作

    近期入门学习ROS机器人操作系统,有时间记录一下踩坑过程,给后来者提供参考,也方便自己后期查阅. 首先,分享几个软件安装包: 1. 虚拟机VMware16 链接:https://pan.baidu.c ...

  9. ROS机器人操作系统学习(二)

    ROS机器人操作系统学习(二) ROS概念 通信机制+开发工具+应用功能+生态系统 提高机器人研发中的软件复用率 通信机制 松耦合分布式通信 开发工具 应用功能 生态系统 节点与节点管理器 话题与服务 ...

  10. ROS机器人操作系统——如何将ROS与STM32连接(十六)

    ROS机器人操作系统 文章目录 ROS机器人操作系统 前言 一.两种控制器的功能 二.硬件连接 总结 前言 前面学习了ROS的基本操作,仅仅只使用这个操作系统并没有什么用处,还需要讲他与硬件相结合从而 ...

最新文章

  1. ERP系统模块完全解析──工作中心
  2. li在python中啥意思_Python中*和**的区别
  3. php-fpm通过request_slowlog_timeout检查哪个脚本执行时间长
  4. Web控件文本框Reset的功能
  5. GitHub 被爆开始实名制,以便于执行美国贸易制裁;特斯拉推出超大储能产品Megapack;高通宣布与腾讯游戏达成战略合作……...
  6. Esfog_UnityShader教程_UnityShader语法实例浅析
  7. SplitContainer.SplitterDistance属性值设置应注意的与FixedPanel有关
  8. pb dw graph增加series_如何快速增加tiktok视频的播放量
  9. 异常处理--“System.BadImageFormatException”类型的未经处理的异常在 DataTest.exe 中发生
  10. Qt 萤石云 /萤石云官方Demo二次开发 Qt 5.12.3 / H5/萤石云官方Demo
  11. VS配置GLAD+GLFW
  12. 特殊符号 mysql_mysql 特殊字符
  13. Java(二)——简单的理解下面向对象内存分析
  14. LibreOJ10082. 「一本通 3.3 例 1」Word Rings【二分+SPFA】
  15. echarts legend不显示
  16. 桂电 数电实验 期末考试 试卷+解析(74LS192 + 74LS153 + 74LS139 + 74LS00 / 74LS20)
  17. 问题解决:Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You.
  18. Recipe terminated with fatal error: spawn xelatex ENOENT
  19. 如何将word文字间的空格批量删除
  20. 精准把控企业制造前端,美云智数采购云更智能

热门文章

  1. 转置卷积(Transposed Convolution)
  2. linux安装fdfs
  3. IDEA的常用快捷键(超详细)
  4. 林子雨大数据技术原理总结
  5. Profinet与GSD文件
  6. 佳博GP2120TU标签打印机 安装和使用教程(PC)
  7. 安卓kali安装mysql_安卓手机安装kali教程(root篇)
  8. 勒索病毒GandCrab5.2解密工具
  9. npcap关闭_npcap是什么软件
  10. 解决修改jsp代码之后,浏览器刷新页面却没有变化