智能车复工日记【N】:图像处理——环岛debug记录(持续更新)

Debug记录

    • 4.10号更新
    • 5.4号更新
    • 5.5号更新

4.10号更新

问题1
左环岛出现问题:
这时候应该用左上点来进行修补。检查为何没有补线。
关键是四状态和五状态的切换
在这里插入图片描述
在这里插入图片描述
修改参数为30;
效果有所改善,延时了状态5的到来。
问题2
接下来的问题:
状态7的问题:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第1张图片
状态7问题修复,
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第2张图片
问题3
但是状态8进早了,原因:
左上拐点找到了,却是因为图像左上角糊了。
在这里插入图片描述
修改之后,bug消失。
在这里插入图片描述
同时对右环做对称处理:
问题4
同时发现下坡flag在判断后要清除掉。
在这里插入图片描述
问题5
//对2020.1.19 16.20.20进行处理,发现问题: 十字误判成右环岛
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第3张图片
原因:由于右线在55行以上存在环岛所以计算曲率时,曲率变大;
补救措施:限制计算曲率的点,最远处不可以超过57;
并且将拟合和计算方差的最后的点置换为curvity_point2。这样减少离群点的影响。
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第4张图片
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第5张图片
原本以为是上面的问题,结果发现,没用,是左下角的问题:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第6张图片
左下角有图像,导致l_start不等于0,然后计算曲率以及方差也就不同了,如何解决这个问题?显然这种十字部分容易误判环岛,可以考虑其他变量特征的限制!!!
先休息会儿。
加入新变量:
byte R_first_notget = 0;
byte L_first_notget = 0;
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第7张图片
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第8张图片
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第9张图片
问题6
拟合且计算方差的依据(以左线为例):起始点既和L_start(也就是为L_first_get)有关也和L_first_notget有关,还和L_sec_get有关
什么时候以L_start(第一次黑)为开始?
解决方案:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第10张图片

问题7
又出现了问题:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第11张图片
这次就是单纯地曲率计算有问题了,右线曲率太大了!!
修改曲率限制:第三点改为50以下,并将第二点的运算放到第三点确定之后。
在这里插入图片描述
问题解决。
问题8
发现右环岛7状态有问题,没有补线,观察问题:
由于是用r_start点拉线,此时显然不可以,考虑用r_sec_start点;
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第12张图片
问题解决。
问题9
另外的一个小问题:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第13张图片
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第14张图片
8状态出早了
在这里插入图片描述
将r_start!=0减去,并且将9状态条件限制一下
在这里插入图片描述
对左环岛进行对偶操作。
然后对扫线的时候的拟合线进行进一步限制
在这里插入图片描述
在这里插入图片描述
然后将固定扫线改为继承性扫线
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第15张图片

问题10

发现假如将速度调高,有时候5状态和6状态的切换不流畅,必须一帧一帧地慢放才不会误操作,所以将限制条件打注释
在这里插入图片描述
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第16张图片

问题11
又发现问题,卡循环了,只知道是在环岛部分卡的。检查!
卡在这儿,因为右上点为0
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第17张图片
修改成这样就行了
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第18张图片
对左环岛进行对偶操作。
今天就进行到这儿,下位机先不忙做调整。

5.4号更新

先交代一下之前没有上传的debug记录:
在这里插入图片描述
当时设定的阈值为7,现在更改为13。效果好点了。左线也做同样调整。
问题1
这一帧图像竟然判断成环岛1状态了,查找问题:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第19张图片
由于是继承性扫线,显然扫到了很高的行数,然后右线的曲率就大了,方差也大了。
现在增加限制条件,连续两帧的方差都大才能进入环岛状态1或2。
在这里插入图片描述
也就是增加新变量last_row:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第20张图片
左环岛对称处理,bug解决。
接下来跑st的图像:
问题2
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第21张图片
100的左环岛,目前应该是7状态,但是却被误判为8状态。问题:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第22张图片
这里被判断为左上拐点,此时应该加以限制。左上拐点的列坐标不能大于175.
右环岛对偶操作:
在这里插入图片描述
在这里插入图片描述
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第23张图片
同时要杜绝左上拐点在下面的情况:补线的时候限制左上拐点:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第24张图片
2
问题3
同时8状态补线找的点也需要改进:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第25张图片
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第26张图片
右环岛同样操作:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第27张图片
问题4
还要解决,出环岛接十字的情况,这时候要将环岛状态清除:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第28张图片
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第29张图片
改限制中拐点,不改限制上拐点。
我们重新找一下出环岛的特征。

else if (huandao_flag_R_L != 2 && huandao_memory >= 8 && (left_turn_up[0] <= 25 || ( fiv_width[35]>=80 && fiv_width[35] <=90 && fiv_width[30] >= 90 && fiv_width[30] <= 100 && fiv_width[25] >= 100 && fiv_width[25] <= 110))  && (leftfindflag[2] == 1 && leftfindflag[4] == 1 && leftfindflag[16] == 1 && leftfindflag[15] == 1 && leftfindflag[16] == 1 && leftfindflag[17] == 1 && leftfindflag[18] == 1))
            {
                huandao_memory = 9;
                //SetText("完全脱离环岛,可以清除标志了");
                clear_huandao_data();
            }

这样问题解决。
对右环岛进行对偶操作。
问题5
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第30张图片
发现3状态跳不到4状态,
在这里插入图片描述
将这一条件去除。右环岛对偶操作。
问题解决。
问题6
5状态没有进6状态。
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第31张图片
发现问题:
在这里插入图片描述
在这里插入图片描述
限制条件改为25
左环岛对称处理。
Bug解决
问题7
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第32张图片
刚到7状态就变为8状态,找BUG:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第33张图片
限制右上拐点的列坐标,同时修改行数>=25
在这里插入图片描述
左环对偶操作。
在这里插入图片描述
问题8
误判左环岛,可以通过右线的曲率进行限制。但是发现由于我们之前限制了曲率的最后一个点的取值在50行之前,所以此时曲率并不是很大。所以准备引入新变量。
由于我发现,正入十字的最后几帧特别容易判断成环岛的3状态。
加入限制,如果左右两个上拐点同时存在并且都小于30的话,不是环岛3状态。
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第34张图片
在这里插入图片描述
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第35张图片
问题解决,对右环做对称操作。
隐患评估:(可能在异弯接环的入环存在问题)
对判断环岛大条件中加入last直线的方差。
在这里插入图片描述
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第36张图片
这一帧的左线曲率不知为何这么大:
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第37张图片
这里对计算方差的函数进行更改。在曲率的限制条件的地方或上一个条件:
在这里插入图片描述
对右曲率计算进行对偶操作;
在这里插入图片描述
这会是右线方差大了,找原因;
问题9
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第38张图片
在这里插入图片描述原本限制的是小于36,我们修改限制为40.
在这里插入图片描述
结果发现还是不行,然后观察得到:
在这里插入图片描述是曲率的原因现将左曲率min修改为-0.3
发现还是不对.
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第39张图片
明明从上面计算,为何方差会这么大?
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第40张图片
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第41张图片
原来拟合出来的线并不符合整体趋势,这该怎么办?
我们限制一下,如果参与计算方差的点总共不超过12个我们就对其限制幅度,让他小于7000;

5.5号更新

智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第42张图片
这边由于断线的缘故导致计算方差错误,这该怎么办呢???
D:\上位机图像文件夹\上位机图像\上位机图像\2020.1.16 11.15.33注意!!!!
解决思路:
1、 扫线
2、 环岛状态上做文章
这是第630帧,其实在第628帧就应该开始了,
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第43张图片
不符合的地方有:
左斜率
修改之后,成功识别为状态2;
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第44张图片
但是没有进状态3的问题仍然存在:
找到原因了,因为之前为了防止出十字判断成环岛,我对赛道宽度进行了限制,从而导致此时没有识别出来。
修改之后发现并不是这个问题:
此时其实可以这样写,如果已经判断成12状态了,三状态的宽度限制可以稍作放松。
发现问题还是上次的那个,方差计算有问题。
结果发现是break取的点有问题,假如在60行以内没有找到就直接继承的原来的break点了,现在,将所有扫线的程序都进行观察并修改这个问题。
即包装好的扫线程序以及部分十字区域代码进行修改。
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)_第45张图片
问题解决。

你可能感兴趣的:(smart,car)