- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
保龄球之二
07
保龄球之二
升级 !智能保龄球 !
上一节课我们 已经学过怎样用机器人打保龄球 了,是不是觉得
还不够?如果我们的机器人能够完全智能的自己去寻找球瓶而
不用你来帮他事先瞄准是不是更好?这一节课 ,我们就来讲讲
怎样让机器人 自己去寻找球瓶并 自行回到起点。
1 在起始位置放开机器人 ,让机器人 自行将球瓶推出黑线。
2 将瓶子推出黑线后 ,机器人返回起始位置 自行把其他球瓶推出黑线。
分析
我们可以分析出机器人的整个运动过程是 :找瓶子→推瓶子→
返回起点→找瓶子……这样一个循环的过程 :
第一步
我们 已经知道机器人出发的第一步就是应该先找到球瓶方位 ,
因此这一步我们就帮助机器人来寻找到前方的球瓶。
1 在 “开始”事件下 ,增加 自定义变量 “找到”并赋值 :
这个变量用于标记机器人是否找到球瓶 ,找到时设置
为1,未找到时,设置为0。初始默认值为0。
2 我们观察发现 ,当机器人在起点位置并且前方有瓶子
存在时,它的左右侧感应数据的和一般会大于20。
我们可以设置一个 自定义变量 “瞄准值”来表示这个
数值。也就是 当机器人扫描后发现左右感应器的和大
于这个数值时,就认为这个位置前方有球瓶。
3 增加消息变量 “寻找” ,并在 “开始”事件下 ,增加
发送 “寻找”的消息语句 :
4 增加接收 “寻找”消息的语句 :
表示在收到 “寻找”消息后 ,运行该语句块下方所有
的拼接语句。这个事件就是用于扫描剩余球瓶位置的。
5 在 “寻找”事件的下 ,增加 自定义变量 “i” ,并赋值 :
“i”是用于计数扫描次数 ,可以用来控制扫描的范围。
6 在 “寻找”事件的下 ,添加带条件的循环语句 :
该循环条件表示当 “找到”标记参数等于1或扫描次数
“i”大于5时,结束循环。
7 在循环体 内增加用于扫描球瓶位置的条件判断语句 :
这个条件判断为真时,表示机器人距离感应器感应到前方有
球瓶 ,因此 ,需要将 “找到”标记设置为1;否则 ,表示未
找到球瓶 ,需要继续扫描 ,因此设置左右轮速度进行原地旋
转 ,每次旋转0.1秒后 , “i”计数增加1,然后重头开始循环。
8 在循环体后添加扫描结束的操作 :
用条件判断语句来判断上面的扫描循环结束是因为找到球瓶
还是扫描计数达到上限。
如果是找到了球瓶 ,则发送 “推瓶子”消息 ,机器人开始执
行 “推瓶子”事件来把瓶子推出底线。
如果是扫描计数达到上限而未找到球瓶 ,则表示前面已经没
有球瓶了,发警报声提示运行结束。
9 当收到 “推瓶子”消息后 ,我们需要使用前进事件 :
10 在 “推瓶子”事件下添加重置 “找到”变量的语句 :
把 “找到”标记变量重新设置为0 ,用以下一次返回到
起始点后的重新扫描。
还记得我们在上一课中学过的,怎样让机器人在前进过程中
调整 自身方向面朝 “球瓶”推进的方法吗?将这个方法的所
有代码拼接添加到 “推瓶子”事件下。
这样 ,当机器人就可以先寻找瓶子方位然后再去推瓶子了。
第二步
让机器人推完瓶子后 ,还可以自行沿着球场边缘的黑线返回起
始点 ,开始新一轮推瓶子。
1 需要在推完瓶子后返回,因此我们需要先添加 “返回”
消息 ,并且在推瓶子的功能后也就是上一步的 “前进”
事件的最后 ,添加发送 “返回”的消息语句 :
也就是 当机器人把瓶子推出黑线后 ,就可以开始进行
“返回”初始点的操作了。
接下去 ,我们就看看是怎样让机器人返回初始点的。
2 增加接收 “返回”消息事件 :
表示在收到 “返回”消息后 ,运行该语句块下方所有
的拼接语句。
3 在 “返回”事件下 ,添加 自定义变量 “基本速度”、
“理想值”、 “系数” ,并赋值 :
这些变量用于控制机器人沿黑线行走的速度。
4 增加亮灯语句
文档评论(0)