当前位置:文档之家› 移动机器人平台毕业设计

移动机器人平台毕业设计

华 中 科 技 大 学 硕 士 学 位 论 文2 移动机器人平台2.1 引言Pioneer是Active Media公司生产的一种移动机器人系列,这个系列有两轮驱动(室内移动机器人),也有四轮驱动的(室外移动机器人)(如图2-1所示)。

这是一类小型移动机器人,其结构是由SRI International公司斯坦福大学的Kurt Konolige博士开发出来的。

图2-1 Pioneer 机器人系列Pioneer Ⅰ是最初的设计型号,它引入了基于西门子68HC II的微控制器和PSOS(Pioneer Server Operating System)软件。

它被设计在室内坚硬平整地面上移动,拥有坚固防滑的橡胶轮胎,还有一个双轮差分可反向驱动的系统,以及一个用于支撑的方向轮。

Pioneer II是Pioneer Ⅰ的改进型,它采用了西门子20MHz高性能的88C166微控制器。

带有精度更高的轮式编码器来定位﹑测距。

它还拥有面向360度范围的声纳环(前面8个,后面8个),基本达到了无缝测量。

软件方面,Pioneer II采用的是P2OS(Pioneer 2 Operating System),它对Pioneer Ⅰ是向下兼容的,华 中 科 技 大 学 硕 士 学 位 论 文扩展了原来的PSOS软件。

2.2 Pioneer II移动机器人硬件平台Pioneer 2-Dx型机器人长44.5cm,宽40cm,高24.5cm ,重9kg,可载重23kg,最大的平移速度为1800mm/sec,最大的旋转速度为360deg/sec[35]。

它提供了一个内嵌的西门子88C166微处理器(20MHz),负责低层次的数据处理和命令执行。

另外,它具有如下基本设备:十六个声纳测距装置、一个激光测距仪、十个避碰传感器、一个Cannon EVI-D30摄像头、一个遵循802.11b规约的无线网卡和两个RS-232串行接口等。

在装满电池的情况下,该移动机器人可以连续运行近8个小时。

这种机器人是即插即用(Plug and Play)的。

除了上面说的这些部件外它还可以挂载其他传感器和一些附件。

这些部件都是由车载微控制器(Onboard microcontroller)和移动机器人服务器端软件来控制管理的。

我们智能与复杂系统实验室使用的是DX型移动机器人,它主要由下列部件构成:控制台,通讯端口,摄像头,激光测量部件,声纳,轮式编码器,避碰传感器,语音系统,电子罗盘以及蓄电池。

2.2.1控制部件Pioneer II控制部件包括微控制器和控制面板。

微控制器就在控制面板下方,主要用于控制传感器,从传感器读取数据。

并根据传感器数据由控制算法得到控制量,从而把控制量施加到驱动设备,完成本次任务。

控制面板一部分是与甲板连在一起的,另外一部分位于机器人的一侧。

如图2-2所示。

它包括一个液晶显示屏LCD,主要用来现实移动机器人的运行状态﹑内部信息以及相应的报警信息,比如说电池电量不足。

在控制面板上还有一个MOTOR和RESET控制按钮以及相应的指示灯,是用来控制移动机器人运动的硬件开关;同时控制面板上还带有一个9针的D型接头串行口。

华 中 科 技 大 学 硕 士 学 位 论 文图2-2 Pioneer Dx 移动机器人外观2.2.2 传感器部件1)Pioneer II带有两个声纳阵列,其中8个安装在移动机器人前面部分,构成一个半圆环(如图2-3所示),用来探测前方和两侧。

另外8个安装在移动机器人后部,也同样构成一个半圆环,用来探测后方和两侧。

在我们的实验中声纳主要目的是探测机器人周围物体位置及距离信息,这些信息用来识别周围环境特征,以及避开障碍物进行导航。

在图2-3中我们可以看到,两列声纳环布置是以20度为间隔的,这样保证了180度的探测范围,从而两个声纳阵列就可以知道周围360度范围的环境信息。

每个声纳发射频率是25Hz,探测范围是10cm~5m,其发射模式可以有软件来控制,在默认情况下前方是从左至右,后方是从右至左的。

同时我们可以调整声纳增益,在小的增益情况下,声纳对外部噪音和错误回声灵敏度相对要小,但降低了检测小物体的能力。

2)Pioneer DX采用了轮式编码器,它是一个高精度的光学积分编码器,每一圈产生9850个滴答(19滴答/毫米)。

在我们实验中它主要用来精确定位,以及检测机器人移动速度。

华 中 科 技 大 学 硕 士 学 位 论 文图2-3 Pioneer DX 声纳位置图2.3 Pioneer II移动机器人仿真平台Pioneer系列移动机器人软件都是由konolige博士开发的。

它主要是一个客户机/服务器(Client/Server)结构,在Pioneer II中,运行在单片机中的P2OS(Pioneer 2 Operating System)是作为服务器端,它通过串行端口与客户端连接。

Pioneer II-DX机器人的软件操作平台是基于Linux的, Linux是unix的一种免费版本,其网络功能强大、安全性能强、代码是开放式的,因此受到用户的欢迎。

同时Activmedia Robotics公司提供了一个软件开发平台Aria。

开发者在Aria平台上用c++或c编写的程序放到移动机器人的本体上。

本地PC机可与机器人组成一个小局域网,通过无线网卡来访问机器人,并且利用Telnet登陆机器人系统来激活程序。

Aria是由c++语言编写,源代码是开放的,因此可以用它集成用户自己的控制软件。

它既支持单线程,也支持多线程,使客户端较容易地控制和管理机器人服务器,以及移动机器人本体上的传感器。

它具有自己强大的类库,来支持对机器人所有硬件以及运动的控制。

它对于机器人控制华 中 科 技 大 学 硕 士 学 位 论 文来说是底层的,主要负责串口通信,包的发送,多线程管理,附件控制等[35]。

Saphira 建立在Aria 之上,内嵌有Aria ,并加入了Colbert 语言。

Saphira 提供了更友好的界面和效率更高的编程语言。

Saphira/Aria 的体系结构如图2-4所示。

Saphira/Aria 客户端体系结构图2-4 Saphira/Aria 的体系结构 图2-5 控制结构图Pioneer II 自主移动机器人完整控制结构如图2-5所示,机器人本体上包括所有的传感器、执行器、电源等附属设备以及一台Siemens 88c166单片机构成下位机,同时还包括一台运行linux 装备无线网卡的PC 机(配置为penitum233,32M 内存)作为上位机,要强调的是上位机和下位机都是装置在机器人本体上的。

上/下位机构成Client/Server 结构,作为下位机的单片机上运行固化在EEPROM 内的微型操作系统P2OS ,作为一个接收请求,提供服务的服务器,负责将机器人执行器件和传感器的信息简单处理之后打包通过RS -232端口发给上位机,同时处理上位机通过RS -232串口发出的控制指令和其它操作请求,具体执行机器人各种硬件设施的操作;作为上位机的Linux 主机在通过串口与下位机建立连接之后,有两种选择,即可以直接利用获得信息控制机器人,也华 中 科 技 大 学 硕 士 学 位 论 文可以通过TCP/IP的连接仿真一个网络上的机器人服务器,这时可以让异地的计算机通过网络连接实现对机器人的控制、对于异地计算机未说,除了连接机器人的方式不是通过串口而是通过Socket连接之外没有任何其他的差别。

总的来说,Saphira/Aria与Pioneer server的结构提供了自上而下的分层控制结构,给用户的分层结构算法提供了较好的实现基础,在软件层面上(就是从Pioneer II串口信息传出之后)可以直接实现对底层的控制,对研究人员对软硬件的充分利用和二次开发提供了一定的便利。

另外一方面,Pioneer II的手册提供了所有串口信息和命令包的协议规程,这也为用户自行设计独立的应用程序提供了较好的基础2.4 Pioneer II移动机器人通讯控制平台搭建我们实验室的机器人软件操作平台是Linux系统,即机器人嵌入式控制平台的上层是Linux系统,它作为通讯的服务器端;而作为通讯的客户端我们使用的也是Linux系统,他主要发送控制指令和监视机器人移动状况。

在这里因为控制命令要求准确无误的发送到移动机器人,因此采用面相连接的,端对端的可靠性高的TCP协议来实现;对于数据量大机器人位置状况及运动情况信息我们要求的是及时发送大量数据,所以在这里采用的是时延性短的广播式协议UDP来实现的。

这里有必要先介绍一下基于socket网络编程。

2.4.1 基于socket的网络编程socket编程的基本模式是Client/Server。

Server端首先调用socket创建一个一定类型的socket,然后通过bind函数将这个socket绑定到一个Client知道的端口上,接着Server调用listen函数设置倾听队列的长度,为接收来自Client端的请求做准备,而后Server调用accept,开始在所绑定的端口倾听来自Client端的连接请求。

如果socket被设置成阻塞方式,accept调用将被阻塞,进程被挂起,直到Server 收到来自Client的请求后,accept才返回。

华 中 科 技 大 学 硕 士 学 位 论 文Client端通过socket调用创建一个一定类型的socket。

然后调用connect函数向Server所在的主机发送连接请求,连接时,需要指定Server所在的主机的IP地址和Server倾听的端口号,连接的报文包含了Client端的初始的序号SYN a和MSS=1460信息(最大数据段的大小)。

正在倾听来自Client的连接请求的Server受到Clientde连接请求后,Server从Client调用中返回。

Server将会向Client端发送Server端初始的序号SYN,Server对Client端的SYN a的确认ACK=a+1,还有本端的最大数据长度MSS。

当Client端接收到Server端的回应时,将发出对Server请求的回应ACK=b+1。

然后Client从connect中返回,返回值是一个打开的sockt的描述符,这个描述符和文件的描述符类似,程序可以像使用文件的描述符一样使用它。

稍后,在Server端收到对其请求的回应时,Server将从accept调用返回,返回值也是一个socket的描述符。

然后双方传输真正的数据。

一方使用write将要发送的数据写到TCP的缓冲区,由TCP层负责写向网络,另一端通过read将数据从TCP缓冲区中读出。

Read 和write系统调用和对文件读写相似。

相关主题