![]() |
机器人过丁字路口:并排安装4个地面灰度传感器 |
||
| 2026/3/11 9:49:57 | 1654 |
|
机器人已经可以用2个或4个传感器,又快又稳定地进行 巡线运动了吧?不过,如果机器人行走的路线上除了直线、曲线还有各种路口又该怎么办 呢?这次的实验就来解决这个问题,先来看看图9-5中这样的丁字路口,机器人应该采 用什么样的策略才能通过。
为了让机器人成功通过各种路口, 一般我们还是需要给机器人并排安上4个传感器。 但是和用上节课中对4个传感器的使用不一样,这里用内侧两个传感器帮助机器人完成 巡线。而当外侧的两个传感器检测到黑线时,就知道了机器人遇到了路口。这时就可以 根据具体情况,让机器人做出转弯动作了。 实验器材 · 已经组装好的机器人; · 计算机及软件编程环境; ·USB 下载线; · 主控制器; · 杜邦连接线若干; · 4个使用杜邦连接线的地面灰度检测传感器; · 用黑色胶布粘贴的丁字路口。 实验步骤 1.连接机器人 在机器人的底盘上并排安装4个地面灰度传感器,用杜邦连接线把它们按顺序分别 连接到主控板的A0~A3 端口,其中Z左端的传感器连接A0 口,Z右端的连接 A3 口。 2.调试灰度阈值 同样,像以前一样通过实验确定机器人所采用的灰度阈值。因为4个传感器的电路 和安装上可能会出现微小的差别,所以这里比较稳妥的处理方式是不要嫌麻烦,为它们每 个都测量一个灰度阈值。 3.编 写 和调试程序 通过上面的分析可以知道,对于机器人来说,只要是Z左或Z右端的传感器检测到了 黑线,就代表机器人遇到了路口。这时就可以停止巡线而进入90°转弯的过程。根据这 个思路,请同学们自己去编写或是参考下面的示例程序,将机器人通过丁字路口的程序实 现。这个示例程序大部分结构和上节课的示例程序类似,所不同的只是对机器人Z外端 两个传感器检测到黑线时的处理,我们用省略号把同上节课例程重复的大部分内容略过。 const int TurnTime=300; void loop()( leftValue=analogRead(LeftPort); leftMiddleValue=analogRead (LeftMiddlePort); rightMiddleValue=analogRead(RightMiddlePort); rightValue=analogRead(RightPort);
if(leftValue analogWrite(RightSpeedPort,ForwardSpeed); }else if(leftValue>Threshold II rightValue>Threshold){ digitalWrite(LeftDirPort,LOW); analogWrite(LeftSpeedPort,ForwardSpeed); analogWrite(RightSpeedPort,ForwardSpeed); delay(TurnTime); digitalWrite(LeftDirPort,HIGH); }else if(leftMiddleValue>Threshold){ analogWrite(LeftSpeedPort,TurnHighSpeed); analogWrite(RightSpeedPort,TurnLowSpeed); }else{ analogWrite(LeftSpeedPort,TurnLowSpeed); analogWrite(RightSpeedPort,TurnHighSpeed); } delay(100); //原地转90°所需的时间 &&rightMiddleValue< //直行 //原地向左转90° //向右转弯 //向左转弯 //延时.100ms 请注意,如果大家直接套用上面给出的示例程序,机器人往往是不会乖乖地通过路口 的。这时,就需要请同学们仔细观察机器人遇到路口的反应。然后,根据机器人运动时所 表现出的现象不同,对问题的所在进行判断并解决。比如,机器人的传感器端口接线的顺 序有错误;机器人转90°弯的速度或时间参数不合适,导致转向过度或不足等。就是在这 个过程中大家解决问题的能力才会得到提高,因此请同学们千万不要满足于弄懂了原理, 一 定要动手动脑,对机器人进行实际的调试工作。
|
||
| 上一篇 下一篇 | ||
| 返回顶部 ∧ |
| 技术支持 |
| 关于创泽 |
| 隐私条款 |
|
版权所有 @ 创泽智能机器人集团股份有限公司 运营中心 / 北京市·清华科技园九号楼5层 生产中心 / 山东省日照市开发区太原路71 |