基于ARM和Linux的路径记忆循迹小车
摘要:针对智能小车在实际应用中的需要,设计了一种基于ARM和Linux的具有路径记忆循迹功能的智能小车。利用ARM和Linux操作系统,实现了对智能小车的超声波避障模块、电机等的控制。利用电子罗盘,实现了小车在无黑线情况下精确转向;利用超声波测距避障以及Linux文件系统建立和保存了智能小车运行的路径记忆库;通过读取记忆库的数据实现智能小车的循迹功能。结果表明,该设计方案可以很好地实现循迹功能并且对环境的适应性较强。
引言
智能车是近年来发展起来的一门新兴的综合技术,在军事领域得到了广泛应用,而且在生产和生活中的应用也日趋普遍。
目前智能小车的自主移动方式有两种:循迹和避障。一般的循迹功能可以通过算法使其能精确地在黑线上行驶,但是由于一些室内环境的因素,要实施黑线的布置并不符合实际要求。一般的避障功能仅仅是通过探测前方障碍物而进行躲避,通过算法可以完成从出发点到定点的行驶,但是算法运算量大且放在不同的环境,就需要更改程序,这对实际应用带来很大的不便。
基于这种背景,设计了一种利用超声波测距避障功能以及Linux文件系统的路径记忆循迹智能小车,通过人为地设置障碍物来规划小车的行走路线,并将路线记录入库。小车只需读取库中的数据即可按照规划的路线行驶以实现循迹功能,可摆脱寻查黑线的循迹方式。当环境发生变化时,利用按键设置小车的工作模式,可以直接重新建立记忆库,无需更改程序,具有一定的实际意义。
1 总体设计
图1为本系统总体结构框图,主要由超声波测距模块与云台、S3C6410控制器、电机驱动模块、光电测速模块以及电源等部分组成。其中,电源用于完成对整个系统的供电,超声波测距模块与云台完成对小车运行状态的预判,电机驱动模块根据预判的结果执行相应的操作,光电测速模块用于PID控制的反馈以及在转向时控制车轮运行的周数,S3C6 410控制器在移植Linux操作系统的基础上完成对各模块的控制并建立小车运行状态的记忆库。
2 系统硬件设计
2.1 控制器
S3C6410控制器是由三星公司推出的一款低功耗、高性价比的RISC处理器,它基于ARM11内核(ARM1176JZF—S),可广泛应用于移动电话和通用处理等领域。控制器由核心电路板和主板两部分组成,核心板上设计有S3C6410、SDRAM存储电路、NAND Flash、1.25 V电源电路和处理器复位电路等,主板上设计有串口、网口、按键等。
2.2 电源与电机驱动模块
电源采用现有的锂充电电池供电,锂电池的电压约为7.2 V。电机驱动采用的是L298N驱动模块,该模块采用ST公司的L298N芯片,采用高质量铝电解电容,可使电路稳定工作;可以直接驱动两路3~16 V直流电机,并提供了5 V输出接口,可以给5 V单片机电路系统供电,支持3.3 V ARM控制,可以方便地控制直流电机速度和方向。
2.3 超声波测距模块与云台
采用US-100超声波测距模块,该模块可实现0~4.5 m的非接触测距功能,拥有2.4~5.5 V的宽电压输入范围,静态功耗低于2 mA,自带温度传感器对测距结果进行校正,同时具有GPIO、串口等多种通信方式,内置看门狗,工作稳定可靠。
云台采用SG90舵机,工作电压为4.8~6 V,无负载的情况下转速为0.12 s/60℃。控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20 ms、宽度为1.5 ms的基准信号。将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片,决定电机的正反转。
2.4 光电测速模块
本设计中的测速模块采用槽型对射光电,只要在非透明物体中通过槽型即可触发(配合小车测速码盘20格使用)输出5 V TTL电平,采用了施密特触发器去抖动脉冲,非常稳定,用于小车测转速、测距离等。
2.5 电子罗盘
电子罗盘采用霍尼韦尔HMC5883L芯片,该芯片带有数字接口的弱磁传感器,应用于低成本罗盘和磁场检测领域,并附带霍尼韦尔专利的集成电路,包括放大器、自动消磁驱动器、偏差校准、能使罗盘精度控制在1°的I2C系列总线接口。
3 记忆库的设计
3.1 智能小车避障方案选择
根据设计要求,小车在行驶过程中需要准确地检测前方的人为障碍物,并通过障碍物的位置来确定小车下一步的运行状态,因此对测量距离有一定要求。障碍物检测可以有多种方法:红外光检测、超声波检测和机械接触。这些方法各有优缺点,常用的有红外检测和超声波检测,两种方案的区别见表1。对比两种方案的指标后,本文避障方案选择超声波检测,并且为了满足系统要求添加了SG90舵机作为辅助,使用超声波可以检测多个方向。
3.2 智能小车的路径状态
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 革新2410D开发板试用手记(04-21)