萝卜圈仿真 - 机器人沿墙走思路指南

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

左边离墙壁的 距离在 120 到 200 之间,机 器人离墙壁不 远不近
判断左方距离是 否大于 200
左转
直行
程序结束
图 7 二个距离传感器沿左墙走编程思路
萝卜圈三维机器人在线仿真平台
“31”端口
“32”端口 “32”端口
图 8 二个距离传感器沿左墙走程序示意图
第一个【if 判断】判断前方是否离墙壁较近,较近,则执行机器人右转(建议原地转的方式:左边 前进,右边等速后退)。
当前方离墙壁较远时执行第二个【if 判断】判断左边离墙壁是否较近,是,则执行机器人右转(建 议采用同向弧线转的方式:左边为正向,右边也正向,但是右边速度比左边慢)。
当前方和左边都离墙壁都不近时执行第三个【if 判断】判断左边是否离墙壁很远,很远,机器人离 墙较远或者墙壁在往左拐角处,机器人需要左转(建议采用同向弧线转的方式:左边为正向,右边也 正向,但是左边速度比右边慢)。
萝卜圈三维机器人在线仿真平台
萝卜圈三维机器人在线仿真平台 机器人沿墙走思路指南
萝卜圈网络技术有限公司 日期:2012/08/30 版本:1.1
萝卜圈三维机器人在线仿真平台
1、沿墙走算法的思路说明
沿墙走算法在萝卜圈三维机器人仿真平台的很多任务里都有体现,这个算法也涉及到了循环嵌套等
图 6 中前方传感器接口为“31”,左边传感器接口为“32”。
图 6 二个距离传感器沿左边墙壁走的机器人样例
3.2、程序设计思路
主程序
永远循环
判断前方距 离是否小于
150
判断左方距离 是否小于 120
右转弯
右转弯
萝卜圈三维机器人在线仿真平台
左边距离大于 200 说明:机 器人处于离左 边墙壁比较远 或者墙壁往左 转弯的位置
网站: 电话:0571 -8767 2482 邮件:tech@ QQ 群:6562718
萝卜圈三维机器人在线仿真平台
逻辑思维问题,一直以来也是很多相关教材的必学内容之一。
注意:任何一个算法都是相对灵活的,需要结合具体的任务场景元素来做变通,所以我们在讲解
这个思路时以图一、图二这两个场景来具体分析。
沿墙走的宗旨是机器人不撞墙,所以其算法归纳起来其实就是三点:
机器人与墙壁的状态
处理方法
1
前面有墙要转弯
不转弯机器人前方会撞墙
离墙近不转弯机器人侧面会撞墙
1、侧面有墙但是离墙很远,需要考虑另外一边 的状况,所以不能离墙太远行走。
见图一:如果机器人离左边墙太远行走,机器
2
侧面离墙太近或者太远要转弯 离墙远分 人右边就掉下悬崖
两种情况 见图二:如果机器人离左边墙太远行走,机器
人右边就撞到右边的墙壁
2、处于墙壁的拐角处,这种情况必须转弯。 见图二:A、B 两处
图 3 三个障碍传感器沿左边墙壁走的机器人样例
2.2、程序设计思路
萝卜圈三维机器人在线仿真平台
在写程序之前我们要注意到,沿墙走的宗旨就是机器人不撞墙。下面我们以左边有墙壁为例来编写 这个程序。
主程序
永远循环
判断前方是 否有墙壁
判断左方是否 离墙壁比较近
右转弯
右转弯
前面、近的都 没有,远的有
前面、近的、 远的都没有, 机器人处于离 左边墙壁比较 远或者墙壁往 左转弯的位置
3
侧面离墙不近不远往前走
机器人处于安全区域,可以前行
图1
图2
萝卜圈三维机器人在线仿真平台
机器人沿墙走可以用两种传感器来完成:障碍传感器和距离传感器。 2、以障碍传感器沿左墙走为例 2.1、机器人搭建思路指南
机器人离墙的远近是一个相对的概念,用障碍传感器时需要在前方安装一个传感器,侧面安装两个 传感器,近的设置距离为 120,远的设置距离为 200(具体场景具体调整)。
没检测到墙壁放在最后。
3、以距离传感器沿左墙走为例
萝卜圈三维机器人在线仿真平台
3.1、机器人搭建思路指南
用距离传感器时需要在前方和侧方各安装一个传感器。 因为机器人是有惯性的,所以在安装传感器的时候需要给传感器一个向前的角度,这样在检测到转 角的地方有利于转弯。传感器的角度依据机器人的速度可以进行适当的调节,机器人速度越快传感器与 正前方的夹角越小。
判断左方是否离 墙壁不近不远
直行
左转
程序结束 图 4 三个障碍传感器沿左墙走编程思路
萝卜圈三维机器人在线仿真平台
“31”端口 “32”端口 “33”端口
图 5 三个障碍传感器沿左墙走程序示意图 第一个【if 判断】判断前方是否有墙壁,有,则执行机器人右转(建议原地转的方式:左边前进, 右边等速后退)。 当前方没检测到墙壁时执行第二个【if 判断】判断左边近距离的障碍传感器是否检测到墙壁,有, 则执行机器人右转(建议采用同向弧线转的方式:左边为正向,右边也正向,但是右边速度比左边慢)。 当前方和左边近的障碍传感器都没检测到墙壁时执行第三个【if 判断】判断左边远的障碍传感器是 否检测到墙壁,有,则直行(这个地方不一定要直行,可以根据墙壁的弯曲度来确定参数,如图一: 墙壁一直行往左边弯曲的,所以可以采取左边和右边同为正向,但是左边比右边稍慢的方式来提高机 器人速度;如图二:墙壁是笔直的,所以采取走直线的方式)。 当三个传感器都没检测到墙壁时,机器人离墙较远或者墙壁在往左拐角处,机器人需要左转(建议 采用同向弧线转的方式:左边为正向,右边也正向,但是左边速度比右边慢)。
萝卜圈三维机器人在线仿真平台
下面把三个障碍传感器沿墙走的思路按下表来进行一个归纳(0 表示没看到,1 表示看到):
前方障碍传感器
左边近的障碍传感器 左边远的障碍传感器
机器人状态
0
0
0
左转
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
从上表的列表中我们可以总结归纳出:
直行 右转 右转 右转 右转 右转 右转
1) 只要前方障碍传感器的返回值为 1,机器人要右转,包含四种状态; 2) 只要左边近的障碍传感器返回值为 1,机器人要右转,包含两种状态; 3) 当前方和左边近的障碍传感器返回值为 0,左边远的返回值为 1 时,机器人直行; 4) 当三个传感器返回值都为 0 时,机器人左转。 所以在程序的编写时,机器人前方障碍传感器的判断处于第一优先级;左边近的障碍传感器的判断 处于第二优先级;左边远的障碍传感器的判断处于第三优先级;最后一种状态即为三个障碍传感器都
剩下的情况就是机器人离墙不远不近,则直行(这个地方不一定要直行,可以根据墙壁的弯曲度 来确定参数,如图一:墙壁一直行向左边弯曲的,所以可以采取左边和右边同为正向,但是左边比右 边稍慢的方式来提高机器人速度;如图二:墙壁是笔直的,所以采取走直线的方有限公司
因为机器人是有惯性的,所以在安装传感器的时候需要给传感器一个向前的角度,这样在检测到转 角的地方有利于转弯。传感器的角度依据机器人的速度可以进行适当的调节,机器人速度越快侧方的传 感器与正前方的夹角越小。
图 3 中前方传感器接口为“31”,左边看得近的传感器接口为“32”,左边看得远的传感器接口为“33”。
相关文档
最新文档