智能车学习日记【二】————十字和斜入十字
文章目录
前言
经过了一个多月的学习,小白的我终于也是能较稳定调出了2.8m以上的四轮车,过程中也遇到了很多困难,其中就有十字补线和斜入十字补线。尤其是斜入十字也是困扰了我快一周,现在和大家分享一下我处理斜入十字的方法(我的方法其实还有很多漏洞需要改进,仅供大家参考理解一下,欢迎各位在评论区指点出可改进之处!)
一、普通十字补线
首先,我将十字补线分成了找拐点,判断是否需要补线和补线3个步骤。斜入十字也是这样判断,只是多了很多限制条件。防止在直道或弯道也补线导致图像错误。代码里的数组可以在我的第一篇文章里找到定义和含义
智能车学习日记【一】
- 找拐点
正入十字找拐点比较容易,直接贴代码
// 找拐点
if (l_down_flag == 0)
{
if (L_black[0] != 185 && L_black[1] != 185 && L_black[3] != 185)
{
for (i = 1; i < 65; i++)
{
if (abs(L_black[i] - L_black[i - 1]) < 5 && abs(L_black[i + 1] - L_black[i]) < 5 && L_black[i + 2] - L_black[i + 1] > 3 && i + 1 >= 2 && L_black[i + 1] < 180 && i + 1 < 45)
{
lefty[0] = (byte)(i + 1);
SetText(" 左下拐点 y x + " + (i + 1) + " " + L_black[i + 1]);
l_down_flag = 1;
break;
}
}
}
}
if (r_down_flag == 0)
{
if (R_black[0] != 0 && R_black[1] != 0 && R_black[3] != 0)
{
for (i = 1; i < 65; i++)
{
if (abs(R_black[i] - R_black[i - 1]) < 5 && abs(R_black[i + 1] - R_black[i]) < 5 && R_black[i + 2] - R_black[i + 1] < -3 && i + 1 >= 2 && R_black[i + 1] > 2 && i + 1 < 45)
{
righty[0] = (byte)(i + 1);
SetText(" 右下拐点 y x+ " + (i + 1) + " " + R_black[i + 1]);
r_down_flag = 1;
break;
}
}
}
}
if (l_up_flag == 0)
{
for (i = 1; i < 65; i++)
{
if (L_black[i] - L_black[i - 1] < -3 && abs(L_black[i + 1] - L_black[i]) < 4 && abs(L_black[i + 2] - L_black[i