第十四章节.大头机器人艾久的走路算法19(1 / 2)

今天是休息日,林久浩在学校宿舍与几个兄弟解决程序的问题,丁琪琪在家里倒腾艾久三号。

“哥。哥。哥。。。老哥。。老哥”林久浩的微信跳出丁琪琪的微信信息。

“怎么了,琪琪”林久浩。

“我做好地图了,你把地图输进去吧,这样艾久就可以在屋里行走了”丁琪琪。

“是按照平面坐标系做的吗?就是所有路径是按照坐标点标识出来的?”林久浩。

“是呀,我把客厅中心作为原点标注的,怎么样?”丁琪琪。

“客厅中心,怎么样个头,这么标注就有房间在负的象限里了”林久浩。

“不行吗?”丁琪琪

“可以呀,行走无所谓,距离都可以计算,不过风水不好呀!”林久浩。

“风水,我们伟大的科技人员要这么迷信吗?”丁琪琪。

“你想让奶奶住在负的象限里面?嗯?”林久浩。

“啊,那你说怎么标原点?”丁琪琪。

“二维坐标正象限只有第一象限,为了方便象限方向与图纸重合,西南角那个点作为原点吧”林久浩。

“西南角,原点,艾久到不了,是桌子”丁琪琪。

“谁说原点就必须能够到达,艾久的休息点,也是初始点在充电点,没有必要必须是原点”林久浩。

“哦,我标尺按照一分米可以吗?一分米为一个单位,这样充电的地方就是南边靠墙,坐标(5,20)”丁琪琪。

“可以,你干吗哪?”林久浩。

“我正在改哪,改完了,而且标注了充电点(5,20)”丁琪琪。

“你手好快呀!”林久浩。

“虽然充电点有了,但是,需要奶奶手动充电”丁琪琪。

“这就要麻烦奶奶了,每次要充电的时候,让艾久提醒奶奶”林久浩。

“能自动提醒吗?程序里有设置吗?”丁琪琪。

“这是电源驱动的管理模块里面自带的功能,对了,你可以编辑充电提醒用什么话,例如。。。艾久饿了!艾久饿了!”林久浩。

“哦,这么简单就解决了,编辑一下,琪琪大人救命呀,哈哈哈”丁琪琪。

“算了,忘了我说的话吧,你还是别编辑了”林久浩。

“哥,充电点标注了,其他怎么做”丁琪琪。

“琪琪,你要知道一个原理,就是艾久在屋里走,需要标注它的路径点,这些路径点是艾久走路的计算依据”林久浩。

“哥,我没有太明白,你再讲解一下”丁琪琪。

“好的,比如艾久现在在充电点(5.20),它要去厨房的最深可到达处”林久浩。

“厨房最深可到达处,这里坐标(10,150),差不多吧,是不是不要太紧凑,还要保留一些空余空间”丁琪琪。

“对呀,你还要把橱柜部分排除,艾久可爬不上橱柜”林久浩。

“好了,就(12,145)吧,直接定位目标点,出发”丁琪琪。

“不行,慢,停,不能这么做,你要先做出从充电点到屋子门口的点,然后再做出从门口到厨房口的点,然后再做出到厨房深处的点,把这些点标为ABCD”林久浩。

“为什么?”丁琪琪。

“然后给艾久输入一条路径,叫去厨房深处,然后这个行走动作指向路径策略ABCD”林久浩。

“这么复杂?”丁琪琪。

“对,而且还不止这些点,如果去别的房间还需要增加点,比如客厅你需要停留的地方都是标注点,在你的地图上会有ABCDEFGH....不够用就A1B1,一堆点”林久浩。

“干什么?”丁琪琪。

“例如,你要让在充电点的艾久去客厅,艾久会记忆自己在A点,然后用坐标计算跳点路径ABCF”林久浩。

“不能直接去吗?”丁琪琪。

“不能,因为这些跳点让艾久规避了障碍物,例如墙体和门框等,如果走两点直连线会撞上的”林久浩。

“不是有雷达吗?避开障碍物”丁琪琪。

“嗯,确实,考虑到雷达避开障碍物的功能,你的跳点之间的连线都不能距离障碍物太近,否则就停下来了”林久浩。

“哦,就是艾久是靠跳点计算路径的,如果去奶奶屋里,它会计算一条最短的跳点路径”丁琪琪。

“是的,不一定是最短的线,是最短的路由,我们把这个叫路由”林久浩。

“那。。艾久怎么走到跳点呀?我现在把跳点都标注完成了,三十几个,每一个屋子都有驻足点”丁琪琪。

“好的,不过我们在这里需要说明一下,所谓的驻足点、跳点和路径点都是一个概念”林久浩。

“知道了,我就是这么理解的,所以我设计的这些点就是为了行走用的”丁琪琪。

“琪琪,你是一个嘴上傻乖,手底飞快的大聪明,这里需要你做一件事情,我做一件事情”林久浩。

“谢谢夸奖,一共两件事情,都哪两件事情”丁琪琪。

“第一件事情,建立一套算法,就是艾久所在跳点,到达下一个跳点的路途到达算法,根据你的二维坐标,例如充电点(5,20)到最近的跳点,所在房屋的中央点(20,20),算法会计算出两个点的距离,以及矢量连线的角度,然后艾久会计算自己现在的方向,如果去(20,20)点,需要转多少角度,走多远的路,然后把参数传给传动系统”林久浩。

“我觉得,哥,我还做第二件事情吧。”丁琪琪。

“好的,就喜欢你勇挑重担的决心”林久浩。

“什么?第二件事情更难呀?”丁琪琪。

“第二件事情要先把所有的点就近连接起来然后做路由,例如,去奶奶屋里驻足点H点,需要计算自己所在点位,然后从所在点向所有的直接连接的点发一个假的走路信息,每一个假的走路信息标注一个编号例如R1或者R2,然后每一个假的走路信息R1或R2继续向直接连接的跳点发假的走路信息,但是永远不走回头路,例如R1直连点有三个,包括返回点,由于不返回,所以就向其他两个直连点发送假的走路信息,这样R1就分叉为R11和R12,然后。。”林久浩

“然后哪,我估计,我还是试试第一个算法吧!”丁琪琪。

“然后,直到你走到奶奶屋里的驻足点H,这样你会记录下好几条路由,然后,比对,找跳点最少的,如果同样长的就选第一个,这样按照这组路径点行走,就到奶奶屋里了,然后”林久浩

“还然后,还有”丁琪琪

“对,然后你把这些最终选择的路由保留起来,以后如果碰到相同情况,先检查一下你保留的表里有没有,有就可以直接用了”林久浩。

“没有呢,如果没有哪?”丁琪琪。

“没有,就再做一遍选路,这样就有了”林久浩。

“哥,我能做第三件事吗?”丁琪琪。

“唉!可以,两件事我都做了”林久浩。

“欧耶,等你做好”丁琪琪。

林久浩做好了两个算法程序,加入了艾久三号的系统里面,过了没有多久。。。

“老哥,艾久在客厅里转圈哪,好几圈了,怎么回事”林久浩手机上突然出现丁琪琪的信息。

“转圈?客厅,我看看”林久浩看着丁琪琪现场录制的视频,看到艾久确实在客厅里面转圈,于是打开服务器,检查艾久的路径。

“老哥,是我做错了什么算法吗?”丁琪琪

“老妹,两个算法都是我做的,要错也是我做错的”林久浩。

“哦,说的也是。”丁琪琪。

“不会呀,我设定的是如果路径没有选择出来,艾久是不行动的”林久浩。

“老哥,我做了一个改动,就是艾久选路的时候,让它先到客厅里,我想看看它傻乎乎的怎么选路,结果就转圈了”丁琪琪。

“你改的,但是你这个改动只会让艾久先走几步,不至于转圈呀,应该不是你改动的问题”林久浩继续查找。

“哦,那我就放心了”丁琪琪。

“第二个选路的路由算法有问题,琪琪,你怎么在客厅标注了这么多驻足点,太多了”林久浩。

“老哥,我说是我的错吧!”丁琪琪。

“不是,不是,我只是说太多了,你看,我们路由策略是不返回原出发点,例如B到C点,C点连接BDE三个点,由于B点是C点的出发点,所以不返回B点,只向DE发出,但是”林久浩。

“但是什么,是不是我的错?”丁琪琪。

返回