移动机器人控制软件的设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

移动机器人控制软件的设计和实现
作者:李晓明 文章来源: 更新时间:2006-8-9 17:25:55 点击数: 2742
简介:现在做一个移动机器人是很容易的一件事,车体自己可以加工,或买现成的;避障可以用超声阵列;
导航可以用激光测距 LMS;定位可以用电子地图加 LMS 加陀螺仪;然而控制软件却只能自己编写。本文 或许可以给你一些启示。
相关链接 基于 VIA 平台的移动机器人
移动机器人的使用现在非常多,做一个移动机器人似乎也很容易,车体自己可以加工,也可以去 买现成的;避障可以用超声阵列;导航可以用激光测距 LMS;定位可以用电子地图加 LMS 加陀 螺仪;驱动可以用各种电机及配套驱动器或者自己做;通讯可以去买现成的无线通讯模块,可以 是数字的,也有模拟的;大范围定位可以用 GPS 模块,也是现成的;至于什么红外,蓝牙,甚 至计算机视觉都可以去市场上买,但是(然而)为什么做一个移动机器人还是这么难呢?尤其是 对一个新手而言。一个老外说过,硬件是现成的,软件算法杂志里有的是,很多可以在网上当, 但即使是一个博士生也要花费很长的时间完成一个实际可用的移动机器人。为什么?因为机器人 使用的困难在使用软件的设计上。前面那个老外也说过,现在什么都可以在网上当,唯独使用程 序不能。有过自己写移动机器人程序的人可能会理解这段话,当然也仅仅是可能,因为不排除有 很多机器人大拿一上来就可以写出很棒的移动机器人软件。
移动机器人的控制软件开发是和硬件紧密相关的,甚至和机器人的体系结构也密切相关,同样是 移动机器人,有的是用 PC 控制的,有的是用多个嵌入式系统实现的,有的则是多机器人协同工 作的,操作系统有人会用 DOS,有人会用 Windows,有人会用 Linux,有人会用 Embeded Operation System。硬件平台有的用 x86,有的用 ARM 芯片,有的会用 DSP,通讯里面会 有串口,TCP/IP 网络,无线以太网,红外,蓝牙等,甚至驱动机构也不一样,有的是用腿,有

的是用轮子,即使是轮子也有好多种情况,两个轮子,三个轮子(包括两个独立驱动轮一个随动 轮,或者两个同步驱动轮一个转向轮等),四个轮子,五个轮子等等,有的是集中控制的体系结 构,有的是分布式控制的体系结构。使用也不同,有智能行走的,有人远程控制的,也有人机结 合的,诸如此类,这样看来,移动机器人使用程序的开发的确是很复杂,“无法从网上直接当了”, 看来只能自己从头开始编写代码了这一条路好走了。
的确如此,但自己从头编程序也存在一个问题,那就是如何着手。我们写文章希望有模板,同样 写机器人使用程序也希望能有一个模板,按照模板的约定,把自己编写的模块嵌进去,就可以得 到一个使用程序了。可惜程序设计里面的模板无法移植到机器人程序设计领域,但是我们可以采 用一个框架,在这个框架的规范下,我们写的模块或者利用他人写的模块进行组合就可以得到一 个合理的使用程序。
框架的概念很广,可大可小,大的可以做到像 J2EE 或者 CORBA 那么复杂,做企业级开发,小 的则只能在一个 CPU 上构件一个简单的使用程序。我在开发移动机器人的时候设计了一种简单 框架,专门用来给采用 PC 对机器人进行集中控制的情况下编写使用程序。在我的博士论文(在 个人主页里可以找到)里则设计了一种较复杂的框架,可以采用 P2P 技术实现多机器人或多系 统的软件使用开发,而我现在正打算设计一种更通用,更复杂的,可以实现多平台,多 CPU, 多系统环境下的移动机器人使用快速开发,包括框架和中间件技术。这里只是先介绍一下目前正 在使用的那个 PC 用的软件框架。
值的一提的是,国内外已经有很多人在做或者已经做过这方面的工作了,我写在这里的目的只是 为了和大家交流。由于最近时间很紧张,每次只能写一小点,所以打算分数次把这部分内容介绍 完,主要包括框架的模型,模块的接口定义,模块之间的通讯,动态模块的加载和配置,以及采 用该框架实现的移动机器人使用举例,并提供相应的框架的源代码。
1、引言
我们初次编写机器人软件,通常有种“老虎啃天,无处下嘴”的感觉。编写移动机器人程序和普通 程序稍有不同,因为通常意义上的移动机器人程序都是多任务,实时的,甚至是分布式的。我们 可以很容易的在计算机终端上显示出“Hello,world”,也可以毫不费力的在移动机器人的液晶

屏上显示出“Hello, World”,但是一边让机器人行走,一边要避障,同时还要处理通讯、定位 等工作就决不是那么容易了。这个时候我们需要的就是框架了。
2、面向移动机器人的使用程序框架
2.1、什么是框架?
我的理解中,软件里框架的概念很有点像计算机硬件里面的主板,它提供了系统运行所需要的电 源,通讯等手段,并且所有符合总线协议的卡都可以往主板上插,从而实现所需要的功能和性能。 例如把数据采集卡查到主板上,计算机就具有了数据采集的能力;把视频卡插到主板上,计算机 就具有了压缩视频的功能,此外还有显卡,声卡,网卡,电视卡,运动控制卡,传真卡等等。软 件里的框架也是如此,它有点类似中间件的概念,提供了相当程度的代码支持,同时也定义了一 些规范,这些规范包括通讯协议,模块的接口定义等。用户可以自己编写模块,也可以使用别人 已经写好的模块,通过框架的运行,带动模块的运行,从而实现一些预期的功能。由此可见,框 架必定是一种集成工具,其自身是一个完整的使用程序,而且可以通过模块来扩展使用系统的功 能和改进其性能;或者说,框架提供了使用程序的入口和出口,并能够根据配置,加载相关的模 块实现功能的扩展和性能的提高。其中,功能的扩展通过编写新的模块实现;性能提高则通过对 原有模块进行升级实现。
框架和体系结构之间存在着微妙的关系,一方面可以说框架和体系结构无关,例如同样用 MFC, 可以开发出各种体系结构的软件系统来;另一方面,框架和体系结构又结合的那么的紧密,例如 J2EE 是一种框架,而看到 J2EE 就令人想起了分布式的体系结构。CORBA 亦是如此。主板和 体系结构之间的关系就更令人弄不清了。因此我认为执着的追求框架和体系结构的区别是没有意 义的,关键在于如何设计框架,使它更好用,效率更高。
2.2、框架的设计
框架设计的好坏对系统性能的影响当然非常重要,应当仔细考虑,全面分析,更重要的是能够在 实践的过程中不断的进行改进。目前我设计的这个软件框架比较简单,适合比较简单的使用,当 然可以在此基础上进行进一步的完善,使之能够适应更复杂使用的开发。
1、R.A. Brooks 的包容体系结构和分层递阶体系结构

相关文档
最新文档