基于ARM和Linux的路径记忆循迹小车

发布者:Serendipitous55最新更新时间:2021-06-23 来源: eefocus关键字:ARM  Linux 手机看文章 扫描二维码
随时随地手机看文章

引言


智能车是近年来发展起来的一门新兴的综合技术,在军事领域得到了广泛应用,而且在生产和生活中的应用也日趋普遍 [1-2]。


目前智能小车的自主移动方式有两种:循迹和避障。一般的循迹功能可以通过算法使其能精确地在黑线上行驶,但是由于一些室内环境的因素,要实施黑线的布置并不符合实际要求[3-4]。一般的避障功能仅仅是通过探测前方障碍物而进行躲避,通过算法可以完成从出发点到定点的行驶[57],但是算法运算量大且放在不同的环境,就需要更改程序,这对实际应用带来很大的不便。


基于这种背景,设计了一种利用超声波测距避障功能以及Linux文件系统的路径记忆循迹智能小车,通过人为地设置障碍物来规划小车的行走路线,并将路线记录入库。小车只需读取库中的数据即可按照规划的路线行驶以实现循迹功能,可摆脱寻查黑线的循迹方式。当环境发生变化时,利用按键设置小车的工作模式,可以直接重新建立记忆库,无需更改程序,具有一定的实际意义。


1总体设计


图1为本系统总体结构框图,主要由超声波测距模块与云台、S3C6410控制器、电机驱动模块、光电测速模块以及电源等部分组成。其中,电源用于完成对整个系统的供电,超声波测距模块与云台完成对小车运行状态的预判,电机驱动模块根据预判的结果执行相应的操作,光电测速模块用于PID控制的反馈以及在转向时控制车轮运行的周数,S3C6410控制器在移植Linux操作系统的基础上完成对各模块的控制并建立小车运行状态的记忆库。



2系统硬件设


2.1控制器


S3C6410控制器[8]是由三星公司推出的一款低功耗、高性价比的RISC处理器,它基于ARM11内核(ARM1176JZFS),可广泛应用于移动电话和通用处理等领域。控制器由核心电路板和主板两部分组成,核心板上设计有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超声波测距模块与云台


采用US100 超声波测距模块,该模块可实现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智能小车的路径状态设计


为了简化记忆库的设计以及结合实际应用中的情况,智能小车的运行状态设定成4种情况:直行、90°左转弯、90°右转弯和180°掉头。其中,直行状态在记忆库中的表示是时间,通过Linux中的时间函数测量直行状态的持续时间,单位为s。


为了使智能小车能按照上面的4种情况运行,智能小车在行进中遇到的路径情况是人为设定的,如图2所示。



3.3记忆库的建立


智能小车的运行状态是人为设定的4种情况,记忆库中的数据就是由这4个状态标志组成。人为设置好从起点到终点的障碍物后,即可让小车在起点开始运行,并在每次改变运行状态前将运行状态记录入库。在到达终点后以180°掉头作为结束标志,然后利用Linux文件系统将记忆库里的数据保存到Linux下的一个文件当中,到此完成记忆库的建立。


根据具体环境,可建立一个起点、多个终点的路线记忆库,并将各个路线记忆分别保存在Linux下的不同文件中,智能小车通过读取文件中内容实现循迹功能。


4系统软件设计


系统软件设计分为3个层次:应用层、操作系统层和驱动层。应用层包括智能小车控制策略程序、建立记忆库和按键控制小车的工作模式;操作系统层包括Bootloader移植、操作系统ARMLinux内核的移植和根文件系统移植;驱动层主要包括us100超声波模块、SG90舵机以及电机驱动模块等驱动程序。


4.1系统移植以及驱动程序


操作系统的移植包括uboot、内核和文件系统的烧写,内核包含GPIO口、DM9000网卡、内存等关键的底层驱动。小车启动时,通过uboot对S3C6410进行必要的初始化,然后引导Linux的启动。


智能小车需要的驱动程序有:电机驱动模块驱动程序、SG90舵机驱动程序、光电测速模块驱动程序以及us100超声波模块驱动程序。其中,舵机与超声波编写到一个驱动文件中。这些模块的驱动程序都是以混杂设备驱动[9]的方式编写,主要的驱动函数采用ioctl函数。而电机驱动模块与超声波避障驱动程序的结构相似,仅是实现功能不同。电机驱动模块驱动程序框架如下:


#defineDEVICE_NAME"ok6410_dianji"


//驱动层ioctl函数


static int s3c6410_dianji_ioctl(struct inode


*inode, struct file *file, char buff)


s3c6410_dianji_fops={


.owner=THIS_MODULE,


.ioctl=s3c6410_dianji_ioctl,


};


static struct miscdevice misc={


.minor=MISC_DYNAMIC_MINOR,


.name=DEVICE_NAME,


.fops=&s3c6410_dianji_fops,


};


static int__init s3c6410_dianji_init()


static void__exit s3c6410_dianji_exit()


module_init(s3c6410_dianji_init);


module_exit(s3c6410_dianji_exit);


光电测速模块驱动程序完成两种功能:①采用中断的方式来记录小车的测速,并反馈给应用层作为PID控制的反馈;②通过应用层传递车轮运转的周数,驱动中利用异步通知的方式在运转完规定周数后通知应用层,作为小车转向时的控制。


4.2记忆库程序设计


超声波避障是决定智能小车运行状态的关键所在。利用超声波测得人为障碍物,让智能小车通过躲避障碍物实现按预定路线行走,并通过Linux文件系统将小车行走过程中所有的状态都记录在一个文件中形成记忆库。程序流程图如图3所示。



4.3智能小车控制策略程序设计


智能小车基本的控制是通过电机驱动模块将模块上对应的引脚与ARM11的GPL口和GPK口中的部分引脚相连,通过对GPIO口输出高低电平来控制小车的直行、90°左转弯、90°右转弯和180°掉头。


由于小车在转向时,轮胎会出现打滑现象,这样会影响小车的90°与180°的精确转向。为了让小车能在无黑线的情况下精确转向,本设计中采用hmc5883l电子罗盘作为小车的“眼睛”。一般的电子罗盘都会存在一定的偏差[10-11],通过校正以后可以使精度达到1°左右。


由于本设计中只是为了让小车转向,并非准确地测出与地理北极方向的偏向角,所以在校正后可直接使用输出数据。为了让小车转向时迅速且准确,设计了分段的转向运行方案,利用光电测速模块和20格码盘控制小车的运行。主要的程序流程图如图4所示。



为了让小车能在无黑线的情况下走出相对距离内的直线,在电机的控制中采用PID控制算法进行调速。根据测速系统反馈回来的当前电机速度和设定速度进行比较,将偏差作为新的输入量控制PWM信号的占空比,从而实现各个电机在单位时间内走的路程近似相等。PID控制算法原理如图5所示。



在记忆库建立完成后,智能小车的运行是从记忆库中读取已定路线在各点的状态值,最后实现小车按照规定路线行驶。主要的程序流程如图6所示,而从终点回到起点只需将记忆库的内容反向读取,并将左右转向取反。



4.4工作模式的控制


本设计中智能小车的运行有两种工作模式:第一是建立记忆库;第二是按照记忆库实现循迹。通过按键控制小车的工作模式,当环境发生改变时,只需通过按键设置成建立记忆库模式,即可完成记忆库的修改。


5系统测试结果及结论


通过对智能小车的测试,小车能将行驶过程中各个状态记录入库,完成了利用超声波避障和Linux文件系统的记忆库的建立,并且通过记忆库可实现小车按设定路径的循迹的功能。


本方案使得小车在不同的环境中只需人为地重新设置障碍,通过设置小车的功能模式让智能小车按障碍路线运行一次便可建立新的记忆库,不需要重新布线或更改程序。本设计进一步地扩展了智能小车的应用,增强了小车的环境适应性,并且可以扩展到智能家居和远程监控领域,具有较强的实用性。


关键字:ARM  Linux 引用地址:基于ARM和Linux的路径记忆循迹小车

上一篇:ARM处理器异常处理步骤
下一篇:对51转ARM的新人的建议

推荐阅读最新更新时间:2024-11-12 00:25

Nvidia、Arm CEO在2020开发者大会上都说了什么
综合编译自HPC与Techcrunch 不知是否巧合,十一期间,Nvidia和Arm都前后举行了开发者大会,Nvidia CEO黄仁勋前脚刚参加完GTC的主题演讲后,又与Arm CEO Simon Segars在Arm开发者大会上尽情畅谈,包括AI、数据中心、并购以及其他等等。 黄仁勋:Nvidia与Arm结合为了人工智能和超级计算的创新 黄仁勋承诺将保留Arm在剑桥的总部,同时将投资5200万美元打造英国最强大的超级计算机,他补充说:“两家公司合并后将产生新的创新,这对市场有利,并推动创新向前发展。” 黄仁勋特别强调:“我们喜欢Arm的商业模式。我们要保护它。” 双方还表示,合并后的芯片巨头将汇集推进人工智能
[半导体设计/制造]
arm开发板实现U盘自动挂载和卸载
原理先不讲,先给各位看官看一下实现的过程: 第一步: 配置内核Makefile 【2.6.22.6版本内核】 make menuconfig General setup ---- Configure standard kernel features (for small systems) ---- | | --- Load all symbols for debugging/ksymoops | | Include all symbols in kallsyms | | Do an extra
[单片机]
<font color='red'>arm</font>开发板实现U盘自动挂载和卸载
Micro2440 + Linux 2.6.39建立NFS
完成了Linux 2.6.39的移植后,接下来先建立个NFS文件系统,使用“构建最小根文件系统.doc”文档中建立的文件系统(201407090326_fs_mini.tar.bz2 http://pan.baidu.com/s/1gdorX9h)作为NFS根文件系统。此步骤可参考搭建NFS的相关文档,这里不再说明。 a) 修改启动参数后重启 # setenv bootargs 'mem=64M console=ttySAC0,115200 mac=00:60:6E:42:BA:80 root=/dev/nfs nfsroot=192.168.2.222:/opt/MICRO2440/3.File
[单片机]
基于ARM的嵌入式操作系统该如何设计
嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。 Linux做嵌入式的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第三,Linux是免费的OS,Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台而且性能稳定,裁剪性很好,开发和使用都很容易。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Token Ring(令牌环网)、光纤甚至卫星的支持。
[单片机]
基于<font color='red'>ARM</font>的嵌入式操作系统该如何设计
ARM入门笔记(1)
前言 如果您是一个单片机爱好者,当见到一款功能强大、性价比高的处理器时,一定会有一股很想掌握它、运用它的冲动,起码我是这样。5年前第一次接触单片机(标准的51系列),就被它强大的功能所吸引,而痴迷于它,一直到今天。在这期间的不同时期,各种增强型51,PIC、AVR,DSP和ARM 等不同程度的吸引和诱惑着我。有的已经玩过了,有的则没有,但很想玩的这股冲动一直存在心里,特别是对ARM。记得2002年我就知道了ARM这个东东,眼睁睁地看着它一天天的火热,但由于对其开发工具及开发过程的不了解等原因一直只处于认识的阶段,尽管也曾玩过ZLG的2104开发板!可能是ZLG团队做的太出色的原因吧(详细的教材与源码,还有非常方便的工程模板),没过
[单片机]
<font color='red'>ARM</font>入门笔记(1)
ARM汇编中的立即数
同事遇到这样一个问题: 在eVC编译出的汇编代码中我看到这样的语句: mov r2, #0xFF, 28 和 orr r2, r2, #0xB 这样得到的结果时 r2=#0xffb , 他试图更直接一点优化成一句:MOV r2,#0xffb 但是这样之后编译就出了问题:error A0092: no immediate rotate operand can be created: 4091 ------------------------------------我是无辜的分割线-------------------------------- 在 mov r2,#0xffb 这句中,不是MOV的用法出错,而是立即
[单片机]
基于ARM9的一种新型馈线自动化终端设计
引言 随着智能电网研究的兴起和城乡电网结构的不断改进,对配电网自动化提出了更高的要求。具有选择性、能快速切除故障、具备故障自愈能力的馈线终端(Feeder Terminal Unit,FTU)成为研究热点。参考文献中基于数字处理器DSP,参考文献中应用ARM与DSP分别开发设计了馈线自动化终端装置。 上述参考文献采用不同的处理器,使用不同的技术,设计了配电网馈线终端,但所设计装置存在着成本高、配置灵活性低和安装布线困难等问题。ARM微处理器具有较强的处理能力,运算速度快、性能高、功耗低、成本低、体积小,是馈线终端核心控制器件的首选。物联网技术是新一代信息技术的重要部分,具有广阔的应用前景,可以实现馈线终端数据无线通信。新型能源太阳
[单片机]
基于<font color='red'>ARM</font>9的一种新型馈线自动化终端设计
Rene Haas对话黄仁勋:独特的管理理念、系统创新体系以及AI的未来
《Tech Unheard》是一档由 Arm 首席执行官 Rene Haas 主持的科技访谈播客,聚焦行业内的变革力量,探索前沿技术与其背后的故事。首期节目邀请到英伟达的创始人、总裁兼首席执行官黄仁勋,两人通过深入对话,分享了从企业文化到人工智能的未来发展等多个话题。这不仅是一场关于技术的交流,更是一次对未来愿景的探索。 上一次Rene Haas主持与黄仁勋的对话还是在2020年,当时在Arm DevSummit大会上,作为主持人的Haas就与黄仁勋探讨了关于AI的问题。 彼时,黄仁勋表示,我们知道一个全新的计算世界即将到来。有人称之为边缘,有人称之为物联网。我们可以创造自主智能电脑,驾驶汽车,无人物流,快速结帐,保持交通
[半导体设计/制造]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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