萝卜圈三维机器人教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
萝卜圈三维机器人教程
日期:2012/4/28
版本:1.3
萝卜圈三维机器人在线仿真平台目录
1
1.1 让我们飞 (1)
1.2基本训练任务 (6)
1.3体验跑道竞速 (16)
1.4金字塔之旅 (18)
19
2.1 迷宫灭火 (19)
2.2迷宫灭火回家 (23)
2.3 迷宫灭火搜救回家 (30)
31
3.1汽车悬挂系统模拟及前轮转弯 (31)
3.2体验极速快感 (40)
3.3两轮摩托车的跑法 (42)
第四章 3D43
4.1路线选择和基本跑法 (43)
4.2 90度直角转弯——变形金刚? (50)
4.3手臂的模拟 (56)
58
5.1三种基本跑法 (58)
5.2爬绳索与过吊桥的结合跑法 (61)
5.3石板桥与过吊桥的结合跑法 (62)
第一章开始机器人的探索之旅第一章开始机器人的探索之旅
————初步的构建及编程知识介绍初步的构建及编程知识介绍初步的构建及编程知识介绍
同学们,你能想象出吗?在几千米深的大洋底部,机器人在连接或修复海底的电缆;在餐厅里,机器人侍者在为顾客提供优质服务;在医院的手术台前,机器人在为病人做开颅手术……这些并非科学幻想,它们正在或将要成为现实。
那么,目前世界上机器人技术发展到了什么样的水平,又在哪些领域得到了应用?现在,让我们萝卜圈的仿真机器人系统,了解机器人吧。
1.1让我们飞让我们飞
很多同学都有自己的飞行梦,现实我们很难自由的构建自己的飞行器,现在我们通过萝卜圈的仿真系统来构建属于自己的飞行器吧!
通过本节课的学习,你将能够: 初步掌握机器人构建的基本技巧初步掌握机器人构建的基本技巧。
初步掌握编程的基本方法以及通过任务场景欣赏自己的作品初步掌握编程的基本方法以及通过任务场景欣赏自己的作品。
一、机器人构建
构建好之后,保存退出。
文件名:飞。
思考:1、为什么风扇叶左右不会碰撞的话,前后一定也不会碰撞? 2、飞行器的构建首先要注意什么问题? 3、为什么要反转电机?
程序编写 写好之后,保存退出。
文件名:飞。
二、程序编写
场景,
,查看效果
查看效果。
”场景
三、选择
选择“
“训练
训练--前进
前进”
四:如何才能安全降落
?
如何才能安全降落?
1、结构的改进:添加一个距离传感器,注意设置端口号。
2、程序的改进:添加一个条件循环让飞行器飞行3秒后开始下降
当满足条件时,以28的电机速度下降
电机速度设置为28
思考:飞行器下降时的电机设置应注意什么问题?
注意::1.3版在电机开始飞行之前设置3秒延时
注意
巩固与提高::利用直升机控制器构建飞行器
巩固与提高
小节:通过本节的学习我们学到了什么?
1、_____________________________________________________________
2、_____________________________________________________________
直流电机(如图 1)是一种驱动轴可连续旋转的驱动模块,其旋转速度可调,转向可正转或反转。
直流电机通常用于机器人运动。
4个直流电机配合轮子,可实现机器人的前进、后退、左转、右转和停止等动作,几乎所有采用轮式运动的机器人都要使用直流电机。
在驱动直流电机时,可设置其速度和转向,或使其停止。
萝卜圈仿真中的直流电机的速度通常在0-20之间,一般应用可使用10的速度。
直流电机有2种安装点,方形安装点用于安装,圆
形安装点为驱动轴。
驱动直流电机时,其圆形安装点上安装的部件可以转动。
正转/反转反转::默
认的旋转方向定义为认的旋转方向定义为::从直流电机内部向驱动轴方向看从直流电机内部向驱动轴方向看,,逆时针方向转动是正转逆时针方向转动是正转,,顺时针方向是反转顺时针方向是反转。
设置为置为““反转电机反转电机””旋转方向相反旋转方向相反。
直流电机属性设置
直流电机可设置名称、端口、反转电机等属性(图 2)。
名称:直流电机在添加到编辑区时会自动按序号命名(第1个除外),修改成有意义的名称有助于在编程时识别具体的直流电机。
端口:所有要驱动的直流电机都需要为其分配一个端口,可用范围为1~30。
在编写控制程序时,没有分配端口的直流电机不会出现在直流电机列表中,无法使用。
反转电机:选中“反转电机”属性时,控制程序在驱动其正转时,直流
电机反转,反之
正转。
通常情况下,4轮结构的机器人将左侧2个直流电机设为反转,右侧2个不设置反转。
在编程时驱动机器人时,可按照一般思维设置左、右两侧的转向,如直行——都正转,左转——左侧反转、右侧正转等。
相关编程模块
图形化编程中与直流电机相关的编程模块有“驱动”类的“直流电机驱动”、“多直流电机驱动”、“停止直流电机”、“停止所有直流电机”4个模块,如图 3所示。
“直流电机驱动直流电机驱动””用于驱动单个直流电机。
此模块有2个容器,左容器放置表示直流电机端口号的整型类模块,可放置“机器人端口”、“常量int ”、“
变量int ”等模块。
右容器放置设置直流电机的速度和转向的整型类模块,可放置“常量int ”,“变量int ”等,数值为正时直流电机正转,为负时反转。
“多直流电机驱动
多直流电机驱动””
用于驱动一个或多个直流电机。
此模块没有容器,在其属性面板(如直流电机名称 在编程时便于识别
选择直流电机端口 用于程序驱动
选择“反转电机”时
实际转向与程序设
置相反
图 2 直流电机属性
图 4)中列出机器人上所有的直流电机,选择需要驱动的直流电机,输入其速度和设置转向,未选择的直流电机不会被驱动,保持之前的驱动状态。
“停止直流电机停止直流电机””用于停止一个或多个直流电机。
此模块没有容器,在属性面板中选择需要停止的直流电机,未选择的直流电机保持之前的状态。
“停止所有直流电机停止所有直流电机””用于停止机器人上所有直流电机。
此模块没有容器,也无需设置参数,使用此模块将停止机器人上所有的直流电机。
1.2基本训练任务基本训练任务
本节我们以训练任务为线索,通过完成训练任务,进一步提高自己的构建机器人和程序的设计能力。
通过本节课的学习,你将能够: 利用模板利用模板构建构建构建机器人机器人机器人的基本技巧的基本技巧的基本技巧。
区分飞行与车行结构上不同区分飞行与车行结构上不同,,初步了解伺服电机的使用初步了解伺服电机的使用。
1.2.1训练—前进
一、机器人构建
这么复杂的机器人其实可以通过创建模板,就可以很简单的做出来。
文件名:训练
二、程序编写写好之后,保存退出。
文件名:训练。
,查看效果。
”场景
查看效果。
场景,
三、选择
选择“
“训练
训练--前进
前进”
四:变形
?
变形?
结构改进:更换较轻的轮子
程序改进:
将左右手臂旋转90度
延时500
直流电机启动,开始前行,速度设置改为7
前行4秒
将头部和左右手臂的电机启动,以43的速度
效果如何?看一下!你的机器人飞
起来了么?
思考:如果将伺服电机转动的角度改变一下,会怎样? 巩固与提高巩固与提高::独立完成训练—后退任务的程序设计 小节:通过本节的学习我们学到了什么?
1、_____________________________________________________________
2、_____________________________________________________________
说明
伺服电机(图 9)是一种驱动轴可旋转到指定角度且可保持在此角度的驱动部件,伺服电机不能像直流电机能连续旋转,其旋转角度为-180°~ +179°。
伺服电机可用于控制机械手臂、仿生类机器人(昆虫、动物)、类人机器人或其它完成特定动作的机械结构,通常情况下需要多个伺服电机配合使用。
在驱动伺服电机时,可直接设置其目标角度,或
使用高级模块使其平滑转动。
伺服电机在仿真开始时
总是处于0°的角度。
伺服电机有2种安装点,方形安装点用于安装,
圆形安装点为驱动轴。
驱动伺服电机时,其圆形安装点上安装的部件可转动。
相关编程模块
与伺服电机相关的编程模块有“驱动”类中的“伺服电机驱动”、“多伺服电机驱动”、“多伺服步进驱动”、“多伺服总时间驱动”4个模块,如图 10所示。
“伺服电机驱动”是基本驱动模块,将单个伺服电机从当前角度直接驱动到目标角度。
此模块有2个容器,左容器放置表示伺服电机端口号的模块,可放置“机器人端口”、“常量int ”、“变量int ”等。
右容器放置表示伺服电机角度值的模块,可放置“常量int ”、“变量int ”等。
“多伺服电机驱动”是基本驱动模块,将一个或多个伺服电机从当前角度直接驱动到目标角度。
此模块没有容器,在属性面板中列出了机器人所有的伺服电机,选择需要驱动的伺服电机,并输入其目标角度。
“多伺服步进驱动”是高级驱动模块,将一个或多个伺服电机从当前角度,按照指定的步进角度,以指定的间隔时间驱动到目标角度。
此模块没有容器,在属性面板中设置其驱动参数,“步进量(角度)”设置所有选择的伺服电机每次改变的角度差值,“间隔时间(毫秒)”设置两次步进之间的等待时间,“伺服电机列表”中选择需要驱动的伺服电机,“值”输入
目
图
1 伺服电机
标角度,不选择的伺服电机不被驱动。
此模块为堵塞执行,执行时间约为:执行时间= (最大角度差÷ 步进量)×间隔时间
此模块驱动时,同时驱动所有选择的伺服电机,直到所有伺服电到达目标角度。
角度差较小的伺服电机先达到目标角度,并保持不动,等待角度差较大伺服电机到达目标角度。
“多伺服总时间驱动”是高级驱动模块,将一个或多个伺服电机从当前角度在指定时间内自动匀速驱动到目标角度。
在属性面板中设置其驱动参数,“驱动总时间(毫秒)”设置驱动的总时间,“伺服电机列表”中选择需要驱动的伺服电机,“值”输入目标角度,不选择的伺服电机不被驱动。
此模块会自动计算每次驱动时,每个伺服电机的步进量和间隔时间。
一般情况下,多个不同差值的伺服电机驱动时,差值较大伺服电机旋转较快,差值较小的伺服电机旋转较慢,整体效果为同时到达目标角度。
此模块为堵塞执行,执行时间为“驱动总时间”的设定时间。
当前角度:“当0°。
目标角度:(范围)。
-180°-180°179°时,转到179°
角度差
1.2.2训练—左转
通过本节课的学习,你将能够:
初步掌握指南针及距离探测器的使用。
初步掌握指南针及距离探测器的使用
初步掌握转弯程序的构建
初步掌握转弯程序的构建。
注意::不要忘记给探测器设置端口号
一、机器人构建文件名:左转注意
二、程序编写
当距离探测≥3000时,条件循环成立,
执行循环内程序
左转至90度
直行
思考:为什么要设置这样的判断条件?当从0度右转1度是多少度?
,查看效果
场景,
”场景。
查看效果。
选择“
左转”
“训练
三、选择
训练--左转
汽车差速转弯的模拟
四、汽车差速转弯的模拟
程序改进:
巩固与提高巩固与提高::独立完成训练—右转右转任务的程序设计任务的程序设计 小节:通过本节的学习我们学到了什么?
1、_____________________________________________________________
2、_____________________________________________________________
距离传感器 说明
距离传感器用于检测传感器前方与物体之间的距离,返回值为0~3000的整型数值。
距离传感器最大检测距离为3000,超出其检测范围时返回3000。
距离传感器在工作时会发射一条蓝白相间的射线,指示其检测的方向和检测范围。
射线照射到物体上表示检测到了此物体,射线会被此物体截断。
距离传感器常用于检测机器人某个方向有无物体及物体的距离。
当距离传感器的返回值小于3000时表明此传感器的前方(3000范围内)有物体,具体的数值表示与物体的距离。
相关编程模块
与距离传感器相关的编程模块是“侦测”类中的“距离”模块,此模板获取指定的距离传感器的返回值,其返回值为整形。
模块为容器内模块,不能连接,可放置到赋值、逻辑类的关系表达式、运算类等模块容器内,在属性面板中选择要获取返回值的距离传感器。
障碍传感器
说明
障碍传感器用于判断在指定的检测距离内有无障碍物,检测到障碍时返回1,没检测到障碍时返回0。
障碍传感器默认的检测距离为500,最大检测距离为500,最小检测距离为1。
障碍传感器在工作时会发射一条蓝白相间的射线,指示其检测的方向和距离,射线照射到物体上表示检测到了此物体,射线会被此物体截断。
障碍传感器常用于检测特定的范围内有无物体,并不关心与物体的具体距离。
如迷宫灭火项目中常使用障碍传感器用于走迷宫。
相关编程模块
与障碍传感器相关的编程模块有“侦测”类中的“障碍”、“驱动”类中的“传感器设置”和“简便传感器设置”。
“障碍”模块用于获取返回值,“传感器设置”和“简便传感器设置”用于设置障碍传感器的检测距离。
“障碍”模块用于获取指定的障碍传感器的返回值,其返回值为整型。
模块为容器内模块,不能连接,可放置到赋值、逻辑类的关系表达式,运算类等模块容器内,在属性面板中选择要获取返回值的距离传感器。
“传感器设置”模块用于设置障碍传感器的检测距离。
此模块有2个容器,左容器放置需要设置的障碍传感器的端口号,可放置“机器人端口”、“常量int”、“变量int”等。
右容器放置设置的检测距离,可放置“常量int”、“变量int”等。
“简便传感器设置”模块用于设置障碍传感器的检测距离。
此模块在属性面板中选择要设置的障碍传感器,在右容器中放置要设置的检测距离的模块,可放置“常量int”、“变量int”等。
障碍传感器的检测距离有效范围为1~500,不在此范围时自动设为500。
灰度传感器
说明
灰度传感器将检测到的各种颜色转换成灰度值,使用0~255的数值表示,其检测距离固定为5。
转换方式依照计算机图像学公式进行转换,纯白色的灰度值为255,纯黑色的灰度值为0。
灰度传感器常用于检测颜色的区别,如轨迹类任务用于区分黑色轨迹线和灰白色地面。
为了提高机器人仿真效率,通常只有与任务相关的指定物体的颜色可以被灰度传感器检测到,如轨迹、跑道、迷宫场地、颜色标记等。
而大的地形、草地、山、建筑、家具等物体,在灰度检测到时总是返回0。
相关编程模块
与灰度传感器相关的编程模块有“侦测”类中的“灰度”模块,此模块获取灰度传感器的返回值,其返回值为整型。
模块为容器内模块,不能连接,可放置到赋值、逻辑类的关系表达式、运算类等模块容器内,在属性面板中选择要获取返回值的灰度传感器。
光线传感器
说明
光线传感器用于检测其前方的光线强度。
理想条件下,光线传感器在0距离检测1坎
德拉发光强度的光源时返回值为1000,即在0距离、0角度检测1支蜡烛时,其返回值为1000。
光线传感器距离光源越近返回值越大,反之越小;与光源的夹角越小返回值越大,反之越小。
光线传感器通常用于检测迷宫灭火中的蜡烛、足球比赛中的发光足球等。
光线传感器与1坎德拉发光强度的光源在0度夹角的情况时,返回值与光源距离的关系如图28所示。
图3 光线传感器检测曲线
光线传感器在安装时,应与要检测到的光源的中心保持在同一水平线,其前方不要有遮挡物,为扩大检测的范围,可以在不同的方向安装多个光线传感器。
相关编程模块
与光线传感器相关的编程模块有“侦测”类中的“光线”模块,此模块获取光线传感器返回值,其返回值为整型。
模块为容器内模块,不能连接,可放置到赋值、逻辑类的关系表达式、运算类等模块容器内,在属性面板中选择要获取返回值的光线传感器。
接触传感器
说明
接触传感器用于检测其前方是否与其它物体接触,当其前方接触到其它物体时,返回1,没有接触到其它物体时返回0。
接触传感器常用于检测机器人某个方位是否接触到其它物体,一般安装到机器人最外缘的位置,使之能最先接触到其它物体。
相关编程模块
与接触传感器相关的编程模块是“侦测”类中的“接
触”模块,此模块获取接触传感器返回值,其返回值为整
型。
模块为容器内模块,不能连接,可放置到赋值、逻辑
类的关系表达式、运算类等模块内,在属性面板中选择要
获取返回值的距离传感器。
指南针传感器
说明
指南针传感器用于获取方向,返回其前方(指南针上标有“N”(北方)的方向)与场景的正北(+Z轴)方向的夹角,返回值为0~359度。
指南针传感器常用于使机器人转到某个方向,或使机器人沿某个方向行进。
使用指南针传感器时需要水平安装,且指针面朝上,否则可能无法正常工作。
相关编程模块
与指南针传感器相关的编程模块有“侦测”类中的“指南针”模块,此模块获取指南针传感器的返回值,其返回值为整型。
模块为容器内模块,不能连接,可放置到赋值、逻辑类的关系表达式、运算类等模块容器内,在属性面板中选择要获取返回值的指南针传感器。
海拔高度计
说明
海拔高度计返回传感器相对海平面的垂直距离,返回值为整型。
萝卜圈仿真场景的海平面是Y轴坐标为0的XZ平面,海拔高度计的位置高于海平面时返回正值,低于海平面时返回负值。
海拔高度计常用于检测机器人的行进过程中的高度变化。
相关编程模块
与海拔高度计相关的编程模块有“侦测”类中的“海拔”模块,此模块获取海拔高度计的返回值,其返回值为整型。
模块为容器内模块,不能连接,可放置到赋值、逻辑类的关系表达式、运算类等模块容器内,在属性面板中选择要获取返回值的海拔高度计。
延时模块
说明
“延时”模块是编程模块,此模块是堵塞执行,程序等待指定的时间后再执行下面的模块。
使用此模块可使机器人保持当前状态一定时间,如停止1秒,保持前进2秒,转弯0.5秒等。
计时
说明
计时是编程模块,常用于控制某段程序或子程序执行指定的时间,或计算某段程序执行的时间。
有“驱动”类中的“开始计时”和“获取计时”2个模块。
“开始计时”模块设置计时开始并将计时时间清0,下次获取的计时时间从当前时刻开始。
在使用“计时”之前必须至少使用一个“开始计时”,否则“计时”模块的返回值将不确定。
“计时”模块用于获取从上次开始计时到当前经过的时间,单位为毫秒。
计时类模块与“延时”的区别为:延时模块在执行时无法执行其它程序模块,必须等待其执行完毕。
而计时类模块可看作是系统自动更新的时间“变量”,程序在需要时获取这个“变量”的值或清空其值。
因此,在使用计时类模块时,可以同时执行其它模块、子程序等。
1.1.3 3 3 体验跑道竞速体验跑道竞速体验跑道竞速
一、机器人构建 文件名:走轨迹
二、程序设计程序设计 文件名:走轨迹
如果左侧灰度<100,则左转
如果右侧灰度<100,则右转
如果都没有则直行
三、选择选择““训练训练--走轨迹走轨迹””场景场景,,查看效果查看效果。
四、体验跑道竞速体验跑道竞速
结构改进:
思考:换用较重的控制器为什么可以以更快的速度行进?
注:前面的蓝色块前面的蓝色块,,可以有个小角度的抬头可以有个小角度的抬头,,2度角就可以度角就可以。
换用较轻的直流电机目的是减少整个车身的重量少整个车身的重量,,该场景限制车身重量该场景限制车身重量<<1500 1500 。
程序改进:
注:整个程序基本不变整个程序基本不变,,注意将原来左转的改为右转注意将原来左转的改为右转,,灰度灰度<<180即可即可。
巩固提高巩固提高::继续改进结构继续改进结构,,提高成绩提高成绩。
小节:通过本节的学习我们学到了什么?
1、_____________________________________________________________
2、_____________________________________________________________
*1.4 *1.4 金字塔之旅金字塔之旅金字塔之旅
本节为综合技能实践课本节为综合技能实践课。
利用萝卜圈的网络pk 功能功能,,4人一组人一组,,组织学生比赛组织学生比赛。
本节课设置的目的是通过竞赛的形式置的目的是通过竞赛的形式,,提高学生的综合技能的掌握提高学生的综合技能的掌握。
学生在想更快学生在想更快、、更稳的过程中体验体验、、提高提高。
第二章第二章 迷宫灭火迷宫灭火——————程序设计的提高程序设计的提高程序设计的提高
在这一章的学习中,我们会通过三种模式的迷宫任务,使我们对传感器和程序设计有一个进一步的认识和提高。
我们在这一章更关注的是程序设计的合理性和技巧,通过的学习使同学们能够自己自己设计判断程序,使我们的机器人带有一定的智慧! 2.1迷宫灭火迷宫灭火
一、左手法则:让机器人沿墙壁的左侧行驶,那么机器人一定可以走完全部靠墙的房间。
同理,若让机器人沿右侧行驶,也一定可以走完,称为右手法则。
名称 前中控制(右转控
制) 左前控制(差速右转
控制)
左后控制(直行控
制)
左转控制
作
用
当前方有障碍物时,使车身右转
当左前有障碍时,使车身右差速行驶,离开墙壁一些距离。
当左后有障碍时,使车身直行 当所有障碍检测为0时,使车身左转
示意图
电机设置
判断条件
障碍中
障碍左前
障碍左后
前三者都为0
二、构建机器人构建机器人
注意3个光线传感器
及3个障碍传感器的
位置,及直流电机的位
置。
三、程序编写 下图为程序主体部分
为3个障碍传感器赋值,依次为左后、左前、前中
用三个光线传感器的“或”判断,确定车身所处位置为:前方有光源
If判断的两个分支:若不成立则继续用“迷宫”子程序探
索;若成立则执行灭火程序。
在“灭火”子程序前的电机
速度为8的前行200毫秒延时的模块,可以理解为“迷宫”
和“灭火”两个子程序之间的缓冲或者衔接。
下图为迷宫子程序的VPL程序图,相关电机
设置参照左手法则的图表设置
注意::
障碍判断依次为:中、左前、左后。
注意
判断条件同时满足两个或两个以上时,,前面
判断条件同时满足两个或两个以上时
的判断优先。
的判断优先
下图为灭火子程序的VPL 程序图
思考思考::若下图此判断条件成立说明机器人在什么位置若下图此判断条件成立说明机器人在什么位置??
思考思考::若下图左侧光线传感器若下图左侧光线传感器--右侧光线传感器右侧光线传感器>>20说明机器人车身与蜡烛的位置关系如何?以蜡烛为基准以蜡烛为基准,,偏向那边偏向那边??
若条件成立时的差速转弯电机设置。