《智能机器人系统驱动开发.doc》由会员分享,可在线阅读,更多相关《智能机器人系统驱动开发.doc(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流智能机器人系统驱动开发.精品文档.JIU JIANG UNIVERSITY毕 业 论 文题 目 3G智能机器人系统驱动开发 英文题目 3 G intelligent robot system driver Development 院 系 信息科学与技术学院 专 业 计算机科学与技术 姓 名 班级学号 指导教师 二一二年五月摘 要 随着物联网技术、3G通讯技术、多媒体技术、机电控制技术的日趋成熟,基于相关技术的产品也备受消费者的欢迎。本论文结合当前机器人技术和嵌入式技术的融合发展方向, 提出了一种基于ARM9 与3G网络相结合的智能机器人。家用
2、3G智能机器人项目正是在此背景下设立的。该项目是基于ARM、S3C2410、GPRS、WEB网页、WiFi、Android手机的机器人,能够实现实时监控家里异常情况及控制家里智能家电设备的工作。用户可以用Android 手机或WEB网页通过Internet登陆到安防机器人的服务器来控制机器人的工作,如:机器人的运行方向,摄像头的控制等。同时也能通过 WEB 网页控制家里安防设备和智能家电的工作,了解家里设备工作的情况。机器人通过传感器采集现场火警等数据,通过红外传感器探测是否有人进入现场,当家里有异常情况时机器人会通过 GPRS 模块发短信给用户并发报警声,同时机器人会自动控制摄像头进行拍照取
3、证。用户也可以根据家里情况进行远程拍照,通过U盘或SD卡读出照片及其他数据。 此系统具有良好的实时性与人机交互性能。将机器人控制融入日常生活的技术实现,随着服务性机器人进入千家万户,将极大地改变人们未来的生活模式。关键词:3G,机器人,摄像头,WiFiAbstractAs things networking technologies, 3 G technology, multimedia technology, mechanical and electrical control technology matures, based on the related technical product
4、s are also popular with the consumer. In this paper the current robotic technology and embedded technology integration development direction, puts forward a ARM9 and 3 G network based on the combination of intelligent robot. Household 3 G intelligent robot project is just in the context of the estab
5、lishment.The project is based on ARM S3C2410, GPRS, WEB pages, WiFi, Android mobile robot, can realize real-time monitoring and control the abnormal situation home intelligent home appliance equipment work at home. The user can use android mobile phone or WEB pages by logging on to the Internet secu
6、rity robot server to control of the robot work, such as: robot operation direction, of the camera control, etc. At the same time also can through the WEB page control home security equipment and intelligent home appliance to work,Understand the home work equipment. Robot through the sensors to colle
7、ct the data such as fire, through the infrared sensor probe whether someone into the scene, when home had abnormal situation robots will through the GPRS module sent text messages to users and alarm sound, at the same time, the robot will be automatic control camera photo evidence. The user can also
8、 according to the situation of remote take pictures at home, through the usb key or SD card to read out the photos, and other data.The system has a good real-time and human-computer interaction performance. Will robot control with everyday life technique, along with service robot to thousands of peo
9、ple in the future will be greatly change the pattern of life.Key words: 3G, Robot, Camera, WiFi目 录摘 要IABSTRACTII1 绪论1.1 3G智能机器人发展(1)1.2课题的现实意义(2)1.3研究内容(2)1.4论文结构(3)2 嵌入式LINUX系统结构介绍2.1嵌入式Linux系统软件平台(4)2.2嵌入式Linux系统硬件结构(10)3 3G智能机器人的总体设计3.1软件开发平台设计(12)3.2机器人控制器硬件设计(13)3.3远程监控客户端的设计(14)4系统详细设计与实现4.1 b
10、oa服务器的搭建(17)4.2基于MJPEG-streamer的视频服务的移植(20)4.3 cgi和web程序的设计(25)4.4机器人控制端设计(28)4.5 LCD显示设计(29)4.6 WiFi 端的实现设计(31)5 软件的运行测试5.1 Web端显示测试效果(39)5.2 LCD显示效果测试(44)5.3手机端显示效果测试(44)6 总结和展望6.1 论文工作总结(46)6.2未来工作展望(46)致 谢(47)参考文献(48)1 绪论1.1 3G智能机器人发展3G(the 3rd Generation)指支持高速数据传输的蜂窝移动通讯技术,3G服务能够同时传送声音(通话)及数据信息
11、(电子邮件、即时通信等)。随着3G网络与物联网的普及开发出一种基于3G手机终端控制的智能机器人符合当今机器人发展的方向。同时随着嵌入式处理器的高度发展,嵌入式系统在体积、价格、功耗、性能、稳定性等方面表具有明显的优势,因此将嵌入式系统与机器人技术很好地融合起来具有更广阔的应用空间和现实意义。机器人问世以来,在救灾,核武器水下探测等危险领域机器人发挥着越来越重要的作用。90年代随着计算机技术 、Internet、无线传输技术的迅速发展,利用Internet和无线网络来作为通信介质的机器人正在成为研究的热点。很多国内外的研究机构都开展基于网络的监控机器人方面的研究工作。如美国的南加州大学,西澳大利
12、亚大学以及国内的上海交通大学,北京航空航天大学等都对机器人远程监控技术进行了比较深入的研究1。机器人远程控制技术研究重点,主要集中在两个:一是遥现,又被称为临场感技术;二是网络控制的可靠性与稳定性以及无线传输问题。 目前在卫星导航精确定位,3 G无线通信技术日趋成熟稳定,把这三项技术结合起来,用GPRS对远程的救援机器人进行定精确定位,通过3 G无线通信网络对机器人进行指挥和视频实时监控,这样就解决救援机器人远程控制中的许多问题,实现救援机器人的远程控制和监视,使得机器人动作更加灵活,功能更加完善,作用更加强大。如果把这项技术用于军方,就可制作远程侦察机器人,实现对战场各种信息的收集和传输。为
13、指挥决策提供可该远程监控系统有着很好的应用领域 ,随着卫星定位技术的不断进步而有我国自行研制北斗导航系统的进一步完善,精度进一步提高,我国的北斗卫星导航系统将能够提供与GPRS(General Packet Radio Service)同等的服务,在下一步工作中我们可以采用GPRS 和北斗组合导航增加定位的可靠度和准确度。如何消除远程控制所带来的动作延迟影响控制精度问题。如何引入多种传感器结合多传感器的信息融合,提高移动机器人的智能程度,都成为下一步我们研究的重点。未来的几年内,随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。同时智能机器人也会得到广阔的发展的。美国著名
14、未来学家尼葛洛庞帝99年1月访华时预言,45年后嵌入式智能(电脑)工具将是PC和因特网之后最伟大的发明,嵌入式系统是这个后PC时代的擎天之柱。我们有理由相信,未来的电子技术就是嵌入式系统技术的天下。1.2课题的现实意义本课题来源于本人在华清学习后做的项目,通过该项目可以使自己对嵌入式开发有新的理解,也提高了自己的兴趣,3G智能机器人的开发可以在一些比较高档的小区中得到广泛的使用,可以利用机器人在些特殊环境下作为安保的角色,那样可以很大程度的减少人力资源,在生活中了也可以得到广泛的使用,使用者可以通过转动摄头来实时拍摄下来房间中不同角度下的视频,主人可以通过在局域网或者是利用WiFi(wirel
15、ess fidelity)来控制机器人,那样可以为房子的主人实时反映出房子的一些智能设备的工作情况,如果有陌生人进入房间,摄像头拍摄下来的图片可以通过终端看到,那样就起到了安保的作用。1.3研究内容(1)嵌入式系统操作系统的实现在ARM微处理器上运行嵌入式操作系统,可以为上层软件的开发提供统一的接口,方便系统功能的进一步扩展升级。嵌入式Linux系统是开源的操作系统,自身带有TCPIP协议,具有强大的网络功能,方便用户进行网络编程。(2)在网页中实现控制机器人和LED 用户可以通过在网页中通过点击相应的按钮来控制机器人方向,可以通过点击相应的按钮来实现对LED的控制,在网页中可以实时反映摄像头
16、拍摄出来的视频。(3)在手机终端实现控制机器人和电灯用户可以通过在网页中通过点击相应的按钮来控制机器人方向,可以通过点击相应的按钮来实现对LED的控制,在网页中可以实时反映摄像头拍摄出来的视频。1.4论文结构第一章 绪论本章通过对嵌入式的发展情况,然后分析嵌入式的强大的竞争力,简单介绍了项目要实现的功能该项目的现实意义。最后阐明了本课题的实现内容。第二章 3G机器人系统结构介绍本章通过对嵌入式Linux操作系统介绍,阐述了要进行嵌入式开发需要准备的工作,介绍了交叉工具链的搭建,嵌入式Linux移植,详细介绍了Bootloader , Linux内核移植和嵌入式文件系统,最后介绍了下嵌入式Lin
17、ux系统的硬件结构,包括ARM处理器的介绍和S3C2410的体系结构。第三章 系统总体设计与分析本章详细的介绍了系统的设计,阐述了完成这个项目要完成的任务,主要介绍了一些服务器的移植,cgi和web网页的设计,介绍了对机器人控制的代码,分析了怎么在网页上显示摄像头拍摄的视频,和在LCD显示摄像头拍摄的视频,最后介绍了利用WiFi实现在手机端如何对机器人和摄像头的控制。第四章 运行测试本章主要介绍在web网页效果的测试,LCD端显示的测试,利用WiFi在手机端效果测试。第五章 总结与展望本章总结论文结果、不足之处以及展望。2 嵌入式Linux系统结构介绍2.1嵌入式Linux系统软件平台2.1.
18、1 Linux操作系统简介Linux是一个类Unix操作系统,它起源于芬兰一个名为Linus Torvalds的业余爱好,现已成为最流行的一款开放源代码的操作系统。Linux从问世至今,短短10年间己发展成为一个功能强大、设计完善的操作系统。Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒。由于Linux的源码开放,内核精简且性能强悍,不依赖于具体厂商,能广泛适用于各种硬件设备,系统二次开发成本极低,因此在IT业界已经达成共识,即采用嵌入式Linux作为嵌入式操作系统是大势所趋。嵌入式Linux是指对Linux经过小型化裁剪后,能够固化在容量只有几百K字节或几M字节的存储器芯片
19、或单片机中,应用于特定嵌入式场合的用操作系统。目前正在开发的嵌入式系统中,49的项目选择嵌入式Linux作为操作系统。嵌入式Linux现已成为嵌入式操作系统的理想选择。由于在目前的主流嵌入式ARM(Advanced RISC Machines)中大多不具有MMU(Memory Management Unit),因此只用1M左右的内核就能实现网络功能和任务调度Linux系统就可以适用于从高端服务器到嵌入式应用的各级平台。ARM技术和Linux成功地结合,应用于数以千计的商业产品中。从便携式消费品、网络和无线设备,到自动化设备、医疗设备和存储产品,这一应用列表与同俱增。ARM和Linux的结合充分
20、满足了各类应用对嵌入式平台高性能、低功耗和低价格的要求,通过开发环境、开源社区和ARM的商业伙伴的优势为嵌入式开发提供了更灵活的选择1。2.1.2交叉编译环境的建立我们写程序后调试,肯定要有调试代码的工具,我们在vc下面都是自带工具链的,但是在嵌入式开发中要自己配置合适的工具链,现在在Linux 2.30后的版本可以使用 arm-none-Linux-gnueabi-gcc ,只有建立好了工具链,我们才能开始进行项目的开发。通常嵌入式系统的软件编译和执行是在两个不同平台上进行的。编译是在宿主机,一般为桌面主机;执行是在目标机,即嵌入式系统的硬平台。一般是在宿主机上通过跨平台交叉编译器把源文件编
21、译成目标平台上可执行的文件,再通过串口、并口或者网络下载至目标平台上的FLASH或者其它存储介质,然后由目标机来运行这些软件。这旱所说的跨平台编译器和一般的编译器功能类似,都是把源代码通过编译器编译成目标文件,然后通过链接器、可重定位器程序和定位器把目标文件重新定位成可执行文件。和通用的编译器之间最大的差别就在于跨平台编译器编译出来的可执行程序通常只能在特定CPU所属平台上运行。所以一般来说每种CPU都对应有不同的跨平台编译器。本系统采用基于ARM S3C2410,可以使用常用的ARM交叉编译器,要成功构建完整的交叉编译环境,需要在宿主机上创建一系列的工具,包括CC+编译器、汇编器、链接器、嵌
22、入式系统的标准C库和GDB代码级调试器。成功建立好开发环境后便可以运用这些工具进行嵌入式系统开发了1。2.1.3嵌入式Linux移植1. BootLoaderBootLoader是系统加电后运行的第一段代码。一般只是在启动时运行很短的时间,然而对一个嵌入式系统来说,这一部分却是整个系统的一个无比重要的组成部分,不可缺少。在一般嵌入式系统中,系统复位或者加电后通常从地址0x00000000处开始执行,而这个地址一般是存放的BootLoader启动代码。通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终加载操作系统内核准备好正确的环境。Bo
23、otLoader一般情况下需要包含以下几个必备的功能。初始化处理器:这个动作都是用汇编语言完成的,称为重置码(reset code或者称为boot code),而且对于每个CPU都不一样的,当电源接通后就会执行这个动作,通常只有两三个汇编指令,目的是将CPU的控制权转给硬件初始化的程序。初始化一些必要的硬件。这个动作也大都由汇编语言来完成,主要是初始化CPU、SDRAM等,其他的硬件,例如串口,可以由C语言等比较高级的程序语言来完成后续动作。设置处理器的寄存器以及内存,关掉所有的输入管脚(包括中断管脚),以防止突然有信号进入妨碍接下来的硬件初始化动作。然后初始化串口,以便后续运行的程序能够同H
24、OST端进行通信,便于调试。从特定的位置把操作系统和文件系统调入内存,并设置一些操作系统所必需的参数,然后把CPU控制权交给操作系统。有的BootLoader会先从串口或者网络等其他途径得到内核的映像文件,然后把这些文件写入目标系统的FLASH或者其它存储介质,最后再把内核载入RAM执行,交出控制权。一般BootLoader都包含两种不同的操作模式:“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。从最终用户的角度看,BootLoader的作用就是用于加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。(1)启动加载(Boot loading)模式这种模式也称为“自主”(
25、Autonomous)模式,即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时候,BootLoader显然必须工作在这种模式下。(2)下载(Downloading)模式在这种模式下,目标机上的BootLoader将通过串口连接或者网络连接等通信手段从主机(HOST)下载文件,比如下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。BootLoader
26、的这种模式通常在第一次安装内核与根文件系统时被使用,此外,以后的系统更新也会使用BootLoader的这种工作模式。工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。BootLoader的实现依赖于CPU的体系结构,一般来说启动过程分为两个阶段:第一阶段依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在第一阶段中,而且通常都用汇编语言来实现,运行效率比较高。这个阶段完成的任务一般如下:硬件设备初始化(屏蔽所有的中断、关闭处理器内部的指令数据cache)。为第二阶段准备RAM空间。复制BootLoader的第二阶段代码到RAM空间中。设置好堆栈并跳转
27、到第二阶段的C程序入口点。而第二阶段则通常用C语言来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性2。这个阶段主要任务有:初始化本阶段要使用的硬件设备。检测系统内存映射。将内核映像和根文件系统从FLASH读到RAM中。为内核设置启动参数。调用内核文件运行。2. Linux内核移植本系统选用嵌入式Linux作为目标机操作系统,一方面由于Linux是一款免费的操作系统,能很好的降低成本,同时Linux的开发应用现在已经成为热门,有大量的资源可用于学习与重复应用,并且Linux系统具有良好的可移植性和可裁剪性,能自动支持多任务管理。一般常用的GUI如QTE,MiniGUI等都支持
28、Linux。Linux的开发工具也都可以很方便的免费获得。在Linux系统内核代码中有arch目录,其中包括了不同平台的代码,与体系结构相关的代码都存放在arch下面相应的目录中,本系统采用ARM开发平台,所以依赖ARM硬件平台的代码都在archarm下面。根目录下面只需要修改Makefile文件,该文件主要任务是产生vmLinux文件和内核模块。对该文件的修改主要是设置目标平台和制定交叉编译器,代码如下:ARCH=armCROSSCOMPILE= arm-Linux-接下来的工作便是修改arm目录下面的相应文件,具体的工作主要就是在内核文件中添加S3C2410处理器信息,在arm目录下面的M
29、akefile文件添加:ifeq(S(CONFIQARCHS3C241 0),Y)TEXTADDR=0Xc0008000MACHINE=s3c241 0Endif配置文件config.in也需要添加处理器信息,这样在后面make menuconifig命令时可以看到S3C2410的选项。具体为添加代码:if“SCONFIG_ARCH_S3C241 0”=y;thencommentS3C2410 Implementationdep_boolSMDK(MERITECH boaRD)CONFIG_ARCH_S3C2410Fi编译出来的内核存放在arm目录下的boot目录罩面,该目录下面的Makefi
30、le文件也需要添加代码:ifeq(S(CONFIG_ARCH一S3C241O),Y)ZTEXTADDR=Ox30008000ZRELADDR=Ox30008000endif其它还有一些小的修改,基本上都是添加处理器的信息。更改完成之后需要对内核进行配置和编译,配置命令可以选用make config,make oldconfig,make menuconfig或make xconfig其中一个。编译内核需要创建内核依赖关系、创建内核镜像文件和创建内核模块。首先执行make dep命令,读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而哪些不需要;接着需要make c
31、lean删除前面步骤留下的文件,以避免出现一些错误;然后便可以生成所需要的内核文件了,用makezlmage来实现得到可移植的内核。内核文件传至开发板便可以通过BootLoader加载运行2。3. 嵌入式文件系统嵌入式系统中需要有文件系统来更好的管理文件。文件系统会在你的存储器中划分区域来保存文件数据,所以一般采用FLASH作为存储介质。FLASH具有独特的物理特性,所以必须使用专门的嵌入式文件系统。嵌入式系统对文件的操作是通过层次结构实现的。对于用户程序来说,文件是有结构的文件,用户程序通过对文件IO函数操作文件。嵌入式文件系统是嵌入式操作系统的一部分,它的任务是对逻辑文件进行管理,其工作包
32、括提供对逻辑文件的操作(复制、删除、修改等)接口,方便用户操作文件和目录。在文件系统内部,根据存储设备的特点,使用不同的文件组织模式来实现文件的逻辑结构。此外,文件系统要对管理文件的安全性负责。文件系统不能直接控制物理设备,它是通过FLASH驱动实现控制的。目前FLASH支持的文件系统技术主要有JFFS2,YAFFS2,TrueFFS,FTLNTFL,RAMFS,CRAMFS和ROMFS等等。本系统采用的是CRAMFS文件系统和YAFFS文件系统并存,并采用Ramdisk在内存中模拟硬盘分区。CRAMFS是针对Linux内核24之后的版本所设计的一种新型文件系统,是一个只读压缩的文件系统,其主
33、要优点是将文件数据以压缩形式存储,在需要时进行解压缩。一般嵌入式存储器价格比较高,用CRAMFS文件系统比较省空间,对于FLASH这样的小系统,CRAMFS是十分不错的选择。不过也是由于文件形式是压缩的格式,所以文件系统不能在FLASH上直接运行。虽然可以节约不少FLASH空间,但是文件系统运行时需要将大量的数据复制到RAM中,因此消耗了RAM空间。YAFFS类似于JFFSJFFS2,是专门为NAND闪存设计的嵌入式文件系统,根据NAND闪存以页面为单位存取的特点,将文件组织成固定大小的数据段。利用NAND闪存提供的每个页面16字节的备用空间来存放ECC(Error Correction Co
34、de)和文件系统的组织信息,不仅能够实现错误检测和坏块处理,也能够提高文件系统的加载速度。YAFFS采用一种多策略混合的垃圾回收算法,结合了贪心策略的高效性和随机选择的平均性,达到了兼顾损耗平均和系统开销的目的。它是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外掉电对文件系统一致性和完整性的影响。YAFFS文件系统是按层次结构设计的,分为文件系统管理层接口、YAFFS内部实现层和NAND接口层,这样就简化了其与系统的接口设计,可以方便地集成到系统中去。与JFFS相比,它减少了一些功能,因此速度更快,占用内存更少3。综合考虑,本系统采用两种文件系统相结合的方法,使用CRAMFS
35、作为根文件系统,并添加对YAFFS文件系统的支持。Ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟出来一块硬盘,所以上面有系统支持的各种文件系统4。Ramdisk的特点之一就是速度快,因为它是在RAM中运行的。不过由于RAM是掉电不保存的,所以系统在每次重启时,前面的工作无法保存,所以需要在FLASH中划出一个Ramdisk和另一个文件系统YAFFS,这样,数据文件可以保存在YAFFS分区中。另外,本系统需要MTD(MemoryTechnology Devices,内存技术设备)的支持。MTD是对FLASH操作的接口,提供了一系列的标准接口函数,将硬件驱动和系统程序设计分开,硬件驱动人
36、员不用了解存储设备的组织方法,只需要提供标准的函数调用,比如读、写等等。2.2嵌入式Linux系统硬件结构2.2.1 ARM处理器简介 ARM嵌入式微处理器是全球领先的1632位RISC处理器芯片知识产权设计供应商ARM(AdvancedRISCMachines)公司的产品。ARM公司本身不直接从事芯片生产,而是靠转让设计许可,由合作公司生产各具特色的芯片。ARM处理器以其完整的体系结构发展系列,极小的体积、极低的功耗、极低的成本、极高的性能,及时根据嵌入对象的不同进行功能上的扩展的优势,在众多种类的嵌入式微处理器中脱颖而出。基于ARM技术的微处理器应用占据了32位RISC微处理器75以上的市
37、场份额,ARM技术正在逐步渗入到我们生活的各个方面。采用RISC架构的ARM微处理器一般具有如下特点5:(1)支持Thumb(16位)ARM(32位)双指令集,能很好的兼容8位16位器件;(2)大量使用寄存器,指令执行速度更快;(3)加载存储结构,数据处理的操作只针对寄存器的内容,而不直接对存储器进行操作;(4)简单的寻址模式,所有加载存储的地址都只由寄存器的内容和指令域决定,执行效率高;(5)统一的和固定的指令域,简化了指令的译码;(6)每一条数据指令都对算术逻辑单元(ALU)和移位器进行控制,以实现对ALU和移位器的最大利用;(7)址自动增加和自动减少的寻址模式实现了程序循环的优化;(8)
38、多存储器加载和存储指令实现了最大数据吞吐量;(9)所有指令的条件执行实现了最快速的代码执行。目前,ARM处理器有ARM7、ARM9、ARM9E、ARMl0、ARMll和SecurCore等系列。每个系列除了具有ARM体系结构的共同特点以外,都有各自的特点和应用领域1。3 3G智能机器人的总体设计3.1软件开发平台设计3G智能机器人的软件开发平台采用基于行为的控制思想,系统构架遵循面向对象的设计风格,通过各种抽象类的组合来组织代码,条理清晰便于理解。软件构架层次关系如图3-1所示。电脑,3G手机登远程终端 仲裁决策对象机器人指令对象硬件通信对象视频捕捉控制对象其他设备机器人主体设备视频输入设备实
39、体 图3-1 系统软件框架硬件通讯层:是一些直接与硬件设备通讯的对象,这里包括一个机器人主体的数据交流的串口通讯对象。视频捕捉因为对通讯速率要求很高,通过USB链接,所以其设备对象与机器人主体独立开。工程中的硬件通讯层基类为IBhy,这是一个抽象类,具体的硬件类都从这个基类派生,如里面的串口硬件类为CRoSCom6。指令协议层:这一层是机器人控制构架的核心,指令协议对象将进行机器人实体控制指令的编制以及对下位机返回的传感器数据和机器人状态的解析转换。工程的指令协议层类为CRoCmd,其成员函数包含了对机器人的所有的基本操作6。行为层:这一层是一些抽象类行为的对象,这些对象通过协议对象的传感器数
40、据进行局部的行为规划,并操作协议对象向机器人底层发送控制指令。这一层虽然并存了很多对象,但是同一时刻只能允许一个行为对象与协议对象连接,以避免出现行为混乱的情形。机器人的各种行为切换通过改变与协议层连接的行为对象来实现。工程中的行为层基类为IBhavior,与硬件层一样这只是一个抽象类,它本身包括了所有可能的传感器信息返回函数6。决策层:这一层是机器人本地的最高层,仲裁对象通过本地传感器数据、机器人运行状态以及远程端发来的指令数据进行各种行为组织。它既可以直接操作协议层对象发送机器人控制指令,也能通过行为对象的切换间接控制机器人的运行。决策层在工程中并不以单独的形式出现,是由一系列通讯类和行为
41、替换操作组成。根据应用的不同可分为单行为决策结构,聚合式行为决策结构以及包容式行为结构6。上面介绍了一种基于ARM9嵌入式系统的3G智能机器人的基本组成模块,软件层次的设计,这种方案较好的做到了在成本和性能上的妥善处理,改善了开发研究过程,同时也为其他类型的3G机器人的设计提供了一个参考,如拟人型机器人。嵌入式系统领域的软硬件技术,3G网络技术与物联网技术的迅猛发展,各种应用层出不穷将这些技术融合到机器人的设计中,有助于提高机器人的综合性能。3.2机器人控制器硬件设计3G智能机器人可以在Android手机上安装项目开发的Android程序,实现远程控制智能机器人。机器人利用其丰富的传感器实时检
42、测周围的环境参数,并在遇到紧急情况时主动通知用户。机器人和手机间可以实现视频、语音等多媒体通讯。用户可以通过手机控制机器人运动,也可以通过机器人控制家中的其它智能设备。3G智能机器人包括传感器技术 ,RFID射频识别技术,Wifi通讯技术,Android 手机开发技术,音、视频采集、处理技术,多媒体传输技术,Linux驱动编程技术,电源管理技术,电机控制技术,Linux网络开发技术,Linux其它应用编程技术,ARM开发技术6,由于时间和条件的限制,结构还不是非常的晚上,所以用于实际工程还需要进行一些功能的完善。其硬件系统框如3-2所示。电机控制模块GPRS模块云台摄像模块触摸屏模块语音模块A
43、RM9平台嵌入式Linux+WebSD卡模块WiFi模块红外线模块烟雾模块无线通讯模块图3-2 硬件框架图DFPPRK是基于Android开源项目的全向移动机器人平台,机器人平台机身采用高档拉丝氧化铝材料制造,外观美观并且坚固耐用。DFPPRK装备有三个可全向运动的轮子,能够灵活地在家具之间穿行。自由度云台可方便安装摄像头。在平台上可添加PDA,MID等主控设备即可组成可通过Wi-Fi无线网络接入互联网的机器人,这样以来便可通过计算机或是手机对环境情况进行远距离监控。由于时间和条件的限制,所以用于实际工程还需要进行一些功能的完善。3.3远程监控客户端的设计首先在自己脑海中要把思路理清楚,然后一
44、步一步的去实现,客服端主要的操作流程如图3-3。在客服端,点击按钮,显示基本信息客服端显示机器人的视频和相关信息服务端开启监听和视频等服务机器人或led执行命令且返回客服端通过点击按钮完成对机器人和led控制点击退出按钮结束图3-3 客服端的过程图控制客服端操作界面主要的文件是MonitorView.c,这个函数里面主要用到的结构体就是cgi-command结构体7。typedef struct cgi_commandnv_set *pdata; /传送过来的数据指针主要是指网页传过来的数据int count; /cgi传功来的数据一共有多少段int led; /这个cgi密令是要控制那个LE
45、Dint states; /需要控制的状态是什么电灯int robot; /对机器人控制的命令command;上面的结构体就是主要的结构体,其中pdata 就是获取网页传送过来的数据,比如当我们在网页中点击机器人向前走的按钮,那么*pdada的值就是“w“,然后就是向管道写入向前走的命令,在管道的一端是一直在后台运行读取的命令,当我们写入命令的时候,管道的另一端就是读取我们写入的值,然后就是响应的操作。其中对机器人的控制主要有下面几个操作:w 表示向前走; a 表示向左走;x 表示向后走; d 表示向右走; s 表示停止; q 表示左旋转; e 表示右旋转; z 摄像头抬头; c 摄像头低头。
46、 这些就是代表机器人的动作,这样动作就可以帮助我们拍摄出来不同角度的视频的图片。在MonitorView.c中主要的操作函数是:int get_input(); /这个函数用来获得cgi数据并解析后放到nv数组中int cmd_init(command *cmd); /将获得的数据处理后填充cmd结构体int led_control(command *cmd);/将cmd结构体转化为具体的控制动作int robot_control(command *cmd); /根据获取的信息来对机器人发送不同的命令我们按照先获取cgi数据,然后填充cmd结构体,然后调用led_control函数和 robo
47、t_control函数这样就可以实现对led灯、机器人的控制了。4系统详细设计与实现4.1 boa服务器的搭建4.1.1 boa服务器介绍我们通过设计WEB服务器,使用户能通过浏览器访问设备上的Web服务器来远程控制现场设备。嵌入式Linux下,系统资源是非常有限的8,因此我们选择Web服务器时,要考虑到其资源有限的特点:boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但boa支持cgi,能够为cgi程序fork出一个进程来执行,boa的设计目标是速度和安全。现在,多数嵌入式Linux的代码中已经包含boa的源代码,在嵌入式Linux下实现boa只需要对boa做一些简单的配置和修改。这主要通过对boa.conf、boa.c、mime.types等文件进行修改来实现。