基于ARM自主避障机器鱼设计

发布者:创客1992最新更新时间:2012-09-01 来源: 电子元器件应用 关键字:自主避障  ARM  红外测距  LINUX嵌入式系统 手机看文章 扫描二维码
随时随地手机看文章

    随着科技的发展与进步,出现了具有特殊功能的智能机器,如索尼公司生产的能够以自我“意识”来“感觉”“学习”和“饲养”的宠物机器狗,以弗吉尼亚理工大学研制的CHARLI-L1机器人为基础进行升级改造的SAFFIR的消防机器人等。机器鱼作为一项比较新的产品,涉及到机器鱼的智能开发并不深,因此机器鱼的智能化程度并不高,但随着机器鱼研究的加深,相信机器鱼的智能度会大大提高,功能也会更趋完善。目前的机器鱼类型主要有遥控机器鱼和语音控制机器鱼,例如曾在德国汉诺威电子展上展现的通过机器鱼体内收缩来提供动力的遥控式机器鱼和在西南民族大学诞生的国内首个的声控机器鱼等。据调查显示同内涉及到具有自主避障与自主视觉功能的智能机器鱼的研究与开发并不多。由于技术等诸多原因我们选择了设计自主避障的机器鱼。由于机器鱼具有机动性、高效性、低噪性等优点,所以高智能的机器鱼适合去完成如探测污染物质、绘制港口的实时立体图和对海底资源进行探测等具有一定难度和危险的任务。由于国内涉及到机器鱼智能的开发程度不高,所以高智能的机器鱼研发有较大的空间。

1 硬件系统设计
1.1 工作原理
    机器鱼主硬件原理如图1所示。机器鱼的自主避障功能是通过以ARM芯片、LINUX嵌入式系统、红外传感器等结合实现的。机器鱼在水中分别通过摄像头、红外传感器、LCD进行画面采集、自主避障和画而显示。摄像头采集到图片后,图像被缓存于SDRAM中。ARM芯片通过红外传感器的AD管脚向发射器传送命令,使探测器的发射模块不断地向外发送红外线,当接收器接收到返回的红外线后会立刻通过AD管脚向ARM芯片传送与红外线返回的光强相应的电压,电压经过ARM芯片的A/D转换器转变成十位的二进制数字量,通过一定的公式计算出此时与障碍物的距离。当计算出来的距离小于预设量时,ARM芯片的控制软件执行一个串行中断指令改变脉冲的脉宽即改变改PWM波的占空比变,进而改变机器鱼的游向从而避开障碍物。

a.JPG[page]

1.2 ARM芯片模块设计
    ARM处理器拥有16/32Bit内核和具有450MIPS运算能力。400MHz的标准工作频率可满足高速的应用要求。ARM主芯片有内置数字摄像头接口,可选配130万像素CMOS号业摄像头进行图像采集。ARM处理器的外围扩展了64M的SDRAM和FLASH,ARM主芯片支持Linux、uCOS-II、WINCE等操作系统。ARM芯片高度集成,主芯片拥有CPU、Nand flash、Nor flash、Ethernet controller等资源。CPU内的所有可用资源可通过200pin引脚引出。接口核心板可以单独构成系统,无需外围器件。
    嵌入式Linux (Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几KB或者几MB字节的存储器芯片或单片机中。它具有成本低、源代码开放和移植性好的优点。在工程中得到了广泛的应用,适合于特定嵌入式的应用场合。
1.3 红外模块
    红外线是介于可见光和微波之间的一种电磁波。它兼具可见光折射、反射、直线传播以及微波的贯穿一些不透明物质和较强的穿透的能力。红外传感器包括红外发射模块和红外接收模块。科学实验表明温度高于绝对零度的任何物体均可产生红外辐射,因此红外传感器要有更强的发射红外的能力。
    距离探测器的类型主要有激光探测器、视觉探测器、超声波传感器和红外传感器。由于激光探测器和视觉探测器比较昂贵而且对控制器的要求很高,所以不选为机器鱼的避障器。超声波传感器测距范围一般在30~300 cm,可见短距离测距是超声波传感器的盲区。能“看”到几米之外障碍物对于机器鱼的意义并不大,而红外传感器的测距距离一般在几十厘米之内,因此我们选择红外传感器作为机器鱼的避障器。
    GP2YOA21YK0F是夏普的一款距离测量传感器。它由PSD(position sensitive detector)、IRFD(infrared emitting diode)以及信号处理电路三部分组成。由于采用了三角测量方法,所以被测环境温度、物体的材质以及测量时间均不会影响传感器的测量结果的精确度。接收到反射回来的红外线后,传感器输出一个与返回光强成正比模拟电压。输出的模拟电压经过ARM的A/D转换器变成数字量,数字量传到MCU后以一定的算法计算出机器鱼与障碍物之间的距离。将探测的结果与预设值比较,若大于预设值则不执行中断即继续前进,否则执行中断进行避障。红外传感器硬件原理如图2所示。

b.JPG


1.4 摄像头模块
    为机器鱼配备的摄像头是CMOS数字图象传感器。采用的是Ommvision公司的OV9650,OV9650具有130万的像素、10Bit的数据接口与标准SCCB接口,其分辨率达1280x1024并采用CSP-28封装该摄像头用类似于IIc总线的Secb总线连接到ARM主芯片的IIc接口进行通信。在ARM芯片中,摄像头的接口控制模块(CAMIF)由图像采集模块、视频预览尺度模块、模式混合模块、特殊功能寄存器(SFR)模块、码流尺度模块、视频预览DMA模块以及码流DMA模块构成。COMS摄像头OV9650输出的ITU-656格式视频码流,经CAMIF处理后,将采集到的视频码流成两路不同的格式进行传输,两路格式不同的信号分别进入不同的帧存储单元进行存贮,之后根据ARM控制器的指令通过视频DMA通道进行传输。摄像头原理如图3所示。

c.JPG


1.5 LCD模块
    LCD液品显示器是(Liquid Crystal Display)的简称,LCD的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。LCD有扭转式向列型(Super Twisted Nematic,简称STN)和薄膜式晶体管型(Thin Film Transistor,简称TFT)两种主流类型。因为TFT有反应速度快、可视角度大、色彩丰富、分辨率高、对比度、亮度高等优点,所以我们选择TFT的LCD。LCD硬件原理、LCD控制器功能如图4所示。

d.JPG

[page]

    LCD的工作受其控制器控制完成,图5为LCD控制器功能图。通过LCD控制器的寄存器组REGBANK来对LCD控制器的各项参数进行设置。而LCDCDMA则是LCD控制器专用的DMA通道,负责将视频数据从显存(显存是SDRAM中的一块区域,可利用REGBANK编程设定)中取出,并从VIDPRCS从VD[23:0]发送给LCD屏。同时LPC3600和TIMECEN负责产生LCD屏所需的控制时,然后从VIDEOMUX送给LCD屏。TIMEGEN包含可编程逻辑,可通过程序进行设定。TIMEGEN能产生不同LCD屏驱动电路所需要的时序信号。

e.JPG


    LCD部分接口介绍。VFRAME/VSYNC/STV接口:传送LCD控制器和LCD驱动器之间的帧同步信号。
    VLINE/HSYNC/CPV接口:传送LCD控制器和LCD驱动器之间的同步脉冲信号。
    VCLK/LCD_HCLK接口:传送LCD控制器和LCD驱动器之间的像素时钟信号。
    VM/VDEN/TP接口:传送LCD驱动器使用的交流信号。
    VD [23:0]接口:LCD的像素数据输出端即RGB信号线。

2 系统软件设计
2.1 主程序流程
    ARM芯片通过AD管脚对红外传感器的发射模块传送命令。发射模块发射红外线,接收模块接收遇到障碍物反射回来的红外线,根据返回光强产生相应的模拟电压,经过A/D转换器后变成十位的二进制数据量,通过一定算法计算出到障碍物的距离。ARM芯片判断计算出的距离与预设值的逻辑关系,根据结果判断是否进行避障。摄像头采集图片后,将图片缓存于SDRAM中,LCD读取数据并将图像显示出来。主程序流程如图6所示。

f.JPG

[page]

2.2 红外模块
    在ARM的A/D进行转换时,首先要对ADC控制寄存器进行初始化,选择进行转换的模拟输入端,进行A/D转换,并从ADCDAT0读取转换结果。探测的结果小于预设值时ARM芯片执行中断,改变PWM波的占空比使机器鱼转向进行避障,反之继续前进。红外模块流程如图7所示。
2.3 摄像头模块
    摄像头属于字符类设备,所以能够像字节流一样被程序访问,而且只能够按顺序读写。Linux内核程序通过设备的位号来寻找摄像头。Linux内核发送测试信号到地址0X9650,以检测摄像头是否存在。OV9650拥有多组寄存器,图像的输出编码方式和分辨率等参数取决于OV9650的寄存器。IIC (Inter Integration Circuit)是指内部整合电路,是常用的标准串行接口。系统是通过IIC总线对寄存器进行整体配置,所以此过程不会占用系统数据总线。考虑到图像传输的效率,所以摄像头与ARM芯片之间的Data[0]~Data[7]的通道仅用以传输图像数据。以下为摄像头的部分初始化代码。
    SrcWidth=640-WinHorOffset*2;//CAM_SRC_HSIZE为640,CAM_SRC_VSIZE为480
    SrcHeight=480-WinVerOffset*2;//计算得SrcWidth=440,SrcHeight=280
    rCIWDOFST=0;//窗口垂直偏移为0
    rCIWDOFST=(WinOfsEn<<31) | (WinHorOffset<<16) | (WinVerOffset);//水平偏移为100,垂直偏移为100
    rCISRCFMT=(1<<31) | (0<<30) | (0<<29) |(640<<16) | (0<<14) | (480);//30位设置为1后,图像颜色失真,偏彩色
    Calculate Prescaler RatioShift (SreWidth,PrDstWidth,&PreHorRatio,&H_Shin);//计算并设置突发长度
    Calculate Prescaler RatioShift (SrcHeight,PrDstHeight,&PreVerRatio,&V_Shift);//计算水平和垂直缩放比率和位移量、水平和垂直比率
    摄像头模块流程如图8所示。

g.JPG

 

3 结束语
    本文介绍了红外探测器在机器鱼上的应用以及画面的实时显示。通过红外传感器使机器鱼具有了自主避障的功能。实验表明基于ARM芯片和LINUX嵌入式系统平台开发的自主避障功能的机器鱼具有较高的实时避障功能,表明该机器鱼具有灵敏度较高的自主避障功能。此设计提高了机器鱼智能度,可作为后续自主视觉机器鱼开发的基础。相信随着高智能的机器鱼的研究与设计会给人类探索、开发海洋提供更多的帮助与便利。

关键字:自主避障  ARM  红外测距  LINUX嵌入式系统 引用地址:基于ARM自主避障机器鱼设计

上一篇:基于ARM7的网关通信模块设计
下一篇:linux-2.6.26内核中ARM中断实现详解

推荐阅读最新更新时间:2024-03-16 13:07

uC/OS-II在ARM系统上的移植与实现
摘要: 使用ARM公司提供的ADS 开发工具,将uC/ OS - II 移植到ARM 处理器上,并将移植结果应用在跑马灯和数码管的实现上,运行正常,表明移植成功. 关键词 :uC/ OS - II ;ARM;移植 0  引言     在开发嵌入式系统时,一般选择基于ARM 和uC/ OS - II 的嵌入式开发平台,因为ARM 微处理器具有处理速度快、超低功耗、价格低廉、应用前景广泛等优点 . 将uC/ OS - II 移植到ARM 系统之后,可以充分结合两者的优势. 如果一个程序在一个环境里能工作,我们经常希望能将它移植到另一个编译系统、处理器或者操作系统上,这就是移植技术.移植技术可以使一种特定的技术在更加广泛的范围使用,使
[嵌入式]
ARM发布最新平台安全架构:支持碎片化物联网系统
网易科技讯 12月3日消息,世界互联网大会先进科技成果发布会上,ARM全球执行副总裁兼大中华区总裁吴雄昂发布了最新的平台安全架构,通过这样一个安全架构,不光是解决了安全架构的一致性问题,而且能够支持多样化、碎片化的物联网系统。 吴雄昂称,物联网系统的安全不仅仅在于设备,而在于网络、在于云。这里面有上百家芯片公司、上千家系统公司,同时有上百万的开发者,这个安全架构得到了从芯片、安全、系统、软件、云,一百多家科技公司的一致支持。 以下是吴雄昂的演讲: 女士们、先生们,下午好! 首先我代表ARM感谢组委会给我们这个机会,发布ARM最新的平台安全架构。ARM至今为止已经设计了全球应用最广泛的计算技术,今天全球有上千亿个电子设备使用
[手机便携]
基于ARM含SD控制器的SD卡的SDIO模式驱动解析
SD卡由日本 松下 、 东芝 及美国 SanDisk 公司于1999年8月共同开发研制。 SD卡的结构能保证数字文件传送的安全性,也很容易重新格式化,因此越来越多的被应用的嵌入式系统中。 SD卡的使用非常方便,常见的有两种工作模式:SPI和SDIO。SPI是串行的工作模式,速度相对较低,但是使用方便,只要MCU含有SPI接口均可使用。SDIO模式,可以最多4线传输,因此速度比较快,由于SD卡的普及,越来越多的MCU内部集成了SDIO控制器,简化了我们的工作。本文以三星s3c2410为例介绍。 1. SD卡的接口电路 2. SD卡的协议 SD卡的控制指令非常强大,支持SPI,SDIO模式,兼容MMC等。而且
[单片机]
基于<font color='red'>ARM</font>含SD控制器的SD卡的SDIO模式驱动解析
基于Q2403A的单片机短消息收发系统
  引言   传统的监控系统类似大体可以分为四种:防盗放火报警监控系统,门禁系统、考勤或巡更系统,环境检测系统,视频监视系统。   目前市场上通常对某个区域(例如仓库)的全面监控管理是由以上四种类型的监控系统的简单相加,各分系统之间相对独立,到上层监控中心才进行综合,这样作势必会造成布线烦琐、维护力度大、升级困难、成本增加,而且系统的联网方式单一也可能造成系统的鲁棒性不高,处理突发事件的能力不强,针对这样一种现状,文中提高了一种基于32位高性能 处理器 AT91RM9200的智能综合 监控基站 方案。   1 系统结构   本基站最大的特点在于将各个子系统在底层进行综合集成,并且采用PSTN、GPRS和TCP/IC
[单片机]
ARM处理器的总线信号
现在以ARM7TDMI核的总线周期为例,介绍ARM处理器的总线信号和总线时序。  1、A (address) : 32位地址总线,地址总线的相关控制信号是ABE, ALE和APE。  2、ABE(address bus enable):当它为低电平时禁止总线驱动,使地址总线进人高阻状态。  3、ALE(address latch enable):当该信号为低电平时,锁存地址总线以及其他信号。这个信号能使处理器向下兼容。对于新设计,如果需要重新定义地址线,则推荐使用APE,并将ALE接高电平。  4、APE ( address pipe line enable): APE为高电平时地址总线、LOCK、MAS 、
[单片机]
ARM协助合作伙伴降低物联网芯片设计周期风险
基于ARM Cortex -M处理器与TSMC 55 ULP工艺技术的物联网子系统助力创新者加快开发速度 ARM今日宣布推出全新的硬件子系统,帮助客户快速、有效地开发用于智能联网设备的高度定制化芯片。这套专为ARM Cortex-M处理器开发的ARM物联网子系统(IoT subsystem)在针对与ARM最具能效的处理器、射频技术、物理IP 以及ARM mbed 物联网平台的配置使用,进行了优化。 这一子系统IP模块可以单独授权,它与Cortex-M 处理器和ARM Cordio 射频IP一起构成了物联网端点(endpoint)芯片设计的基础,合作伙伴只要整合传感器和其他外设即可完成完整的系统级芯片(SoC)
[物联网]
基于ARM的嵌入式TCP/IP协议的实现
0 引 言 以太网具有通用性强、技术成熟、带宽迅速增加等特性,工业控制领域出现嵌入式技术,尤其是ARM技术的发展和DSP在工业控制领域的广泛应用,利用嵌入式技术实现以太网通信已经不难见到。嵌入式实时操作系统接入网络后将使远程监测、远程控制、远程诊断和远程维护变得越来越容易。从根本上讲,嵌入式设备接入网络,当前基本采用基于TCP/IP的通信协议。该方案以LPC2210为核心元件研究基于ARM的嵌入式TCP/IP协议的实现的硬件电路,同时在μC/OS一Ⅱ平台上编写应用软件程序。下面对系统做详实的阐述,并重点介绍嵌入式实时操作系统μC/OS—II应用于TCP/IP时应进行合理的裁减。 1 系统硬件设计 基于ARM的嵌入式TCP/
[单片机]
基于<font color='red'>ARM</font>的嵌入式TCP/IP协议的实现
一种基于ARM和PoE的嵌入式系统的网络广播设计方案
1 系统结构 系统由音频放大器LM48510、音频处理器、以太网供电和以太网数据通信等组成。从前端到后端依次经过音频放大器LM48510→ARM926EJS→PoE/Network等几个处理过程,实现以太网供电的网络广播。系统的硬件结构如图1所示。 图1 系统硬件结构 2 系统的硬件设计 2.1 ARM926EJS相关设计 ARM926EJS处理器是通用微处理器ARM9家族的一员,属于5TEJ版ARM架构。针对的是多任务应用,全存储器管理、高性能、小核心尺寸和低功耗都是其重要的特点。ARM926EJS处理器支持32位ARM 16位Thumb指令集,使得用户能在高性能和高代码密度上取得平衡。应用ARM92
[单片机]
一种基于<font color='red'>ARM</font>和PoE的<font color='red'>嵌入式系统</font>的网络广播设计方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved