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

4 系统软件设计

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

4.1 系统移植以及驱动程序

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

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

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

4.2 记忆库程序设计

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

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

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

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

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

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

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

4.4 工作模式的控制

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

5 系统测试结果及结论

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

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

linux循迹程序,基于ARM和Linux的路径记忆循迹小车相关推荐

  1. linux自动电梯设计,基于ARM与Linux的电梯控制系统设计与实现

    摘要: 如今,我国电梯市场销售占据世界电梯销售的重要份额,随着我国城市建设的快速发展,建筑的高度以及数量获得显著突破,对于电梯的依赖更加明显与强烈.电梯产业蓬勃发展的同时,人们对于电梯的安全,稳定,速 ...

  2. OpenCV基于ARM的Linux系统的交叉编译

    OpenCV基于ARM的Linux系统的交叉编译 基于ARM的Linux系统的交叉编译 先决条件 获取OpenCV源代码 获取最新的稳定OpenCV版本 从Git存储库中获取最新的OpenCV 构建O ...

  3. 基于Arm板linux嵌入式系统RS485串口读写通讯

    最近在做基于Arm板linux嵌入式系统的RS485串口读写通讯首先参考 http://bbs.chinaunix.net/thread-3650543-1-1.html上的文章,该文章写道,读的时候 ...

  4. [转载]基于ARM的linux内核裁剪与移植

    基于ARM的linux内核裁剪与移植 http://bbs.elecfans.com/forum.php?mod=viewthread&tid=185020  wutaimin( 楼主 ) 2 ...

  5. arm linux考勤,基于ARM与Linux员工刷卡考勤系统毕业论文.doc

    PAGE 北华航天工业学院毕业论文 毕业设计报告(论文) 报 告 题 目 : 基于ARM与Linux的 员工刷卡考勤系统 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在 ...

  6. arm linux考勤,定稿毕业论文_基于ARM与Linux的员工刷卡考勤系统喜欢就下吧(范文1)...

    <毕业论文_基于ARM与Linux的员工刷卡考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文_基于ARM与Linux的员工刷卡考勤系统(喜欢就下吧)> ...

  7. linux 网络对讲,基于ARM与Linux的全数字化可视对讲系统的设计与实现

    摘要: 在信息化飞速发展的今天智能家居系统已越来越多的被人们所接受,从楼宇可视对讲到紧急情况报警,再到远程家电控制,智能家居系统在人们的日常生活中扮演着重要的角色.传统的可视对讲系统都是基于模拟音视频 ...

  8. arm linux嵌入式网络控制系统,基于ARM uCLinux的网络控制系统设计与实现

    引言    随着网络和通信技术的发展,嵌入式系统现已进入高速发展阶段.并在社会各个领域得到了广泛的应用.本文介绍了一种采用ARM+uCLinux作为开发平台.实现基于TCP/IP的远程系统监控.从而取 ...

  9. arm linux 工控,基于ARM和Linux通用工控平台设计 - ARM - 电子发烧友网

    交叉编译 交叉编译就是在一个平台上生成另一个平台上的可执行代码.所谓平台,实际上包含两个概念:体系结构及操作系统.根据上述建立的开发环境,目标平台是基于ARM体系结构的运行嵌入式Linux操作系统,而 ...

最新文章

  1. 【openfst样例1】Tokenization
  2. DARPA发布产业振兴计划,继承摩尔智慧
  3. s2sh乱码一个小处理(新手按流程走)
  4. SpringBoot+Spring Security验证密码MD5加密
  5. Hadoop 1.2.1 集群安装一
  6. android应用APP中的页面响应时间测试
  7. Spring使用JDBC访问MySQL数据库
  8. java redis的应用_Redis-Java 交互的应用
  9. 不会python怎么了?靠敏捷BI和数据可视化,照样去阿里腾讯
  10. 你为什么当不了高管?几张图看懂高级经理人与普通管理者的区别
  11. 蓝桥杯 算法提高 一元三次方程求解
  12. php ip地址管理系统,phpIPAM – 免费开源的IP地址管理工具,重量级
  13. What are FeliCa and PaSoRi?
  14. Web应用网站CDN加速访问技术原理
  15. 怎么用dw做html网页模板,使用Dreamweaver制作网页的20个技巧
  16. Python练习数据结构笔记
  17. kafka集群如何内外网均可访问
  18. intel RealSense摄像头比较
  19. 浏览器的判断和Window系统是64位还是32位的判断
  20. Java配置文件找不到指定,使用@ContextConfiguration注解后,提示找不到配置文件

热门文章

  1. 高博视觉SLAM十四讲--罗德里格斯公式推导
  2. oracle怎么备份bak文件,[转载]如何将sqlserver的bak文件中的数据还原到oracle数据库中...
  3. 小米电视html插口,小米电视4s背面接口有哪些
  4. 耗时两周的P2PQQ终于完成了!!!
  5. 『转】山世光导师致报考研究生的一封信
  6. 还不错的星座运势小程序源码下载+云开发无需服务器
  7. VMware安装ubuntu kylin
  8. 计算机系统程序文件扩展名,怎么显示电脑文件扩展名
  9. 俞军产品方法论读书心得笔记
  10. delphi 向窗体发送一个字符串_IoT Hub入门(2)模拟设备发送设备到云(d2c)的消息