




已阅读5页,还剩217页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
移动机器人基础培训 第一节微控制器 MCU 基础 1 任务1 让LED按照规定的时序闪亮 2 完成任务的步骤 明确任务分析任务构思解决方案安装硬件编写程序下载 运行 测试总结与讨论 3 一 明确任务 4 LED LightEmittingDiode发光二极管A阳极 比较长的那根管脚 K阴极 比较短的那根管脚 下面的电路可以使LED发光 A K 470欧姆 5伏 470 5V 接地电势零点 5 二 分析任务 本任务要求LED按照如下的时序图闪亮实际上是要求Va按照如下的时序变化 470 Va 6 三 构思解决方案 7 解决方案 MicroControlUnit微控制器Input OutputPort输入输出端口MCU能按顺序执行命令 程序 让I O口按照规定的时序输出电压 470 接地Vss I O口 电源 MCU 开关 8 程序 让指定的I O口输出5V电压延时1秒让I O口输出0V电压延时1秒让I O口输出5V电压延时2秒让I O口输出0V结束 9 四 安装硬件 10 教学底板 BasicStamp2MCU 电池盒 电池 11 Pin1 SOUT在编程或者调试 DEBUG 时传送串口数据 Pin2 SIN在编程时接收串口数据 Pin3 ATN连接到串口DTR 数据终端准备 信号线通知可以给Stamps编程了 Pin4 VSS信号地 0V P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 Pin21 VDD整定的5V输入脚 Pin22 RES复位脚 低电平复位 Pin23 VSS电源地 0V Pin24 VIN直流电源输入 5 5 15V BasicStamp2MCU 12 教学底板 面包板 电机连接插座 5V稳压器 外接电源插口 串行接口 三位开关 复位开关 电源指示灯 I O插座 电源和接地插座 13 安装硬件1 把BasicStamp2插入教学底板上的24脚插座上 注意BS2上的白色标志点与插座上的缺口相对应 白色标志点 缺口 14 安装硬件2 确认教学底板上的电源开关处在关闭位置 0 连接电源 电源开关 15 安装硬件3 安装LED电路 1 LED阴极连接到电源和接地插座上的Vss插孔 2 LED阳极连接到面包板 3 找出一只470 电阻 电阻上的色环为黄 紫 黑 黑 五环 或黄 紫 棕 四环 4 电阻的一端接到与LED阳极相通的面包板插孔 另一端连接到I O插头上的P15插孔 470 P15 Vss 16 普通电阻用四个色环表示其阻值和允许的偏差 第一 二环表示有效数字 第三个环表示倍率 乘数 与前三个环距离较大的第四环表示精度 精密电阻采用五个色环表示 第一 二 三环表示有效数字 第四个环表示倍率 乘数 与前四个环距离较大的第五环表示精度 17 颜色有效数字被率 乘数 黑0100棕1101红2102橙3103黄4104绿5105蓝6106紫7107灰8108白9109 18 安装硬件4 连接计算机 串口线一端连接到教学底板上的串行接口 另一端连接到PC机上的COM口插座 19 安装硬件5 检查 测试硬件连接 1 检查电源连接 打开教学底板上的电源开关 1 电源指示灯应点亮 2 检查与PC机之间的通讯 打开BasicStamp编辑器第一次打开编辑器时 编辑器会询问几个问题 只需点击 按钮使用菜单选项Run Identify或者直接点击 按钮 20 口连接确认框应当如下图所示 如果四个栏目中有任何一个的显示内容与上图不同 都说明连接有问题 需要检查连接 21 五 编写程序 22 编写PBasic程序 让第15号I O口输出5V电压延时1秒让第15号I O口输出0V电压延时1秒让第15号I O口输出5V电压延时2秒让第15号I O口输出0V结束 HIGH15PAUSE1000LOW15PAUSE1000HIGH15PAUSE2000LOW15END 23 把程序键入到编辑器 24 添加必要的说明语句 STAMPBS2 PBASIC2 5 HIGH15PAUSE1000LOW15PAUSE1000HIGH15PAUSE2000LOW15END 25 保存到你自己的文件夹 文件名 Task1 bs2文件夹 26 六 下载运行测试 27 下载运行 28 脱机运行 关闭教学底板的电源断开串口线重新打开教学底板电源 按一下复位键观察LED的亮灭 检查是否完成预定任务 关闭教学底板的电源 任何一个试验完成后 电源开关 复位开关 29 七 总结与讨论 30 完成工程任务的顺序 明确任务分析任务构思解决方案安装硬件编写程序下载 运行 测试总结与讨论 31 讨论 在上述过程中 PC机和BASICStamp软件的作用是什么 A 控制MCU执行程序 按照时序输出5V或0V电压 B 提供一个编写程序的平台 并把程序翻译成MCU能执行的代码下载给MCU 由MCU独立运行 X 编译环境 32 讨论 什么是程序 让第15号I O口输出5V电压延时1秒让第15号I O口输出0V电压延时1秒让第15号I O口输出5V电压延时2秒让第15号I O口输出0V结束 程序是一系列按照一定顺序执行的命令 33 讨论 什么是PBasic程序 用PBasic语言书写的程序 怎么看懂和编写PBasic程序 记住常用语句和语法 使用帮助 STAMPBS2 PBASIC2 5 HIGH15PAUSE1000LOW15PAUSE1000HIGH15PAUSE2000LOW15END 帮助按钮 34 35 Syntax PAUSEDurationFunctionPausetheprogram donothing forthespecifiedDuration Durationisavariable constant expression 0 65535 thatspecifiesthedurationofthepause TheunitoftimeforDurationisonemillisecond 36 ExplanationPAUSEdelaystheexecutionofthenextprograminstructionforthespecifiednumberofmilliseconds Forexample Flash LOW0PAUSE100HIGH0PAUSE100GOTOFlashThiscodecausespin0togolowfor100ms thenhighfor100ms 37 任务2 让LED按照规定的时序循环闪亮 重复10次 38 明确任务分析任务这个任务与任务1类似 可以在任务1的基础上通过修改程序完成 构思解决方案硬件与任务1相同编写程序 39 重复执行下列命令10次 让第15号I O口输出5V电压延时1秒让第15号I O口输出0V电压延时1秒让第15号I O口输出5V电压延时2秒让第15号I O口输出0V延时1秒让第15号I O口输出5V延时3秒让第15号I O口输出0V延时1秒结束 40 设置重复次数为10 当重复次数大于0时重复执行下列命令 让第15号I O口输出5V电压延时1秒让第15号I O口输出0V电压延时1秒让第15号I O口输出5V电压延时2秒让第15号I O口输出0V延时1秒让第15号I O口输出5V延时3秒让第15号I O口输出0V延时1秒重复次数减少1次结束 RepeatNum 10 DOWHILE RepeatNum 0 HIGH15PAUSE1000LOW15PAUSE1000HIGH15PAUSE2000LOW15PAUSE1000HIGH15PAUSE3000LOW15PAUSE1000RepeatNum RepeatNum 1LOOPEND 41 RepeatNum 10 DOWHILE RepeatNum 0 HIGH15PAUSE1000LOW15PAUSE1000HIGH15PAUSE2000LOW15PAUSE1000HIGH15PAUSE3000LOW15PAUSE1000RepeatNum RepeatNum 1LOOPEND 变量Variable 一个变量是程序中一个保存数据的地方 对应MCU中一个存储数据的地方 由编辑器负责安排 每个变量都有自己的名字 我们要在程序的前面声明这个变量 也就是告诉编辑器我们的程序要使用这样一个变量 42 变量的类型 每个变量都在MCU中占用一个存储数据的空间 空间的大小是用bit 比特 或者byte 字节 为单位的 1byte 8bit BasicStamp2内共有32个字节的存储空间 其中只有28个字节可以供我们的程序使用 为了节约存储空间 我们要根据变量的取值范围告诉编译器这个变量需要多大的空间 即声明变量的类型 PBASIC语言把变量分为以下4种基本类型 Bit可以用来存储0或者1占用1bitNib可以用来存储0到15占用4bitByte可以用来存储0到255占用8bitWord可以用来存储0 65535占用16bit声明变量的语法 变量名VAR变量类型RepeatNumVARNib 43 STAMPBS2 PBASIC2 5 RepeatNumVARNibRepeatNum 10DOWHILE RepeatNum 0 HIGH15PAUSE1000LOW15PAUSE1000HIGH15PAUSE2000LOW15PAUSE1000HIGH15PAUSE3000LOW15PAUSE1000RepeatNum RepeatNum 1LOOPEND 键入程序保存到task2 bs2下载运行测试结果 44 改进方案 控制循环的其他方法 STAMPBS2 PBASIC2 5 RepeatNumVARNibFORRepeatNum 1TO10HIGH15PAUSE1000LOW15PAUSE1000HIGH15PAUSE2000LOW15PAUSE1000HIGH15PAUSE3000LOW15PAUSE1000NEXTEND 45 改进方案 添加常数 STAMPBS2 PBASIC2 5 RepeatNumVARNibTimeUnitCON1000FORRepeatNum 1TO10HIGH15PAUSETimeUnitLOW15PAUSETimeUnitHIGH15PAUSE2 TimeUnitLOW15PAUSETimeUnitHIGH15PAUSE3 TimeUnitLOW15PAUSETimeUnitNEXTEND 46 改进方案 添加注释 Task2byFeiYuenong STAMPBS2 PBASIC2 5 RepeatNumVARNib NumberofrepeatiVARNibFORRepeatNum 1TO10FORi 1TO3HIGH15 MakeP15output5VPAUSEi 1000 Waitforisecond s LOW15PAUSE1000NEXTNEXTEND 47 调试方法 通过调试终端了解程序的运行状态DEBUG Task2byFeiYuenong STAMPBS2 PBASIC2 5 TimeUnitCON1000RepeatNumVARNib NumberofrepeatiVARNibFORRepeatNum 1TO10DEBUG RepeatNum DECRepeatNum CRFORi 1TO3HIGH15 MakeP15output5VPAUSEi TimeUnit WaitforiTimeUnit s LOW15PAUSETimeUnitNEXTNEXTEND 48 总结与讨论 DOWHILE LOOP变量常量 FORNEXTDEBUG 49 练习1 让程序在完成第n次重复的时候在调试终端上显示 Repeatncompleted 提示 已经完成第n次重复的时候 50 练习2 让LED按照规定的时序循环闪亮 重复无限次 提示 用DOLOOP 51 下课前将实验设备整理好 关闭计算机断开串口线断开教学底板的电源线机器人套件的各个零部件放入实验箱已经安装好的部分可以不拆开 52 移动机器人基础培训 第二节机器人组装 53 任务3 组装机器人 用装配图记录组装过程 写装配说明书 54 一明确任务 组装机器人记录组装过程 55 二分析任务 观察已组装好的机器人的实物照片了解机器人结构 将组装过程划分成几个步骤用装配说明书记录组装过程 56 57 58 三方案 一 安装机器人底盘二 拆除伺服喉三 安装电机四 安装轮子 电池盒五 安装电路板 按照安装步骤安装 并记录安装过程 59 步骤一 安装机器人底盘 找零件 工具安装记录安装过程 60 61 62 装配说明书 为什么要画这个说明书说明书需要体现哪些信息这些信息如何体现在说明书上一些细节如何处理 63 装配说明书 图形零件列表工具列表安装步骤说明 64 步骤二 拆除伺服喉 找零件 工具安装记录安装过程 65 66 装配说明书 图形零件列表工具列表安装步骤说明 67 68 步骤三 安装电机 69 70 装配说明书 这个图有什么问题 71 72 步骤四 安装轮子 电池盒 73 装配说明书 缺少的内容自己补齐 74 75 76 77 78 79 80 步骤五 安装电路板 81 82 装配说明书 缺少的内容自己补齐 83 84 移动机器人基础培训 第三节电机控制 85 任务4 设计制作一个双轮独立驱动的机器人 具备以下功能 直线前进一个给定的距离直线后退一个给定的距离原地向右转90度原地向左转90度 86 明确任务 双轮独立驱动的机器人结构特点运动方式 87 分析任务 机器人套件提供了必要的机械结构件 电动机和MCU 本任务可以分解为以下2个子任务 1 控制电动机的速度和方向2 调试机器人 88 子任务1控制电动机的速度和方向 89 任务分析 伺服电动机ParallaxServo 90 伺服电动机ParallaxServo的内部结构电动机减速箱驱动器控制器 91 教学底板的右上角 面包板上方 提供了伺服电动机的接口 92 控制信号的作用 1 3ms的控制脉冲序列使电机顺时针全速旋转 转速约为60RPM1 5ms的控制脉冲序列使电机转速为零 可用调零电位器调零1 7ms的控制脉冲序列使电机逆时针全速旋转 转速约为60RPM 1 5ms的控制脉冲序列使电机转速为零 可用调零电位器调零 93 子任务1 控制电机的速度和方向 转化为让MCU输出一串具有给定宽度的脉冲 PULSOUTPin DurationPinisavariable constant expression 0 15 thatspecifiestheI Opintouse Durationisavariable constant expression 0 65535 thatspecifiesthedurationofthepulse TheunitoftimeforDurationis2 s 94 试验验证 目的 验证上述电动机的控制方法试验方法 一 先调零调节参数在750左右 使得电机速度为零二 让接在P12上的电动机连续顺时针全速转动三 让接在P13上的电动机连续逆时针全速转动 95 试验步骤 编写并保存程序DO LOOP把一个电动机连接到教学底板上的伺服电机插座 X5 12或13 注意电机连接线的颜色与插座上标出的颜色一致把教学底板上的电源开关拨到2的位置下载运行程序 观察并记录电机的转动情况改变程序的脉冲时间参数 观察并记录电机的转动情况 96 STAMPBS2 PBASIC2 5 pulseWidthVARWordDEBUG Enterpulsewidth DEBUGINDECpulseWidthDOPULSOUT12 pulseWidthPAUSE20LOOPEND 97 电机调零 调节参数在750左右 使得电机速度为零若脉冲参数在750左右时电机速度不为零 需要用螺丝刀调节电机上的调零旋钮 98 试验验证 试验记录 试验结论 99 实验一测定左右电机的传输曲线 实验目的 测定电机转速与脉冲参数之间的关系实验方法 让电机以不同的脉冲参数运行 测量并记录转过的圈数 计算转速 实验步骤 分别记录左右电机的转动圈数实验总结 用图表说明脉冲参数与电机转速的关系 100 101 常用的绘图软件 ExcelMatlabOriginPowerpoint 102 问题1找不到硬件 USB连线问题 一般应该连接到电脑后面的接口电池的电压不够 更换电池没开电源电源盒里没有电池电路板问题 需更换电路板 103 问题2电机测试程序出错 变量名前后不一致程序中没有pause20语句 会导致电机工作不正常 运行时间短Pulsout语句后面没写逗号 如 pulsout12pulsewidth版本号写错Debugin写错Debug后面没有双引号 半角 104 问题3电机问题 参数750时没有办法调零 需更换电机任何参数下电机都不转 两种可能 一电机的电源线断 换电机 另一种可能为P12或P13端口异常 需要换P14或P15试一试任何参数下 转速基本不变 电机里面的齿轮箱损坏 更换电机 105 子任务2调试机器人 设计制作一个双轮独立驱动的机器人 具备以下功能 直线前进一个给定的距离直线后退一个给定的距离向右转向左转 106 分析任务 加上轮子 电机的转动转换成车子的运动 确定速度与脉冲参数之间的关系控制运行的时间 改变车速左转 右转 转弯半径 107 车头视图 108 D MyDocuments MyD MyDocuments MyPictures DSC 0022 JPGPictures 卫生间 jpg D MyDocuments MyPictures 卫生间 jpg 车尾视图 109 右侧视图 顺 逆 110 车子的运动方向 左轮电极接12 右轮电极接13为了统一 方便 逆 顺 顺 逆 111 车子直行 保证左右轮同速 否则走不直根据左右轮关系 左右轮对应的脉冲关系 左轮脉冲 1500 右轮脉冲 112 实验二测定车子速度 实验目的 测定车子速度与脉冲参数之间的关系实验方法 让电机以不同的参数运行一段时间 测量并记录 计算车子速度 实验步骤 调零编写程序 让左右电机各转动6秒钟分别记录车子前进或后退的距离 填写实验记录实验总结 用图表说明脉冲参数与车子速度的关系 113 电机转动时间 实验方法 让电机运行一段时间6sFORCOUNT 1TO244PULSOUT12 850 1 7msPULSOUT13 650 1 3msPAUSE20 20ms代码执行时间1 6msNEXT 114 STAMPBS2 PBASIC2 5 counterVARWordpulseWidthVARWordpulseWidthCompVARWordDEBUG Enterpulsewidth DEBUGINDECpulseWidthpulseWidthComp 1500 pulseWidthFORcounter 1TO244PULSOUT12 pulseWidthPULSOUT13 pulseWidthCompPAUSE20NEXT 115 116 练习1 让机器人直线前行30cm 确定直线前进的距离与 时间 循环次数之间的关系 在给定脉冲参数和循环次数的条件下 测量直线前进的距离 步骤 编写程序让机器人前行 秒钟 循环次数 根据前面的实验数据理论计算调整脉冲参数 保证直线运动测量并记录运动距离调整循环次数 再次测量记录运动距离扩展 让机器人后退一定的距离 117 如何消除拨动开关带来的干扰 FREQOUT4 1000 3000 循环前面加这个语句 在P4口输出一个3000Hz的方波 持续1000ms 118 STAMPBS2 PBASIC2 5 counterVARWordFREQOUT4 1000 3000FORcounter 1TO244 根据具体需要设置 PULSOUT12 850PULSOUT13 650PAUSE20NEXTEND 119 练习2 实现车子左转右转 目的 控制车子实现左转右转分别实现以下六种转动 1 原地左传2 原地右转3 以左轮为轴顺时针旋转4 以左轮为轴逆时针旋转5 以右轮为轴顺时针旋转6 以右轮为轴逆时针旋转 120 练习3 实现车子匀变速运动 匀变速运动 逐渐增加或减少车子转速两种 匀加速运动 匀减速运动8种 匀加速前进 匀加速后退 匀加速原地左传 匀加速原地右转 匀减速前进 匀减速后退 匀减速原地左传 匀减速原地右转 121 实现匀加速前进运动 STAMPBS2 PBASIC2 5 counterVARWordFREQOUT4 2000 3000FORcounter 1to100PULSOUT12 750 counterPULSOUT13 750 counterPAUSE20NEXTEND 122 练习4 用子程序简化 STAMPBS2 PBASIC2 5 DEBUG Beforesubroutine CRPAUSE1000GOSUBMy SubroutineDEBUG Aftersubroutine CRENDMy Subroutine DEBUG Commandinsubroutine CRPAUSE1000RETURN 123 STAMPBS2 PBASIC2 5 counterVARWordFREQOUT4 2000 3000GOSUBForwardGOSUBLeftGOSUBRightGOSUBBackwardENDForward FORcounter1 64PULSOUT12 850PULSOUT13 650PAUSE20NEXTPAUSE200RETURNLeft FORcounter1 64 PULSOUT12 650PULSOUT13 650PAUSE20NEXTPAUSE200RETURNRight FORcounter1 64PULSOUT12 850PULSOUT13 850PAUSE20NEXTPAUSE200RETURNBackward FORcounter1 64PULSOUT12 650PULSOUT13 850PAUSE20NEXTPAUSE200RETURN 124 第一阶段作业要求 电机实验报告评分标准 测试目的 原理 方法 步骤描述清楚 有条理 测试数据翔实 测试结果表述清楚 机器人装配说明书评分标准 装配关系正确 装配顺序合理 能正确运用文字说明和装配示意图表达装配关系和装配顺序 125 工作记录 时间事件参加人员具体内容或结果时间事件参加人员具体内容或结果 126 定点比赛误差分析 产生误差的原因怎么减少误差导航技术 127 导航技术 机器人在无感觉的情况下行走机器人根据传感器检测到的信息进行导航 触须 红外传感器 光敏电阻等 1 触觉导航 2 红外传感器导航 3 光敏电阻导航 128 一 触觉导航技术 许多自动化机械设备都依赖于各种触觉开关 将在机器人上安装一个称为胡须的触觉开关 将对机器人编程来监视触觉开关的状态 以及决定当它遇到障碍物时如何动作 最终的结果就是通过触觉给机器人自动导航 129 任务1 安装并测试机器人的胡须 称它为胡须 是因为这些缓冲开关看起来象胡须 尽管有些人争论说它更象触角 无论如何 安装好的胡须如图所示 胡须让机器人有能力通过接触来判断周边的环境 很象蚂蚁的触角 或是猫的胡须 元件清单安装胡须搭建电路测试 130 胡须电路及装配 收集胡须硬件 如图所示元件清单 1 须状金属丝2根 2 平头M4 40螺丝钉2个 3 圆形套管2个 4 尼龙垫圈2个 5 3 pin公 公接头个 6 220 电阻2个 四环 红 红 棕 五环 红 红 黑 黑 7 10k 电阻2个 四环 棕 黑 橙 五环 棕 黑 黑 红 131 安装胡须 参考右图 进行下面操作 1拆掉连接教学板与前支架的两颗螺钉2往螺丝钉上依次套上尼龙垫圈 圆形套管3螺钉穿过主板上的圆孔之后 拧进教学板下面的支架中 但不要拧紧4把一根须状金属丝一端钩在一个螺丝钉的尼龙垫圈之上 另一个钩在螺丝钉的尼龙垫圈之下 调整它们的位置使它们横向交叉但又不接触5将螺丝钉拧紧到支架上 安装机器人触觉胡须 132 胡须电路示意图 参考接线图 搭建胡须电路 确定两条胡须比较靠近 但又不接触面包板上的3 pin头 推荐保持3mm的距离 133 测试胡须观察一下胡须电路示意图 每条胡须都是一个机械式 接地常开的单刀单掷开关 胡须接地 Vss 是因为教学板边缘的安装孔 镀有金属 都连接到Vss 金属支架和螺丝钉提供电气连接给触觉胡须 当胡须没有被压下 连接胡须的I O管脚的电压是5V 当胡须被压下时 I O短接到地 所以I O管脚的电压是0V 134 测试胡须输入寄存器IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN14 IN15如果I O脚上的电压为5V 胡须没有压下 则其寄存器存储1 如果电压为0V 胡须被压下 则存储0 可以用调试终端显示这些数值 连接到P5管脚的触须开关状态值1或者0存储在一个名叫IN5的变量中 可以使用指令DEBUGBIN1IN5来查看存储在该变量中的值 BIN1是DEBUG格式符 告诉调试终端显示的是一个二进制值 1或者0 135 TestWhiskers bs2 DisplaywhattheI Opinsconnectedtothewhiskerssense STAMPBS2 Stampdirective PBASIC2 5 PBASICdirective DEBUG WHISKERSTATES CR LeftRight CR DODEBUGCRSRXY 0 3 P5 BIN1IN5 P7 BIN1IN7PAUSE50LOOP 136 脱机测试胡须 脱机测试胡须触觉 由于没有计算机的调试终端 你该怎么办 一种解决的办法是对BASICStamp微控制器编程 让它根据其接收到输入信号发送一个相对应的输出信号 下面利用一对LED显示电路和一段程序 由程序基于胡须触觉的输入打开或者关闭LED 所需元件 1 220 电阻 红 红 棕 2个 2 红色LED2个搭建LED胡须测试电路搭建如图所示的LED电路 对LED胡须测试电路编程 137 138 IF THEN句法 PBASIC语言中有个条件判断指令语句IF THEN 其句法是 IF condition THEN ELSEIF condition ELSE ENDIF句中 的意思是 你可以在此放置一个代码段 由一条或多条指令组成 139 TestWhiskerswithLed bs2 DisplaywhattheI Opinsconnectedtothewhiskerssense STAMPBS2 Stampdirective PBASIC2 5 PBASICdirective DEBUG WHISKERSTATES CR LeftRight CR DODEBUGCRSRXY 0 3 P5 BIN1IN5 P7 BIN1IN7PAUSE50IF IN5 0 THENHIGH10ELSELOW10ENDIFIF IN7 0 THENHIGH1ELSELOW1ENDIFLOOP 140 任务3用胡须实现触觉导航 机器人向前走直到碰到障碍物 此时 机器人用它的一根或者两根胡须碰障碍物 当遇到障碍物胡须被压下 一旦胡须被压下 机器人就探测到了障碍物 然后可以调用基本动作子程序使机器人倒退或者转弯 以避开障碍物重新向前行走 直到遇到另一个障碍物重复上述的过程 下面的例程会基于胡须的输入状态做出选择 然后调用相关子程序使机器人动作 IF IN5 0 AND IN7 0 THENGOSUBBack UpGOSUBTurn LeftELSEIF IN5 0 THENGOSUBBack UpGOSUBTurn RightELSEIF IN7 0 THENGOSUBBack UpGOSUBTurn LeftELSEGOSUBForward PulseENDIF 141 RoamingWithWhiskers bs2 STAMPBS2 PBASIC2 5 pulseCountVARByteFREQOUT4 2000 3000 MainRoutine DOIF IN5 0 AND IN7 0 THENGOSUBBack UpGOSUBTurn LeftELSEIF IN5 0 THENGOSUBBack UpGOSUBTurn RightELSEIF IN7 0 THENGOSUBBack UpGOSUBTurn LeftELSEGOSUBForward PulseENDIFLOOP Subroutines Forward Pulse PULSOUT12 650PULSOUT13 850PAUSE20RETURNTurn Left FORpulseCount 0TO10PULSOUT12 650PULSOUT13 650PAUSE20NEXTRETURNTurn Right FORpulseCount 0TO10PULSOUT12 850PULSOUT13 850PAUSE20NEXTRETURNBack Up FORpulseCount 0TO20PULSOUT12 650PULSOUT13 850PAUSE20NEXTRETURN 142 可以修改IF THEN语句让前面任务中的LED指示灯来指示机器人的动作 通过添加HIGH和LOW命令来控制LED电路 举例说明 IF IN5 0 AND IN7 0 THENHIGH10HIGH1GOSUBBack UpGOSUBTurn LeftELSEIF IN5 0 THENHIGH10GOSUBBack UpGOSUBTurn RightELSEIF IN7 0 THENHIGH1GOSUBBack UpGOSUBTurn LeftELSELOW10LOW1GOSUBForward PulseENDIF 143 机器人迷路时的人工智能决策 你或许已注意到机器人迷失在墙角里的情况 当机器人进入墙角时 左胡须触墙 于是它右转 当小车再向前行走 右胡须触墙 于是左转 然后它又前进又会碰到左墙 再次碰到右墙 等等 这时你只能把动手把它从困境中解救出来 144 编程逃离墙角 胡须交替压下的总次数 重要的一点是程序必须记住每个胡须在上次压下时处于什么状态 并和当前压下的状态对比 如果状态相反 就在总数上加1 如果这个总数超过了程序中预先给定的阀值 那么就该做一个 U 型转弯 并且把胡须交替计数器复位 IF THEN嵌套语句IFcondition1THENCommandsforcondition1IFcondition2THENCommandsforbothcondition2andcondition1ELSECommandsforcondition1butnotcondition2ENDIFELSECommandsfornotcondition1ENDIF 145 STAMPBS2 PBASIC2 5 pulseCountVARBytecounterVARNibold7VARBitold5VARBitFREQOUT4 2000 3000counter 1old7 0old5 1 MainRoutine DOIF IN7IN5 THENIF old7IN7 AND old5IN5 THENcounter counter 1old7 IN7old5 IN5IF counter 4 THENcounter 1GOSUBBack UpGOSUBBack UpGOSUBTurn LeftGOSUBTurn Left ENDIFELSEcounter 1ENDIFENDIFIF IN5 0 AND IN7 0 THENGOSUBBack UpGOSUBTurn LeftELSEIF IN5 0 THENGOSUBBack UpGOSUBTurn RightELSEIF IN7 0 THENGOSUBBack UpGOSUBTurn LeftELSEGOSUBForward PulseENDIFLOOP 146 Subroutines Forward Pulse PULSOUT12 650PULSOUT13 850PAUSE20RETURNTurn Left FORpulseCount 0TO10PULSOUT12 650PULSOUT13 650PAUSE20NEXTRETURNTurn Right FORpulseCount 0TO10PULSOUT12 850PULSOUT13 850PAUSE20NEXTRETURNBack Up FORpulseCount 0TO20PULSOUT12 650PULSOUT13 850PAUSE20NEXTRETURN 147 我们只讨论与探测和逃离墙角相关的程序新特征 三个特别的变量用于探测墙角 半字节变量counter可以存储0 15之间的任一数值 由于探测墙角的目标值设定为4 所以变量的大小应该是合理的 回想一下 一个位形变量只能保存一个二进制数 0或1 下面两个变量 old7和old5 都是位型变量 用它们存储旧的位变量IN7和IN5合适 counterVARNibold7VARBitold5VARBit变量必须经过初始化 给定初试值 为了便于阅读程序 counter设为1 当机器人卡在墙角此值累计到4时 counter复位为1 old7和old5必须赋值以至于看起来象两根胡须的其中一个在程序开始之前被触动了 这些工作之所以必须做 是因为探测墙角的程序总是对比交替触动的部分 或者 IN5 1和IN7 0 或者 IN5 0和IN7 1 同样的 old7和old5的值必须相互不同 counter 1old7 0old5 1 148 如何探测连续和交替碰到墙角 首先要检查的是 是否有任何一个胡须被压下 简单的方法就是询问 是否IN7不同于IN5 在PBASIC语言中 你可以在条件假设语句中应用不等于操作符 如 IF IN7IN5 THEN假如真有胡须被压下 接下来要做的事情就是检查当前状态是否确实与上次不同 换句话说 是old7不等于IN7 old7IN7 和old5不等于IN5 old5IN5 吗 如果是 就在胡须触动计数器上加1 同时记下当前的状态 设置old7等于当前的IN7 old5等于当前的IN5 IF old7IN7 AND old5IN5 THENcounter counter 1old7 IN7old5 IN5如果发现胡须连续四次被交替压下 那么计数值置1 并且进行 U 型拐弯 IF counter 4 THENcounter 1GOSUBBack UpGOSUBTurn LeftGOSUBTurn LeftENDIFENDIF结束IFcounter 4代码段 ELSE语句接着IF old7IN7 AND old5IN5 THEN语句 ELSE语句说明当IF语句不为真时该做什么 换句话说 不是胡须交替压下 于是计数值复位 因为机器人没有陷入墙角 ELSEcounter 1接下来的ENDIF结束条件判断语句IF old7IN7 AND old5IN5 THEN 最后一个ENDIF结束IF IN7IN5 THEN 149 红外传感器导航技术 150 红外线发射器和接受器都很普及汽车钥匙 家庭报警装置 电视遥控器 无线鼠标 PDA传送数据等许多遥控装置价格便宜 151 红外光 IR 探测基础知识 Infrared 使用红外光来照射机器人的路线 然后确定何时有光线从目标反射回来 152 机器人使用红外线两极管LEDs作为前灯 他们发射红外光 红外检测器发出信号来表明它们是否检测到从物体反射回的红外线 红外检测器也有一个电子滤波器 它只允许大约38 5kHz的信号通过 抗干扰 153 任务1 搭建并测试IR发射和探测器对 154 元件清单 1 两个红外检测器 2 两个红外LEDs 3 两个220 电阻 红 红 黑 黑 棕 4 两个1k 电阻 棕 黑 黑 棕 棕 155 电路图 156 157 搭建电路注意事项 尽可能少用线尽可能避免交叉走线导线的颜色搭配布线艺术 美观 清楚 简洁 158 用FREQOUT命令测试红外发射探测器 FREQOUT命令主要是用来合成音频 本任务中 你要用命令FREQOUT8 1 38500向P8发送持续1毫秒的38 5kHz和声 连接P8的红外LED电路将发送和声 如果红外光被小车路径上的物体反射回来 红外检测器将给BASICStamp发送一个信号 让它知道已经检测到反射回的红外光 159 将IR探测器的输出存储到一个变量中 用位变量irDetectLeft存储连接到P9的IR探测器的输出 FREQOUT8 1 38500irDetectLeft IN9当没有信号返回时 探测器的输出状态为高 即1 当它探测到被物体反射的和声时 输出为低 即0 当FREQOUT命令发送和声后 IR探测器的输出处于低状态不到1毫秒 因此当发送完FREQOUT命令后立即将IR探测器的输出存储到变量中是很重要的 这些存储的值会显示在调试终端或被机器人用来导航 160 STAMPBS2 PBASIC2 5 irDetectLeftVARBitDOFREQOUT8 1 38500irDetectLeft IN9DEBUGHOME irDetectLeft BIN1irDetectLeftPAUSE100LOOP注意 自己写出另一对发射接受的程序 161 任务2 在脱机情况下知道是否检测到目标在任务1的基础上搭建发红光LED 162 元件清单 1 红色LEDs 2 220 电阻 红 红 黑 黑 棕 163 164 PBASIC语言中有个条件判断命令语句IF THEN 其句法是 IF condition THEN ELSEIF condition THEN ELSE ENDIF句中 的意思是 你可以在关键词之间放置一个代码段 由一条或多条命令组成 165 STAMPBS2 PBASIC2 5 irDetectLeftVARBitirDetectRightVARBitDOFREQOUT8 1 38500irDetectLeft IN9FREQOUT2 1 38500irDetectRight IN0IF irDetectLeft 0 THENHIGH10ELSELOW10ENDIFIF irDetectRight 0 THENHIGH1ELSELOW1ENDIFPAUSE100LOOP 166 练习1 红外检测范围调整 你可能已经注意到在环境很黑的时候 亮一些的汽车灯可以看到更远一些的物体 更小的电阻使通过LED的电流更多 更多的电流使LED更亮 练习将检测IRLED串联不同电阻值的效果 167 元件清单 本节中需要一些特殊的部件 1 两个470 电阻 黄 紫 黑 黑 棕 2 两个220 电阻 红 红 黑 黑 棕 3 两个2k 电阻 红 黑 黑 棕 棕 4 两个4 7k 电阻 黄 紫 黑 棕 棕 168 检测距离与电阻的关系 169 练习2 红外导航 探测障碍物很重要的一点是在机器人撞到它之前给机器人留有绕开它的空间 如果前方有障碍物 机器人会使用脉冲命令避开 然后探测 如果物体还在 再使用另一个脉冲来避开它 机器人能持续使用电机驱动脉冲和探测 直到它绕开障碍物 然后它会继续发向前行走的脉冲 170 分析任务 正前方有障碍物 向左或向右左边有障碍物 向右右边有障碍物 向左无障碍物 正前方 171 构思方案 前面装两个红外装置 一个前面左恻 一个前面右恻两个传感器都发现障碍物 0 0 障碍物在正前方左传或右转左侧传感器都发现障碍物 0 1 障碍物在左侧右转右侧传感器都发现障碍物 1 0 障碍物在右侧左转两个传感器都没有发现障碍物 1 1 继续前进 172 RoamingWithIR bs2 STAMPBS2 PBASIC2 5 pulseCountVARByteleftDetectVARbitrightDetectVARbitFREQOUT4 2000 3000 MainRoutine DOFREQOUT8 1 38500leftDetect IN9FREQOUT2 1 38500rightDetect IN0IF leftDetect 0 AND leftDetect 0 THENGOSUBTurn LeftELSEIF leftDetect 0 THENGOSUBTurn RightELSEIF rightDetect 0 THENGOSUBTurn LeftELSEGOSUBForward PulseENDIFLOOP Subroutines Forward Pulse PULSOUT12 650PULSOUT13 850PAUSE20RETURNTurn Left FORpulseCount 0TO10PULSOUT12 650PULSOUT13 650PAUSE20NEXTRETURNTurn Right FORpulseCount 0TO10PULSOUT12 850PULSOUT13 850PAUSE20NEXTRETURNBack Up FORpulseCount 0TO20PULSOUT12 650PULSOUT13 850PAUSE20NEXTRETURN 173 练习3 俯视地面的探测器 当机器人IR检测器向下监测到地面的标志物时 机器人做相应的动作 只要IR探测器都能够 看 到地面的标志物 机器人 调整自身位置 继续向前走 左传 右转 停止等动作 174 175 比赛场地 起点 1 2 3 176 评分标准 沿墙走 靠右侧 移动机器人绕场地周 完成整个过程 进入三个房间 回到出点 要求 整个过程不能撞墙 进出每个房间有提示 或指示灯亮 或蜂鸣器叫 回到出发点自动停 可加分 177 提示 传感器如何布局安装 传感器对着墙 传感器和墙的角度通过实验调整 和墙之间的距离通过实验调整行走路线如何设计 避免和墙碰撞 又不能远离开墙走线形状 178 时间安排 按上次的分组 编程 测试下次上课时间 15 00正式比赛 每组2次机会 写比赛工作记录 工作记录暂时不交 所有比赛结束后 提交一份以工作记录为基础的总结报告 179 光敏电阻导航技术 用光敏电阻导航找到房间中点燃的蜡烛 180 任务一 搭建和测试光敏电阻电路任务二 从你的光敏电阻获得更多信息任务三 使光敏电阻感受确定方向的光任务四 确定室内有没有点燃的蜡烛任务五 向光源移动任务六 找到光源 用风扇灭火 181 任务一 搭建和测试光敏电阻电路 光敏电阻 LDRLightDependentResistor 由硫化镉所组成 CdS 光敏电阻的电阻阻值与光的照度成反比 也就是黑暗时形成较大的电阻 明亮时造成较小的电阻 182 元件清单 光敏电阻2个2K 2个五环 红 黑 黑 棕 棕四环 红 黑 红 金3 220 2个五环 红 红 黑 黑 棕四环 红 红 棕 金 183 搭建感光眼 光探测电路原理图 184 光敏探测电路的接线图 185 电路工作原理 如果光特别亮 电阻值R非常小如果是在完全黑暗的环境中 电阻值R接近50K 当R增大时 Vo会减小当R减小时 Vo会增大Vo小于1 4V 寄存器的电压为0Vo大于1 4V 寄存器的电压为1 186 STAMPBS2 PBASIC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 饭店抵押合同5篇
- 建设工程项目施工廉政合同4篇
- 婚前房产协议书范文5篇
- 新解读《GB-T 32612-2016纺织品 2-甲氧基乙醇和2-乙氧基乙醇的测定》
- 螺蛳粉运输合同范本
- 整形诊所合作合同范本
- 租赁水果树合同范本
- 建设合同范本哪里
- 玻璃代理销售 合同范本
- 车辆转换合同范本
- 建设工程项目协同作业方案
- GB/T 45972-2025装配式建筑用混凝土板材生产成套装备技术要求
- 变频及伺服应用技术(郭艳萍 钟立)全套教案课件
- 秋冬季安全知识培训
- 2024新译林版英语八年级上单词汉译英默写表(开学版)
- 美的集团工作流程体系
- 2025年中国冷冻治疗仪市场调查研究报告
- 新学期+心动力+课件-2025-2026学年高二上学期开学第一课主题班会
- (2025年标准)出资收车协议书
- 2025-2026学年外研版(三起)(2024)小学英语四年级上册教学计划及进度表
- 《家具与陈设设计》课件(共十章)
评论
0/150
提交评论