智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 35511|回复: 140
打印 上一主题 下一主题

下午校赛,不管结果怎样,直接将程序奉上,真心累了

    [复制链接]

21

主题

106

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1589
威望
778
贡献
511
兑换币
449
注册时间
2012-11-29
在线时间
150 小时
跳转到指定楼层
1#
发表于 2014-5-11 10:01:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
:lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug::lol:hug:
回复

使用道具 举报

21

主题

106

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1589
威望
778
贡献
511
兑换币
449
注册时间
2012-11-29
在线时间
150 小时
推荐
 楼主| 发表于 2014-5-11 10:03:19 | 只看该作者
先来一套滤波的
  1. /***************************滤波*********************************/
  2. void lvbo3()  //冒泡法排序后,改点值为中点值
  3. {
  4.   
  5.   uchar a[3];//定义一个数组既它的元素为7
  6.   uchar i,j,k,temp;//定义3个变量


  7.   for(k=3;k<125;k++)
  8.   {

  9.       
  10.         a[0]=ADV[k-1];
  11.         a[1]=ADV[k];
  12.         a[2]=ADV[k+1];

  13.       
  14.         
  15.        for(i=0;i<2;i++)//进行6轮排序
  16.       {
  17.         for(j=0;j<2-i;j++) //每轮进行6-i次交换
  18.         if(a[j]>a[j+1])
  19.         {
  20.           temp=a[j];
  21.           a[j]=a[j+1];//大的沉底,小的上浮
  22.           a[j+1]=temp;
  23.         }
  24.       }
  25.       
  26.       ADV[k]=a[1];

  27.   }  
  28. }
复制代码
回复 支持 1 反对 0

使用道具 举报

21

主题

106

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1589
威望
778
贡献
511
兑换币
449
注册时间
2012-11-29
在线时间
150 小时
推荐
 楼主| 发表于 2014-5-11 10:10:28 | 只看该作者
来套舵机pD,软件设置切内道
  1. /***************************舵机PID函数*********************************/
  2. void Angle_PID(int CENTER)
  3. {
  4.     //2.8
  5.     float angle_kp=7.38,angle_kd=17.2;//系数     PD控制
  6.    
  7.     if(lost_time==0 ||left_lost_time==0 ||right_lost_time==0  )  //判断如果黑线都丢失了,则不更新数据
  8.     {
  9.        angle_error=CENTER-CENTER_INIT;
  10.       // if(left_lost_time>20 && right_lost_time==0)
  11.       //     angle_error=CENTER_INIT-CENTER+abs(angle_error)/8.5;
  12.       // else if(left_lost_time==0 && right_lost_time>20)
  13.            //angle_error=CENTER_INIT-CENTER-abs(angle_error)/8.5;
  14.         angle=(int)(angle_init+angle_kp*angle_error+angle_kd*(angle_error-angle_last_error));
  15.         if(angle<=angle_init-250) //防止系数过大导致舵机打死
  16.         {
  17.             angle=angle_init-250; //6%-9% ,,2000
  18.         }
  19.         if(angle>=angle_init+250)
  20.         {
  21.            angle=angle_init+250;
  22.         }
  23.         angle_last_error=angle_error;
  24.         PWMDTY23=angle;
  25.     }
  26. }
复制代码
回复 支持 1 反对 0

使用道具 举报

21

主题

106

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1589
威望
778
贡献
511
兑换币
449
注册时间
2012-11-29
在线时间
150 小时
推荐
 楼主| 发表于 2014-5-11 10:14:28 | 只看该作者
哈哈,差不多了,校赛过后打算写一篇做车经验,顺便奉上所有用过的资料和程序,送给小伙伴们,做车,读研,唉,矛盾了,不过打算去自习了,家里追的紧,先把成绩稳住,保个研吧。。。大家加油
回复 支持 1 反对 0

使用道具 举报

21

主题

106

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1589
威望
778
贡献
511
兑换币
449
注册时间
2012-11-29
在线时间
150 小时
推荐
 楼主| 发表于 2014-5-11 10:07:42 | 只看该作者
来套大律法动态阈值的

  1. /***************************大律法动态阈值*********************************/
  2. void otsu_yuzhi( )
  3. {
  4.   
  5.        int wh = 128;  
  6.        int inIm[128];   
  7.        int i, t;  
  8.        int L = 128;  
  9.        double p[128];
  10.        double w1=0;
  11.        double u0=0;
  12.        double u1 = 0;
  13.        double max = 0.0;
  14.        double w0 = 0;
  15.        int m =0;
  16.        double sigma[128];
  17.                           
  18.        for (i = 0; i < 128; i++)  
  19.                inIm[i] = ADV[i]&0xff;                 
  20.   
  21.        for (i = 0; i < L; i++)  
  22.            p[i] = 0;  
  23.   
  24.        //计算各灰度出现次数   
  25.        for (i = 0; i < 128; i++)  
  26.                p[inIm[i]]++;  
  27.   
  28.        //计算各灰度级出现概率  
  29.        for (m = 0; m < L; m++)  
  30.            p[m] = p[m] / wh;  
  31.   
  32.        for (t = 0; t < L; t++)  
  33.        {  
  34.            w0 = 0;  
  35.            for (m = 0; m < t+1; m++)  
  36.                w0 += p[m];  
  37.             w1 = 1 - w0;  
  38.   
  39.            u0 = 0;  
  40.            for (m = 0; m < t + 1; m++)  
  41.                u0 += m * p[m] / w0;  
  42.   
  43.            u1 = 0;  
  44.            for (m = t; m < L; m++)  
  45.                u1 += m * p[m] / w1;  
  46.   
  47.            sigma[t] = w0*w1*(u0-u1)*(u0-u1);  
  48.        }  
  49.        max = 0.0;  
  50.        for (i = 0; i < L-1; i++)  
  51.        {  
  52.            if (max < sigma[i])  
  53.            {  
  54.                max = sigma[i];  
  55.                THRESHOLD = i;  
  56.            }  
  57.        }                        
  58.               
  59.       //二值化
  60.       for (i=0; i<128; i++)
  61.       {   
  62.          ADV[i]=ADV[i]>THRESHOLD?225:0;   
  63.       }
  64. }
复制代码
回复 支持 1 反对 0

使用道具 举报

21

主题

106

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1589
威望
778
贡献
511
兑换币
449
注册时间
2012-11-29
在线时间
150 小时
3#
 楼主| 发表于 2014-5-11 10:04:31 | 只看该作者
赛道不太好,所以感觉5个点滤波不错
  1. void lvbo5()  //冒泡法排序后,改点值为中点值
  2. {
  3.   
  4.   uchar a[5];//定义一个数组既它的元素为7
  5.   uchar i,j,k,temp;//定义3个变量


  6.   for(k=3;k<125;k++)
  7.   {

  8.       
  9.         a[0]=ADV[k-2];
  10.         a[1]=ADV[k-1];
  11.         a[2]=ADV[k];
  12.         a[3]=ADV[k+1];
  13.         a[4]=ADV[k+2];
  14.       
  15.         
  16.        for(i=0;i<4;i++)//进行6轮排序
  17.       {
  18.         for(j=0;j<4-i;j++) //每轮进行6-i次交换
  19.         if(a[j]>a[j+1])
  20.         {
  21.           temp=a[j];
  22.           a[j]=a[j+1];//大的沉底,小的上浮
  23.           a[j+1]=temp;
  24.         }
  25.       }
  26.       
  27.       ADV[k]=a[2];

  28.   }  
  29. }
复制代码
回复 支持 反对

使用道具 举报

21

主题

106

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1589
威望
778
贡献
511
兑换币
449
注册时间
2012-11-29
在线时间
150 小时
5#
 楼主| 发表于 2014-5-11 10:09:18 | 只看该作者
来套算曲率的,智能车书上写的
  1. void chuli()
  2. {

  3.    int x1,x2,x3,y1,y2,y3;
  4.    unsigned int length1,length2,length3;
  5.    int S;
  6.    
  7.    y1=5;
  8.    y2=10;
  9.    y3=15;
  10.    
  11.    x1=Center[2];
  12.    x2=Center[1];
  13.    x3=Center[0];
  14.    
  15.    S=abs((y2-y1)*(x3-x1)-(y3-y1)*(x2-x1));
  16.    length1=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
  17.    length2=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
  18.    length3=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
  19.     if(S<1)
  20.        S=1;
  21.    K=abs((length1*length2*length3)/S);//曲率的倒数,即曲率半径
  22.    Center_Average=mid(Center[0],Center[1],Center[2]);
  23.    ADV[Left[0]]=0;
  24.    ADV[Right[0]]=0;   
  25.    Angle_PID(Center_Average);
  26. }
复制代码
回复 支持 反对

使用道具 举报

21

主题

106

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1589
威望
778
贡献
511
兑换币
449
注册时间
2012-11-29
在线时间
150 小时
7#
 楼主| 发表于 2014-5-11 10:11:18 | 只看该作者
来套提取黑线的
  1.   for( i=Center[0]; i>6; i--)   //提取左边线
  2.     {
  3.         if( ADV[i]>(ADV[i-5]+45) && ADV[i-1]>(ADV[i-6]+45))
  4.         {
  5.          
  6.                left=i-5;
  7.                break;
  8.         }
  9.          
  10.     }
  11.    
  12.    
  13.     for( i=Center[0]; i<121; i++)
  14.     {
  15.           if( ADV[i]>(ADV[i+5]+45)&& ADV[i+1]>(ADV[i+6]+45))  
  16.           {
  17.                right=i+5;
  18.                break;
  19.           }
  20.     }
  21.       
复制代码
回复 支持 反对

使用道具 举报

17

主题

115

帖子

0

精华

高级会员

Rank: 4

积分
990
威望
546
贡献
312
兑换币
349
注册时间
2014-1-23
在线时间
66 小时
9#
发表于 2014-5-11 10:40:51 | 只看该作者
沙发
回复 支持 反对

使用道具 举报

1

主题

247

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1284
威望
657
贡献
367
兑换币
445
注册时间
2014-3-9
在线时间
130 小时
10#
发表于 2014-5-11 10:44:30 | 只看该作者
准备做完再想考研的事!5个月应该够了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-25 15:30 , Processed in 0.054483 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表