智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 7356|回复: 15
打印 上一主题 下一主题

怎样做直道和弯道的判断,是用什么差值法

  [复制链接]

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
478
威望
327
贡献
71
兑换币
4
注册时间
2012-2-29
在线时间
40 小时
毕业学校
中国民航大学
跳转到指定楼层
1#
发表于 2012-4-17 16:14:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2贡献
求高手

5

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1367
威望
797
贡献
344
兑换币
12
注册时间
2011-11-7
在线时间
114 小时
2#
发表于 2012-4-18 15:39:47 | 只看该作者
识别是用来设定速度的。。。简单的识别还是容易,贴个代码。。。
其中gap值为极左极右差值,附
   for(i=49;i>=(M_Row_End+3);i--)   // recored_end_row
    {  
        if(Black_Flag[i].Mid_flag&&Black_Flag[i-3].Mid_flag)
        {  
           n = Runway_Midpoint[i-3] - Runway_Midpoint[i];
          if(n>=2)
                    S_right++;         
          else if(n<=-2)                             
                    S_left++;
          else      S_straight++;   
        }
    }   
void  Road_S_Dis(void)
{
prespeed_value = speed_value;

if(curValidline<11)
   {
      if(gap<=24)   //包括了直道和小S弯
      {
        straight_flag++;
        straight_flag%=3000;
      }
      else if(gap<=65) //入弯口
      {
        if(S_right>3&&S_left>3) Big_S = 1;
        else bend_flag=1;
      }
      else {zhongsu++;zhongsu%=3000;}//较远前瞻的弯,给定中速
      zhongsu3_flag = 0;
      danwan_flag = 0;
   }
else  if(M_Row_End<=22)
   {
     if(gap>=75||S_right >= (50-M_Row_End)-6||S_left>=50-M_Row_End - 6)
     {danwan_flag++;danwan_flag%=3000;}  //单向弯道,给定中速2
     else if(gap>=45)
     {
      if(S_right>3&&S_left>3) jiman_flag=1;//较近前瞻的S弯,给定慢速
      else {zhongsu2_flag++;zhongsu2_flag%=3000;} //较近前瞻的缓慢程度弯道,给定中速
      danwan_flag = 0;
     }
     else { jiaokuaisu_flag=1;danwan_flag = 0; }  //较近前瞻的平缓曲线,给定较快速度
     zhongsu3_flag = 0;
   }
else  if(M_Row_End<=33)
{
   if(gap>=80) { danwan2_flag++;danwan2_flag%=3000;}//近前瞻的单向弯道,给定中速
   else if(gap>=50||S_right > 50-M_Row_End-5||S_left>50-M_Row_End-5)        //近前瞻的急偏道,给定中慢速
   {
   zhongsu3_flag++;zhongsu3_flag%=3000;
   }   
   else  { mansu_flag=1;zhongsu3_flag = 0 ; }//弯入十字中慢速
   danwan_flag = 0;
}
else
{
   if(gap>=20) {mansu++;mansu%=3000;}
   else { kuaisu++;kuaisu%=3000; }     //直道入十字情况
   zhongsu3_flag = 0;
   danwan_flag = 0;
}
   
if(straight_flag==1) Hightest_speed = longtest_speed;
else if (bend_flag==1) Hightest_speed = longtest_speed - 75 ;
else if (Big_S==1) Hightest_speed = longtest_speed - 80 ;   
else if (zhongsu == 1)  Hightest_speed = MidLongtest_speed + 10;
else if (danwan_flag > 0)
{
  if(danwan_flag == 1)
  Hightest_speed = MidLongtest_speed;
  else if(danwan_flag == 2)
  Hightest_speed = MidLongtest_speed + 50;
  else Hightest_speed = Hightest_speed+10>longtest_speed+50?longtest_speed+50:Hightest_speed + 10;
}
else if (jiman_flag == 1) Hightest_speed = Midtest_speed;
else if (zhongsu2_flag == 1) Hightest_speed = MidLongtest_speed - 20;
else if (jiaokuaisu_flag == 1) Hightest_speed = MidLongtest_speed + 20;
else if (danwan2_flag == 1) Hightest_speed = MidLongtest_speed ;
else if (zhongsu3_flag>0) //进入十字弯减速,然后加速
{  if(zhongsu3_flag==1)
    Hightest_speed = MidLongtest_speed;
    else if(zhongsu3_flag==2)Hightest_speed = MidLongtest_speed+40;
    else Hightest_speed = Hightest_speed + 10 > longtest_speed+50?longtest_speed+50:Hightest_speed + 10;
}
else if (mansu_flag == 1) Hightest_speed = MidLongtest_speed - 30;
else if (mansu == 1)    Hightest_speed = Midtest_speed + 30;
else if (kuaisu == 1)   Hightest_speed = MidLongtest_speed;

     speed_percent = POW2(offset)/2500; if(speed_percent>1) speed_percent=1;
     motercontrl = (Hightest_speed-lowtest_speed)*speed_percent;
     speed_value = Hightest_speed-motercontrl;
     if(L_Row_End == 49&& R_Row_End == 49) speed_value=prespeed_value;
     if(speed_value < 80 ) speed_value = 80;
     
     Carry_out_speedCOUNT++;
  if(Carry_out_speedCOUNT>30)
  {
     Carry_out_speed(speed_value);
     Carry_out_speedCOUNT = 31;
  }
}
回复

使用道具 举报

3

主题

52

帖子

0

精华

高级会员

Rank: 4

积分
634
威望
420
贡献
120
兑换币
12
注册时间
2011-8-4
在线时间
47 小时
3#
发表于 2012-4-19 08:04:34 | 只看该作者
不错不错
回复

使用道具 举报

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
478
威望
327
贡献
71
兑换币
4
注册时间
2012-2-29
在线时间
40 小时
毕业学校
中国民航大学
4#
 楼主| 发表于 2012-4-19 09:01:35 | 只看该作者
感谢。。。。。
回复

使用道具 举报

24

主题

285

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1758

推广达人奖章热心会员奖章优秀会员奖章活跃会员奖章

威望
878
贡献
536
兑换币
10
注册时间
2011-5-12
在线时间
172 小时
5#
发表于 2012-4-22 18:48:39 | 只看该作者
为什么会有这么长?
回复

使用道具 举报

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
478
威望
327
贡献
71
兑换币
4
注册时间
2012-2-29
在线时间
40 小时
毕业学校
中国民航大学
6#
 楼主| 发表于 2012-4-22 21:34:31 | 只看该作者
txan0630 发表于 2012-4-22 18:48
为什么会有这么长?

有更短的吗?

回复

使用道具 举报

24

主题

285

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1758

推广达人奖章热心会员奖章优秀会员奖章活跃会员奖章

威望
878
贡献
536
兑换币
10
注册时间
2011-5-12
在线时间
172 小时
7#
发表于 2012-4-23 09:43:39 | 只看该作者
无亲 发表于 2012-4-22 21:34
有更短的吗?

这么长的没有注释也看不懂啊 !
回复

使用道具 举报

5

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
917
威望
475
贡献
110
兑换币
0
注册时间
2011-9-28
在线时间
166 小时
8#
发表于 2012-4-23 23:16:38 | 只看该作者
感谢二楼,但加注释,就更感谢你了!!哈哈
回复

使用道具 举报

5

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
917
威望
475
贡献
110
兑换币
0
注册时间
2011-9-28
在线时间
166 小时
9#
发表于 2012-4-23 23:17:22 | 只看该作者
ab123369ab 发表于 2012-4-18 15:39
识别是用来设定速度的。。。简单的识别还是容易,贴个代码。。。
其中gap值为极左极右差值,附
   for(i= ...

感谢二楼,但加注释,就更感谢你了!!哈哈
回复

使用道具 举报

41

主题

525

帖子

0

精华

常驻嘉宾

镜花水月

Rank: 8Rank: 8

积分
4910

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

QQ
威望
2394
贡献
1464
兑换币
1115
注册时间
2012-10-23
在线时间
526 小时
10#
发表于 2012-12-15 09:34:04 | 只看该作者
ab123369ab 发表于 2012-4-18 15:39
识别是用来设定速度的。。。简单的识别还是容易,贴个代码。。。
其中gap值为极左极右差值,附
   for(i= ...

有详细的吗?
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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