大神分享,仿人组传感器篇

KXCT2021-07-20 13:28:58


写在前面         


在上一篇文章中讲了下机器人的机械结构设计,这篇文章主要讲一下传感器的选择与安放。


机械结构就是机器人的身体,而传感器则是机器人的五官,机械结构好了,机器人的身体就好,就能更好地执行动作,而传感器选好了,那机器人对外界就能知道更多,传感器的位置安放对了,那就像是人的眼睛和耳朵长对了位置,才能看到更清楚,听到更清楚。


一、边缘传感器


首先说传感器的选择吧。我们机器人一切动作都是在机器人不掉下台的前提下,那么我们就要有一双灵敏的眼睛帮机器人紧紧地盯着台子边缘,好让机器人及时地作出反应,总的来说,检测擂台边缘有很多种传感器可以用,这里介绍三种,一种是红外传感器,做过寻迹小车的同学应该知道这种传感器,其样子如图a所示。


                                        

 图 a 红外传感器


不过这种传感器一般都用在无差别组的,因为无差别组前面为铲子,这个传感器可以安放在铲子下面,而仿人组则不行,因此这各传感器不在考虑的范围内。


第二种则是光电开关,其实也是红外传感器的一种,只不过他的开关距离可以调节,其形状如图b所示。

 图 b


但是这种传感器也有一个致命的缺点,在上一篇机械结构介绍中已经说过了。由于这种传感器是利用光是漫反射,碰上有一定角度的镜面反射的话则会失效,如果恰好对方的车子前面用的是很光滑的黑色材料,如黑色的有机玻璃,那就危险了。对于这个问题,只有靠与其他传感器相组合才能有效地解。


  第三个的话就是灰度传感器了,不过灰度传感器一般都是与其他传感器搭配起来用,不会单靠灰度来检测边缘(这是对于仿人组来说,无差别的则可以),灰度的话有两种,一种是数字灰度,还有一种是模拟灰度,如图所示。

                   


模拟灰度传感器     数字灰度传感器

 

这个两种传感器各有各的优点,模拟的使用起来比数字的复杂一点,但是因为其值是连续的,就可以知道机器人在擂台上的位置变化,我们甚至可以通过其灰度值的变化率来判断机器人的速度与加速度。数字的使用简单,但是由于其只能有输出两个状态,故无法知道机器人在擂台上的位置变化。总得来说,看个人选择吧,不过我个人比较推荐模拟灰度传感器,我的机器人上面装的也是模拟灰度。


二、检测对手传感器


说完了边缘检测传感器的选择,接下来就说一下检测棋子及对方所用的传感器,检测对方能用的传感器也有很多种,如红外测距传感器,光电开关,超声波传感器,激光测距等等。这里我着重介绍两种。


第一是红外传感器,也就是上面介绍用来检测擂台边缘的光电开关。



因为其开关距离可以改变,所以也可以用来检测对方以及棋子,这种传感器使用起来也非常简单,尤其是在程序方面,只要简单地配置一下引脚就可以使用了,但是由于其是数字传感器,只能输出检测到或者未检测到,这就让我们的机器人在台子上运动的时候无法准确的知道对方离我们机器人的距离,我们也就无法根据与对方的距离大小来调节机器人的动作,除了这个缺点,上篇文章以及上面部分也都介绍过了这个传感器的一个致使缺点,因此我不推荐使用这种传感器来检测对方以及棋子。

 

第二种是红外测距传感器,其外形如图所示。


 红外测距传感器    距离- 电压曲线

 

这种传感器有好多种量程的,不过个人推荐量程20 – 150cm的,因为这代表着我们的机器人能看的更远,不过这个有好处也就有坏处,就是传感器的测量死区,其测量输出曲线如图,可以看到,他的输出与距离是分段函数的关系,且不同的距离对应有相同的输出。在0 – 20cm的这个范围内我们称为测量死区,这是由于传感器的测量原理造成的,我们无法修正,有兴趣的同学可以去网上百度一下他的测量原理。由于这个死区的存在,会给我们的测量带来不必要的麻烦,但是这个麻烦对于我们来说是没有必要去解决的。


三、传感器的安装 


有了好的传感器,就是有了好的眼睛,不过光有眼睛可不行,还要让眼睛长对地方,才能让机器人看得更清楚,接下来就谈谈传感器的安装问题。


首先就是边缘检测传感器的位置,我选用的传感器是上面所说的光电开关。我们应该在能检测到边缘的同时,尽可能的在远处检测到边缘,同时考虑上该传感器的缺点,我们就应该尽可能的调大他的开关距离,因此,我建议的安放位置如图所示。该视图为从机器人正上方看。箭头所指方向为传感器的安装方向,有这四个光电开关就足够检测边缘了。再上一张

光电开关安装位置示意图

 

三维视图。这种传感器有一种专门的安装支架,你们可以去淘宝上找,你们直接搜光电开关支架 就行。这里我就不贴连接了,其外形如图,


传感器安装三维视图  


光电开关支架

 

然后就是红外沿路传感器的安装了,我这里选用的是夏普红外测距传感器,量程20-150cm。一共用了8个,当然这个数量是不一定的,根据个人情况选择,你也可以用10个,理论上来讲,传感器越多,其测量角度就越大,不过我个人认为8个就足够了。安装位置如图所示。其简单所指方向为传感器的测量方向。

 

  红外测距传感器安放位置

 

再配上三维视图。

测距传感器安装位置

 

最后就是灰度了,灰度的安装有很多种方案,使用的数量也不一样,这里我大概说下两种方式吧。


第一种,其安装位置如图所示。箭头所指方向为机器人正方向。

  

 灰度安装方式一


对于这种安装方式来说,使用的灰度传感器数量最少,但是只能采集到机器人正下方的灰度值,因此,当机器人走到擂台边缘的时候,还是会一定的危险,不过这个可以通过程序来修正。


 第二种,前后各一个,如图所示,箭头所指方向为机器人正方向。


对于这种安装方式,相比于方式一更好一些,因为其前后各一个,可以通过两个传感器的测量值的差来判断机器人的方向。


当然,对于这两种安装方式,看个人选择,我使用的是方式一,因为传感器少,你程序写起来也就更简单,同时对硬件电流的要求也就更少。


四、创新尝试


再说下别的吧,我们在调试的过程中碰到过一个问题,就是机器人如果跑到角落里的话就会很难出来,虽然我们可以通过一个好的运行路径算法来改善这个问题,但是这只是改善,却不能彻底的解决这个问题,在我调程序的过程当中,因为路径设置地比较好,因此出现这个问题只是小概率事件,不过还是有可能出现,而且一出现就比较危险,如果是对抗的时候还好说,因为有对方的车子在,可以将我们的车子引出来,但是推棋子的时候就无能为力了,因此我原来是想在机器人上面装一个6050六轴传感器,通过yaw角来判断机器人的角度方向,再加上边缘传感器,就可以判断机器人是是否处于角落中,从而做出反应,不过最后还是没有使用,如果有兴趣的同学可以试一下。


好了,关于传感器就写这么多了,文笔不好,个人能力有限,如果有不正确的地方欢迎批评指正,下次介绍机器人的程序篇。欢迎各位加群221733759交流,或者加我QQ:1324654767。麻烦注明来意。转载请保留作者信息。

 

                                                 中北大学 何鑫

                                                 2017.10.31

 

 老K有话说

 何同学给我们大家做了一个榜样,比赛还没有完全结束,就无私的把自己的设计开源给大家,如果你觉得读完有一些收获的话,可以通过下面的二维码打赏何同学哦,KXCT欢迎大家分享自己的成果。