首页 >> 计算机科学 >> 文章

前言:谨以此文,献给为数众多的工科生和IT人员。在你们每天繁琐枯燥的工作里,也有着许多有趣的话题,让我们来动手写吧~~

为了争当高科技时代的“潮人”,我可爱的室友翠花不惜血本从淘宝网上拍下了当前最流行的家庭清洁机器人Roomba。“真的好Q,不愧是全球卖的最火的机器人,让我抢到了第二百五十万台。”两眼冒光的翠花忙不迭地拉着我试用。

Roomba先是在客厅中央转了几个圈,然后一头钻进了沙发底下,从沙发下钻出来之后,它就在房间里乱转起来。我有些急了,“哎,这里还没吸呢,怎么又跑那边去了,那边刚刚才吸过阿。”潮人翠花给了我一个“你很土耶”的眼神,“我在网上查过了,人家是有程序控制的,保证地板上每个点至少会被吸四次,扫的比一般的吸尘器干净多了。”她靠在沙发上兴致勃勃地看着自己最新的电子宠物,我则盯着眼前的一小块地方,心里暗自数着“人家”经过的次数。大半个小时后,乱转一气的Roomba终于停止了工作,自动返回充电座充电去了。翠花立刻跑去检查灰尘袋,战果丰硕,地板也确实非常干净。但是我发现,我盯着看的那一块地方Roomba只扫了两次。难道是买到水货了?讨论之后,我们决定拎着这款宝贝去拜访隔壁王二,让这位正在做机器人课题的博士替我们辨一辨真假。

王二并没有急于回答我们的问题,倒是给我们展示了他的清洁机器人Ottoro。翠花马上表露出她喜新厌旧的本性来:“哇,好高级,还有两个摄像头呢。”接着,王二打开了充电座上的一个开关,天花板上立刻出现了激光图案。正当我们大惑不解的时候,Ottoro开始工作了。和Roomba不同,它走的是直线,从客厅的这一头走到另外一头再折回来,中途碰到桌腿椅腿之类的障碍物会绕一下,但是还是大致保持了直线。就这样几个来回下来,不到十分钟整间客厅就被打扫的干干净净。王二耐心地给我们解释了这两种机器人之间的差别。

对于清洁机器人来说,规划好在房间里怎么走是很重要的。我们当然希望既要把整个房间都清洁到,又要尽量避免重复扫同一块地方而做多余的工作。如果机器人能记住哪些地方已经走过了,哪些地方还没有,它就可以合理地安排路线,避开那些已经走过(清洁过)的地方了。要记住走过的路线,首先就要让机器人知道自己在房间中的位置。“找位置的方法有很多种,激光、声波、超声波、红外线、无线电都可以用。”王二说,“Ottoro用的是视觉,你们有没有发现,打在天花板上的激光不同地方形状是不一样的。这样的话,Ottoro就可以通过它顶部的摄像头知道自己的所在地了。另外,它前部的摄像头和四周的超声波传感器可以帮它发现周围的障碍物,从而制定出非常高效的行走路线。” 我和翠花又仔细地观察了Ottoro的豪华装备,同时感慨:这真是机器人中的战斗机阿。

那么,相比起来略显寒酸的Roomba是怎么工作的呢?王二解释说,“Roomba靠的是它前部的接触式传感器,它借鉴了昆虫的哲学。假设现在我们房间中进了一只虫子,它当然不知道房间的格局和它自己的位置了,不过,只要给它足够长的时间让它在这个房间里随意走动,它的足迹终有一刻会遍布整个房间的。”哇,足够长的时间?这样看起来,效率岂不是很低?“对虫子可能是这样的,但Roomba并不是完全随意走动的,它有好几种运动模式来提高效率。一种是像蚊香一样的外螺旋形前进,Roomba一开始就是按这个形状转圈的。另外,当它碰到墙壁或者其他障碍物的时候,还会随机选择其他两种模式继续运行:一是稍微后退一点,改变些许角度,继续前进,这样的话就可以绕过像桌腿椅腿这样的小型障碍物;另一种模式就是沿着碰撞反弹回来的方向前进,这样就可以避免老是在墙边打转。如果不知道这些模式,看上去还蛮像乱走一气的。”原来是这样,我和翠花又仔细回想了一下Roomba的动作,好像还真有些道理。

可是,如果Roomba没法记住它走过的路线,它怎么知道房间被打扫完了没有呢,岂不是要一直扫下去?王二说,“从理论上讲,Roomba确实是不知道的,不过,它可以根据它走过的最大直线距离估算房间的大小,还可以监测地板的清洁度来预估清洁整个房间所需的时间,时间到了就会停止工作。”我和翠花齐声叫道:“估算,那不是很不靠谱?”“那倒不会,”王二解释道,“这些都是有一定的实验数据做后盾的,Roomba虽然不敢宣称100%的地方都打扫到了,但实际上没有扫到的地方是非常少的。”

“不过,你们也可以看出,Roomba这样的运动模式效率是比较低的。”王二继续说,“为了保证尽可能多的地方被打扫干净, 它会做很多重复的工作。平均下来,Roomba打扫的时间是同样设备下人打扫时间的4-5倍。所以有人说,地板上的每个点Roomba平均会打扫4次。不过,这并不是Roomba的优点,恰恰相反,这是为了节省配置所付出的代价。而且,也不能说地板上的每个点至少被打扫了4次,要知道,有的地方可能打扫了十几次,有的地方可能一次都没有打扫到。”翠花好奇地问:“有没有可能有一种特别好的算法使得低配置的清洁机器人有很高的效率呢?”王二笑道:“你太贪心了,No free lunch,理论上来说没有一种算法在任何情况下都是最优的,不过提高还是可能的。iRobot公司刚推出了一款可开发的Roomba,用户可以在上面接其他的设备,还可以自己编程控制,你们要不要试试?” 这个么,还是等我看完那本《程序设计入门》再说吧。

告别了王二,我和翠花拎着Roomba回家了。一路上,翠花还在惦记着高配置的Ottoro,我不得不提醒她,一个Ottoro可以买十个Roomba了。“那倒是,”翠花又高兴起了,“再说了,扫个地,何必追求100%覆盖率呢?而且又不要我自己动手,多扫几遍也没什么嘛。”

后记:当然了,以上只是我为了讲清楚两种机器人不同的设计理念编出来的一个小故事。事实上,Roomba的具体清洁算法还属于商业秘密,没有披露。不过从观察它的行动可以发现上面提到的三种模式,至于还有没有其他的模式希望大家补充。同样,从Roomba的这个例子中,我们可以一窥启发式算法(Heuristic algorithm)在实际问题中的广泛应用以及商业上高成本和高效率之间的矛盾。不得不说,在市场上众多的家庭清洁机器人里,技术上算不得顶尖的Roomba能够一枝独秀,高性价比是最重要的原因。

注:以上描述中,我、翠花、王二是假的,关于Roomba和Ottoro的描述都是真的。不用怀疑了,Roomba在2008年1月的统计就卖出了两百五十万台。

0
为您推荐

68 Responses to “Roomba扫地真能扫干净吗?”

  1. “虫子思路”写得很好玩。不过这个真的有卖的么……我孤陋寡闻。
    我第一次看她博客就留言说“真的很文青”。

    • riset说道:

      淘宝网上还真有卖的

    • Robot说道:

      我说的“编故事”可能有点混淆了,加了一条注。Roomba2002年就推向市场了,是iRobot公司的产品。淘宝网上确实有的卖。

  2. sunfield说道:

    看到可爱的EVA不禁猜想,难道Roomba 就是WALL E的前身么?

  3. sqybi说道:

    哈 前段时间刚分析过这种机器人的原理...感觉最主要的还是先要知道房间的大概大小...找到边界就好了...

    • Robot说道:

      第一代Roomba需要用户设定房间级别:大,中,小。第二代就开始自己用算法估算大小了。

      • xuekexue说道:

        以后,会在Roomba上设置视觉功能的。其实,不必达到人眼的水平,只要能感光就可以了。然后,现在的内置程序就会显得太复杂了。
        打扫房间是没有结束的时候的,对房间干净程度的评判标准也是相对的。
        能够把机器卖出去才是硬道理。

        • Robot说道:

          这个感光可以八卦一下。第一代的Roomba是没有自动充电功能的,导致停电的时候它有可能待在床或者沙发低下,很不方便。后来就能自动充电了:在充电器上装一个红外发射器,Roomba身上装一个红外接收器,这样快没电的时候它就自己回去充电了。不过我发现有另外一种机器人用的方法更省钱,就是安一个非常简单的感光装置,要是快没电的时候发现头顶是黑的,就会跑到亮的地方去。觉得有时候商人比工程师更会动脑子。

  4. Aiger说道:

    为什么不加入一个记忆系统呢?每次如果打扫的一个房间,第一次可以进去乱撞,第二次就可以有一部分的路线图了,多打扫几次基本就可以整合出最佳线路,提升效率了,而房间形状是不会变的,最多搬动的是家具,一样可以把主人的喜好记录下来,比如有些人喜欢搬家具,而另一些人基本就是固定的位置

    • Robot说道:

      有很多Roomba fans在自己开发软件,使得它有mapping和学习的功能。不过基本上都安装了其他的设备。在我个人已知的情况中,仅仅依靠contact sensor和odometer来学习地图是很非常复杂而不准确的。再加上机器人不知道起始位置,环境可能变化,都增加了难度。我觉得Roomba最初的设计思路就没有想要朝这个方向走。而且,从工程学和商业的角度来看,越简单越不容易出错,多余的工作只要能维持在用户接受的范围内就可以了。

    • luscky说道:

      我觉得也要在成本和效率之间取得平衡,文章最后一句讲的正是这个意思。有时人多做一点点,机器可以简单很多多。

  5. wingc说道:

    哈哈哈,我太爱松鼠会了,前两天才订了一个roomba 560,今天就碰上这篇文章。唔,roomba开发版,有意思,应该是个好玩具。

  6. mandy说道:

    多年前我在维也纳买过一个,不知道那个是不是国外的"山寨版".
    确实很好用,又没有声音,我经常把他跟我家的乌龟弄混...

    • Robot说道:

      清洁机器人有20多个品牌(现在可能更多),并不都是“山寨”,不过大部分都是这样扁扁圆圆的。扁是为了清洁床和家具下面,圆是不会撞坏家具。所以外观差不太多。

  7. 阳春面说道:

    估计隔壁吴老二该哆嗦了 哈哈 还是勤快一点好 收衣服去了

  8. 蓝枫说道:

    第一张是iRobot Roomba 560……好贵啊……好贵啊……还是自己动手吧……用它的代价是大把大把的银子啊……

  9. chachazui说道:

    我想到的却是这个到处乱爬的东西有多硬?
    放它出来转,就仿佛美眉看见一只老鼠,人都爬到凳子上躲着傻看,流失了多少美丽的青春啊!
    如果不理它自个活动,挪脚突然踩中一只屎壳郎,喀嚓....
    或者踩中一块香蕉皮,咕咚....
    最好硬得跟核桃似的,还要扁平摩擦力大防滑倒,耐冲击,随便走,踩中了火冒三丈,Rou的一脚老是碍事滚一边去!

    • Robot说道:

      对,容错也是一个方面的问题,我这里没有提到。香蕉皮我不清楚,屎壳郎应该被吸进去吧。Roomba一般觉得有问题的时候会自动停下来。我知道的是可能被地板上的袜子塞住就停止了。所以打扫之前还是要稍微清理一下的,

      • chachazui说道:

        恩....我可能误导了思路。
        我是说要有抗暴打能力,还不能变成安全隐患,别太容易被踩坏,也不给人使绊子。

  10. 良辰说道:

    我个人认为文章并不全面。这样有些误导吧。

    所有这样的这种吸尘器,都是在一个屋子里面。现在irobot新出的一个门边感应器。可以让你排放,这样让他清扫几个屋子。

    而更新的irobot可以湿扫,还可以抹干。这就比较牛了。还没有看到如何实现的。呵呵

    而覆盖率,我觉得不限定条件的话,不是个难题。

    现在的问题是,如何实现最小传感器来实现。比如irobot可能就用了两个红外传感器来实现。国内可能也能实现那样的效果,但可能需要几个红外,这就是算法的好处了。

    查了irobot的专利,有40多个,没空细看,不知道有算法的讲解没有。有空我也写一篇。

    不过楼主这个选材选的相当好,赞一下。

    • Y.X.说道:

      A. 不知道你说的误导是什么
      B. Roomba 随便走的, 就算两个屋子也没啥.
      C. 新的那个是洗地的, 另一个系列.

    • Robot说道:

      这个我稍微解释一下。Roomba换代比较快,新功能也很多,大部分功能都可以在网上找到介绍。我只针对走遍房间这一个问题,想解释一下怎么走,为什么这样走。从第一代Roomba开始,这种基于启发式算法的设计思路并没有改变。

      那个门外感应器(virtual wall)从第一代就有了,将Roomba限制在一个房间里。可以想象一下,如果房间很大,门很小,按照Roomba的走法是有可能偶然溜出门去但是很久都没法再次进来的。后来升级的virtual will功能是打扫玩一间之后会放Roomba出去打扫另外一间,其实还是一间一间来的,对每一间而言,走法没有差别。

      新出的Scooba是先对整个房间吸尘,再对整个房间洗地,再对整个房间抹干(不过据说太脏的话最好先吸尘再用Scooba)。它比Roomba多了洗地抹干的功能设备,但是设计思路并没有变,洗地和抹干的时候同样有重复工作。

      对如何走来说,Roomba没有用到红外传感。最初的红外只是用于virtual wall,还有就是底部检测是否到了楼梯边缘。新一代的有用红外来检测障碍物是因为有顾客觉得Roomba老撞家具和墙有点受不了。就改成发现障碍物就减低速度很慢的碰上去。我觉得,对于一个封闭的房间而言,只用contact sensor是完全可以实现有效走遍整个地面的。

      • liangchen说道:

        谢谢y.x 和robot。

        robot 解释的非常对。 我看到的资料红外是来建立虚拟墙(门外感应器(virtual wall))的。有了虚拟墙,现在的资料显示,irobot 是按照回旋的一个路线来行走的,也就是文中说的 蚊香片。 现在irobot对外声称是98%的覆盖率。
        我见到了一个山寨版,才500人民币,没有试验,不知道能覆盖多少。呵呵

        我说scooba比较牛在于。 irobot的机电已经很强了,但国外强人还是感觉电池时间太短,有人改装电池。有人感觉积灰太多,加几个防灰的机械连接阀类的东西。但这些改动,一旦改动,就不再保修。呵呵

        irobot 是一个复杂的 机电气 结构。 而scooba 感觉 是一个 复杂的 机电气液 结构。虽然这个液不是润滑油,但原理类似。

        这样一来,我想在拖地前,还需要自检,那就要增加 水是否够的自检程序。系统越来越复杂,而机械与电气连接与隔离,想想,就感觉难啊。

    • stroller说道:

      请教专利是在什么地方查到的?
      个人觉得实现Roomba的算法并不复杂,很多都是几十年来文献上普遍采用的算法,个人觉得都是公开的吧?因为不具有专利的要件-新颖性吧?
      IRobot的布鲁克斯是MIT出来的,但他的流派其实和MIT的主流方式“联接主义”还不太一样,属于人工智能的另一个分子“行为主义”,但其算法的核心思想都不是他们提出的,无非是商业吧?!
      不知道我的系统是否会触及他们的专利呢,我都是通过阅读大量paper,然后自己改进算法,再实验验证的。

      • MELLIV说道:

        非常敬仰此人 Rodney Brooks

        • Robot说道:

          呀,没想到这么老的文章还有人回。八卦一下Rodney,他也算是我师爷了。据我导师说,他当初出道的时候,因为做机器人的理念与当时的潮流不合,论文屡屡被拒。嗯,其实我导师是用这个故事激励我来着。。。

  11. bushixiong说道:

    嗯 roomba是很贵我去淘宝上看了价格从2000多到4000多不等,当然也要看roomba的型号了,和手机刚上市的时候价格差不多,其实我觉得技术上应该不会比手机难,所以价格下降的速度和空间都很大哦,我就不赶新鲜了,让有钱人吃螃蟹去吧。
    我等roomba普及的和手机差不多了就去买,估计5年以后差不多了。到时候300-500就可以买到比560性能强劲很多的roomba!

    • 蓝枫说道:

      按中国的盗版技术,你可以等山寨版的……应该很快就出来的~~

    • mapl说道:

      手机里面除了微振动,没有什么机械结构吧,其实手机的整体技术才是容易山寨的!

  12. ice说道:

    以前看电视购物里有的卖,价格不菲,算了还是自己打扫,还锻炼身体!

  13. 筋斗云说道:

    估计在国内山寨版出来,1/4价格吧。
    在1000RMB以下,还是很有吸引力的。

  14. sixers03说道:

    用这个机器人的话是不是和需要清扫的房间平米数有关呢,比如50平米和500平米比当然还是机器人合算

    • 梁唯说道:

      500平米机器人打扫的时间比人打扫的时间长得多了。外加充电的时间,你不会想一整天就有一个东西在房间里乱走吧?

    • Robot说道:

      这个机器人算法不太适合太大的房间,所以一般在家里用,不会拿到大商场去用。家里虽然可能空间很大,但是隔成一间间的,分别打扫是没问题的。

  15. wilddonkey说道:

    perfect!
    Roomba、翠花、王二都很好

  16. Ironore说道:

    太赞了!!!

  17. keke说道:

    攒~$$≧▽≦)/~

  18. 木勺说道:

    太牛了!
    不过,它能把床下的东西给弄出来么?我家闺女现在经常把她的玩具,比如积木弄到沙发或者床下面。要是有这个能自动给推出来就好了。

  19. cobblest说道:

    支持山寨...

  20. hotwinter说道:

    我觉得家里用就是出去玩的时候,放在家里让它清洁,回来房间就干净了,不用打扫了。
    或者办公室也可以,晚上清洁,或者多放几个,连阿姨都不用请了。

  21. Ranaanna说道:

    还是比较喜欢Karcher的和Electrolux的,人家是专业作吸尘器的。

  22. 说道:

    我觉得最重要的还是机器人的“眼睛”

  23. [...] Roomba扫地真能扫干净吗? 于 09-1-2 通过 科学松鼠会 作者:Robot [...]

  24. [...] Roomba扫地机器人已经卖出了2500000台(别数了,5个零),那这个圆圆的机器人真能扫干净地么?扫地的算法是什么呢?能够允许自己对机器人进行改造么?来看看松鼠们的强文《Roomba扫地真能扫干净吗?》,答案自然揭晓。 [...]

  25. peter说道:

    做个WALLE形象款,我定~

  26. sasa说道:

    看完这个我就和我老妈说
    现在有可以自动扫地的机器人了
    我妈问 它可以爬上桌子 擦桌子 吗

    看来科学任需更进步!!!

  27. fyhal说道:

    算法果然是主要问题……

  28. 李清晨说道:

    我、翠花、王二是假的,——她俩咋称呼您,为什么不编一下?

  29. LeiLei说道:

    robot讲故事的水平挺高啊。看的时候以为真有翠花、王二等人。嗯,故事讲得好太重要了,会吸引人一直看下去。

    如果有人用金庸的文风写科学松鼠会,不知道效果好不好。但是想想觉得好像不容易。

  30. 西门懒得吹雪说道:

    楼主难道是搞Robot的?这个问题就是terrain coverage。我觉得在10分之一的价格约束(200来美金吧)之下,Roomba提供一个非常经济的解决方案。只是,我觉得Roomba的功率(这跟电池技术相关了)比较小。想要清理的很干净,它有点不堪重负了。所以平时我都用Roomba 大扫除的时候上高功率的吸尘器。

  31. redrocks说道:

    出现过几个问题:
    1) 侧面的旋转刷用了没多久就坏了,
    2)底下的主旋转刷也在2个月内罢工
    好处是厂商飞快就给寄来了备件

    有一点俺很不喜欢的,是同一个地方反复吸扫多次后,看似战果累累,如果仔细看, 大部分“战果”是无辜的地毯绒被刷子硬刷下来

    有一点俺比较喜欢,是扁平的结构让这东西能钻到普通吸尘器去不了的床下。。。 那地方积灰之多让人吃惊

  32. 有视觉的扫地板的机器人说道:

    有没有对做“有视觉的扫地板的机器人”感兴趣的朋友?我们想做这件事,可以投一点资源,大家一起探讨探讨?
    感兴趣的请加QQ群:86403704。
    注意!本群是工程群,真正感兴趣的再加入,只是看看或潜水的勿入,入群不做自我介绍的也请自动退出。

  33. sleepy说道:

    写得太有趣了!你很有才!

  34. mimzyx说道:

    原来有比Roomba更厉害的Ottoro。太好了!不过没钱。

  35. robotain说道:

    有趣。
    iRobot 的清洁机器人销量已经过500万台了

  36. chicy说道:

    还是自己扫比较好,省钱、锻炼身体又环保~~~

  37. cxmm说道:

    嗯,好有趣的讨论。报告一下,山寨版的不太好用。

  38. Vicky说道:

    Roomba 和 Scooba 吸尘器在国外很流行啦!!!!

  39. Gru说道:

    好玩~

  40. iRobot说道:

    iRobot在2011年已经进军中国了,选定科凡达为中国独家总代理,科凡达官网www.corobotic.com,大家可以到天猫商城http://corobotic.taobao.com购买

  41. helhq说道:

    扫地机器人http://www.rmspphb.com还是不错的,至少能帮你清扫掉80%以上的小垃圾及你看不见的灰尘,扫地机器人哪个牌子好

Leave a Reply