宜昌老张

键盘遥控NXT机器人的LabVIEW编程详解

0
阅读(3161)

键盘遥控乐高NXT机器人:


图1 基于LabVIEW的键盘遥控NXT机器人示意图
视频请观看:

 

 程序下载:15643864652265.rar

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


图2 键盘数据采集前面板

图3 键盘数据采集框图程序
   上图键盘数据采集框图程序中,从左到右有四个与键盘数据采集相关的VI,最左边的是“Query Input Devices”VI,可以产生“按键信息”簇,显示在前面板上,看到图2中键盘中的按键有128个了吗?接着是“Intialize Keyboard”VI,用于初始化键盘。然后进入一个While循环结构,我用红色圈标注的“Acquire Input Data”VI是关键的VI,这个VI可以生成同时被按下按键组成的字符串数组,然后可以用“索引数组”VI,把数组中的各元素提取出来。现在我做个试验,我先按下键盘上的“PgDn”按键,别松开,再按下“PgUp”按键,结果在前面板上显示的“PgDn”按键的字符串是“NEXT”,“PgUp”按键的字符串是“PRIOR (PG UP)”, 看图2哦,“索引数组”VI索引出来的第0个元素是“PgDn”按键的字符串“NEXT”。由于我这次的文章,键盘遥控NXT机器人,在同一时刻只按下一个按键,所以我只感兴趣按键字符串数组的第0个元素是什么?通过第0个元素的字符串信息让计算机知道我这时按下了什么按键,然后根据这个按键的字符串,LabVIEW程序决定如何遥控NXT机器人身上的电机,做出相应的动作。最后一个与键盘数据采集相关的VI是“Close Input Devices”VI,当程序执行完,记住关闭输入设备资源。
    上面介绍的四个VI,如何找到?在图3框图程序界面的空白处右击鼠标,出现函数库面板,再点击“互连接口”,出现“互连接口”子库,再点击“输入设备控制”,出现子子库,在这个“输入设备控制”子子库面板里就可以找到你要的VI了!见下图。

图4输入设备控制VI查找方法
    这篇文章,键盘遥控NXT机器人,用到了8个按键,下图显示了8个按键对应的字符串。

图5 键盘按键与其对应按键字符串关系图
   “UP”、“LEFT”、、“RIGHT” “DOWN”四个按键,控制NXT机械手车的前、后、左、右行驶,“NEXT”按键遥控机械手抓取球形物体,“PRIOR (PG UP)”按键遥控机械手松开物体,“HOME”按键选择小车驱动电机功率为40,“END”按键选择电机功率为20,功率40可以让机械手车快速行驶到物体附近,然后把功率切换成20,小车速度变慢,速度慢点可以使机械手精确定位到球形物体,以便抓取物体。
    实现遥控机械手车的LabVIEW程序如下:

图6 键盘遥控NXT机械手车的LabVIEW程序
     上图LabVIEW程序中用到了两种类型的NXT电机VI,分别是双电机VI,即“Steering On”VI,和单电机VI,即“PloyMotor”VI,如下图:

图7 双电机“Steering On”VI,和单电机“PloyMotor”VI
    双电机“Steering On”VI控制B、C NXT电机,这两个电机是连在NXT控制器的B、C电机端口的,用于驱动小车行驶,它的“Power”端子的功率值控制小车行驶的快慢,“Steering”端子的值决定小车是否转向,转向角度多大。单电机“PloyMotor”VI只关联A电机,A电机控制机械手抓取或松开物体。
    图6中有四个条件结构,这些条件结构的条件选项都是字符串形式,当按键按下,由程序中“索引数组”VI,索引出来的字符串与某个条件选项的字符串一致,则就会执行这个选项的条件分支中的运算。
    如果按键字符串是“UP”、“LEFT”、、“RIGHT” “DOWN”其中一个,则“绿圈”标注的条件分支会直接把“红圈”标注的条件结构里由“HOME”或“END”按键对应的功率值“40”或“20”,送到“Steering On”VI的“Power”端子,只不过“DOWN”条件分支中的运算是把功率值取反后再送到“Power”端子,这样小车可以倒退,如下图。

图8 “DOWN”按键条件分支
    如果“RIGHT”按键按下,“蓝圈”标注的条件结构分支把60送到B、C电机“Steering On”VI的“Steering”端子,这样小车右转,如果“LEFT”按键按下,则执行这个条件结构的另个分支,把-60送到“Steering”端子,这样小车左转,若按下的是其它按键,“蓝圈”标注的条件结构的“默认”分支,则把0送到“Steering”端子,小车直行。
    “黄圈”标注的条件结构完成的任务是,按下“NEXT”按键,则50送到A电机“PloyMotor”VI的“Power”端子,机械手抓取物体,按下“PRIOR (PG UP)”按键,则-50送到“Power”端子,松开物体。
    四个条件结构外面有一个While结构,目的是反复执行下列任务:1、查询按键是否按下,按下的按键值字符串是何值?2、根据按键值,利用条件结构,判断应该执行哪个分支的运算,给B、C电机“Steering On”VI和A电机“PloyMotor”VI的端子设置相应参数。3、遥控驱动与NXT控制器相连的A、B、C三个伺服电机,让机械手车在键盘按键控制下,完成小车行驶,机械手定位和抓取物体、搬运物体,再松开物体等一连贯动作。
    LabVIEW控制NXT机器人有两种模式,“在线模式”和“离线模式”,我这次的《键盘遥控NXT机器人的LabVIEW编程详解》一文必须采用在线模式模式。在线模式如何应用见:基于Labview软件的个人电脑遥控乐高NXT机器人的方法,http://blog.ednchina.com/zhang0309/1955049/message.aspx