当前位置:首页 > 知识基础 > 疑难分析 > 无路口停车技术分析

无路口停车技术分析

发表日期:2017-08-27 19:51:36文章编辑:戴 渊浏览次数: 标签:亮宁机器人    

 一、预备知识

    用于机器人巡线的地图上,终点的位置往往被设计成一个路口,方便机器人判断和停车。如果在终点的位置没有路口,仅仅是一根线,那么以前判断路口停车的方法便不再适用了。此时,我们需要换一种思路,既当机器人长时间感应不到黑线时便停车。

 

二、分析与实现

之前的巡线学习过程中,我们用一个n变量来表示同一时间有几个传感器同时看到黑线就停车(如下面的代码段

void check()

{

ll=AR(4)>619; //检测到黑线返回1ll变量,否则返回0  

    l=AR(2)>632;

    m=AR(1)>509;

    r=AR(3)>644;

    rr=AR(5)>684;  

n=ll+l+m+r+rr;//0<=n<=5表示n传感器同时检测到黑线

}

我们知道当n值为0时候,表示没有传感器检测到黑线那么此时此刻停车,是不是就达到无路口停车的目的呢这是行不通的,因为在正常巡线过程中可能出现传感器看到黑线的情况,如1所示。

 01.jpg

1  巡线过程可能出现无眼看到黑线

可能提出疑问,亮宁机器人巡线传感器固定支架允许调整传感器位置的那是否可以通过调节传感器的位置,使相邻传感器的位置小于黑线宽度,使得在巡线过程中,不会出现图1示的情况呢?当然我们可以这么去尝试,但是这并不彻底的解决问题,因为1所示情况,你还是无法百分百的排除,还会带来误码判路口的问题为了大幅度增加无路口停车的准确度,我们还得继续往下学习。

机器人行驶到路线的末端时,机器人检测不到黑线了,此时的情况与在线路上检测不到黑线的区别就是,它是长时间的检测不到黑线。那么我们问题在于如何判断机器人长时间检测不到黑线了。所谓长时间检测无非就是反复地、多地检测到同样品结果那么我们可以借助数型循环for)来完成该功能。请看如下的代码与注释

for (i=1;i<=3000;i++)//准备3000循环

{

    check();//check函数的内容是上面的代码段

    if (n>0) break;//只要有传感器看到黑线终止跳出for循环

}

以上代码中的for循环,有两个终止条件:一是,i1逐一递增到3001;二是通过break语句终止不难得出结论,如果for循环由第一种情况结束的,那么i值就是3001此时意味着3000循环中n>0这个条件始终没有成立,也就是一段时间内始终没有传感器看到黑线,那么我们就该停车了!

for循环的后面增加如下的判断语句

if (i>3000) {motor(0,0);while(1)}

值得注意的是,这里的3000次循环,只不过是作者假设的一个循环次数,或者讲是作者假设的一个时间段。具体循环次数(时间还得读者自己去尝试

 

程序实例

如图2所示的轨迹,要求机器人从A点出发沿着B黑线行驶,停止在B

02.jpg 

#include <LNDZ.h>

int ll,l,m,r,rr,n,i;

int t=3000;//循环次数

void check()

{

    ll=AR(4)>234;

    l=AR(2)>245;

    m=AR(1)>199;

    r=AR(3)>210;

    rr=AR(5)>299;

    n=ll+l+m+r+rr;

}

void find()

{

    if (ll==1) motor(-35,35);

    if (l==1) motor(0,35);

    if (m==1) motor(35,35);

    if (r==1) motor(35,0);

    if (rr==1) motor(35,-35);

}

void init()

{

    B_start();

    motor(30,30);

}

void repeat()

{

    for (i=1;i<=t;i++)//准备t循环

    {

        check();

        find();//正常巡线的两个必要函数

        if (n>0) break;//一旦看到黑线就跳出循环

    }

    if (i>t)//如果i>t表示t循环内,n>0始终没有成立,因为,一旦n>0成立for循环//会被break语句强行终止,那么此时的i不可能大于t

    {

        motor(0,0);

        while (1);//停车

    }

}

长沙市内培训报名联系电话:

1、长沙亮宁公司教育中心(总部):13787283661  13975105196 

2、长沙市中山路培训部:13349601581

3、长沙市雨花区第六都培训部:13807311550 13873168349

4、长沙县万家丽北路培训部:13278862293

5、长沙市韶山路维一星城:18973116762

6、长沙市杨家山方舟大厦:13508476583

7、长沙市北辰三角洲优智机器人俱乐部:13873186864

8、长沙市雨花区万博汇:15211109942 

如没特殊注明,文章均为亮宁电子原创,转载请注明出处
相关新闻

亮宁新主板奇怪现象的处理

新版亮宁机器人,有时会出现一些奇怪的现象。如音调不对,延时时间不对,屏幕不显示等问题,但其他却又功能正常。这是因为师生有一项操作失误造成的。但我们也能很快恢复其正...

日期:2023-11-06

无路口停车技术分析

一、预备知识 用于机器人巡线的地图上,终点的位置往往被设计成一个路口,方便机器人判断和停车。如果在终点的位置没有路口,仅仅是一根线,那么以前判断路口停车的方法便不再...

日期:2017-08-27

360可连续旋转伺服电机的调整

亮宁机器人套件提供了只能转动180度的伺服电机和360度可连续旋转的伺服电机两种。其中360度可连续旋转的伺服有一个零位调整的问题,即我们用work(0)设置电机停止转动时,我们会发现大部分电机这时可能没有停下来,而...

日期:2016-10-31

伺服电机的正确使用

伺服电机在自动控制中的作用功不可没,在机器人制作中也是很重要的一员。所以本文针对伺服电机的使用作一些说明。亮宁机器人套装提供了两种不同的伺服电机,蓝色180度伺服电机和黑色360度伺服电机,它们在功能上和...

日期:2016-10-31

奇怪的现象

几位同学在机器人搭建过程发现下面这奇特的现象,却不知为什么? 将两个减速电机的红线与红线、黑线与黑线分别相联(如图1),准备将二者并联接到电机驱动电路做成四驱车,偶然发现,在未接电源转动其中一个电机时,另一电...

日期:2016-10-31

机器人不走直线的解决方法

部分师生在使用亮宁机器人时提出一个同样的问题,机器人搭建好后,无法沿直线前进,总是偏向左或偏向右。本文就这个形成的原因分析如下。 写下面的程序下载至机器人,做为查找原因的程序:(其实,在使用新搭建的机...

日期:2016-10-31