基于GPS/ICM 路径规划的智能循迹小车

2023-11-14 08:58刘佳明史亚宁刘明宇方增斌王昊天
电子制作 2023年20期
关键词:循迹舵机编码器

刘佳明,史亚宁,刘明宇,方增斌,王昊天

(华北理工大学,河北唐山,063210)

0 引言

智能循迹是基于自动引导机器人系统,用以实现小车自动识别路线,以及选择正确的路线。智能循迹小车是一个运用计算机控制、传感器、单片机、电机驱动及自动控制等技术来实现按照预先设定的模式下,不受人为管理时能够自动实现循迹导航的高新科技。该技术已经应用于汽车制造业、仓储业,食品加工业等多个行业,其中汽车制造行业中的无人驾驶技术就体现了此性能。

随着人工智能技术和互联网科技的发展,无人驾驶技术迅速发展提升。研究人员预测:到2025 年,人类将看到大约800 万辆无人或半无人汽车在路上行驶无人驾驶正在如火如荼地展开着,百度和沃尔沃共同研发L4级别无人电动车,特斯拉的Autopilot,奥迪的Traffic Jam Pilo等等。世界上最主流的无人驾驶技术都是基于激光雷达、摄像头视觉、GPS+IMU 的方案。

本次设计的小车很好地应用了当今社会的卫星定位系统,同时以MM32 作主控芯片,充分利用最小系统板的便捷之处,将单片机理论融入智能小车的各个模块应用,为无人驾驶领域提供一种新的思路并且有助于推动单片机技术的发展[1~3]。

1 智能车控制系统概述

智能车控制系统由测速模块、简易惯导模块、PID 控制模块、遥控控制模块、MM32 控制单元、电机控制单元、舵机控制单元组成[4]。其中,通过GPS 和ICM 组成的简易导航模块用来控制小车自身的方位;测速模块是编码器通过系统定时中断实时返回电机转速;PID 控制模块用来调节电机转速和舵机旋转角度;遥控控制模块通过连接主板,可以远程控制智能车的启停,以防紧急情况的发生;MM32 控制单元是整个控制系统的核心,负责系统的数据处理,中断响应以及串口通信等功能;电机控制单元可以通过PWM 占空比调节来控制智能车的速度;舵机控制单元也通过PWM调节控制智能车自身角度;设计中,GPS 通过串口中断实时传回智能车当前经纬度数据,ICM 通过定时器中断实时获得智能车自身方位角信息,见图1。

图1 智能车系统构架

2 控制系统硬件设计

在硬件设计中,外设包括编码器、GPS、ICM 等均通过串口通信方式与单片机进行数据交换。在本设计中,编码器需要主板提供3.3V 标准电压,并且通过PB4 和PB6获取电机速度信息,其中PB6 为编码器方向引脚;电机通过PA5 和PA6 引脚和主板连接,PA5 引脚控制电机转动的方向[5],PA6 引脚控制主板输出给电机的PWM;主板通过PA15 引脚给舵机输出PWM,控制舵机旋转的角度;GPS通过PC11 和PC10 引脚与主板连接;ICM 通过PB13 与PB15 引脚与主板连接。本设计的硬件原理图如图2 所示。

图2 智能车硬件原理图

2.1 GPS 模块

GPS 模块上有电源供电和通讯接口、复位按键、定位指示灯、天线接口等主要模块。按下GPS 复位按键后,模块会重新冷启动;当GPS 定位成功后,GPS 模块上的PPS等(定位指示灯)会每秒闪烁一次;本GPS 模块上的天线为双频天线,配以双频GPS 使用,可以接收两个频率的卫星信号,用于定位的卫星数量也相较于单频GPS 有一定的提升,定位也要比单频稳定一些。

GPS 模块输出的信息主要有xxGGA、xxGSV、xxRMC、xxGLL、xxGSA 等类型的数据。其中最重要的是xxRMC 和xxGGA 两种类型的数据,通过编程可以对这两个语句进行解析,可以得到位置、速度、定位状态、高度、时间、航向角、用于定位的卫星数量等重要信息,本次设计中获取用于定位的卫星数量是为了保证定位精度,在定位卫星达到23 或24 颗时,定位效果最好;通过GPS 解析获得的航向角和位置具有很高的精度,可以作为PID控制模块的设定值。

2.2 ICM 模块

ICM20602六轴陀螺仪模块可以获得六个方向的位置。在本次设计中,由于小车在平面运动,所以只涉及x 轴和y轴的方向角。通过定时器中断实时读取ICM 的角度,定时器中断获取数据时间为5s。通过解析ICM 获得的方向角,可以作为PID 实时采取的值,在方向环中,通过实时采集的值与GPS 得到的设定值作对比,实时控制方向。

2.3 其他功能模块

其余功能模块主要还包括编码器、TFT 屏幕、电机、舵机以及蜂鸣器。通过编码实时获取电机转数,设定定时器6中断时间为100ms;在编写程序时,将GPS 解读到的经纬度信息、距离以及方位和ICM 获取的自身方位角显示在屏幕上,方便实时观测信息。

3 控制系统软件设计

系统整体设计方案为:主板供电后,首先进行初始化程序(包括系统函数初始化和系统功能模块初始化),初始化程序完成后,智能车进入待机模式,此时可以通过TFT 屏幕检测各个模块有没有正常启动。若所有的模块确认正常启动,则按下遥控按钮,智能车启动,程序不断在主函数中循环,直至目标点迭代到达最后一个点,迭代结束时,程序运行结束,此时智能车也完成预定轨迹的循迹,见图3。

图3 程序系统运行流程图

3.1 系统初始化程序

系统上电之后,首先进行的是初始化程序,将各模块初始化启动。首先需要初始化芯片时钟,设定时钟工作频率为120MHz。之后是功能模块的初始化:(1)电机和舵机初始化:初始化主板输出给电机和舵机PWM 的通道,并设定初始频率,并输出初始占空比。(2)串口初始化:需要将需要与GPS 通信的串口进行初始化,设定串口波特率以及发送接收引脚。(3)外设模块初始化:给GPS、ICM、编码器初始化,使其处于工作状态。

3.2 简易惯导模块程序

简易惯导系统是GPS 与ICM 的组合,GPS 可以实时获取智能车的位置信息,ICM 可以实时获取自身的方向角。本文设计的主控方案是通过应用GPS 加ICM 的组合惯导来控制智能车的方向。GPS 通过采集坐标经纬度计算初始的方向角,将数据保存下来传递给单片机。ICM 可以获取小车自身实时的方向角,但是大多数情况下使用ICM 都会存在零点漂移现象,这时就需要通过滤波技术对ICM 检测到的值进行滤波处理[6],再和单片机保存的方向角作比较,通过PID 控制,使得小车的方向角保持在规定值。

欲使智能车按照规定的路径自主导航,首先需要采集定位预设轨道位置信息。需要将GPS 得到的数据转换为GCJ-02 坐标系下的经纬度,由于GPS 直接使用的坐标系数WGS-84,所以需要在程序中加入数据转换程序,由此得到的坐标可以直接在百度地图中找到,不会产生较大偏差。ICM实时检测智能车自身的方位角,并将此数据也记录下来。

3.3 距离检测程序

通过提前采集轨道位置信息,可以得到两个一维数组。第一个数组保存轨道的纬度信息,第二个数组保存轨道的经度信息。两个数组同序号对应轨道同一位置。通过程序内的算法,可以得到任意两点之间的距离。而距离检测可以实现目标点的迭代,先计算好上一次采集点位置和目标点位置之间的距离,智能车通过GPS 实时采集行驶位置的经纬度,计算与目标点之间的距离。当距离到达要求时,迭代目标点,将前一次的目标点变为此次的起始点,下一个点变为目标点。如此重复直至目标点正好为最后一个点,迭代结束,完成距离检测,见图4。

图4 基于距离检测的目标点迭代

3.4 PID 控制程序

PID 控制主要是对系统偏差进行比例、积分、微分三种操作并线性组合成控制量,以减小系统误差,提高系统响应速度和响应效果。经典PID 控制又分为位置型PID 和增量式PID。

(1)比例控制:控制信号与误差成正比(误差越大,控制信号越大,控制量越强,改变现状的能力也就越强),故当目标距离期望较远时,误差较大,控制量也较大,可以使得目标快速接近期望,但问题是当目标接近期望时误差会变得很小,此时控制量也会很小,这又使得目标只能处于接近但始终不能真正达到期望的情况。

(2)积分控制:累积误差并直接加到控制量上。当稳态误差存在时,误差积分就会变大,同时控制量就会增大。

(3)微分控制:计算当前误差的变化率并加至控制量。当外界发生一个很强的干扰时,目标受影响程度就会很大,这时就会很快的偏离期望,而微分控制的应用就是让目标偏离期望后给它一个很大的控制量,让其也能很快的返回稳态。

3.4.1 电机PID 控制程序

电机PID 控制中,需要预先设定电机工作的转速,通过测设找到合适的编码器转数来达到控制目的。在控制中,需要电机工作在一个稳定的转速上,所以PID 的设定值为设定转速对应的编码器转数,然后通过定时器中断实时返回的编码器转数,设定值与返回值作差,将此偏差信号输入到PID 中,通过PID 控制实现电机转速控制。

3.4.2 舵机PID 控制程序

通过惯导系统,可以获得两个方向角,一个是通过GPS 得到的两个目标点之间的角度,另一个是通过ICM 实时检测得到的角度[7]。将通过GPS 得到的数据计算得到的两个目标点之间的角度作为预设值,ICM 角度作为反馈值,作PID 控制,控制舵机旋转相应的角度,在舵机控制中,采用增量型PID 比位置型PID 有更好的控制效果,这是由于舵机旋转角度是一个较小的值,而且每次调节过程中需要调节的角度也较小,是一个平缓的调节,所以增量型PID 调节有更好的效果,见图5。

图5 舵机PID 控制原理图

4 总结

经过对MM32 控制下智能车的调试与改进,该智能车可实现自动循迹,速度调控、导航定位等一系列智能化功能。本设计可以为无人驾驶领域甚至机器人领域提供一个全新的思路,在简易组合惯导的作用下,智能车可以实现自循迹,良好的完成控制任务。

猜你喜欢
循迹舵机编码器
基于DFT算法的电力巡检无人机循迹检测系统设计
含齿隙弹载舵机的全局反步模糊自适应控制
基于单片机的智能循迹小车的设计
基于FPGA的同步机轴角编码器
基于dsPIC单片机的飞艇舵机控制实现
智能差分循迹小车设计
基于高速同步485总线通信的多通道舵机控制器设计
基于PRBS检测的8B/IOB编码器设计
基于MC9S12XS128处理器的智能循迹小车分析研究
JESD204B接口协议中的8B10B编码器设计