智能车制作

标题: 求一份摄像头入门级巡线程序 [打印本页]

作者: 青进营    时间: 2014-10-18 18:24
标题: 求一份摄像头入门级巡线程序
初学摄像头,自己写的舵机控制程序,比较简单,就是求每行黑点下标的平均值为黑线的中心位置。
慢速跑直线还行,一拐弯就出去了。
我弄到几个参赛程序,忒复杂了,看的我脑袋都大了。
我现在调的是循迹,用的7620,希望能得到一份比较简单的舵机控制算法。
先谢谢了!
/*************************************************************/
/*黑线中心定位函数*/
/**********************************************************/
unsigned int black(void)
{
   unsigned int i,j;       //数组下标变量
   unsigned int sum_lie=0,sum_hang=0,num_lie=0,num_hang=0;   //行列变量
   unsigned int heart=0;
   for(i=29;i<38;i++)        //只采集29到38行
   {
      for(j=20;j<100;j++)
      {
        if(Buffer[i][j]<0x70)
        {
          sum_lie+=j;
          num_lie++;
        }
      }
     sum_hang+=sum_lie/num_lie ;
     num_hang++;  
   }
   heart=sum_hang/num_hang;     //黑线中心
   display1(0,1,heart);
   return heart;
}
/*舵机控制函数*/
void construct(void)
{
unsigned int pos=0;
  pos=black();
  
  if((pos>50)&&(pos<100))
  angle=150+(pos-50);         //右偏
  
  if(pos<50)
  angle=150-(50-pos);        //左偏
  
   if(angle>200)      //最大转角保护
   angle=200;
   if(angle<100)
    angle=100;

  display1(0,2,angle);      //5110
    PWMDTY01=angle;        //舵机pwm
  
}

作者: 青进营    时间: 2014-10-18 19:17
还有就是我写的代码,当采集到的数值<0x70时为黑点,这个值就是阈值么,你们是这样判断黑白的么
刚才我把宽度扩大到40行,高度扩大到120,以3%的速度能在180度的弯道上跑下来,加到5%就跪了。
作者: 青进营    时间: 2014-10-18 19:22
怎么根据采到的数据计算出弧度,弧度与舵机拐角之间又满足哪一种函数关系,以前只听说过PID算法这个名词。总感觉应该有一种公式能计算出弧度,有一个函数调用能根据弧度控制舵机转角,问题是我不知道。
作者: 纷纷扰扰    时间: 2014-10-18 23:20
非硬件方面多看技术报告,很有用,里面都有你要的答案
作者: 青进营    时间: 2014-10-19 08:40
纷纷扰扰 发表于 2014-10-18 23:20
非硬件方面多看技术报告,很有用,里面都有你要的答案

哦哦
作者: Au海岛    时间: 2014-11-12 17:21
顶楼主,同求大神解答
作者: 小明同学    时间: 2018-2-27 20:32
遇到同样的问题,楼主解决了吗?

作者: 七年丶    时间: 2019-2-18 10:40
谢谢了正在研究




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2