PRF:20170718 Things to consider when building a robot with open source.md

@SunWave ,翻译的不错!不过请注意保持 Markdown 格式,如果你对此不熟悉,可以找写相关文章看看,我们只用了很简单的部分。
This commit is contained in:
wxy 2017-07-31 00:07:56 +08:00
parent 28c7de3301
commit 18ba43fe60

View File

@ -1,40 +1,50 @@
# 使用开源代码构建机器人时需要考虑的事项 #
使用开源代码构建机器人时需要考虑的事项
=============
![](https://camo.githubusercontent.com/fb86e7bb10d32ee088cd821de147f03289912930/68747470733a2f2f696e7369676874732e7562756e74752e636f6d2f77702d636f6e74656e742f75706c6f6164732f666266632f666c617368696e672e706e67)
或许你正在考虑(或正在进行)将机器人使用开源软件推向市场。这个机器人是基于linux构建的。也许你正在使用机器人操作系统ROS或任务导向的操作套件MODS或者是另外一个可以帮助你简化开发过程的开源中间件。当开发接近实用化期望得到回报会开始给你带来一些压力。你可能会被问到“我们的产品什么时候可以开始销售?”,这时你将面临重要的抉择。
或许你正在考虑(或正在进行)将机器人使用开源软件推向市场。这个机器人是基于 linux 构建的。也许你正在使用[机器人操作系统][1]ROS或[任务导向操作套件][2]MOOS或者是另外一个可以帮助你简化开发过程的开源中间件。当开发接近实用化对回报的期望开始给你带来一些压力。你可能会被问到“我们的产品什么时候可以开始销售?”,这时你将面临重要的抉择。
你可以做下面两件事之一:
1.对现有的产品开始出货
1. 对现有的产品开始出货
2.回过头去,把现在的产品当做一个全新的问题来解决,并提出新的问题
2. 回过头去,把产品化当做一个全新的问题来解决,并处理新的问题
不需要看很远就可以找到采用1的例子。事实上在物联网设备市场上到处都是这样的设备。由于急于将设备推向市场这些设备中找到硬编码证书、开发密钥、各种安全漏洞和没有更新方式的产品并不少见。
不需要看很远,就可以找到采用方式1的例子。事实上在物联网设备市场上到处都是这样的设备。由于急于将设备推向市场这些可以在设备中找到硬编码证书、开发密钥、各种安全漏洞和没有更新方式的产品并不少见。
想想Mirai僵尸程序通过僵尸网络发起一个网络流量超过1Tbps的分布式拒绝服务攻击DDos导致一些互联网上最大的网站停止服务。这个僵尸网络主要由物联网设备组成。这种为了攻破设备的防御机制进而控制设备所开发的僵尸程序,是采用了超级酷的黑魔法在一个无窗实验室(或地下基地)开发的吗?不是,默认(通常是硬编码)证书。这些设备的制造商是否快速反应并发布所有这些设备的更新,以确保设备的安全?不,很多制造商根本没有更新方法。他们会开始反思
想想 Mirai 僵尸网络,通过该僵尸网络发起的流量超过 1Tbps 的分布式拒绝服务攻击DDos导致一些互联网上最大的网站停止服务。这个僵尸网络主要由物联网设备组成。这种攻破设备的防御机制进而控制设备所开发的僵尸程序是采用了超级酷的黑魔法在一个没有窗户的实验室(或地下基地)开发的吗?不是,默认(通常是硬编码)证书而已。这些设备的制造商是否快速反应并发布所有这些设备的更新,以确保设备的安全?不,很多制造商根本没有更新方法。[他们召回设备而不是发布更新][3]
急于将产品推向市场,而是退后一步。多思考几点,就可以使你自己和你所在公司避免痛苦。
急于将产品推向市场,而是退后一步。只要多思考几点,就可以使你自己和你所在公司避免痛苦。
例如,你的软件如何更新?这必须能回答这个问题。你的软件不是完美的。几个星期之内当你在加利福尼亚使用自主的高机动性多用途轮式车辆HMMWV它把小灌木识别为一棵橡树。或者你不小心在软件中包含了你的SSH密钥。
例如,**你的软件如何更新?**你*必须*能回答这个问题。你的软件不是完美的。只要几个星期你就会发现当你在加利福尼亚使用自主的高机动性多用途轮式车辆HMMWV它把小灌木识别为一棵橡树。或者你不小心在软件中包含了你的 SSH 密钥。
基础操作系统如何更新?也许这仍然是你的产品的一部分,也是你回答上一个问题的答案。但也许你使用的操作系统来自于另外一个供应商。你如何从供应商那里得到更新并提供给客户?这就是安全漏洞真正让你头痛的地方:从来不更新的内核,或者严重过时的开放ssl。
**基础操作系统如何更新?**也许这仍然是你的产品的一部分,也是你回答上一个问题的答案。但也许你使用的操作系统来自于另外一个供应商。你如何从供应商那里得到更新并提供给客户?这就是安全漏洞真正让你头痛的地方:从来不更新的内核,或者严重过时的 openssl。
当你解决了更新问题,在更新过程出现问题时,机器人怎么恢复?我的示例是对前面问题的一个常见解决方案:自动安全更新。对于服务器和台式机以及显然是计算机的东西来说,这是一个很好的做法,因为大多数人意识到有一个可接受的方法来关闭它而不是按住电源按钮5秒钟。机器人系统以及大多数物联网系统有一个问题有时它们根本不被认为是计算机。如果您的机器人表现奇怪有可能会被强制关闭。如果你的机器人行为奇怪,因为它正在快速安装一个内核更新,那么,现在你有一个部分安装内核的机器人。你需要有能力处理这种情况。
当你解决了更新问题,**在更新过程出现问题时,机器人怎么恢复?**我的示例是对前面问题的一个常见解决方案:自动安全更新。对于服务器和台式机以及显然是计算机的东西来说,这是一个很好的做法,因为大多数人意识到有一个可接受的方法来关闭它,而*不是*按住电源按钮 5 秒钟。机器人系统(以及大多数物联网系统)有一个问题,有时它们根本不被认为是计算机。如果您的机器人表现奇怪,有可能会被强制关闭。如果你的机器人行为奇怪是因为它正在快速安装一个内核更新,那么,现在你就有一个安装了半个内核的机器人镇纸了。你需要能够处理这种情况。
最后你的工厂流程是什么你如何安装LinuxROS或者你使用的中间件以及你要安装在设备上的你自己的东西小的工厂可能会手工操作但这种方法没有伸缩性容易出错。其他厂商可能会制作一个定制化的初始发行版ISO但这是不小的任务在更新软件时也不容易维护。还有一些厂商会使用专家或者有陡峭学习曲线的自动化工具不久就会意识到你把大量的工程精力投入到本来应该很简单的工作中。
所有这些问题都很重要。针对这些问题,如果你发现自己没有任何明确的答案,你应该加入我们的网络研讨会,在研讨会上我们讨论如何使用开放源代码构建一个商业化机器人。我们会帮助你思考这些问题,并可以回答你更多问题。
最后,**你的工厂流程是什么?**你如何安装 LinuxROS或者你使用的中间件以及你要安装在设备上的你自己的东西小的工厂可能会手工操作但这种方法不成规模也容易出错。其他厂商可能会制作一个定制化的初始发行版 ISO但这是个不小的任务在更新软件时也不容易维护。还有一些厂商会使用 Chef 或者有陡峭学习曲线的自动化工具,不久你就会意识到,你把大量的工程精力投入到了本来应该很简单的工作中。
所有这些问题都很重要。针对这些问题,如果你发现自己没有任何明确的答案,你应该加入我们的[网络研讨会][4],在研讨会上我们讨论如何使用开放源代码构建一个商业化机器人。我们会帮助你思考这些问题,并可以回答你更多问题。
----------
作者简介:
Kyle是Snapcraft团队的一员也是Canonical公司的常驻机器人专家他专注于snaps和snap开发实践以及snaps和Ubuntu Core的机器人技术实现。
Kyle 是 Snapcraft 团队的一员,也是 Canonical 公司的常驻机器人专家,他专注于 snaps 和 snap 开发实践,以及 snaps 和 Ubuntu Core 的机器人技术实现。
----------
via: [https://insights.ubuntu.com/2017/07/18/things-to-consider-when-building-a-robot-with-open-source/](https://insights.ubuntu.com/2017/07/18/things-to-consider-when-building-a-robot-with-open-source/)
作者Kyle Fazzari 译者SunWave 校对校对者ID
作者:[Kyle Fazzari][a]
译者:[SunWave](https://github.com/SunWave)
校对:[wxy](https://github.com/wxy)
本文由 LCTT 原创编译Linux中国 荣誉推出
[a]:https://insights.ubuntu.com/author/kyrofa/
[1]:http://www.ros.org/
[2]:http://www.robots.ox.ac.uk/~mobile/MOOS/wiki/pmwiki.php/Main/HomePage
[3]:https://krebsonsecurity.com/2016/10/iot-device-maker-vows-product-recall-legal-action-against-western-accusers/
[4]:https://www.brighttalk.com/webcast/6793/268763?utm_source=insights