工程实践与科技创新II-B B13

计算机控制小车走黑线


Path

简介

技术细节

图片及视频

组员介绍及心得

项目简介

本项目是让小车能通过计算机采集到的信息对黑线跑道进行识别,根据跑道算法选择的道路自主地沿着黑线运动。由摄像头采集跑道图像,并实时捕捉跑道上小车的方位,通过USB线缆传送至电脑里编写的上位机软件,软件通过图像识别找出当前小车的位置信息及跑道的信息,经过计算,作出控制决策,生成控制信号,再通过USB接口发送给小车,以使小车沿着正确的路线行进。



此项目涉及到很多方面的知识,如使用opencv采集图像,经过透视变换、二值化以及细化处理后抽象出跑道。使用单片机,串口通信等技术对小车的行进控制。


完成情况

我们的项目实现了,通过摄像头获取地图信息,进行变换处理后识别运行轨道,实时通过摄像头确定小车的位置及朝向,计算机依照设定好的算法决定小车的行动,并通过串口线发送指令,小车根据指令继续前行或进行姿态调整,从而沿黑线轨道行进到终点。具体来说,我们主要实现了一下功能:

  1. 图像的采集和处理,路径点生成及排序;
  2. 实时确定小车的位置姿态,通过计算发出控制指令;
  3. 小车上的收到指令,控制电机转向和速度,实现小车的行进与转弯。

一些不足:

  1. 由于后期时间紧张,没有使用蓝牙进行通信,因而小车的行进一定程度上受串口线的限制;
  2. 小车的重量较轻,轮胎无弹性也无悬挂,因而在不很平坦的地图上行进时,轮子容易空转,行动较迟缓,有时还需人为协助。


成员分工


总体介绍

如图(其中迷宫换成黑线跑道,无线通讯换成有线的串行通信)所示,为本项目整体结构和解决流程。下面分模块具体阐述。


软件部分

PC端程序

1、主要流程:

1.摄像头获取原始图像,图像矩阵化

2.透视变换得到跑道俯视图

3.分析跑道结构

4.根据黑线走向,计算路径

5.摄像头实时捕捉小车位置,与计算路径相比较,并通过 串口自动向小车发送调整指令

6.小车沿黑线自动行驶

2、Opencv 部分:

用摄像头处理跑道,对跑道进行透视等一系列处理,找到角 点并进一步处理后得到跑道
跑道透视图:

角点寻找与坐标标记图:

3、小车的控制部分:

闭环路控制算法(枚举法):

1.扫描起点周围8个点中非零点为下一目标点;

2.根据小车前后两点坐标,起点和目标点坐标,通过数学公式运算,确定转弯或直行指令

4、单片机部分:

电机控制程序:控制小车的前进后退转弯

通信程序:负责电脑小车间的信息传递

自检程序:负责检查小车自身的位置

5、小车定点部分

在小车车头放置蓝色纸片,车尾红色纸片。点位纸片的质心来确定小车位置和车头方向。

三、硬件部分

该项目的硬件主要包括采用直流电机的玩具小车,两块芯片,USB-RS232线缆,计算机用摄像头。

1、采用直流电机的玩具小车

小车的电路主要有三块电路板组成,分别是:供电部分,控制部分和电机驱动部分。

小车又4节五号电池作为电源,总开关开启时,供电部分向控制部分和电机驱动部分供电。

控制部分的核心为STC11L02单片机芯片(下文会进一步介绍),还有串口接口,单片机开关和蓝牙串口跳线等部件,主要负责接收处理上位机发来的指令字,对电机驱动部分进行控制。

电机驱动部分受单片机控制,驱动电机定向定速转动。

由于转向是通过两后轮的行止实现,由于路子与地面接触较为光滑,小车电机动力稍小,我们把小车后轮缠上了毛巾式布条,这样起到了一定的效果。

2、单片机芯片

该项目主要用到两块芯片,一块是CMOS8位微控制器,STC11L02是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。STC11L02使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,STC11L02拥有灵巧的8 位CPU和在系统可编程Flash,使得STC11L02为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

其PDIP图如下:

另一块芯片是L298N,用它来控制两个电机,如下图:
其管脚图:

小车电路原理图:

其中Power Part为电源部分,Motor Part为电机控制部分,MCU Part为单片机控制部分。单片机AT89S52芯片为微控制器,L298N为电机控制芯片。

3、通信功能实现

USB转RS232线:
USB端接电脑, TxD接无线发送模块的数据端, Vcc与发送模块Vcc相连, GND与发送模块GND连接。电脑端需使用USB转RS232驱动。该线增加了电脑的一个COM口,对于电脑与小车进行串行通信来说是透明的。

4、电脑及摄像头

摄像头采用外置摄像头,内置摄像头的灵活性和清晰度太差,外置摄像头很好的解决了这一问题。

5、黑线跑道

选择了黑色胶布作为黑线材料,白色泡沫塑料板作为底板。黑色轨道转弯时角度按照要求设定在45度左右,宽度为5厘米左右,总共有4个弯,总长为2.5米左右。


测试与调试

    调试过程中遇到了许多问题与困难,在我们焊完电路板编写好下位机程序后,尝试将单片机程序下载,但是多次尝试都未成功,后来发现由于我们没有分清数据线中不同颜色线的不同功能导致连接失败,改正后我们又由于数据线接触不好让我们修整了很长时间,最后还是将数据线焊接在电路板上的。
    在进行本次项目会遇到的问题中,单片机程序烧写失败是最诡异最难以调试找出原因的故障。本小组前期在实验室进行调试的大部分时间都用于完成对单片机程序的烧写。
    以下是我们小组对于处理烧写单片机问题的一些经验:

    • 检查小车的两处开关都是否打开,否则电压达不到3.3V左右将会烧写失败;
    • 烧写开始后,在打开单片机板上的开关;
    • 若烧写失败,可以检查串口线路是否正常,方法是:短接电路板上串口线的接收和发送线(红,灰),用串口调试软件向串口发送任意字符,看是否有原值返回,若没有,则较可能是线路问题,可以重新接线;
    • 若线路无问题,则有可能是单片机故障,可以更换单片机;
    • 注意usb线与串口线相连时,并非同色相连,具体连接方法可参考硬件手册,连接错误会导致线路问题。

    由于计算机和单片机之间通讯使用的波特率较低,传输过程中处理起图像较慢,直接导致了采样率偏低。不但影响了图像的实时显示,在实际发送命令过程中,由于我们组制作的迷宫拐点间距离偏短,小车在两拐点行动时间小于计算机重新识别图像传送命令的时间间隔,因此也影响了最终效果。后来我们改选了另一段间距较为合适的跑道,基本实现了小车跑黑线的动作。


图片

以下是项目进行中拍摄的照片或屏幕截图

logic analyzer logic analyzer
circuit board

成果展示

以下是运行时拍摄的视频,请下载播放:

视频1

视频2

视频3

视频4


心得体会


下载

PC端程序pc.zip [26.9M]