宜昌老张

鼠标遥控乐高机器人的LabVIEW编程方法

0
阅读(3666)

 图1 鼠标遥控乐高机器人全景图

    鼠标除了我们用来上网,写本子,打CS游戏,还能做什么?看看下面的视频,哈哈,鼠标还能这样用!


图2  6D游戏鼠标

    要用鼠标遥控乐高NXT机器人,首先需把鼠标的按键和滚轮信息读取到PC机的LabVIEW软件中。我制作了一个鼠标数据采集程序,下图两图分别是这个程序的前面板和框图程序。

 


图3鼠标数据采集前面板


 

图4 鼠标数据采集框图程序

鼠标数据采集程序请下载:188874934159.rar

    鼠标数据采集框图程序中,从左到右有四个与鼠标数据采集相关的VI,最左边的是“Query Input Devices”VI,可以产生“鼠标信息”簇,显示在前面板上,看到图2中鼠标中的按键有5个了吗?有3个轴信息,鼠标下面的光电感应包含了“水平”和“垂直”轴坐标量,这两个轴,这次实验没有用上,用到的是另外一个轴信息,就是“滚轮”轴坐标数据。用手指向前轮动鼠标上滚轮,滚轮数据以120为单位递增,如果您轻轻轮动滚轮,那滚轮轴坐标为120,再大幅度地轮动滚轮,那滚轮轴坐标为120可能是240或者360了。那么如果您轻轻反向轮动滚轮,则值为-120。看看图3,滚轮坐标值为多少?

    接着是“Intialize Mouse”VI,用于初始化鼠标。然后进入一个While循环结构,我用红色圈标注的“Acquire Input Data”VI是关键的VI,这个VI可以生成“按键信息”簇和“轴信息”簇,通过用“按名称解除捆绑”VI,把“按键信息”簇中的各按键数据提取出来。现在我做个试验,我按下6D游戏鼠标的后退按键(后退按键见图2所示),结果在图3前面板上显示的“后退”按键的值为“true”。如果我按下鼠标的“滚轮”键,前面板的哪个“灯”亮。看来鼠标滚轮有两个功能,既可以当按键用,又可以当轴坐标用,这次实验,我充分利用了鼠标滚轮的这两个功能。

    最后一个与鼠标数据采集相关的VI是“Close Input Devices”VI,当程序执行完,记住关闭输入设备资源。

    上面介绍的四个VI,如何找到?在图4框图程序界面的空白处右击鼠标,出现函数库面板,再点击“互连接口”,出现“互连接口”子库,再点击“输入设备控制”,出现子子库,在这个“输入设备控制”子子库面板里就可以找到你要的VI了!见下图。


 

图5 从函数库里提取与鼠标数据采集相关的VI

    鼠标遥控乐高机械手车的程序,可以分成两个组成部分,一是遥控机械手的程序,二是遥控小车行走的程序。

   我先介绍下图所示的遥控机械手程序


 

图6 鼠标遥控机械手的程序

鼠标遥控机械手的程序请下载:189392385108.rar

      把“Acquire Input Data”VI采集的数据,用“按名称解除捆绑”VI把“轴信息”簇中的各轴坐标数据提取出来。上图“红圈”标注的是滚轮轴坐标Scrolling,滚轮往前轮动,滚轮Scrolling数据会产生大于等于120的数据,所以如果Scrolling的值大于等于120,说明您的手指向前滚动了鼠标滚轮,于是执行图6中上面那个条件结构的“真”分支的程序,程序完成的任务是:机械手在A电机的带动下抓起物体并抬起,直到机械手上的挡块压下触碰传感器,A电机停,机械手抬起到极限高度。

       如果您再向后滚动鼠标滚轮,滚轮Scrolling数据会产生小于等于-120的数据,执行图6中下面那个条件结构的“真”分支的程序,A电机反转,转动-360度角度后,电机停下来,机械手放下,把物体松开。

      为什么在条件结构中要设置“标志”位,因为机械手放下,把物体松开,机械手张开到极限位置,如果此时您再向后滚动鼠标滚轮,A电机里的编码器会再检测电机是否又转动了-360度角度,事实上,机械手张开到极限位置,A电机无法转动,程序一直在图6中“篮圈”标注的VI处等待,编码器永远检测不到电机又转动了-360度,程序死机了!所以我要设置一个“标志”,让您向后滚动滚轮执行一次松开机械手的程序后,再向后滚动滚轮,不会执行松开机械手的程序,只能向前轮动滚轮,把“标志”设置为“true”,才能再次向后滚动滚轮执行松开机械手的程序。

    介绍了遥控机械手的程序,再介绍遥控小车行驶的程序。


 

图7 鼠标遥控小车的程序

鼠标遥控小车的程序请下载:189988319131.rar

    把“Acquire Input Data”VI采集的数据,用“红圈”标注的“按名称解除捆绑”VI把“按键信息”簇中的各按键数据提取出来。“button 1”表示鼠标“左按键”是否按下,按下为“true”,松开为“false”。 “button 2”表示“右按键”, “button3”表示 “滚轮按键”, “button 4”表示“后退按键”, “后退按键”见图2。

   用“红圈”标注的“按名称解除捆绑”VI后面跟着的是三重条件结构,完成的任务是:当同时按下鼠标的“左”、“右”按键,小车前进,注意图7那个三重条件结构展示出来的就是同时按下鼠标的“左”、“右”按键,执行的程序。当按下鼠标的“左”按键,小车左转,当按下鼠标的“右”按键,小车右转,当按下“滚轮”按键,小车后退。

    “button4后退按键”有啥用,我设置了两档速度,按下“button4”按键,同时滚动滚轮,可以把“速度 切换”变量分别设为60或20,“速度切换”变量可直接送到B、C电机模块的功率端子,这样可以使小车的速度变快或变慢。为啥要慢,因为小车行驶得慢,才能把机械手精确定位到物体,以便成功抓取物体。如果您不按下“button4”按键,只滚动滚轮,那就不是在切换速度了,是在如6所示控制机械手抓起和放下。

       看视频,机械手车被鼠标遥控着轻松完成各种动作,然而背后的程序却有不少名堂。把遥控机械手的程序和遥控小车的程序结合在一起,就有了下图遥控机械手车的完整程序。


 图8 鼠标遥控机械手车的完整程序

鼠标遥控机械手车的完整程序请下载:190391732157.rar