机器人已经可以用2个或4个传感器,又快又稳定地进行 巡线运动了吧?不过,如果机器人行走的路线上除了直线、曲线还有各种路口又该怎么办 呢?这次的实验就来解决这个问题,先来看看图9-5中这样的丁字路口,机器人应该采 用什么样的策略才能通过。
为了让机器人成功通过各种路口, 一般摩登7还是需要给机器人并排安上4个传感器。 但是和用上节课中对4个传感器的使用不一样,这里用内侧两个传感器帮助机器人完成 巡线。而当外侧的两个传感器检测到黑线时,就知道了机器人遇到了路口。这时就可以 根据具体情况,让机器人做出转弯动作了。
实验器材
· 已经组装好的机器人;
· 计算机及软件编程环境;
·USB 下载线;
· 主控制器;
· 杜邦连接线若干;
· 4个使用杜邦连接线的地面灰度检测传感器;
· 用黑色胶布粘贴的丁字路口。
实验步骤
1.连接机器人
在机器人的底盘上并排安装4个地面灰度传感器,用杜邦连接线把它们按顺序分别 连接到主控板的A0~A3 端口,其中Z左端的传感器连接A0 口,Z右端的连接 A3 口。
2.调试灰度阈值
同样,像以前一样通过实验确定机器人所采用的灰度阈值。因为4个传感器的电路 和安装上可能会出现微小的差别,所以这里比较稳妥的处理方式是不要嫌麻烦,为它们每 个都测量一个灰度阈值。
3.编 写 和调试程序
通过上面的分析可以知道,对于机器人来说,只要是Z左或Z右端的传感器检测到了 黑线,就代表机器人遇到了路口。这时就可以停止巡线而进入90°转弯的过程。根据这 个思路,请同学们自己去编写或是参考下面的示例程序,将机器人通过丁字路口的程序实 现。这个示例程序大部分结构和上节课的示例程序类似,所不同的只是对机器人Z外端 两个传感器检测到黑线时的处理,摩登7用省略号把同上节课例程重复的大部分内容略过。
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°弯的速度或时间参数不合适,导致转向过度或不足等。就是在这 个过程中大家解决问题的能力才会得到提高,因此请同学们千万不要满足于弄懂了原理, 一 定要动手动脑,对机器人进行实际的调试工作。
![]() |
| 机器人底盘 Disinfection Robot 消毒机器人 讲解机器人 迎宾机器人 移动机器人底盘 商用机器人 智能垃圾站 智能服务机器人 大屏机器人 雾化消毒机器人 展厅机器人 服务机器人底盘 具身智能教育机器人 智能配送机器人 导览机器人 |