AbilixQuan

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: wer 编程
查看: 9349|回复: 0

vjc4.2使用手册

[复制链接]

26

主题

56

帖子

10万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
100465

教学权威搭建高手

发表于 2018-3-1 17:12:28 | 显示全部楼层 |阅读模式

转自公众号:能力风暴技术交流中心


第一节:初识vjc4.2巡线模块库


VJC4.2---巡线模块库是专为巡线而设计的模块库,它简化了我们编辑巡线程序的难度。巡线模块库中包含了“初始化”、“环境采集”、“路口巡线”、“按时巡线”、“高级巡线”、“转弯”、“启动马达”和“按钮”总共8个模块,每个模块有不同的功能,可以应对比赛地图上各种不同的线路。


在了解每个模块之前,我们可以把这八个模块进行简单的分类:

①用于设置接线等准备和辅助工作的“初始化”、“环境采集”、“按钮”模块;

②用于巡线走的“路口巡线”、“按时巡线”、“高级巡线”和“转弯”模块;

③用于脱线走的“启动马达”模块。


在巡线程序的编辑过程中,我们除了要在走不同路线时选择合适模块之外,还需要对每个模块的参数进行详细的设置。同一个路线我们可以通过不同的模块来走完,但每个模块却不能随便地设置其中的参数,所以这些参数才是我们编辑巡线程序最关键的地方。了解每个参数的意义才能让我们跟快速递编辑出稳定精确的巡线程序,下面我们就按之前的分类来详细看看每个模块的功能以及每个参数的意义。


第二节:VJC4.2——巡线模块库解析(一) 准备篇

VJC4.2---巡线模块库是专门为WER竞赛而创建的图形编程模块,它的主要作用是方便我们在比赛中进行巡线程序的编辑。下面让我们来深度解析一下每个模块的意义,只有深入了解它的含义,才能正确快速地编辑出巡线程序。目标:知其然,亦知其所以



模块解析:
1.png

初始化模块是巡线机器人的配置模块,它定义了机器人上机的接口配置输出功率及转向灰度传感器的接口配置机器人巡线环境灰度传感器阀值的取值系数等。它是机器人能正确感知环境数据、判断条件、执行动作的基础。双击打开此模块的属性框之后我们会看到如下界面,有九项内容需要我们设置。

2.jpg


①闭环电机:如果你使用的是速度闭环的电机需要勾选该项;如果是普通电机请勿勾选该项,否则您的电机转动时可能会一直保持最高速度。下面是能力风暴套装中常见电机种类。

3.jpg
②(马达)通道:分为2个,对应机器人的左右电机分别接在哪个DC口上。DC口在Ccon102控制器的上面,共有四个DC口,每个端口上有0、1、2、3对应的编号。

这边所说的左右电机是小车前进方向左侧的驱动轮和右侧的驱动轮。


③功率:电机的实际输出速度是程序中的速度值乘以该功率值。( ⊙ o ⊙ )注意,我们所有编辑到程序中的所有巡线模块里面设置的速度都会乘以功率值之后再作为实际输出速度。

我们可以通过修改功率值来控制小车行驶速度的快慢。如果你设置两个驱动电机以相同速度运行时,两个电机实际运行有差速,我们就可以通过改变功率来达到纠正速度偏差的问题。

我们还可以把功率改成负值,这样电机就会反向转动了。如果某一电机正转时机器人是后退的,可以把功率设置为负数,这样以后再设置电机速度时就不用考虑转向问题了。


④地面灰度数量:如果机器人是使用7个灰度传感器巡线的,请选择“7灰度配置”。如果您的机器人是使用5个灰度传感器巡线的,请选择“5灰度配置”。

( ⊙ o ⊙ )注意:这边只有5灰度和7灰度两种选项,也就是说我们只能用巡线模块库对五灰度小车和七灰度小车进行巡线程序编辑。如果你想给自己搭建的3灰度、9灰度等小车进行巡线程序编辑时,就不能使用巡线模块库了,需要你用最基础的模块来编辑程序,那会比我们直接使用巡线模块库麻烦很多。


⑤(灰度)通道:定义机器人的灰度传感器分别是接在哪个I/O口上。I/O口在Ccon102控制器的左右两侧,共有12个端口,每个端口有0~12对应的编号。


⑥场地类型:如果场地上的线条是黑色的(场地白色)请选择 “黑线”;如果场地上的线条是白色的(场地黑色)请选择“白线”。  


⑦是否打开DO:该功能决定是否将所有DO口都打开,如果选择“是”,在程序运行到该模块时,所有灰度传感器都会上电,传感器上的LED灯会亮。

因为灰度传感器是检测光线在不同颜色检测面反射程度的,所以环境光的强度对检测结果影响较大,打开LED灯之后,周围的环境光对检测结果的影响会小很多。


⑧阀值偏移:这个模块是用来设置判断黑白线条件的。灰度传感器会把检测到的结果,以数据的形式反馈到控制器里面,我们通过阀值偏移来确定一个中间值来作为判断黑白线的标准。原有的0.5的意思是用(黑线值+白线值)×0.5,也就是取两个值的中间值作为判断条件。在能力风暴套装中,灰度传感器的黑线反馈值是3500左右,白线反馈值是500左右,阀值是0.5,判断值就是(3500+500)×0.5=2000,所以>2000就是黑线,<2000就是白线了。我们取阀值(临界值)时一般都是取0.5,在一些特殊情况下您可能需要让这个阀值偏向小值,这时只需要把这个“0.5”改小即可。


⑨注释:勾选注释之后,我们可以在注释文本框中添加文字注释,这些注释会显示在模块外面,方便我们快速查找,这是一个很有用的小功能。


总结:初始化模块是巡线机器人的配置模块,每一个用到巡线模块库中模块的程序都必须加上初始化模块且把初始化放在其他巡线模块之前。初始化模块设置的正确性影响整个巡线程序能否正常运行,所以这边再三提醒大家,设置好初始化属性框之后检查再仔细一遍。








4.png
      环境采集模块是用于采集地面黑白线的阀值,并把这些阀值存储到控制器中。打开属性框,只需要根据场地的类型选择“白底黑线”或者“黑底白线”。使用这个模块就可以帮助我们的机器人适应不同环境,准确地识别当前环境下的黑白线。
5.jpg

还记得在初始化模块总结中讲到的,所有使用到巡线模块库中模块的程序都需要在这些模块之前加上初始化模块。所以想用环境采集模块采集黑白线阀值,程序应该这么写:

6.jpg

程序下载到控制器中,运行程序,根据控制器屏幕提示一步一步完成所有步骤之后,黑白线阀值就采集完成了。这边提醒大家,在控制器屏幕上看到“Put the sensors on BIACK LINE”和“Put the sensors on WHITE GROUND”时,我们要把小车脱手摆放在场地纸上,所有灰度传感器同时正对白色和黑色场地。


( ⊙ o ⊙ )注意:正确地完成环境采集之后,我们才可以正式编辑巡线程序。环境采集的正确与否,关系到之后巡线程序的运行对,所以这边要教大家一个很重要的检测方法

环境检测完成之后,若是设置的“白底黑线”,程序会把每个灰度的阀值存储到控制器“设置”--“EEPROM”--“EE10~EE16”中。7灰度配置时,从左到右七个灰度的阀值依次存放在EE0~EE16中。在5灰度配置的小车里,从左到右五个灰度阀值依次存放在EE10、EE12、EE13、EE14、EE16中。EE11会复制EE10的值,EE15会复制EE16的值

若是设置的“黑底白线”,则会存放到“EE17~EE23”中。7灰度和5灰度和上面“白底黑线”类似。

在能力风暴套装中灰度在白色上检测值都是500左右,黑色检测值是3500左右,所以所有阀值都在2000左右。当你在用上面的程序环境检测完成,到控制器里面查看相应数值时,会出现以下情况:

⑴若七个值都是2000左右,则你的之前的操作都是正确的,你可以学习之后的模块了。

⑵若有一个或多个值是0,则你的初始化灰度通道设置和实际接线不匹配,那么重新设置初始化和接线。

⑶若有值是500左右,或3500左右,则是你在运行上面程序后检测时没有按照之前所说的步骤运行,再次运行,按照提示一步一步完成。





初始化模块的设置和环境检测程序的运行,其实都是我们在正式编辑巡线程序之前的准备工作,只有把这两个做好了我们才能继续下面巡线程序的编辑。所以大家把我们本篇的内容做好,再继续学习巡线模块库解析(二)巡线篇。



第三节:VJC4.2——巡线模块库解析(二) 巡线篇

准备篇的内容是为小车正式编辑巡线程序所做的准备工作,只有学会了初始化的设置并用小车正确环境采集之后,我们才能用本篇所讲的内容让小车巡线走。



模块解析:

7.png

路口巡线模块的作用是小车巡线移动并在找到路口时停止。我们要理解这个模块中两个关键功能:巡线、找到路口停止。

巡线:此模块运行时,小车会自动进行巡线。巡线时如果小车走歪,模块会控制小车自动纠正方向,确保小车一直沿着线路运行(这个调整的过程是程序人员写在模块的底层里的JC代码控制的,不需要我们去设置了,所以用巡线模块库的模块编辑巡线程序比我们用普通模块方便很多)。

找路口:巡线的过程当中,小车的传感器会一直检测路口,当找到我们在属性框中设置的路口类型时,小车就会停止。这里所说的路口就和我们生活中的路口类似。


下图红色圈住的地方,都是比赛地图上的路口。

8.jpg


注意:小车最左侧和最右侧两个灰度传感器就是专门用来检测路口的,剩下中间3或5个灰度传感器是用来巡线的。


双击打开路口巡线模块的属性框,有如下四项内容需要设置。

9.jpg

①路口类型:有左侧路口和右侧路口两种类别。要让小车在找到前进方向左侧的路口停下来时,选左侧路口;要让小车在找到前进方向右侧的路口停下来时,选右侧路口;如果小车停止路口左右两侧都有路线,任选其一。

②速度设置:这里有三个速度值需要设置,我们来看:
左轮实际速度=(巡线速度-左转差速)×左马达功率
右轮实际速度=(巡线速度-右转差速)×右马达功率
这里的功率是初始化里面设置的。
设置

小车巡直线走时,我们修改巡线速度控制快慢,左右转差速设0就行;

小车巡弯线走时,曲率小的弯线小车可以自动纠正走过,但曲率大的弯线小车纠正起来会比较困难,就会发生冲出路线的情况。这时我们设置左右转差速,让小车在这个差速基础上纠正就会容易很多。所以“左转差速”“和右转差速”只有在走弯线时用得较多。


③循环次数:定义经过几个路口。我们可以理解为在路口巡线模块外面加了一个多次循环。循环次数为1时,小车会在巡线时找到第一个我们设置的路口类型处停止。循环几次,记在找到第几个我们设置的路口类型处停下。

④冲过路口时间:指冲过路口后继续前进的时间。路口巡线会巡线走,直到找到我们设置的路口停下。设置这个参数后,小车会在找到路口后不停,继续用我们设置的速度(不巡线)前进相应的时间再停止。

此参数是为了让我们的小车在找到路口之后转弯时更方便,所以在路口巡线之后加转弯模块时,都必须设置一定的冲出路口时间。一般取值范围就在0.1~0.5之间。下面在“转弯”模块中我们会更详细地解释怎么设置。


⑤结束后停车:执行完该模块后机器人是否停止。设置此处时,我们只需要记住当你写的程序中的最后一个模块中有此设置选项,勾选“是”就可以,其他模块中的此选项可任意选择“是”或“否”。最后一个模块选“是”,是为了让小车程序运行到最后能停止。过程中最好选“否”,是为了让小车直接执行下一个模块,免去了‘停止--启动’这个过程。


⑥注释:在准备篇中讲过此设置的作用,很有用的小功能,大家多用可使程序的易读性更强。


下面我们来看一个编程实例,注意每个参数的设置和实际运行效果。

10.jpg
11.gif






12.png

当巡线小车的路线发生改变,我们可以利用转弯模块让小车转到其它路线上继续前进。

根据我们搭建的小车模型,它的两个驱动轮是可以单独控制速度的,所以相对于现实中的小汽车,它可以实现原地转弯,而现实中的小汽车需要走曲线来转弯。所以巡线模块库中“转弯”的意思和我们现实生活中的转弯有所不同。

巡线小车:

13.gif
小汽车:
14.jpg


所以在一张比赛地图中,我们可以再上面一张比赛地图上标出的路口等位置使用转弯。但是遇到下面这些情况,对我们的巡线小车而言,这是走曲线,而不是转弯,所以遇到这种曲线我们使用巡线模块而不是转弯模块。

15.jpg
下面我们来看看属性框的设置:
16.jpg

①过线条数:设置小车转弯过程中要经过的线条数。

注意:小车转弯的程度不是以角度来计量,而是用小车转弯过程中扫过的线条数来确定。所以“转弯模块”是让小车转到一条线上,而不能转到空白的区域停下来。

具体程序中我们这么来确定过线条数:

小车往左转,我们观察最左侧灰度传感器,它在转到目标位置过程中所扫掠过的线条数目;

小车往右转,我们观察最右侧灰度传感器,它在转到目标位置过程中所扫掠过的线条数目。


②马达速度:左右马达速度决定了小车的转弯方式。一般有两种常见方式:左右马达速度相反的绕中心转(例如:50、-50;100、-100等);一边速度为0的绕轮胎转(例如:0、50;0、-100等)


③结束位置:设置小车转弯最后车身位置的参数。前面的过线条数帮我们确定小车转弯过程经过几条线,结束位置帮我们确定小车在传感器扫掠过相应线条数后,什么时候停车。

“偏左”:小车会在扫过设置的线条数后继续转动的过程中,在中间偏左一个的灰度感应到黑色时停止;

“中间”:小车会在扫过设置的线条数后继续转动的过程中,在正中间的灰度感应到黑色时停止;

“偏右”:小车会在扫过设置的线条数后继续转动的过程中,在中间偏右一个的灰度感应到黑色时停止。

三种不同结束位置是为了让小车在转弯之后停止的位置能够人为的微调。原因就是小车在转弯停止时由于惯性问题还会再转一点角度,这样就造成了车身的歪斜。之后小车要继续巡线前进就会在开始阶段纠正角度,比车身正着摆放时多消耗了一些时间。所有不必要的时间浪费,都会影响最后的比赛结果。

“转弯模块”运行的最好状态就是在转弯停止之后小车车身能正着压在路线上,这需要我们配合调整“路口巡线”的冲出路口时间和“转弯”的速度、结束位置三种参数。你不妨试着能不能让小车像上面的动图中一样转弯。





17.png

学会使用路口巡线和转弯模块之后,比赛地图上顶端有路口的线我们都能编程让小车巡线到达了。但是下面这些圈住的地方,小车是无法只用这两个模块走到的。

18.jpg

这些地方没有黑线路口作为停止的判断条件,所以无法用“路口巡线”到达。有些人可能会说我可以在“路口巡线”中设置“冲出路口时间”就可以了。确实对于上图是可以这么设置让小车到达的。但是我们注意,冲出路口这段时间小车是按照设置的速度“走”,并不会巡线,所以如果路口之后的线是弯的,我们就无法用“路口巡线”走到这些位置。

所以在这些地方我们需要用到“按时巡线”模块。

19.jpg
①速度设置:通“路口巡线”所述。

②巡线时间:通过时间来控制小车走过的距离,以时间来作为结束条件。使用这个模块就可以巡线走到上图圈出的位置。



20.png

“路口巡线”和“按时巡线”分别是以路口和时间作为停止标志,而高级巡线模块的结束条件是自己设置某一传感器满足某条件。如下图:

21.jpg
①传感器端口:触发“高级巡线”模块结束条件的灰度传感器对应的I/O口号,可选0~11任意一个端口。这个可以是已经安装在小车前端的巡线灰度传感器,也可以是其他装载到小车上的各类传感器。

②比较符:有>,<,>=,<=,==,!=六种可选。

③参考值:触发结束条件的阈值。这个参考值最好根据反馈到控制器里面的值,结合自己想要的效果来设置。
注意高级巡线模块在运行过程中,小车前端的灰度传感器除了最左右两端的找路口的两个灰度传感器外,会一直参与巡线纠正,所以最好不使用这些传感器作为结束条件依据。

这边列举此模块几种常用情况:
⑴今年电教场地上有一些细线,许多情况需要我们在细线路口停下,但是用路口巡线却无法完成或成功率很低。原因就是细线反馈值比粗线小很多,当检测细线的值比阈值还小时,机器人就会把细黑线当成白线来处理,就不能用路口巡线停下了。
22.jpg

此时,我们用高级巡线,根据传感器反馈回来细黑线的值,计算出此处的阈值作为参考值,小车就能停下了。

⑵我们可以在小车上装载其它传感器,以这些传感器检测值来作为结束条件的判断依据。

例如在小车前端装一个超声波传感器,让超声波传感器检测到任务模型时停下来,这样我们就不需要用“按时巡线”反复调整时间了。

还可以在小车轮子旁边加一个灰度传感器,让此传感器感应到黑线时停下,这样我们就可以用这个“高级巡线”模块来代替“路口巡线”,好处就是我们不用每次都设置冲出路口时间啦!




巡线篇所讲内容都是通过巡线模块,让小车巡着比赛场地上的引导线来到达任务模型位置。实际比赛我们可以越过路线,直接控制小车速度,是小车行驶到任务模型前面,减少走复杂路线浪费的编程调试和比赛时间。当你可以熟练掌握巡线模块,可以接着来阅读下面的VJC4.2——巡线模块解析(三) 升华篇


第四节:VJC4.2——巡线模块库解析(三) 升华篇

巡线能我们的小车准确地移动到目标位置,但规则中并没有限定我们一定要让小车巡线走。巡线模块库中的“启动马达”模块就是直接控制马达速度使小车移动的模块。在巡线程序中穿插使用“启动马达”模块让小车走“捷径”,可以让我们的小车移动得更加灵活高效。



模块解析:

23.png
24.png

①结束标志:有时间控制和传感器触发控制两种。这两种触发结束的标志和“按时巡线”和“高级巡线”中相同。


②左、右马达速度:左、右马达速度的取值范围是 -100~100。


下面我们来看看“启动马达”模块的几个常见应用:

⑴冲出基地:比赛的基地是由黑线围成的正方形框,小车要从基地出发就必须先越过黑色边框。


▲我们可以使用“延时触发”让小车前进一段时间使灰度传感器越过黑线。此种方法优点是可以不用考虑基地中LOGO标志的影响,冲出基地过程中灰度传感器是不起作用的。缺点就是需要根据小车在基地中的摆放位置和马达速度对应地调整延时时间。


25.jpg


▲另外我们可以用“传感器触发”先让小车感应到黑线框前边缘,再感应到黑线框后边缘后停止来越过黑线。这种方法的优点是小车摆放位置靠前或者靠后都不需要调整任何参数,缺点就是如果小车在前进冲出基地的过程中灰度传感器感应到基地中的标志,小车就可能把LOGO标志当成黑色框,从而无法冲出基地。


26.jpg



⑵转弯:之前在巡线篇中就讲到,“转弯”模块只能让小车转到路线上,但不能转到一块空白区域。应对这种情况,我们可以使用“启动马达”模块,通过延时和差速让小车转到目标位置。


27.jpg


⑵返回基地:完成部分任务后,小车需返回基地更换程序和解决方案。但如果我们巡线返回基地,即需要多次调试,又会走复杂路线从而浪费时间。所以通常我们会选择使用“启动马达”模块先让小车“后退”“转弯”对准基地,然后直接直线开进基地。


之所以把这篇内容叫做“升华篇”,是因为“启动马达”除了上面所讲的基础应用之外,还可以将我们的走线变得更加灵活高效。学会使用“启动马达”越过一些复杂路线,既可以降低我们调试的难度,又可以节省走线的时间,确实会使我们的程序得到“升华”。下面是两种走“捷径”的情况:

28.jpg
29.jpg
30.jpg



至此VJC4.2的巡线模块库已经全部讲解完毕。为了能尽量多的把所有细节都讲清楚,且避免长篇大论,所有内容都是浓缩之后发出的。如果你需要参加WER比赛,相信这三篇内容会对你有一定的帮助。










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

本版积分规则

Archiver|手机版|小黑屋|AbilixQuan ( 沪ICP备10018227号 )

GMT+8, 2024-12-22 09:15 , Processed in 1.132836 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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