机器人系统的模块化设计和仿真研究

描述

1、引言

80年代末,随着机器人学、DAI和分布式系统的研究与发展,机器人已朝向分布式、系统化和智能化的方向发展.尤其是基于MAS的多机器人协作问题正受到越来越多的关注.目前智能体(Agent)还没有统一的定义,一般被认为是一个能作用于自身和环境,并能对环境做出反应的物理的或抽象的实体[1],是一个具有自主性、主动性、社会交互性及反应性的对象模型.MAS则是Agent的集合.每个Agent都是一个具有相同的问题求解方法的自治系统,能利用局部信息进行自主规划,并能通过规划推理解决局部冲突实现协作,从而完成与自身相关的局部目标.依据MAS的特性来组织和控制多个机器人,使之能够协作完成单个机器人无法完成的复杂任务是机器人学研究领域的新课题,具有重要的理论和现实意义.国外一些著名研究有:ACTRESS、CEBOT、 SWARM等系统.

我们要实现的系统是以多个移动机器人为控制对象,以开阔区域为试验环境,要完成多个随机散布的机器人排成指定队形的任务,每个机器人要有不同层次的合作能力.我们将机器人封装为Agent和车体模型两部分,其中Agent是广义的机器人控制器,车体模型是机器人的物理实体.这样,多机器人的合作就体现为多 Agent的合作,各机器人依据其子目标,动态地规划各自的运动序列,在自主状态下采用自主行为,在冲突状态下采用合作行为,从而协作完成系统任务.本文就是基于这样的背景提出了系统原型.

2、合作机制与控制结构

群体的智能行为要求多机器人之间必须能够有效合作,这涉及多方面的问题,首先是如何组织机器人去完成任务,这是任务级的合作,体现为高层的组织形式与运行机制[2].多机器人间关系明确后,合作又体现为具体的运动协调规划与控制问题,这是控制级的合作,用来解决局部冲突. 根据系统任务的要求,我们选取协商和竞争的合作方式,实现如下合作机制:在任务层,实现了基于竞争的子任务指定;在行为层,通过采用动态优先级设定技术消解局部冲突,实现了资源的合理分配[3].

恰当地选取系统控制结构是实现多机器人合作的前提条件.一般地,以系统中是否有组织智能体为标准[4],将系统分为集中式控制和分散式控制.集中式系统中由管理员负责规划和决策,其协调效率比较高,但实时性、动态特性较差.而在分散式系统中,个体高度自治,并能借助于通讯手段合作完成任务.这种方式在容错能力、可靠性和伸缩性等方面比集中式结构要好.根据单体机器人结构的划分是否遵从笛卡尔方法[5],提出基于行为和基于功能的控制结构.基于行为的结构亦叫纵式分解结构,R.A.Brooks提出的包容结构[6]是一个典型.该结构具有灵活反应能力,利于实时任务的完成,但几乎不具有智能,规划能力差.基于功能的控制结构也叫横式分解结构,分层递阶结构是一个典型.该结构对外界的反应不够灵活,反应速度慢,但具有规划和推理能力,能对环境做出合理反应.为适应系统分布式、智能化和协同化的要求,我们选取混合式控制结构,即规划与响应相结合、横式与纵式相结合、全局自主分布与局部集中管理相结合的结构.

机器人

3、系统模块化设计原型

考虑到系统的分布式特点及机器人的同质性,为了便于系统实现和扩充,我们采用模块化设计思想,依据系统控制结构的层次,按功能对系统进行模块化分解,设计了具有可实现性的系统原型.从面向对象技术的角度来看,系统中的对象可分为机器人和系统管理员两类,我们据此将系统分为管理员分系统和机器人分系统两大部分.

3.1 机器人分系统(包含多个机器人子系统)

每个机器人子系统包含Agent和车体模型两部分,其中,车体模型是包含了各种硬件设备的物理实体,在此不详述.与之相对,Agent作为机器人智能的体现者,是推理、决策、规划和控制的软件执行体,是一个功能完全的对象模型,由4部分组成.

机器人

3.1.1 知识信息收集处理子系统

机器人在动态过程中规划的依据就是Agent 具有的先验知识和前一时刻收集的局部环境信息,机器人据此完成规划和控制.主要包含下面几个模块:

(1) 读取地图信息 Read_Map():一般包含部分静态障碍的信息.在机器人的初始化部分完成.

(2) CCD视觉信息接收处理 Receive_CCD():接收从摄像机中取得的视频图像,经变换得RGB图像,然后转换为灰度图像,经数学形态学处理和边界抽取等处理,最后可求得视域内障碍物和机器人的位置信息.用来探测较远距离的障碍.

(3)超声波信息接收处理 Receive_US():主要用于探测较近距离内或突现的障碍,给出障碍物的距离及其方向,在避障过程中起自我保护和监控作用,使之具有较好的灵活反应能力.

(4)红外信息接收处理 Receive_IR():红外探测器易受外界光线的干扰,且不能提供障碍物在敏感区域内的具体位置,在本系统中起辅助避障的作用.

(5)Sensor信息融合 SensorInfo_Fusion():将CCD、US、IR的处理结果经综合分析形成对环境的描述,放入规定的数据结构中,以确定静、动态障碍物的位置、方向等.

(6)车体定位 Cur_Pos():从odometer中读出车体的位置和前轮转角,填入给定的数据结构.

上述几个模块主要完成了传感器数据的采集与存储,实际上还应包括机器人之间的网络通讯数据,这一部分数据也是很重要的输入信息,放在后续的通讯模块中说明.

3.1.2 规划推理子系统

规划与控制是自主机器人的核心功能,主要负责完成机器人的行为规划与行为控制,体现其智能程度,所以这部分功能实现比较复杂,在此只给出主要的功能模块 (Agent子类的成员函数).

(1)全局路径规划 Global_Planner():是离线规划,在系统初始化时完成.利用A*搜索算法给出一条在全局环境内最优的路径,做为机器人在自主状态下跟踪的理想路径.

(2)局部路径规划 Local_Planner():运用动态子目标规划算法完成动态过程中的局部路径规划.根据当前场景,按照算法调度下列模块,求出动态子目标点作动态跟踪的目标.

(3)静态障碍检测 Static_Collision():根据传感器给出的当前视域内的静态障碍(OBS)分布的相关数据信息,按照一定的碰撞检测条件,判断各OBS所在的空间是否与各机器人当前规划段相冲突,有,则置标志,并返回与机器人相冲突的最近的OBS信息.

(4)静态子目标点选取 Static_Subgoal():根据静态障碍检测的结果,按照一定原则,选取子目标点.

(5)动态冲突预测 Dynamic_Collision():利用传感器给出的当前视域内的动态OBS分布的相关数据信息,依据利用通信交互的当前通信域内其他各机器人(也看作是动态OBS)的相关信息(位置、速度、目标),求出各动态目标间的最短距离以及取得时刻,以距离为检测条件,判断其他机器人和动态OBS是否与本机器人当前规划段相冲突,有,则置标志,并返回与本机器人相冲突的最近的OBS信息.

(6)动态子目标点选取 Dynamic_Subgoal():根据动态冲突预测的结果,按照一定原则,选取子目标点.

3.1.3 控制子系统

控制子系统的任务就是实时地接收控制命令,驱动伺服系统完成目标跟踪的任务.在此,我们只给出规划子系统和底层伺服子系统的接口模块. 驱动执行 Excution():实时地接收规划结果,将其转化成驶向子目标点的各种执行动作.

3.1.4 通信子系统

由于目前使用的各种传感器还不能提供足够的关于其他机器人和环境的实时信息描述,所以通信成为实现多机器人合作的关键,是系统动态运行过程中获取信息的最基本手段,也是一种高效的信息交互方法.根据任务要求,我们建立了局域网平台,并分别从同步和异步Socket类派生了对象,在传输方式上也采用流式和数据报两种方式.因其功能较为复杂,在此只给出主要的功能模块.

(1)等待接收初始化消息和任务命令 RInitInfo():机器人首先创建流式Socket,再建立与管理员和其他机器人的点对点的连接,最后等待接收管理员传送的初始化消息和任务命令.

(2)等待接收同步信号 RSyncSignal():接收到管理员传来的初始化信息和任务命令后,机器人自动完成数据加载,并完成自身的全部初始化,等待接收同步启动信号.

(3)收/发协商数据 Recieve/Send():机器人启动运行后,需要与其他机器人交互信息完成合作.在每个采样周期都广播发送机器人的当前位置状态数据;当检测到动态冲突后,相互冲突的机器人就以点对点的方式分送协商数据,安全高效.

3.2 管理员分系统

本系统中的管理员不同于集中式系统中的角色,它不做规划和决策,只完成一些辅助功能:图形仿真环境设置、初始化机器人(数据加载)、发送人工干预命令、图形显示、信息接收存储等.

(1)环境设置 Set_Env():可采用三种方式(读数据文件、对话框交互和鼠标点取)来设置图形仿真环境(主要包含车、障碍及场景等),操作灵活,使用简单.

(2)加载机器人初始化数据InitRobot():采用流式Socket建立和各机器人点对点的连接,然后向各机器人发送初始化信息和任务命令,完成数据加载.

(3)接收人工干预命令Command():能够实时地接收人工干预命令,并即时地完成命令下达.

(4)发同步信号 SyncSignal():给各机器人发同步启动信号,启动机器人系统开始运行.

(5)接收并存储数据 CurData():周期性地接收各机器人的广播数据,存入一定的数据结构.

(6)图形显示和复演 Display():实时地显示各机器人的运动状态,以利于观察和控制实际系统的运作,且能在事后依据存储的数据,将现场及机器人完整的运动过程复现.

4、仿真系统面向对象的程序实现

我们在局域网平台上,按照C/S模型进行系统编程实现.选用了面向对象的程序设计语言Visual C++ 5.0,共设计了九个类,其中两个主类:管理员类Manager和机器人类Robot,Robot类中又包含Agent、Communication 、Sensor、CCD等七个子类,Agent类的成员函数对应于规划和控制执行子系统,Communication类对应于通讯子系统,其余的子类与知识信息收集子系统相关,是为真实系统预留的接口.Manager类的成员函数对应于管理员分系统.利用面向对象技术设计实现的系统原型,易于修改和移植,且结构清晰、自然,贴近真实系统.

5、小结

近年来多机器人协作问题已成为领域内的研究热点.本文旨在设计实现一个试验系统,首先对多机器人的体系结构与合作机制进行了探讨,然后针对具体任务和环境,对多机器人系统的结构和功能进行了模块化分解,最后利用面向对象技术给出了系统原型,并通过仿真系统分析系统设计方案的可行性,逐步向建立实际系统过渡。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分