如何在与4x4网格比较时设置阈值

时间:2014-03-19 16:36:19

标签: c algorithm

我有一个问题,该程序将允许iRobot创建移动并在接近障碍物时向右转90度。 我使用热传感器与iRobot Create一起捕获温差,网格将是4x4。

这个想法是借助4x4网格,我需要做一个比较。

  • 从热传感器读取4x4网格温度数据
  • 计算单个行的平均温度(对于R1 = j,R2 = k,R3 = 1,R4 = m)
  • 查找所有行中的最高平均温度
  • 按最高平均温度划分个别行
  • 令X =(R1 + R2)/ 2且Y =(R3 + R4)/ 2
  • 比较X和Y,条件:如果X小于Y = 0.08,它将向前移动。如果它大于0.08,它将会转向

-

void detection(void) 
{
    int j,k,l,m,a,b,c,d,x,y

    %average values for each row (RowAverage)

    readbuff[i] = recv_data;
    j=(readbuff[2]+readbuff[3]+readbuff[4]+readbuff[5]+readbuff[6]+readbuff[7]+readbuff[8]+readbuff[9])/4
    k= (readbuff[10]+readbuff[11]+readbuff[12]+readbuff[13]+readbuff[14]+readbuff[15]+readbuff[16]+readbuff[17])/4
    l= (readbuff[18]+readbuff[19]+readbuff[20]+readbuff[21]+readbuff[22]+readbuff[23]+readbuff[24]+readbuff[25])/4
    m= (readbuff[26]+readbuff[27]+readbuff[28]+readbuff[29]+readbuff[30]+readbuff[31]+readbuff[32]+readbuff[33])/4`

    %find the highest average among the 4 rows (HighestAverage)

    if (j > k)
    {
        a=j;
    }
    else (a>k)
    {
        a=k;
    }

    if (k > l)
    {
        a=k;
    }
    else (a>l)
    {
        a=l;
    }

    if (l > m)
    {
        a=l;
    }
    else (a>m)
    {
        a=m;
    }

    %divide individual row
    b=j/a
    c=k/a
    d=l/a
    e=m/a

    %average of the top 2 rows and bottom 2 rows
    x=(j+k)/2
    y=(l+m)/2
    ...
}

我可以知道如何设置阈值,以便当x小于y时,它不会超过0.08吗?

1 个答案:

答案 0 :(得分:0)

如果您想确保当x小于y时,x的值绝不会超过0.08,您可以执行以下操作:

if (x < y) {        
    if (x > 0.08) {
           x = 0.08;
    }
}