李佳佳,李智,管四海

(西安电子科技大学 机电工程学院,陕西 西安 710071)

摘要:针对现有室内定位技术模型复杂、成本高等问题,设计了一种基于路径规划的室内小车定位系统。该系统的主控芯片选用STM32F103ZET6,偏角测量模块基于HMC5883L,障碍处理模块选用HCSR04;另外,采用极坐标的表示方法,给定室内初始位置和目标点,测出各目标点相对于初始位置的偏角和距离,依据相对偏角和相对距离规划小车的行走路径。实际环境测试表明,该系统不仅能使小车准确到达目标点,而且还能有效避障。

关键词:室内定位;路径规划;极坐标

中图分类号:TN96文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.07.025

引用格式:李佳佳,李智,管四海.基于路径规划的室内小车定位系统[J].微型机与应用,2017,36(7):84-87.

0引言

*基金项目:国家自然科学基金(61673310)GPS定位系统由于其快速、高效、全球覆盖等特点,被广泛地应用于汽车导航、工程测量、飞机导航等领域。而在室内,由于建筑物的遮挡,GPS的信号会减弱,并且精度满足不了室内定位的要求。现有的室内定位技术主要有RFID、视频、ZibBee[1]、蓝牙[2]、WLAN[3]等,但由于室内物体间距离较短,信号存在反射、衍射和绕射等非直线传播的情况,再加之现有设备分辨率不足,使得室内定位误差较大[2]。

在现有的室内路径规划定位系统中,大多使用栅格构图法和路标法[4]进行室内定位,其中栅格构图法是在机器人行走过程中,实时构建地图并规划路径,但在定位过程中,需要搜索的空间范围很大,若没有很好的简化算法,实时性很难保证。路标法的定位中,若有一个路标出现故障,则系统的整体稳定性就会受到很大的影响。本文采用二维极坐标的方式确定位置,根据各目标点的位置,事先为智能小车规划好行走路线[5],避免了复杂算法的优化和参照物的使用,还能有效避障。本系统具有设计简单、易操作、成本低的特点,可以应用于餐厅服务机器人的设计,以机器人代替人工送餐,给人们的生活带来便利。

1系统整体设计

系统整体结构设计如图1,流程如下:

图1基于路径规划的室内定位系统结构框图首先需要事先测量小车的起点与各目标点的距离ρ1,ρ2…ρn和角度θ1,θ2…θn,并将坐标表示为(ρ1,θ1),(ρ2,θ2)…(ρn,θn);然后利用码盘和光电对管测出固定占空比下的车轮转速,并通过LCD1602实时显示,从而通过控制时间来达到控制小车前进指定距离的目的。利用HMC5883L电子罗盘测量角度,将电子罗盘的测量数据通过I2C总线传输到主控芯片STM32F103ZET6,主控芯片将传感器采集的数据进行分析处理,进而控制电机转动使车前进。在此期间,通过舵机带动HCSR04超声波模块不断地转动测距,当测得距离小于某一设定值时,控制小车停止,并且继续不断检测距离。当撤去障碍物,再按事先规划的路径继续前进,到达目标点。

2硬件设计

2.1主控芯片

该系统的主控芯片选用STM32F103ZET6,此芯片作为32位ARM微控制器,有着比16位、8位处理器更强的数据处理能力、更丰富的外设接口。在该系统设计中,由于STM32系列微控制器的I2C接口稳定性较差,因此采用IO口模拟I2C总线的方式实现稳定的信息传输。选用PB6和PB7模拟I2C总线的SCL和SDA,实现了与HMC5883L模块的稳定通信。

2.2HMC5883L模块

霍尼韦尔HMC5883L是一种高集成模块,选其为偏角测量模块,是因为其具有高达1°~2°的测量精度;同时采用I2C数字接口通信,高效、稳定,程序设计简单。需要特别注意的是:

(1)为防止干扰,使用时应避免该模块直接与金属物体接触;

(2)在电磁干扰较大的室内环境,要对该模块进行校正[6],以确保测量的准确;

(3)由于其测量灵敏,在设置转角时,可以用一个小范围的值代替特定值。

该系统在设计时,向小车后方加装木板,将HMC5883L模块固定于木板上,以降低干扰,模块上的x和y轴即为在水平面上建立的二维坐标系。下面给出电子罗盘返回角度θ的计算,其中x和y表示读出HMC5883L寄存器中的值。

经过此运算后,将电子罗盘测得的数据范围转化为0°~360°。即在0°时,x轴所指向的方位为南。

2.3电机驱动设计

电机驱动模块电路设计如图2,驱动芯片采用L293,一个芯片可以驱动两个直流电机,简化了系统电路的设计,同时,在引脚电平低于一定水平时,芯片停止工作,对电源起到了保护作用。电机调速方式为PWM方式,即在周期固定的前提下,通过控制输出脉宽的不同来进行速度的调节。

2.4测速模块

测速模块电路设计如图3。其中,光电对管选用ITR9608,在系统设计时,将码盘固定在电机上,并置于光电对管的凹槽中,车轮带动码盘转动,将PWM的信号传输至主控芯片,从而计算车轮的转速,并通过LCD1602实时显示。

设车轮速度为v,直径为d,光电码盘的齿数是n,即车轮转动一周的计数次数为2n,单位时间高低电平的变化次数为t,则车轮速度:

2.5超声波避障模块

该系统将超声波和舵机通过云台结合起来,放在车体的最前端,通过转动舵机获取小车各个方向的距离值,进行障碍处理。在对舵机的控制中,用不同宽度的脉冲信号,对应舵机转动的不同角度。选用的HCSR04超声波模块测量范围可达2 cm~400 cm,满足该系统对避障精度的要求,并通过高电平的持续时间计算障碍物的距离,即:

距离=(高电平时间×声速)/2(3)

3软件设计

软件设计流程如图4所示,其主要部分包括系统初始化、采集角度数据、角度的判断、避障等。系统选用Keil uVision5开发工具,选用C语言编程。其中,为了使智能小车在行走的同时检测障碍,设计了10 ms计数法,同时定义num变量,保存测距函数执行的次数,从而达到记录距离的目的。在避障函数中,控制舵机左转、居中、右转,不断地循环,达到多方位检测距离的目的。具体程序设计如下:

(1)先对系统的外设资源初始化,然后判断当jiaodu≠预设角时,执行右转函数Turn_Right(),直到jiaodu=预设角,执行停止函数Stop(),并使得标志位set=1。

jiaodu=read_HMC5883L();

if(jiaodu>=5&&jiaodu<=355)//预设角度为0

{ while(jiaodu>=5&&jiaodu<=355 )

{ Turn_Right();

jiaodu=read_HMC5883L();

}

Stop();

set=1;

Delayms(2000);

}

(2)当set=1时,表明已找到指定方向,执行直行函数Go(),并延迟适当时间,该时间由目标距离和车速决定。

if(set==1)

{set=0;

just_car();//前进中避障

Stop();

}

(3)接着获取角度值,判断是否为下一目标点所设角度,不断循环,直到最后一个目标点停止。

(4)在直行过程中,用TIM2定时器产生1 ms时基信号,每隔10 ms,执行一次距离检测函数Get_distance()和障碍处理函数Handle_bar()。并定义一个num变量用来计数,每过10 ms,num++。

void just_car(void)

{int num=0;

while(num<300)//延迟3 s

{if(count_1ms>10)

{ count_1ms=0;

Get_distance();

Handle_bar();

num++;

}

}

}

(5)当Get_distance()返回值小于10 cm时,则认为前方存在障碍,执行障碍处理函数Handle_bar()。

void Handle_bar()

{if(juli_cm < 10)

{ while(1)

{

障碍处理

……

}

}

else

Go();

break;

}

(6)当距离检测函数Get_distance()返回值大于10 cm时,则认为障碍已经撤走,此时程序通过num中保存的值可以计算出剩余要走的路程。

(7)返回(3)。

4实际测试

为了测试该系统能准确定位且能有效避障,设计实验如下:

在室内环境,给定初始位置和各目标点,并假定预设角为0°,即正南方向,对小车进行直行和转弯定位测试。为了更易观察实验效果,设定直行距离为50 cm,转角为90°,避障距离为10 cm。设置预设角时,由于电子罗盘的灵敏度较高,因此用一定角度范围代替具体的角度值,且在此实验中角度范围为10°。测试中的实际目标点分布如图5示:O表示起点,A、B、C分别为目标点。

首先,将小车置于O点寻找预设角;然后前进50 cm,右转90°,到达点A;接着前进50 cm,再右转90°,到达点B;最后前进50 cm停止于点C。在小车前进过程中,将手挡在小车的前方作为障碍物,当手与小车距离小于10 cm时,小车停止前进,同时舵机带动超声波模块左右转动测距,若障碍一直存在,则会循环检测距离,直到将障碍物撤去,此后小车继续前进剩余距离。实验中测量其运行时距离与角度的对应关系,并将实际测得的轨迹与理想轨迹进行仿真,结果如图6。从图6中可知,基于路径规划的室内小车定位系统,能够在有效误差范围内到达各目标点,完成室内定位任务。

参考文献

[1] 何海平,郭杭,方爽.基于模糊聚类的ZigBee室内定位系统设计[J].电子技术应用,2016,42(5):71-77.

[2] 陈国平,马耀辉,张百珂.基于指纹技术的蓝牙室内定位系统[J]. 电子技术应用,2013,39(3):104-107.

[3] 刘洺辛, 孙建利. 基于能效的WLAN室内定位系统模型设计与实现[J]. 仪器仪表学报, 2014, 35(5):11691178.[4] 宋婷.室内移动机器人路径规划与定位技术研究[D].西安:西安电子科技大学,2011.

[5] JARVIS R. Distance transform based path planning for robot navigation[M]. Singapore:World Scientific, 1993.

[6] 刘诗斌,冯小毅,李宏.基于椭圆假设的电子罗盘误差补偿方法[J].传感器技术,2002,21(10):28-33.

c语言小车路径规划算法,基于路径规划的室内小车定位系统相关推荐

  1. [运动规划算法]基于飞行走廊的轨迹优化

    文章目录 简介 一.介绍 二.原理 飞行走廊生成 三.项目演示 参考 简介 Btraj是一个在线的四旋翼无人机的运动规划框架,主要用于未知环境中的自主导航.基于机载状态估计和环境感知,采用基于快速行进 ...

  2. [运动规划算法]基于似然场的快速避障算法

    文章目录 一.简介 二.原理 1. 问题描述 2. 概率模型 3. 局部概率 4. 全局概率 5. 方法实现 三.项目演示 参考 一.简介 这是一种在复杂环境中实现快速自主飞行的规划方法.通常,在复杂 ...

  3. 路径规划算法(0) -路径规划与 Dubins, Reeds-Shepp曲线的python实现

    参考资料: http://planning.cs.uiuc.edu/node821.html 一般常见的路径规划算法, 如 Dijkstra, A*, BFS算法, 重点关注可达性, 搜索速度和效率上 ...

  4. 样条曲线_Apollo规划算法基于样条曲线的平滑分析(一)

    欢迎关注微信公众号<不想做科学家的工程师不是好码农> 样条曲线的思想是把一个长线分成N段,每段用一个多项式去表示,本文为了简化公式书写,示例中均使用三次多项式表示,实际算法中阶数根据需求不 ...

  5. C语言实现zbuffer消隐算法,基于图像的重建,image-based reconstruction,音标,读音,翻译,英文例句,英语词典...

    摘要 在数控加工图形仿真验证中,传统的图像空间离散方法提供的观察分析手段较少,限制了它的应用:而物体空间方法计算量大,不具有实时性.介绍一种在基本图像空间离散法的基础上对数据结构和算法作了改进的方法, ...

  6. c语言实现的optics算法,基于深度学习的光学系统设计方法

    AI开发平台ModelArts ModelArts是面向开发者的一站式AI开发平台,为机器学习与深度学习提供海量数据预处理及半自动化标注.大规模分布式Training.自动化模型生成,及端-边-云模型 ...

  7. 自动跟随机器人:一种简易的自动跟随方案,自动跟随小车、自动跟随平衡小车、STM32、基于超声波的自动跟随小车

    目的:一种廉价的跟随方案,让大家都能够参与进来,技术难度不大,一些人也能够DIY一些属于自己的"跟随"机器人!并不是要做工业应用什么的.只是做出来玩玩~ / 1 / 介绍 先看视频 ...

  8. 树莓派智能小车python论文_基于树莓派的自动驾驶小车,利用树莓派和tensorflow实现小车在赛道的自动驾驶...

    self_drive 基于树莓派的人工智能自动驾驶小车 Artificial intelligence automatic driving car based on raspberry pie git ...

  9. 智能避障小车学习笔记(基于Wemos的避障小车)

    智能避障小车 一.开发环境及硬件 ArduiNo平台 网盘地址:https://pan.baidu.com/s/1w3MHxkCUBOlbqKRxRhlwbQ 提取码:o6gk 硬件 WeMos D1 ...

  10. vrep小车避障算法_[番外1]Vrep小车机械臂抓取

    插一句,大家做仿真的时候一定要注意仿真的目的:仿真是为了尽可能的模拟实际的状态,使得得到的观测数据对实际实验具有指导作用.仿真并不是为了看起来像,而是要经过合理的抽象,真正的使仿真结果指导实际使用. ...

最新文章

  1. Directive全面分析
  2. python入门(一):进入python的交互模式、pip的使用和数据类型
  3. 07-阻塞赋值与非阻塞赋值原理分析——小梅哥FPGA设计思想与验证方法视频教程配套文档...
  4. NTP时间同步服务器报错:no server suitable for synchronization found
  5. ps怎么清屏_黑洞PS大赛刷屏!最后一张扎心了……
  6. php 5 在虚拟主机上安装,Apache多虚拟主机多版本PHP(5.2+5.3+5.4)共存运行配置全过程...
  7. stk在计算机仿真中的应用_学习电路仿真:proteus电路仿真软件在ARM中的应用解析...
  8. iPhone 13 Pro手机壳曝光 网友:更丑了
  9. PCA 主成分分析Principal components analysis
  10. SpringCloud (五) ——Feign远程调用
  11. C 判断 —— switch语句(输入的年份判断是否为闰年,根据输入的月份判断这月有多少天)
  12. 标准化建站开拓者王征,教你搭建一个有用的品牌官网
  13. HTML制作诗词,利用 html2canvas 做个简单的诗词卡片生成器
  14. python输入的光标变成了横线_光标变成下划线
  15. 仅以此贴,献给兄弟们的《光辉岁月》
  16. ApacheCN Python 译文集(二)20211110 更新
  17. ITS_Android_S 重构的梳理
  18. java opengl 图片文字_如何通过opengl显示相机预览
  19. va_list 使用总结
  20. SLAB SLUB

热门文章

  1. MATLAB希尔伯特Hilbert变换求包络谱
  2. 山东大学软件学院概率论与数理统计(考试)——期末考试回忆版
  3. 图解通信原理与案例分析-12:无线调幅广播AM案例--模拟幅度调制与点对多点广播通信详解
  4. 人机工程学产品设计案例_【设计案例】一组电子产品设计的合辑
  5. 关于写的Java书籍进展
  6. 数据挖掘与决策支持系统的关系
  7. mysql8.0怎么设置中文版_mysql 8.0.21免安装版配置方法图文教程
  8. 监控系统服务器地址是什么,监控系统服务器ip地址
  9. handlersocket php,mac编译安装php的handlersocket扩展
  10. FastStone Capture—截图功能