Jul 17, 2008

LabVIEW环境下的人型机器人仿真控制分析报告

一:扫盲篇
1:什么是虚拟仪器:
所谓虚拟仪器,就是用户在通用计算机平台上根据需求来定义和设计仪器的测试功能,由I/O接口设备完成信号采集,测量和调整,并利用PC已有的软件功能实现信号数据的运算,分析和处理;并利用PC显示器得显示功能,模拟传统仪器的功能面板,以多种形式表达(输出)检测结果,从而完成各种测试功能的一种计算机仪器系统。
2:关于LabVIEW软件
LabVIEW是由美国国家仪器公司(National Instruments Corp,简称NI)推出的一款虚拟仪器软件(Virtual Instrument,简称VI)。它是一个具有革命性意义得图形化开发环境,专为不熟悉传统文本编程的测试工程师设计,采用图形化编程方法,又称G语言。它有和传统编程语言有着诸多相似之处,如数据类型,数据流控制结构,程序调试工具以及模块化的编程特点等。
图形化编程是由数据流驱动的,与一般文本编程语言的过程驱动机制有很大的差别;LabVIEW在编写与工程领域设计,测量,控制等相关的程序或系统时,其开发效率高于其他语言。但是由于几乎是完全的图形化,调用的都是被封装好的功能,以至于做一些底层开发时需要依赖传统的文本编辑语言。
LabVIEW提供的图形化编程环境分为两部分,即前面板与程序框图。前面板用于设计UI,程序框图用于设计内部结构。

二:分析篇
首先分析Humanoid RobotX自带的编程控制界面。
该界面就是一个仿真控制界面。左半部为输入控件,主要是调整机器人身上所带电机的转角及转动方向,通过后台的一系列分析把输入控件上的输入值转换为电机的控制参数从而控制转动。右半部为图形化编程界面,通过在BEGIN和END节点间插入POSE来编写机器人的动作。每个POSE为一个动作模块,可以调节所有的电机完成一个动作模块,但其中涉及重心控制等内容暂时未了解。

将目前所学到的关于LabVIEW的知识,看过的实例教程与Humanoid RobotX自带的编程控制界面作比较,结果如下:
首先,实现直观的调节控件控制电机转角是可行的。在LabVIEW中,前面板的输入控件获取用户的输入数据(可以是直观的转角数据,或者是旋钮的转动角度,微调控件的位移距离等),转换为相应值,通过LabVIEW中的I/O接口输入到电路板上;
其次,POSE(动作模块)功能也基本可行,大体思路是设置一个适当的数据结构(当所有数据均为同种类型时)或簇(有不同类型数据),将其与所有输入控件相关联。当选中一个数组或簇时,调节输入控件,这时所有输入的数据都将传入数组或簇中(这里有个小疑问,如果某个动作中不使用某个电机,则该电机对应输入控件输入为空,对于这个空输入的处理还需要研究一下)。
将所有输入控件值获取到数组或簇中后,创建一个输入输出控件,输入为获取的数组或簇,输出可以通过LabVIEW提供的VC++接口或者MathScript接口来控制将对应的值输出到对应的电机。
最后是对机器人动作情况的实时仿真,这点很困难。首先需要有相应的传感器将机器人目前的各种状态参数传入LabVIEW中;其次,在LabVIEW中可以调用ActiveX控件,将参数输入控件中实现机器人状态的图形化显示。
问题就在于目前没有可以供这种实时仿真功能直接使用的ActiveX控件,如果要自行开发,需要的时间较长,而且需要专门成立一个开发团队。按目前的时间安排来看是完全不可行的。

三:总结篇
使用LabVIEW进行人形机器人仿真控制总体而言是可行的。但建议将它放到后边自主开发时进行。前期由于时间较紧,可以先用现成的控制软件在现成的电路板上进行操控。熟悉了现有控制软件结构后,可以为将来的自行开发控制软件打下良好基础。

四:附录
LabVIEW的接口:
【与C和VC++的接口】:LabVIEW与两者的交互是要C和VC++联合使用的。
C的作用是将输入的数据进行分类,处理和分配。而LabVIEW不能直接调用外部编写的C代码,需要调用.lsb格式的文件。
VC++的作用是生成动态链接库并将C文件转化为LSB文件。
由于VC++兼容C语言,所以可以完全的在VC++环境中进行相应的编程,完成LabVIEW做不到的某些功能。
【与MATLAB的接口】:相比之下,与MATLAB的接口就方便得多。LabVIEW中有MathScript控件,可以在上边直接写MATLAB的代码就可以执行。但是要求该计算机上必须已经安装了MATLAB。

No comments:

Powered By Blogger