大家好哈,视频1是任务三,视频2是把单双线头尾相连,可以无限循环跑,大家记得看看哈,希望大家多留言交流,谢谢大家。
任务的题目我有截图在下面。方便不知道任务的小伙伴看。看完后感觉完成任务二就等于完成任务一,完成任务三就等于完成任务二了。所以我直接思考怎么做任务三,构想了挺久的。
先把程序逻辑做个简单说明,大家互相交流哈。
程序分四部分:
1、初始化部分,设置小车的各项参数,然后进入大循环,持续获取线信息,根据获取到的第一个点的位置来判断当前位置是单线还是双线,然后执行对应函数。
2、单线时巡线,我觉得不要用自带的PID,感觉太占用时间了,直接根据获取的点,偏左右移,偏右左移。
3、双线时巡线:这个没想象中难,观察发现,双线正确位置为,左边第一点X在0.1左右,右边第一点在0.9左右。那获取到的点小于0.4,就和0.1对比;获取到的点大于0.6,就和0.9对比。左右校准。
上面两个写好,调整下参数,任务二就可以完成了。任务三就花了最多时间。本来想通过计算头尾两边的斜率,再怎么怎么判断,计算出向哪里选择几度。但是我数学已经忘记很多了,短时间内做不出来,要再想想办法。
4:、双线急转弯:通过观察可以发现,急转弯不管向左向右,要转的那个方向的线肯定会移动到正前方,摄像头获取到的基本是第19项,那持续检测19项的X和0.5的距离小于0.1;Y和0.75距离小于0.1.
就可以判断要转弯了。转弯的角度比较难说明,可以肯定是当前点就是要转的方向,先通过和隔壁点N求斜率然后反TAN 得到角度angle1,这个角度是和视频上边界的夹角。实际转动的角度是angle1加上或减去90.(因为小车和上边界夹角90度)。加还是减呢?这个通过计算和N点的位置判断。最方便的就是通过小车转得对不对确定加90还是减90。
主要逻辑就是上面三点,说得很不详细,我现在先把任务做好哈,后面我整理下,把程序详细说明下。