第3章移动机器人基础编程及控制 移动机器人在完成任务和工作时,须具备控制、运动和感知等功能。第2章介绍了移动机器人的组成结构,本章讲解如何通过LabVIEW控制移动机器人,让其具有基本运动和感知的功能。 通过本章的学习,将理解KNIGHTN移动机器人基础运动原理,机械臂、抓手结构和常用传感器控制原理,掌握KNIGHTN移动机器人控制工具包的使用方法。 3.1KNIGHTN工具包的使用 3.1.1学习目标 (1) 理解和掌握KNIGHTN移动机器人工具包的控制使用方法。 (2) 学会结合任务使用工具包控制机器人完成指定任务。 3.1.2学习任务 (1) 学习使用功能类机器人控制模块。 (2) 学习使用矫正类机器人控制模块。 (3) 学习使用运动控制类机器人控制模块。 (4) 使用工具包控制机器人完成指定任务及功能。 3.1.3知识链接 本节知识清单如表31所示。 表31知识清单 LabVIEW编程基础KNIGHTN工具包所有功能模块展示 功能类模块讲解矫正类模块讲解运动控制类模块讲解 3.1.4知识点讲解 1. 工具包介绍 工具包资料如图31和表32所示。 图31工具包文件夹 表32工具包中内容介绍 名称作用 documentation存放MyRIO说明链接 FPGA Bitfiles存放比特位文件 home存放自己制作的VI程序 joystick存放手动程序 RT sub存放控制功能模块 SNCNFG存放序列号程序 Sub VIs存放底层VI Task存放完成搬运任务子VI Test存放测试功能子VI KNIGHTN工具包.alaiases别名文件 KNIGHTN工具包.lvlps本地项目设置 KNIGHTN工具包.lvproj工具包项目 Main.vi工具包基础程序 未知间断.vi完成未知订单间歇任务程序 未知任务.vi完成未知订单连续任务程序 已知间断.vi完成已知订单间歇任务程序 已知任务.vi完成已知订单连续任务程序 2. 测试程序VI介绍 测试程序VI如图32和表33所示。 图32程序编写 表33KNIGHTN所有功能模块 VI名称图标功能 延时 延时等待 视觉 用于对图像进行扫码、识别球色、判断是否抓取球 整体初始化 初始化设备硬件与检查序列号 开始按钮 用于启动开始任务 指示灯 可指示程序是否执行 关闭程序 对硬件进行关闭清空处理 90°矫正 机器人姿态调整 续表 VI名称图标功能 前矫正 对前方物体进行测距避障 右矫正 对右方物体进行测距避障 QTI循线 识别地面上的黑胶带 对后矫正 对后方物体进行测距避障 坐标 对机器人进行移动路径规划 OMS上复位 对升降机构进行编码清零 放球 放置机器人套筒中的球 抓球舵机控制 抓取球进入套筒 伸缩臂位置环 控制升降结构到达指定位置 摄像舵机控制 控制摄像头舵机抬起角度 伸缩臂 控制伸缩臂到达指定位置 3.1.5过程讲解 1. 功能类程序模块讲解 功能类程序模块如图33所示。 图33功能类程序模块 (1) 延时。在程序中遇到需要延迟执行的动作或模块时使用,延时时间单位为毫秒。 (2) 视觉。视觉用于识别和图像处理,内置有条码识别功能、球色识别功能,还可以识别机器人抓取球的个数,可以通过camera端口进行选择功能,通过RGB端口设置要识别的颜色,引用句柄输出是用来查看摄像头图像的使用情况,需要在前面板添加一个显示控件。 (3) 整体初始化。整体初始化是将机器人电机编码器、红外传感器、超声波传感器、陀螺仪传感器、QTI传感器等端口进行打开,检查序列号是否正确,与硬件是否连接稳固,是否有松脱。在编程开始一定要放置这个功能模块。 (4) 开始按钮。开始按钮可用于确定程序开始执行或确认机器人进行下一步动作的一个硬件与机器人程序的交互按钮。 (5) 指示灯。指示灯用于提醒操作者机器人正在执行程序。 (6) 关闭程序。在程序执行结束后,关闭机器人电机编码器、红外传感器、超声波传感器、陀螺仪传感器、QTI传感器等端口。在编程末尾一定要带有该功能模块,否则MyRIO中的程序无法清除结束。 2. 矫正类程序模块讲解 矫正类程序模块如图34所示。 图34矫正类程序模块 (1) 90°矫正。此矫正功能用于机器人在角落进行姿态矫正确定机器人当前位置,保证机器人在场地中当前的姿态位置是正确的,有利于机器人准确地移动到目标点。setting端口用于设置声波与后墙的矫正距离、红外与右侧墙的矫正距离,红外在矫正距离时墙体不可是透明的; time用于设置矫正的时长,当矫正时间超过time设置的时间时,将自动跳出矫正功能,时间以毫秒为单位; error limit用于设置矫正的许可误差范围。 (2) 前矫正。机器人通过前红外对前方墙体进行测距矫正。IRDistance用于设置矫正距离,前方墙体不可是透明的; time用于设置矫正的时长,当矫正时间超过time设置的时间时,将自动跳出矫正功能,时间以毫秒为单位; error limit用于设置矫正的许可误差范围。 (3) 右矫正。机器人通过前红外对右方墙体进行测距矫正。IRDistance用于设置矫正距离,前方墙体不可是透明的; time用于设置矫正的时长,当矫正时间超过time设置的时间将自动跳出矫正功能,时间以毫秒为单位; error limit用于设置矫正的许可误差范围。 (4) QTI循线。用于机器人识别地上的黑胶带。四路QTI传感器可以识别颜色的深浅,从而反馈回不同的数值,用于进行判断; num用于设置识别使用的端口,四路端口被分别标记为0、1、2、3号,在数组中填入对应端口号即可调用; Threshold用于设置黑色的深浅数值,当识别数值大于设置数值时,机器人就会判定为黑色; velocity用于设置循线方向与速度,向右循线为负数,向左循线为正数,循线速度建议在10左右即可。 (5) 对后矫正。对后矫正是让机器人与后方墙体保持距离,并平行于墙体或按角度倾斜。PINGDistance用于设置声波矫正距离; offset用于设置对后矫正的倾斜角度; time用于设置矫正的时长,当矫正时间超过time设置的时间时,将自动跳出矫正功能,时间以毫秒为单位。 3. 运动控制类程序模块讲解 运动控制类程序模块如图35所示。 图35运动控制类程序模块 (1) 坐标。坐标用于机器人路径规划及移动。coordinate用于输入所要走的坐标,数组横排元素分别为X、Y和旋转角度,如图35所示。坐标功能模块执行的是连续坐标,当执行功能模块时,当前位置为原点,然后前进10cm,到达后向右平移20cm,到达后沿逆时针方向旋转90°结束。因为执行时间是连贯的,所以过程中可能不会精确到点就执行下一个坐标了,解决方法就是调整跳转范围使其精确到点,在switching condition端口数组中将30改为5,就可以清楚地看到机器人从一个目标点到下一个目标点了。 (2) OMS上复位。上复位用于帮助机器人消除升降机构编码误差。velocity端口用于设置升降机构复位速度,一般保持默认即可。 (3) 放球。放球功能模块可以控制放球的个数。套筒中的绳子分为两层,可实现选择性放两颗球或三颗球。最下层绳子通过绳子舵机控制,上层绳子通过摄像舵机控制,可在放松或拉紧端口输入摄像舵机放松绳子角度和拉紧绳子角度参数; Num端口输入要放置球的个数; milliseconds to wait端口用于设置放球时出口打开的时长。 (4) 抓球舵机控制。机器人抓球时将控制舵机绳子拉紧,堵住出口不让球漏出,从而实现抓球的动作。Duty Cycle为控制舵机正/反转数值参数输入,该功能控制的舵机为连续舵机,只有正转和反转的机械动作。 (5) 机械臂位置环。升降机构通过distance端口输入固定的编码数,从而实现升降到指定高度的功能。 (6) 摄像舵机控制。摄像舵机为180°的角度舵机。通过duty cycle端口给定数值参数,使其到达固定角度从而实现摄像头可以控制角度进行扫码、识别球色、判断球数、拉紧或放松绳子的动作。 (7) 伸缩臂。控制伸缩臂的舵机为360°的角度舵机。通过duty cycle端口给定数值参数,使其到达固定的角度从而实现伸缩臂的伸缩动作和固定位置。 3.1.6知识拓展 (1) 可以通过test servo程序调试摄像舵机角度和伸缩舵机的长度位置,如图36所示。 图36舵机调试程序位置 通过滑动条可以控制舵机运动。当调整舵机到达指定位置时,可以记录下当前舵机的参数,方便后续使用。这里可以用抓放滑动条测试绳子舵机,用摄像头滑动条控制摄像舵机角度,用伸缩滑动条控制伸缩舵机,从而控制伸缩臂长度,旁边有一个显示器用来显示摄像头画面,如图37所示。 图37test servo程序前面板 (2) 尝试通过工具包的坐标,完成固定距离和角度的前进、后退、旋转动作。 3.2测距传感器的应用 3.2.1学习目标 (1) 理解超声波测距传感器数据采集原理。 (2) 理解红外测距传感器数据采集原理。 (3) 掌握测距传感器的数据处理方法。 3.2.2学习任务 (1) 读取并处理超声波测距传感器采集的数据,得到距离值。 (2) 读取并处理红外测距传感器采集的数据,得到距离值。 3.2.3知识链接 本节知识清单如表34所示。 表34知识清单 LabVIEW编程基础KNIGHTN工具包超声波测距传感器数据采集 红外测距传感器数据采集MyRIO模拟量采集均值滤波 3.2.4知识点讲解 1. 超声波测距传感器数据采集 超声波测距传感器是将超声波信号转换成其他能量信号(通常是电信号)的传感器。 超声波测距是借助超声脉冲回波渡越时间法来实现的。设超声波脉冲由传感器发出到接收所经历的时间为T,超声波在空气中的传播速度为V,则从传感器到目标物体的距离D可用下式求出: D=V·T/2。 2. 红外测距传感器数据采集 红外测距传感器利用红外信号遇到障碍物距离不同其反射强度也不同的原理,进行障碍物远近的检测。红外测距传感器具有一对红外信号发射与接收二极管,发射管发射特定频率的红外信号,接收管接收这种频率的红外信号。当红外的检测方向遇到障碍物时,红外信号反射回来被接收管接收,根据接收到的信号强度检测障碍物的距离。 KNIGHTN使用的红外测距传感器接收的数据为电压值,图38所示为红外测距传感器电压值与距离值的对应图。 图38电压与距离对应图 3. 均值滤波 红外测距传感器对外部光线较敏感,导致有时红外信号出现突变(如噪声信号),因此需要使用均值滤波对数据进行处理。 均值滤波即使用采样范围内数据的平均值取代采样范围内的每一个值。 LabVIEW内的均值滤波如表35所示。 表35新函数介绍 名称图标功能 均值(逐点)计算采样长度指定的输入数据点的均值 操作过程: Signal Processing→逐点→概率与统计(逐点)→均值(逐点)。 图39红外传感器与超声波传感器的应用 3.2.5过程讲解 如图39所示,矫正类功能模块大部分都采用红外传感器和超声波传感器。 底层数据采集及处理有以下两种方式。 (1) 红外传感器与超声波传感器获取数据VI位置,如图310所示。 图310红外传感器与超声波传感器获取数据VI位置 (2) 红外传感器与超声波传感器的数据获取及处理如图311和图312所示。 图311使用红外传感器获取数据及处理