制作五 接力机器人

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

制作五接力机器人
一、任务描述
场地上有机器人跑道,跑道两侧有黑色轨迹,接力区为黑色区域。

1号机器人将接力棒(乒乓球)传递给2号机器人,2号机器人把接力棒(乒乓球)传递给3号机器人,然后三号机器人再传递给四号机器人,四号机器人冲向终点区,在终点区停止。

场地示意图如图5-1所示:
图5-1 场地示意图
二、硬件组装
机器人需要在跑道内行走并要产生接力,那么机器人最好的行走路线应该在跑道中间,而跑道两侧有黑色线,可以利用机器人的光电模块探测,保证机器人在跑道中间行走,机器人需要产生接力,应该有一个传递(接力)装置,机器人需
要识别到达接力区并产生接力需要一个碰撞装置。

接力机器人如图5-2所示。

图5-2 接力机器人
三、任务难点分析
1.保证机器人在跑道中间行走
解决方案:可以在机器人的两侧分别装上两个光电模块,利用光电模块可以对跑道两侧的黑线进行检测保证机器人在跑道中间行走,考虑到接力区为黑色区域,
因此光电模块应该是检测两条跑道线的外侧,这样可以提高完成任务的成功率。

2.机器人如何知道到达接力区
解决方案:在进行接力的两个机器人的前方和后方分别装上碰撞传感器,考虑到有的接力区在跑道的弯道位置,因此接力机器人的前方和后方应分别装上两个碰撞传感器,并将其并联且接触面尽量扩大(可以提高成功率)
3.如何产生接力
解决方案:当第一台机器人检测到接力信号时启动传递装置将物体传递给第二台机器人,第二台机器人的碰撞传感器检测到信号后延时一段时间后再启动行走。

4.机器人停止
解决方案:第四台机器人利用左右两侧的光电模块检测到全黑时说明机器人到达了停止线,此时让机器人强行前进一段时间后停止,即可让机器人停止在停止区。

四、程序设计
1.输入/输出端口说明
2.程序流程图
3.程序清单(仅供参考,数据需要调整)rem 1,2,3号接力机器人程序
dirb0=%11100000 rem定义0,1,2,3,4号端口为输出端口;5,6,7号
rem端口为输入端口
dirb1=%11110000 rem定义8,9,10,11号端口为输出端口;12,13,14,
rem15号端口为输入端口
pinb0=0 rem将专用变量PINB0清0
pinb1=0 rem将专用变量PINB1清0
pause 100 rem机器人初始停止100毫秒
start1:
if pin7=0 then start rem机器人后碰撞或者声控模块产生信号
rem执行START
goto start1
start:
pinb0=0
pause 2000 rem机器人停止2秒
a1:
x=x+1 rem变量X累加
if pin6=0 then a2 rem机器人前碰撞产生信号执行A2
if x>400 then a3 rem变量X的值大于400执行A3
if (pin12=1) or (pin13=1) then zz rem左侧光电模块有
rem传感器识别到黑色执
rem行左转
if (pin14=1) or (pin15=1) then yz rem右侧光电模块有一个
rem传感器识别到黑色执
rem行右转
goto qj
yz:
pinb0=%00011001 rem机器人调速右转
pause 15
pinb0=0
pause 1
goto a1
zz:
pinb0=%00010110 rem机器人调速左转
pause 15
pinb0=0
pause 1
goto a1
qj:
pinb0=%00010101 rem机器人调速前进
pause 1
pinb0=0
pause 2
goto a1
a3:
if pin6=0 then a2 rem机器人前碰撞产生信号执行A2
if (pin12=1) or (pin13=1) then zz1 rem左侧光电模块有一个
rem传感器识别到黑色执
rem行左转
if (pin14=1) or (pin15=1) then yz1 rem右侧光电模块有一个
rem传感器识别到黑色执
rem行右转
goto qj1
yz1:
pinb0=%00011001 rem机器人调速右转
pause 10
pinb0=0
pause 1
goto a3
zz1:
pinb0=%00010110 rem机器人调速左转
pause 10
pinb0=0
pause 1
goto a3
qj1:
pinb0=%00010101 rem机器人调速前进
pause 5
pinb0=0
pause 1
goto a3
a2:
pin9=1 rem机器人启动传递装置并停止
pin10=0
pause 1000
pin9=0
pin10=1
pause 1000
pinb1=0
pinb0=0
pause 10000
end
4号接力机器人程序:(仅供参考,数据需要调整)
dirb0=%11100000 rem定义0,1,2,3,4号端口为输出端口;5,6,7号
rem端口为输入端口
dirb1=%11110000 rem定义8,9,10,11号端口为输出端口;12,13,14,
rem15号端口为输入端口
pinb0=0 rem将专用变量PINB0清0
pinb1=0 rem将专用变量PINB1清0
pause 100 rem机器人初始停止100毫秒
start1:
if pin7=0 then start rem机器人后碰撞产生信号执行START
goto start1
start:
pinb0=0 rem机器人停止2秒
pause 2000
a1:
x=x+1 rem变量X累加
if pin6=0 then a2 rem机器人前碰撞产生信号执行A2
if x>400 then a3 rem变量X的值大于400执行A3
if (pin14=1) and (pin15=1) and (pin12=1) and (pin13=1) then st
rem左侧和右侧的光电模块
rem都识别到黑色执行ST if (pin12=1) or (pin13=1) then zz rem左侧光电模块有一个传感
rem器识别到黑色执行左转if (pin14=1) or (pin15=1) then yz rem右侧光电模块有一个传感器
rem识别到黑色执行右转goto qj
yz:
pinb0=%00011001 rem机器人调速右转
pause 15
pinb0=0
pause 1
goto a1
zz:
pinb0=%00010110 rem机器人调速左转
pause 15
pinb0=0
pause 1
goto a1
qj:
pinb0=%00010101 rem机器人调速前进
pause 1
pinb0=0
pause 2
goto a1
a3:
if pin6=0 then a2 rem机器人前碰撞产生信号执行A2
if (pin14=1) and (pin15=1) and (pin12=1) and (pin13=1) then st
rem左侧和右侧的光电模块都识别到黑色执行ST
if (pin12=1) or (pin13=1) then zz1
rem左侧光电模块有一个传感器识别到黑色执行左转if (pin14=1) or (pin15=1) then yz1
rem右侧光电模块有一个传感器识别到黑色执行右转goto qj1
yz1:
pinb0=%00011001 rem机器人调速右转
pause 10
pinb0=0
pause 1
goto a3
zz1:
pinb0=%00010110 rem机器人调速左转
pause 10
pinb0=0
pause 1
goto a3
qj1:
pinb0=%00010101 rem机器人调速前进
pause 5
pinb0=0
pause 1
goto a3
a2:
pin9=1 rem机器人启动传递装置
pin10=0
pause 1000
pin9=0
pin10=1
pause 1000
pinb1=0
pinb0=0
pause 10000
st:
pinb0=0 rem机器人调速停止
pause 50000
end。

相关文档
最新文档