沿右墙迷宫算法原理
- 默认直行;
- 右侧有路,则右转;
- 前方无路,则左转。
由于unity模拟器中使用机器人移动动力控制和机器人转动角度控制来实现控制机器人前进、后退、暂停、左转、右转 。
程序编写
主机以及配置
通过内建事件初始化机器人运行(机器人+移动-动力控制的参数为0.5)
右侧有路,则右转(右方的距离传感器端口号为1)
如果想要快速找到适合的参数,可以在距离传感器的后面增加一个行打印,这样,可以将传感器的测量值打印出来,辅助找合适的参数。只需要测量值大于设定值,就可以让机器人识别到右侧有路,从而往右转。同样的道理,机器人刚出来就转弯,效果不好,也就是说,不希望机器人刚运行就转弯,所以,只需要破坏右转条件即可,由于测量值是来自于传感器,不能修改,只能读取,所以只能修改设定值(将设定值改大一些,例如:10(测量值)>3(设定值)成立,测量值不变,要使得条件不成立,就要把3改大一些,比如:改到11,条件就不成立了。如果将3改小,就会一直成立)。
前方无路,则左转(前方的距离传感器端口号为2)
注意:前方无路则左转,这是因为:右侧有路就右转了,所以,使用到前侧传感器,说明,右侧一定没有路了。
由于传感器没有输入流,所以,两端程序怎么排列都可以,不影响。
建议:写程序的时候,先写前方无路则左转,这是因为:模拟器中机器人的位置在左侧底部,机器人要前进一段距离,才满足右侧右路,然后观察是否有右转行为。
编写注意事项:
- 前方无路则左转,左转完成后,继续直行。
- 右侧有路则右转,右转后,需要直行一段距离,从而使得机器人能识别到右侧有障碍物,从而使用前侧传感器测量,前方有路,从而直行。
效果
unity模拟器沿右墙迷宫算法