Roomba扫地真能扫干净吗?

来源:百度文库 编辑:神马文学网 时间:2024/05/23 10:28:13
Roomba  扫地真能扫干净吗?   科学松鼠会 @ 2009-1-3 11:55 阅读(3722) 推荐(18) 引用通告 分类: 其他

原帖链接:http://songshuhui.net/archives/7070.html,评论请移步科学松鼠会本站


Robot 发表

前言:谨以此文,献给为数众多的工科生和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能够一枝独秀,高性价比是最重要的原因。

© 本文来自科学松鼠会http://songshuhui.net,转载请注明出处。