3、两个例子
3.1 移动机器人的远程控制
如前所述,在我们搭建的移动机器人的运动平台的基础上,通过所提供的软件模块,仅仅修改其配置用的XML文件就可以实现具有不同功能的智能移动机器人。在本节中,我们使用该移动平台,实现了一个可以通过Internet进行控制的移动机器人远程控制系统。该系统包括具有局部智能的移动平台,远程操作界面以及客户端和服务器的通讯机制。所有的硬件系统都是基于我们所研制的移动机器人平台,所有的软件都是按照上面的控制软件框架和模块结构设计实现的。通过该节的研究,一方面我们验证了前述软件平台的可靠性,另一方面我们开发了许多用于Internet远程控制、数据采集用的通讯模块。
(1)远程控制系统的软硬件配置
遥操作移动机器人系统分两个部分,一部分是移动机器人本体,另一部分是远程控制计算机和控制界面。这两部分通过Internet网络进行通讯和协调。机器人本体的硬件配置包括超声模块,激光雷达模块,无线通讯模块,视觉模块、蓄电池电源模块、电机驱动单元以及控制用上位机。
移动机器人的远程控制是在实验室局域网络内的另外一台PC机上进行的,该PC机通过网线接入到实验室网络内。该PC机上运行着与移动机器人上位PC机相同的软件,通过TCP/IP协议进行通讯。移动机器人的软件模块包括超声数据模块,防碰撞模块,避障模块,激光雷达数据模块,激光雷达障碍物检测模块,图像数据模块,网络通讯模块、电机驱动模块等,这些模块相互联接组成网络,实现了局部的自主智能(主要指防碰撞和避障)、向遥操作端发送传感器数据以及接收遥操作端发送过来的控制命令等功能。该软件的软件结构如下图所示。

远程控制计算机的软件结构如下图所示:

由于激光雷达能够基本上代替超声波实现障碍物的检测和避障等功能,因此在试验时我们以激光雷达的数据代替超声波的数据用于避障和防碰撞以尽量减少系统中加载的模块数量。经过修改后的机器人和远程控制端的配置文件内容如下2图:


(2) 通讯模块的设计和控制原理
在远程控制中,通讯模块的设计非常重要,一方面所有的数据都要通过通讯模块在客户端和服务器之间传递,另一方面在网络控制中的时延会对控制系统的稳定性造成一定的影响,应该尽量予以消除。为了提高远程控制系统的应用性,我们在该系统中采用了TCP/IP协议,该协议是Internet上的通用协议,使用该协议,理论上就可以通过任何接入Internet的计算机来控制移动机器人。为了进一步提高它的开放性,我们采用了HTTP协议,利用超文本来传递数据和控制命令。使用HTTP协议的另一优点是目前几乎所有的网关代理都支持HTTP代理,这样使得该系统的应用范围更广。

a)客户机/服务器模式的通讯模块设计
为了简化网络通讯的实现,增加代码的重用性,在本系统中我们采用了系统架构中模块的思想,构建了网络数据通讯模块。该模块分客户端和服务器两个模块,遵循客户端/服务器架构,可以根据需要配合使用。通讯模块的工作流程如上图所示。该模块是一个通用的网络数据传输模块,使用的时候只需要在其模块的Data端口上写入要发送的对象数据,或者从Data端口读入欲获得的对象(下图)。在使用该模块的时候需要在配置文件中配置好该模块所使用的网络端口号,或者欲连接的网络IP地址和端口号等参数。

b)基于XML技术的数据描述和命令封装
在上一部分中,对象能够通过网络通讯模块在不同的主机之间进行传送,这里的对象主要是从传感器获得的数据对象,或是从客户端发送的控制命令。这些对象或者命令都必须要转化成网络能够传递的文本或者字节流才能够通过网络进行传递。由于我们所使用的是HTTP(超文本传输协议),这种协议最适合文本数据的传输;此外,XML具有良好的数据表达能力和数据标准化,以及其开放型等优点,因此在数据传输的时候我们使用XML技术来实现对对象的文本序列化。
序列化是面向对象编程的一种技术,指的是对象能够在需要永久保存或者传输的时候转化成相应的数据,之后可以从该数据中恢复出该对象。对于一个对象而言,其方法是所有对象都拥有的,因此只有其属性代表的数据才能够确定对象的唯一性,所谓的序列化实质上就是研究对象的属性数据的保存和读取的一种方法。XML具有很强的数据表达能力,能够轻而易举的描述任何对象的数据,因而可以用来做为对象的序列化媒介。
利用XML实现对象序列化的方法很简单,我们只需要在所需要进行序列化的对象里添加一个方法toXMLDoc(),并在该方法中根据对象该时刻数据生成一个XML文档即可。关于如何实现XML文档的生成可以参考有关XML编程的书籍。从XML文档中恢复对象包括两个步骤:首先根据XML文档的描述创建所需要的对象,然后利用该对象的fromXMLDoc()方法恢复数据。
例如LMS200激光雷达系统扫描得到的数据对象经过序列化后可以得到的XML文本为:
35-34-35-56-78-98-120-......-380
该文本描述了激光雷达一次扫描后获得的全部前方0~180度范围内测量的距离信息。该信息在程序内被封装到了一个对象中(RangeData),该对象序列化后得到该XML文本。同样,通过生成一个空的RangeData对象,然后利用该XML文本即可重新恢复出该对象。
c) 局部自主智能的实现
由于我们在移动机器人上安装了激光雷达系统和超声传感器阵列,并对相应的避障和导航算法等单元技术进行了研究,因此该移动机器人已经具备了一定的智能(例如能够判断障碍物的距离实现急停,局部避障等功能)。但是由于人工智能的发展现状以及机器人所处环境的复杂性,完全依赖机器的智能在现实环境中自主行走就目前而言还没有可靠的技术保证。因此在实际应用中还不能避免人工的干预,这就要求我们从人机结合的角度来看待这个问题,尽量能够开发出人机协同控制移动机器人的环境。
在我们开发的软件框架内,所有模块的输出最终都通过影响电机的驱动模块来体现出来(例如防碰撞,局部避障等),而人(远程操作者)对机器人的控制同样也是通过影响电机的驱动模块而实现的,这与所有模块的工作原理是一样的。因此,通过对每个行为模块指定不同的优先级别,就可以在一定程度上实现对移动机器人行为的人机协同控制。在本项目中,我们把远程命令的处理模块赋予较高的等级(高于避障模块,但是低于防碰撞模块,这样可以解决操作过程中的误操作导致的碰撞过程),当有远程控制命令过来的时候,机器人由远程控制人员进行操纵;当远程命令失效(例如1秒内没有新的命令进入)后,本地避障、漫游等模块的控制命令就可以对机器人进行控制,在控制的同时,用户仍然可以通过远程计算机进行对机器人的运行状态进行监视并随时切入控制。下图显示的就是机器人在遥操作过程中客户端显示的激光雷达数据(可视化)和机器人运行状态数据以及控制命令输入窗口。

3.2 基于激光雷达的移动机器人避障漫游
(1)避障算法
避障算法不是这里研究的重点,所以简单提一些。激光测距雷达相对于超声波具有很多优越之处,它的测量精度高,稳定性好,方向性强,受到的干扰小等等,因此利用激光雷达进行避障要比超声波可靠的多。在本项目中我们使用了较常用的虚拟力算法(VFF),利用雷达获得的数据实现机器人的自主避障和漫游。
VFF方法是在势场法(Potential field method,PFM)的基础上建立起来的。该方法认为,障碍物会对机器人施加一定虚拟的排斥力(Virtual repulsive force),目标对机器人也会产生一定的吸引力,这两个力的合力决定机器人的速度和方向。漫游机器人的软件配置如下图所示。其中比较重要的几个模块包括防碰撞模块(collide),虚拟力计算模块(force),避障模块(Runaway)等。防碰撞模块有一个参数threashold,用来定义危险距离,当障碍物与机器人的距离低于此值则会产生急停的命令;虚拟力计算模块有两个参数threashold_near和threashold_far,分别用来定义两个边界值。虚拟力的计算函数是一个分段函数,当距离大于threashold_far的时候该值被忽略,即计算得到的力值为0,当距离小于threashold_near的时候,计算得到的力被平方,即增大近距离障碍物在力场中的分量。Runaway模块则根据计算出来的虚拟力的大小,并参考目标点的位置来生成下一步运动的方向和速度等命令。
(2) 漫游实验
我们在办公室环境下进行了自主漫游的实验。实验结果标明,移动机器人能够顺利的在无障碍的情况下沿着走廊行走,自动修正行走的方向;当走廊中存在较小障碍物时能够顺利的绕过障碍物继续前进;当走廊中障碍物较多时,就会停在障碍物附近或绕障碍物运动并且寻求操作者帮助。



点击这里可以下载当时拍摄的一段录像。
4、总结
总结没什么好说的了,虽然写完了,但是感觉还有好多问题没有说清楚,源代码我会整理一下传上来
,有什么问题也尽管问,这样也可以帮我做一些改进工作。
5、版权问题
版权所有,严禁转载
原文链接:http://www.roboticfan.com/blog/user_2005/73/archives/2006/2006226152239.shtml
转载声明:凡文章出处为www.RoboticFan.com的,系本站的原创文章。其它媒体在注明出处为RoboticFan.com并给出原始链接后可以自由转载,否则将视为侵权!
| 上一篇:ABB最新机器人IRC5的介绍 下一篇:美国研发战场救援机器人 |





