无人车控制系统设计
实验题目:无人车控制系统设计
1. 课程简要信息
课程名称:单片机装调与实验(实验课程名称,或含实验的理论课程名称)
课程学时:64学时
项目学时:24学时
适用专业:物联网、通信、集成电路等电类专业
学生年级:大二下
2. 实验内容与任务(与“实验过程及要求”合并)
利用实验室自主开发的UWB自适应算法,调试好定位设备,根据获取的位置坐标,开展实验。
设置小车目的位置(至少 2 个),与定位设备通信确定自身位置,运行至预设位置, 如果 2 个位置的顺序错误则报警,行驶至危险区域报警。本实验项目可广泛应用于工厂中通过定位实现物料配送车辆的实时追踪以及车辆位于危险区域时的报警系统,可以得到车辆运行轨迹与当前位置。分解任务内容如下:
1)利用 stm32 单片机,L298N 设计至少 2 驱动小车,实现前进、后退、转弯、停止等功能。
2)能够通过无线设定小车的目的位置;方案可选择 wifi 或者蓝牙。
3)利用调试的定位设备(定位精度2D<18cm,3D<30cm),获得坐标,按照预设的坐标位置行驶到特定的货架.
4)输出能够在小车进入危险区域或进入错误位置时能够发出警报,配送的目的地要准确。
5)完成图形界面设计(GUI),行驶的轨迹可查验。
6)提高功能:采用增量PI控制器进行速度控制。
3. 相关知识及背景(限 150 字)
这是一个运用数字和模拟电子技术解决现实生活和工程实际问题的典型案例,需要运用传感器及检测技术、模数信号转换、数据显示、参数设定、PWM 控制及参数设定等相关知识与技术。方法。并涉及位置测量精度、补偿反馈,硬件及软件设计等工程概念与方法。。
4. 实验环境条件
项目实施需要实验资源,包括实验装置功能、实验仪器设备、设计软件工具、主要电子元器件等。
该实验具有定位、小车设计、上位机设计、语音报警等功能。提高部分为:解决算法精度问题。
具体内容包含:
(1)设计电路,规划设计一个 2 驱小车,PCB 制作,在实验室制作 PCB 并焊接元器件,搭建小车。
(2)调试实现实时定位:使用定位标签与定位基站等进行定位实验,要求能够
实时显示定位坐标。
(3)软件设计:实现小车由源位置到目的地行驶,出现错误顺序时有相应的提示,出现异常定位坐标、轨迹时进行语音报警。
(4)提高部分:可进一步提高算法精度,如自适应、加入滤波操作等,也可以改进行走路线。
实验设备:stm32、定位手环、定位标签、定位基站、示波器、数字表等,设计软件 keil、python 等
5. 教学目标与目的(限 150 字)
在较为完整的工程项目实现过程中引导学生了解 UWB 定位技术、单片机技术,实现方法的多样性;引导学生根据现有条件使用定位套件、设计电路、使用单片机对程序进行调试,构建测试环境与条件,并通过测试与分析对项目作出技术评价。充分锻炼软硬件结合的综合工程实践能力,培养学生的团队协作能力和工程创新精神。
6. 教学设计与实施进程
本实验的过程是一个比较完整的工程实践工程,需要经历学习研究、方案论证、系统设计、实现调试、测试标定、设计总结等过程。在实验教学中,学生分组实现,每组 3 人,各有任务又团结协作完成同一个项目,应在以下几个方面加强对学生的引导:
1)学习定位的基本方法,了解定位基站的功能和定位设备的使用方式,根据实际情况的不同选择相应的处理方案。
2)学习单片机控制逻辑,掌握对定位结果的判断、报警控制方式,了解蓝牙通信在单片机中的实现过程工作。
)在调试中,要充分考虑误差来源,如代码中的延时、电路等多个方面
高部分:使用编程语言对定位情况、报警情况等做出系统的报告。
-
在实物制作阶段,介绍实验室转制板设备的使用,鼓励学生自己制作相关模块。
-
在团队合作方面,由于项目涉及软件与硬件设计、多个定位套件的使用、单片机编程设计等,注意分工协作、团队协调要求较高。制作要注意学生设计的规范性,如增强代码可读性,注重定位套件使用的规范性、语音报警系统的灵敏度等。
-
在实验完成后,可以组织学生以项目演讲、答辩、评讲的形式进行交流,了解不同解决方案及其特点。
在设计中,要注意学生设计的规范性;如系统结构与模块构成,模块间的接口方式与参数要求;在调试中,要注意定位基站、定位套件使用对系统指标的影响,电路工作的稳定性与可靠性;在测试分析中,要分析系统的误差来源并加以验证。
7. 实验原理及方案
1) 系统结构


图 1 系统结构
图 2 小车设计图
2)实现方法
将三边定位及 TOF 算法在定位设备中调试成功之后,设计小车,主要由通信模块,电机驱动模块,显示模块三部分组成。定位模块由 T0、T1 等手环标签到 A0、A1、A2、A3 基站计算飞行时,基站设在实验室高度高于 $1 , 8 *$ 位置,测试阶段可用三脚架固定基站,每次测试基站位置一致。待测试完成将其固定于墙面等不易移动位置,即四个基站三维坐标确定。
(2) 实现方案
1)定位方案
本设计采用计算移动点 T 与 4 个基站(A0、A1、A2、A3)的距离,再计算 T 点坐标,取均值,得到最终移动点坐标。即以基站 1 组(A0、A1、A2)、2 组(A1、A2、A3)、3 组(A0、A2、A3)、4 组(A0、A1、A3)获得4 组移动点位置,再取 4组移动点的平均值作为最终移动点输出。
如图 3 中三边定位算法,得出公式:
$$ \left{ \begin{array} { l l } { ( x - x _ { 0 } ) ^ { 2 } + ( y - y _ { 0 } ) ^ { 2 } + ( z - z _ { 0 } ) ^ { 2 } = { d _ { 0 } } ^ { 2 } } \ { \qquad \ldots \qquad } \ { ( x - x _ { 3 } ) ^ { 2 } + ( y - y _ { 3 } ) ^ { 2 } + ( z - z _ { 3 } ) ^ { 2 } = { d _ { 3 } } ^ { 2 } } \end{array} \right. $$
由公式(1)可知,若移动点到各基站距离 $d _ { 0 }$ , $d _ { 1 }$ , $d _ { 2 }$ , $d _ { 3 }$ 已知,即可计算移动点坐标。

图 3 三边定位算法
移动点到各基站距离 d 通常用双边测距(Two Way Ranging,TWR) [14-15],标签发起测距信号(为 UWB 的冲击脉冲),基站收到信号后发送一个响应,标签接收响应信号后完成测距,发送和接收都要记录时间,则可以计算传输时间差,通过时间差与光速乘积,距离 d 即可计算得到。
2)小车设计方案
通信模块:stm32 通过 PA9,PA10 连接蓝牙模块,蓝牙模块接收上位机的坐标信息。上位机坐标信息首位为标志位,标志位为’p’的是定位标签坐标,单片机接收后更新自身坐标信息;标志位为’x’的是目的坐标,单片机接收后进入子程序,运动到目的坐标。
电机控制模块:stm32 通过 PA3,PA4,PA11,PA12 连接电机驱动输出 PWM 波控制小车直流电机运
动。小车运动有直行与转向两种模式。小车的路径规划即由这两种模式组合而成。
显示模块:利用 LCD 屏能实时显示定位标签的坐标,并可以设置电子围栏范围,当小车超出范围后 LCD 变红报警。
小车的运动控制逻辑如下图所示。

3)蓝牙通信方案--HC-05 蓝牙模块调试与使用
HC-05 蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动连接工作模式。在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行 AT 命令,用户可向模块发送各种 AT 指令,为模块设定控制参数或发布控制命令。
USB 转 TTL 模块与 HC-05 蓝牙模块的接线:
两模块共地,两模块共 VCC(VCC 取5V);蓝牙模块的 RX 接转换模块的 TX,蓝牙模块的 TX 接转换模块的 RX。如下图所示:

图 蓝牙模块
在蓝牙模块上有灯,当灯快闪的时候,就是自动连接工作模式;当灯慢闪的时候,就是命令响应工作模式。
4)界面显示方案:界面可以利用 qtdesigner 设计 GUI 的布局、各个控件设计好控件之间的逻辑关系,设置读取数据的参数和 GUI 各个控件之间的控制关系,在使用时固定各基站位置,依次输入基站坐标的空间坐标,根据需要选择显示的 2D/3D 图像。如涉及到了实验室竖直高度问题,需考虑选择 3D 图像轨迹显示,如图为我们设计的初步 GUI 界面,还需要增加实验室布局可视化、坐标可视化、不同手环标签的可视化等。

图 初步 GUI界面测试
界面显示具体软件设计方法:预先创建一个新的“画布”和更新机制。画布用自设定的Figure_Canvas 类配置,以便将 matplotlib 绘制的图像显示在 GUI 中。在更新函数 update 中,调用 gen_path实现实时位置获取,然后绘制图像。在 track数组中,存放从开始到此时所有的位置数据,update 将数组中的数据重新绘制整幅图画,然后在画布上更新,在 FuncAnimation 中设置了每10ms 更新一次。将画布赋给 GUI 的 QGroupBox 以在 GUI 上显示图画。利用 pyqt 中 QGroupBox 常用容器组件,放置窗口部件。
对小车进行测试,让小车从坐标点(0,0)前进到坐标点(1,0),小车最终到达位置的误差在 10cm之内。让小车连续转向 $9 0 ^ { \circ }$ 共 12 次,误差在 $4 5 ^ { \circ }$ 以内,可得小车每次转向的平均误差在 $5 ^ { \circ }$ 左右。该方案只能沿坐标轴方向行驶。
4)提高方案--采用增量 PI控制器进行速度控制
为保证两轮速度在行驶时稳定,采用增量 PI 控制器进行速度控制。函数中输入编码器测量值、目标速度,返回值:电机 PWM 采用pid 算法快速调节两轮的转速实现方向的精确控制。
增量式离散 PID 公式:
$$ \mathrm { p w m ^ { + } \mathrm { = } K p \left[ e ^ { \mathrm { ~ \tiny ~ ( ~ k ~ ) ~ } } \mathrm { - } e \left( k \mathrm { - } 1 \right) \right] + K i \ast e \left( k \right) + K d \left[ e \left( k \right) - 2 e \left( k \mathrm { - } 1 \right) + e \left( k \mathrm { - } 2 \right) \right] } $$
8. 实验报告要求
实验报告需要反映以下工作:
1) 实验需求分析:明确要完成的任务
2)实现方案论证:对各模块的仿真
3)理论分析:每部分原理
4)电路设计与参数选择:对各模块的仿真
5)电路测试方法:对各模块的仿真
6)实验数据记录:对距离测量,轨迹画图等的记录
7)数据处理分析:明确定位方案,记录并处理定位数据,明确自适应算法的可靠性
8)实验结果总结
9. 考核要求与方法(限 300 字)
考核的节点、时间、标准及考核方法。1)实物验收:根据测试功能以及测试时间评价效果。占 $3 0 %$ 。2)实验质量:系统的稳定、装置整体结构美观、基本功能的实现。占 $2 0 %$ 。(电路方案的合理性,焊接质量、组装工艺。)3) 自主创新:提高部分的完成度,功能构思、系统搭建的创新性,自主思考与独立实践能力,产品是否具体有一定的扩展性。占 $1 5 %$ 。4) 实验成本:是否充分利用实验室已有条件,材料与模块件选择合理性,成本核算与损耗。占$1 0 %$ 。5) 实验数据:测试数据和测量误差等实验相关数据是否完善。占 $1 0 %$ 。6)实验报告:实验报告的规范性与完整性。占 $1 5 %$ 。
10.项目特色或创新(可空缺,限 150 字)
项目的特色在于:项目背景的工程性,知识应用的综合性,实现方法的多样性。
1)本项目结合课程学习单片机使用及各类传感器灵活应用,项目中硬件、软件和算法都有所涉及,通过实验案例拓宽学生的知识面。
2)本项目技术思路和想法较为新颖,与轨迹小车等区分开。
3)锻炼学生实际问题的能力和团队协作能力,提高学生的综合素养。