迷宫算法:(状态机)
无记忆功能的迷宫算法:
- 直线行驶如果前方距离大于阈值,且左右无障碍,则继续向前。
- 若前方大于阈值,且左右有障碍,则溜边行驶。
- 若前方距离小于阈值,且左右有障碍,则180转弯。
- 若前方距离小于阈值,且左侧有障碍,右转。右侧障碍,左转
有记忆功能的迷宫算法:
首先,安装前方左右三个避障。
111:调头,标记死胡同
110:右转
101:左转
011:直行
000:右转
100: 如果有死胡同标志位:且有左转标志,清楚死胡同,road_flag>>1 trun_flag>>1,右转
如果有死胡同标志位且有右转标志,同上。
如果没有死胡同,记路况,记录转向,左移 且road_flag=0 turn_flag=0 右转
010: 有死胡同标志,且刚才是前进,清死胡同,记录转向左移且turn_flag=0,右转
有死胡同,且刚刚是右转,清除死胡同,清除路况。前进。
无死胡同:记录路况,记录转向,左移 且road_flag.0=1 turn_flag.0=0。前进。
001: 有死胡同,且是前进,清死胡同,记录转向左移 且turn_flag=1。左。
有死胡同,且是右转,清死胡同,清除死胡同标志。前进。
无死胡同,记录路况,左移,road_flag.0=1。前进。
判断对应状态进入相应动作。(状态机)