赞
踩
1.进环岛之前要先判断环岛---采用寻找下拐点的方法和判断左边为直线并且可以看到上拐点
寻找下拐点需要判断赛道为黑白跳变(由于光照影响会导致判断错误可加入额外条件--拐点上方有白块),左边线则是利用斜率和协方差判断,且出现上拐点,便可以判断圆环并且进行补线操作
代码如下:
static int mode2_cnt = 0;
circle1.circle_left_true = 0;//圆环左线特征符合位
circle1.circle_right_true = 0;//原环境右线特征符合位
/****************检测左边情况*********************/
least_sqaure(&ka, &kb);//左右线斜率,主要看左线
//printf("KA:%f\n", ka);
//printf("协方差:%f,%f,%f", cov_Rightcircle_L, cov_Rightcircle_R, cov_Rightcircle_R_down);
if (ka > -0.75 && ka < -0.25)//斜率符合
{
if (Left_line_count > 100)//长度符合
{
circle1.circle_left_true = 1;//左边符合圆环特征
}
}
/****************检测右边情况*********************/
find_downcorner();//下拐点n
find_whitecnt();//如果下拐点存在,则检查拐点右上白行数
cov_Rightcircle();//协方差
if (circle1.Length_white > LENGTH_WHITE_THRESHOLD)//下拐点上方空白长度符合
{
//左右线相关度判断
if (cov_Rightcircle_L > 700 && cov_Rightcircle_R >10&& cov_Rightcircle_R_down < -20)
circle1.circle_right_true = 1;//右边符合圆环特征
}
/************发现圆环判断***************/
if (circle1.circle_left_true && circle1.circle_right_true)
{
circle1.circle_findflag = 1;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。