第二十届全国大学生智能车竞赛|智能视觉组准备及方案分享

前言

各位参赛的同学们,大家好!新的一届智能车又来临了,和往届相比,第二十届智能车大赛的赛项发生了很大的变化。今天,我们将聚焦智能视觉组,由龙邱工程师为大家带来智能视觉组的全面讲解。讲解内容包括赛题解析,机械结构,硬件配置,软件基础与控制思路。

写这篇手册是帮助新同学快速的了解充满魅力的智能车大赛。同时,会在这里给大家分享我们智能视觉组的方案与调车心得。我们深知,没有绝对的最优解,但在手册里,我们会毫无保留地分享我们智能视觉组积累的方案经验与调车心得。希望这些内容能为大家提供一条清晰的探索思路,让大家在备赛过程中少走弯路,更加从容地应对比赛挑战

如果大家想要探讨智能车相关话题,欢迎加入我们的QQ讨论群。在这里,无论是智能车的硬件设计、软件编程,还是比赛策略、或者日常技术难题,都能展开交流。

综合技术交流群 228227119        智能视觉交流群  464525142

1. 组别简介

1.1. 竞赛信息来源

  1. 智能汽车竞赛官网全国大学生智能汽车竞赛
  2. 卓老师 CSDN 博客《第二十届全国大学生智能汽车竞速比赛规则》第二十届全国大学生智能汽车竞速比赛规则_20届智能车-CSDN博客
  3. 卓老师微信公众号的推文、视频及其评论区

1.2. 赛题要求

1.3. 规则解析

1.3.1. 主控平台

智能视觉组可用的微控制器(MCU)指定为NXPI.MXRT系列和MCX系列,那么龙邱专门针对赛项制作的开发学习核心板,引出更多常用外设接口,可用GPIO多达119个,且改进核心板供电方式,无需从外部启动。

当然了,在初期学习时可以使用龙邱为大家准备好的体积更小的I.MXRT1064核心板(可以点此链接查看核心板母板详情),核心板是可以直接用于参赛的,如此一来同学们只需要根据自己的各外设接口来设计合适自己的母板。

 推荐使用MV5-RT机器视觉模块,该模块基于I.MXRT106X运行 主频高达600MHz,支持电源5V-12VDC输入,运行模型识别+补光灯最亮+AP模式WiFi图传时功耗也不超过300mmA/5V,简单程序或待机状态仅几十毫安。

1.3.2. 规则要点

比赛环境:室内,蓝色背景,白色赛道

  1. 视觉识别能准确度:在智能视觉比赛中,包含“电子外设”和“常用工具”及“手写数字”三大类,每一大类又包括有若干小类,图片共15个小类。因此对于图像识别视觉程序中要考虑的类别是比较多的,。
  2. 自主导航控制:竞赛规则可以使用摄像头、惯性导航,,需要借助这些传感器数据辅助车模完成任务到达指定位置。
  3. 自制电路板要求:自制的电路板需在正面覆铜面展示队伍信息,包括学校名称、队伍名称、制作日期,如不按要求制作可能会限制参赛

1.3.3. 竞赛细则

第二十届智能车竞赛 智视觉组的比赛细则出的是相对较早的,以下从细则中主要关注几点:

  • 车模要求:Y车模  对外型尺寸没有要求,即可以按自己情况安装拓展器件,摄像头支架高低等
  • 微控制器MCU限制:必须为基于NXP平台,如MV5-RT或OMV-RT视觉模块等。
  • 赛道和任务:

 比赛场地兼容室内PVC赛道。智能视觉组需要在赛道上布置粘贴有图片的正方体箱子,车模在赛道的路径引导下完成立方体目标的发现,并要求对放在立方体上的图片或实物进行识别,将立方体按照图片或实物内容的“电子外设”和“常用工具”两个物品大类分别推离到赛道左右,同时也会考察0-99的手写体数字识别,如果图片的内容是手写数字,则需要按照数字的奇偶性分别推到赛道的左右(奇数推离左边,偶数推离右边),并对图片的小类识别或数字识别结果进行顺序记录,本次比赛完毕后通过小车自带屏幕按序号显示出来供裁判核对结果。

赛道上的红色立方体如下图所示:

  • 队伍人数:最多3人。

关于智能视觉组比赛细则更内容,请访问第二十届全国大学生智能汽车竞赛 视觉组比赛细则 查看详情。

2. 硬件准备

2.1. 车模

第二十届智能车竞赛官方指定车模,Y车模,相比之前的四轮全向车模,该车模体积更小,结构简单,可以通过车身来完成赛道上物体的推动,无需加装额外的机械器件。Y车模采用全向福来轮结构,这种三轮全向结构使得车模能够实现任意方向的平移和旋转,运动灵活性极高,便于更快速地响应各种复杂的路径规划和控制指令在车模加速、减速、转向等动态过程中,能有效降低车模发生侧翻的风险,保持良好的稳定性  

另外Y车模配备了可拆卸保护侧板,可以有效防止车模因剧烈碰撞、摩擦等导致车轮及电机受到损伤,最大限度的保障车模的完整性和稳定性。下图为官方指定竞赛车模龙邱Y车模。

2.2. 器件清单

模块名称

作用

是否必需

是否需要自制

 LQ1064核心板

MCU 最小系统,引出GOIO管脚

LQ1064X_V2母板

稳压电源、统一外设资源接口

OMV-RT/OMV-RT

AI视觉模块,图像识别处理

LQ神眼摄像头

识别赛道(去与非门版),循迹

LQ8701三路驱动

驱动控制三路电机

视觉专用Y车模

全向三轮结构,必备部件

LQ编码器x3

精确反馈三个电机的转速

 ICM20602陀螺仪

姿态反馈,转向控制

TFT1.8寸显示屏

母板显示数据

IPS2.0显示屏

IPS彩屏,显示OMV-RT图像等

 208BLE蓝牙模块

日常调试用,比赛禁用

白光灰度传感器

辅助出入赛道判断

2.3. 模块详解

2.3.1. LQ_1064MINI核心板

  1. NXP IMXRT 1064 芯片,运行主频 600MHz,封装体积小;
  2. 工作电压3.3V,支持DC5-9V输入(建议常用5V),板载3.3V稳压。
  3. 板载标准10P-SWD下载调试接口,方便连接下载器,烧录调试程序;这里推荐使用LQ JLINK V9。
  4. 核心板带有 Type-CUSB接口,若使用MicroPython编程则可以通过USB连接上位机以进行开发调试。
  5. 开发环境:Keil NDK 5.23以上,IAR8.40.0及以上。
  6. 核心板引出GPIO排针间距2.0mm,方便母板扩展板外设连接。

2.3.2. LQ106XMBV2母板

如上图所示为LQ-RT106XMBV2母板,在一个控制系统中主板可以说是必要的存在,一是它不但提供了与主控芯片之间的连接通路从而将芯片上的各个I/O与外设接口连接,方便各种外设传感器,控制器,驱动等通过线缆与主板连接,而是主板设计有更稳定的供电方案,可以保证板子上的各个芯片稳定工作,统一集中到一起构成某些特定功能的集合。

LQRT106X的主板,就视觉组而言,主要使用到WPM三路电机驱动接口、三轮编码器器接口、一路神眼摄像头接口、四路串口接口等,SPI陀螺仪接口,SPI显示屏接口。

2.3.3. DRV8701三路驱动

电机应该都比较熟悉,在电机两端施加电压,电机就会旋转,电压越大,转速越快。通过电压越大,转速越快这句话,我们可以想到用PWM来控制转速,但是直接把电机直接接在核心板I/O口是不可行的(因为I/O口电压比较低,而且电流太小),因而就需要专门的电机驱动控制器来驱动电机。

 驱动信号简单,解放PWM 资源。 在以往的IR2104+IR7843方案中,若控制两个电机的正反转,则需要4路PWM信号来作为输入信号。而在此DRV8701E+TPH1R403NL方案中,只需要 1 路 PWM 信号+1路普通I/O口引脚即可进行一路电机的速度和方向控制。 即控制1个电机只需要输入一个PWM信号控制转速,通过一个普通 IO口输出高低电平来控制转向,三路驱动的接口如图中所示,可以直接使用PH2.0-8P的接口连接,稳定简单。

2.3.4. OMV-RT机器视觉模块

OMV-RT/MV5-RT是龙邱科技新推出的高高性能机器视觉模块,使用NXP iMxRT106x  ARM Cortex M7处理器,运行频率600MHz,配备32M/256Mb的高速SDRAM、1M/8Mb内部SRAM和16M/128Mb的程序/存储QSPI程序/存储闪存器(外部文件系统8M)。开发环境为MicroPython兼容OpenMV IDE及其例程。上手简单,不需要搭建复杂环境,操作简单,到手即用。软件使用MicroPython语言,有关其语法和支持的模块可以参考官方文档https://docs.openmv.io/library) OMV-RT特有的模块例程,可以参考随产品的附赠例程资料。

模块板载一路TF卡插槽,最高支持每秒200Mbs的读/写速度,一个内置RTC,在系统进入低功耗模式时仍然运行(低功耗模式下系统功耗小于30uA),一个用于低功耗唤醒按键个可编程按键,板上有24个I/O均具有EMI滤波和TVS保护。内置LQ9AGM 9轴陀螺仪传感器(三轴加速度+三轴角速度+三轴地磁)

在通信方面内置WiFi(a/b/g/n-11/54/65Mbps)和蓝牙(V5.1-BR/EDR/BLE)模块,搭载一款贴片天线(可选iPEX接口天线接口,搭配2.4G天线使用),方便模块连接网络或蓝牙与其他设备进行通信。

在图像处理上,使用OV5640彩色(RGB565格式)在QVGA(320x240)分辨率运行速度约为46 FPS,也可更换其他镜头搭配使用,使用IPS(320x240)屏幕显示彩色QVGA实时图像((320x240))也能稳定在30+FPS运行,若是将图像变小,则帧率更高。

模块可与单片机之间通过有线串口通信,预留一路PH2.0 UART/I2C二选一接口,使用简单方便,一个接口搞定通信和对模块的供电。

提供基于模块的Python脚本例程,用于演示板载陀螺仪、光照传感器、补光灯以及GPIO、PWM、I2C、IPS显示屏、WIFI/蓝牙等的基本使用方法。可以点击链接:查看详细资料 LQ-OMV-RT/MV5-RT模块。

2.2.5. 神眼摄像头

龙邱神眼摄像头自推出,至今已经很多年了。MT9V032/034是安森美半导体出品的全局快门CIS,拥有卓越的画质和低照度的表现。龙邱神眼摄像头采用MT9V034芯片,具有全局快门,高动态成像,红外透视等优点,MT9V034芯片最高分辨率为 752(H) x 480(V)。龙邱设神眼是一款功能齐全,性能强劲的摄像头模块。可以设置不同的分辨率,帧率,高动态范围等参数,以满足同一应用场景下,对不同需求的情形。

神眼摄像头通过行/场中断+DMA 采集图像的, 当摄像头开始发送一帧新图像时, 摄像头的 FRM 管脚会产生一个上升沿, 将单片机和摄像头 FRM 管脚连接的 IO 口配置为外部中断模式, 中断发生时, 单片机就知道了有一帧新图像要来了。 摄像头发送一帧图像是按行发送的, 例如神眼 120*188 分辨率的图像, 摄像头会把图像分为 120 次, 每次 188 个像素点通过 8 位数据并口发送出去, 每当摄像头开始发送一行图像时, 摄像头的 LINE 管脚就会产生一个上升沿, 将单片机和摄像头LINE 管脚连接的 IO 口配置为外部中断模式, 中断发生时, 单片机就知道了有一行新图像要来了, 并且在中断里面开启 DMA 传输, 传输到来的 188 个像素点。

在智能车竞赛中,神眼摄像头被广泛用于室内外,尤其室内赛道中使用神眼摄像头对赛道进行识别处理来确定车模运行的轨迹

2.3.6. 陀螺仪

 

陀螺仪在智能车中的应用:(上图为LQICM20602/42688陀螺仪模块

  1. 与转向环串级使用,达到更好的控制效果。
  2. 调整平衡车姿态,使车身平衡且能正常转向和前进。
  3. 作为角度环闭环控制的输入。
  4. 积分角度作为元素状态切换条件,例如确定环岛的进环、环内、出环时机。
  5. 与编码器配合实现惯导控制等

陀螺仪主要由加速度计与陀螺仪两部分组成,加速度计用于测量物体的加速度,陀螺仪用于测量物体的角速度。通过对加速度和角速度的测量,可以推导出物体的角位移。简单来说就是可以读取物体的偏移角度,以及移动的加速度。可以通过程序处理得到物体的欧拉角以及移动加速度。

陀螺仪的欧拉角是用来描述物体在空间中的姿态(即旋转角度)的一种表示方法,包括滚转角(Roll)、俯仰角(Pitch)和偏航角(Yaw)。

滚转角(Roll)是物体绕X轴旋转的角度,用来描述物体绕自身前后倾斜的程度。当物体绕X轴正方向逆时针旋转时,滚转角为正值,绕X轴负方向顺时针旋转时,滚转角为负值。

俯仰角(Pitch)是物体绕Y轴旋转的角度,用来描述物体绕自身左右倾斜的程度。当物体绕Y轴正方向逆时针旋转时,俯仰角为正值,绕Y轴负方向顺时针旋转时,俯仰角为负值。

偏航角(Yaw)是物体绕Z轴旋转的角度,用来描述物体绕自身旋转的方向。当物体绕Z轴正方向逆时针旋转时,偏航角为正值,绕Z轴负方向顺时针旋转时,偏航角为负值。

通过测量陀螺仪的角速度,可以积分得到物体的欧拉角。欧拉角的变化可以用来控制物体的姿态,例如在飞行器中,通过调整滚转角、俯仰角和偏航角,可以实现飞行器的稳定控制和导航功能。

需要注意的是,欧拉角表示的是物体在空间中的绝对姿态,而非相对于某个参考物体的姿态。在实际应用中,为了避免欧拉角的奇异性问题,常常使用四元数或旋转矩阵等其他表示方法。

2.3.7. 编码器

在智能车中,编码器的主要功能是测量定时器中断周期内的脉冲数,用作速度控制回路中的实际反馈值。通过将此实际值与预设的目标值进行比较,并采用PID控制器来调整输出,从而实现精确的速度闭环控制。

编码器发送脉冲信号,定时器引脚接收脉冲信号,通过AB信号的差异或者根据方向引脚电平判断是正值还是负值,脉冲信号值会在定时器中累计,直到手动清除,所以每次读取编码器值后需要清除累计值,才可以获得实时速度值。

细心的读者可能会发现,相同转速下编码器值读取大小与读取时间间隔有关,读取时间间隔越大,累计值越大,读取到的值也越大,与绝对值编码器不同这种编码器更适合高速场景

3. 开发工具

3.1. 硬件设计软件

熟练掌握至少一种常用的电路设计软件,如 Altium Designer、 立创 EDA 等。了解软件的界面布局、基本操作流程和常用功能模块,如原理图设计、PCB 布局、布线、铺铜、规则检查、生成报表等。

能够使用软件进行简单的电路原理图绘制和 PCB 设计, 包括元件库的创建和管理、原理图的连接和标注、PCB 的布局规划和布线、铺铜等。掌握 PCB 布局和布线的基本技巧和方法,如元件的合理布局、信号线的走向和间距控制、电源线和地线的布线方式、过孔的使用和优化等。

了解 PCB 设计的基本原则和规范,如电气性能要求、信号完整性、电源完整性、电磁兼容性(EMC)等。能够根据电路的功能和性能要求,进行合理的 PCB 设计,确保 PCB 的电气性能和可靠性满足实际应用的需求。同时,要了解 PCB 制造工艺和生产流程,掌握 PCB 设计文件的输出和制作要求,能够与 PCB 制造商进行有效的沟通和协作,确保 PCB 的制造质量和生产进度。

我司提供的资料中包含 PDF 版原理图、基于 Altium DesignerAD)的原理图封装库和 PCB 封装库。同学们在自己制作 PCB 时可以使用 AD 导入我司提供的封装库文件,参考 PDF 版原理图完成电路板设计。主板原理图中包含了智能车竞赛中常用的外设模块端口,在自己制版时仅需要画出用到的外设接口即可,没有用到的接口不需要引出。

需要注意:自制的电路板需在正面覆铜面展示队伍信息,包括学校名称、队伍名称、制作日期。

3.2. 搭建开发环境

如果想使用IAR进行开发的,工程种是默认配置好了IAR环境下载烧录以及启动相关的文件,只不过需要自己根据共工程重新增删对应需要的文件和调整即可,下面以MDK keil环境为例做以简介。

3.2.1. 安装 Keil MDK集成开发环境

首先登录 Keil 官网,下载最新版的 MDK-ARM 安装包,下载链接如下:Keil Product Downloads 

信息随便填写,点确定后进入下载页面进行下载,推荐下载门5.37以下的版本,因为5.37以上的版本不再内置armgcc5编译包,需要另外在进行安装下载完成后双击安装包开始安装,点击“Next”:

勾选“I agree to all the terms of the preceding License Agreement” 选择安装目录,然后点击“Next”:

接下来随意填写即可,然后点击“Next”:

安装完成,点击“Finish”结束。

安装完成后需要注册,CSDN 上相关注册教程有很多,大家可以自行搜索关键词“keil 注册”等即可找到,这里就不再赘述。

3.2.2. 安装 RT1064支持包

Keil集成开发环境下NXP IMXRT1064 PACK的安装方式有二,方法一直接在IDE中进入Pack installer中搜索安装:

如果自己网络好的同学可以尝试第一种方式,网络环境不太理想的建议使用提供的pack包进行一键安装;如果下载我们的开源例程库,则会一同提供keil的PACK包,后文会提到。

3.2.3. OMV-RT 开发环境安装

OMV-RT机器视觉模块同OpenMV一样是使用OpenMV IDE进行开发调试的,可以访问OpenMV官网(Download – OpenMV)下载最新版的IDE,找到对应自己电脑的系统,点击下载,然后安装,但需要注意如果安装路径非默认路径而是自己选择的新路径,一定要选择一个新建的或者空白的文件夹,因为软件安装时会清空所选择的当前路径文件夹下的所有内容。

或者直接安装资料中提供的安装包进行安装。有关OpenMV IDE安装,可以参考OMV-RT模块附赠资料中的《LQ-OMV-RT产品手册》内容。其中需要注意的是,如果使用第三方IDE,可能会有个别电脑在安装过程中出现OpenMV USB驱动安装cmd执行失败的提示,只需要进入到安装目录手动运行该程序即可。

3.2.4. 安装 CH340 串口驱动

CH340串口驱动,如果自己电脑之前使用过CH340TTL模块,一般不需要再安装,如果没有建议安装进入以下网址下载安装即可:

南京沁恒微电子股份有限公司

在调试时使用USB-TTL来查看各模块之间通信,如查看模块外接串口输出的信息等,在个别调试场景中可能无法直可视地接判断两个板子之间的UART通信是否正常,因此通过连接到USB-TTL在电脑上将模块输出数据打印出来,亦或者通过USB-TTL给另一个模块发数据等,用来进行调试是比较方便的。

3.2.5. 下载开源例程库

开源库获取途径:

  1. 码云Gitee地址:龙邱科技NXP-RT1064开源库: 龙邱科技 NXP RT1064芯片 软件示例程序开源例程库,使用硬件平台 LQ-RT1064SYSV4.1核心板+LQ-RT106XMBV2母板,含基础外设使用例程,常用传感器、电机、编码器、通信模块等驱动应用例程,为汽车电子、智能车适配的各种外设资源使用例程等
  2. 龙邱20届智能车综合技术交流群:228227119及智能视觉组交流群
  3. 龙邱科技淘宝客服

库结构说明:

模块例程包括:GPIO 输入输出、ADC 数据采集、UART 串口收发、OLED/TFT/IPS 屏幕、定时器中断、编码器读取、串口通信、电机控制、陀螺仪数据读取等诸多使用示例。

3.2.6. 点灯程序测试

首先打开 Keil 软件,点击置顶栏中的“Project”,点击“Open Project”:

选择开源库中的初始工程文件,双击打开工程:

打开工程后,在左侧边栏中找到“User”中的“main.c”双击打开,然后翻到LED灯闪烁测试程序,选中后取消注释。

然后点击“Build”即可编译程序

编译成功后窗口左下角会出现如下提示:

打开配置界面,如下图,选择debug,然后修改下载器为自己使用的,如使用龙邱JLINK就选择JLINK,然后点击seting”:

进入“Settings”界面,在连接好下载器与芯片的情况下能识别到芯片ID,则说明连接时成功。然后点击下方的 OK,回到主界面。点击”Load按钮开始下载:

同样下载成功后会在左下角,输出成功提示信息,若不成功则会弹窗提示失败。

3.3. 龙邱多功能调试助手

在日常的备赛过程中,上位机或图传等调试助手扮演着至关重要的角色,它能提供实时的数据反馈,帮助研发人员快速定位并解决问题。使得开发者可以更加专注于智能车算法的设计和优化,而不用被琐碎的调试所困扰。可以提高开发效率,使团队能在短时间内完成更复杂的任务。

  1. 龙邱通用调试工具软件,集成串口、网络,图像、虚拟示波器等众多功能为一体的上位机调试助手。

上面这个多功能调试助手软件,虽然还没有正式和大家见面,但龙邱的工程师们已经日常使用很久了,为了让大家使用顺手,我们内部日常使用反复测试,不断优化升级。

4. 外设基础

在使用外设时,首要步骤是明确这些设备与单片机之间连接的具体引脚。引脚查询方法:

  1. 查看电路板丝印层的标注。
  2. 查看电路板设计原理图。

4.1. GPIO 输入输出

GPIO是通用输入输出(General Purpose Input/Output)端口的简称。通俗来讲就是单片机可控制的引脚,所有的GPIO引脚都有基本的输入输出功能。

 

最基本的输出功能是由单片机控制引脚输出高、低电平,实现开关控制,如把GPIO引脚接入到LED灯,那就可以控制LED灯的亮灭,引脚接入到继电器或三极管,那就可以通过继电器或三极管控制外部大功率电路的通断。

最基本的输入功能是检测外部输入电平,如把GPIO引脚连接到按键,通过检测电平高低区分按键是否被按下。下图为常用的几种模式

 还有两种模式,想必学过STM32的同学并不陌生:

关于i.MX RT1064微控制器GPIO模块:

1.引脚规模与分组

  • 提供多达102个GPIO引脚(实际可用数量取决于封装型号)
  • 采用GPIO1~GPIO9分组设计,每组最多支持32个引脚
  • 支持1.8V~3.3V宽电压工作范围,5V容限设计保护电路

2.电气特性增强

  • 可编程驱动强度(4级调节:50mA/100mA/150mA/200mA)
  • 智能摆率控制(Fast/Slow模式切换,Fast模式上升时间<3ns)
  • 动态阻抗匹配(支持20Ω/40Ω/80Ω片上终端电阻配置)

模式类型

功能描述

基本I/O

标准数字输入/输出,支持三态模式

中断唤醒

8种触发方式(边沿/电平),支持低功耗模式唤醒

外设复用

每个引脚支持16种复用功能(FlexIO、ENC、PWM等)

安全域隔离

支持TZ子模块实现安全GPIO与非安全GPIO分区

逻辑模拟

内置施密特触发器,支持模拟信号阈值检测

3. 高级动态重映射机制

  • 通过IOMUXC模块实现硬件级引脚功能重构
  • 运行时寄存器重配置(支持原子操作)
  • 外设信号路径旁路技术(Bypass Mode)

 4. 混合信号处理

  • 数字滤波窗口(可配置4~32时钟周期消抖)
  • 并行采样模式(8通道同步捕获)
  • ADC触发联锁(GPIO事件直接触发模数转换)

补充说明:所谓的驱动能力,就是指输出电流的能力。有关GPIO驱动大负载(即负载内阻越小,负载越大)时,例如I/O输出为5V,驱动的负载内阻为10欧姆,于是根据欧姆定律可以正常情况下负载上的电流为0.5A(推算出功率为2.5W)。显然一般的I/O不可能有这么大的驱动能力,也就是没有办法输出这么大的电流。于是造成的结果就是输出电压会被拉下来,达不到标称的5V。当然如果只是数字信号的传递,下一级的输入阻抗理论上最好是高阻,也就是只需要传电压,基本没有电流,也就没有功率,于是就不需要很大的驱动能力。在龙邱RT1064库中,已经将GPIO的操作封装为统一控制的函数方便大家使用,例如将GPIO设为高电平:PIN_Write(D10, 0U); //将D0设为低电平; 这里的D0是龙邱库映射后名称,相对原始的操作更加简洁。

4.2. ADC 采集

ADC 是“Analog-to-Digital Converter”的英文简称,能将模拟信号转变为数字信号。通常是将信号采样并保持以后,再进行量化和编码,这两个过程是在转化的同时实现的。具体的转化步骤在这里就不展开说了,如果是开发者使用,我们应该关注哪些参数

  1. 分辨率—表示 AD 对输入信号的分辨能力,及数值部分的精度。一般模拟采样中使用 8 位还是 12 位的 ADC 说的就是分辨率。例如:输入模拟电压的变化范围为0~3.3 V,输出12位二进制数可以分辨的最小模拟电压为 3.3V / 4095  0.806mV;
  2. 工作电压和基准电压(内部或者外部基准):工作电压是 AD 芯片工作的额定电压,关键的是基准电压,又叫参考电压,可以来之芯片内部又或者外部接入,其决定了 AD 的分辨率,所有基准电压一定要稳。
  3. 参考电压,一般的芯片ADC参考VCC工作电压,当然也有的是引出参考电压输入管脚使用外部稳压源作为A内部ADC参考电压。假如我们的板子上芯片的VCC工作电压为3.3V,因此ADC的参考电压就是3.3V,即当ADC管脚输入电压为3.3VADC读取转化后的值为4095(12bitADC),与GND短接时为0.

4.3. 定时器中断

定时器中断是一种基于定时器的中断,它允许在特定时间间隔内触发一个事件或一段代码。在智能汽车竞赛中,定时器中断常用于周期性任务,例如定时、传感器数据采集、转向环和速度环控制、编码器计距离或者陀螺仪角度积分例如设置中断周期为5ms,那么就会每5ms执行一次中断里的程序

首先, i.MX RT1064有多个定时器,比如GPT(General Purpose Timer)、PIT(Periodic Interrupt Timer)、以及可能有的低功耗定时器。需要确认每个定时器的特点,比如GPT是32位的,支持多种模式,PIT可能用于周期中断。用户只需要清楚如何配置,如初始化步骤、时钟源选择、预分频设置、中断处理等。比如GPT的配置流程,设置时钟源为内部IPG时钟,设定预分频器,选择工作模式(比如自由运行或比较模式),然后启用中断。

在应用场景方面,定时器在PWM生成、输入捕获、时间测量、任务调度中的作用。比如GPT可以生成精确的PWM信号,而PIT适合周期性的任务触发。最后,是否需要比较不同定时器的优缺点,比如GPT功能更强大,但PIT更简单省资源,根据需求选择适合的定时器模块。

4.4. PWM

PWM是一种用数字信号模拟模拟信号的技术,它通过在一个固定的时间周期内改变信号的脉冲宽度来模拟电压或电流的变化。PWM信号通常用于控制各种设备,如电机、LED灯、伺服机构等,以调整它们的输出或工作状态。PWM信号具有两个主要参数:

  1. 周期/频率(Period):PWM信号的一个完整周期持续的时间,通常以微秒或毫秒为单位。电机通常选择 10kHz ~ 20kHz的PWM频率频率过低会导致电机噪音和发热,频率过高可能超出驱动芯片的响应能力舵机通常要求50Hz ~ 333Hz,其角度由高电平脉冲宽度(0.5ms ~ 2.5ms)决定。对于无感无刷电机驱动/电调来说也需要使用这个脉宽的信号来驱动。
  2. 占空比(Duty Cycle):高电平状态所占整个周期的百分比。它代表了PWM信号的有效平均电压或电流值。

PWM信号的占空比决定了目标设备的输出特性,例如电机的转速或LED的亮度。更大的占空比通常表示更高的输出值。在智能车竞赛中,PWM是实现电机速度控制和舵机转向调节的核心技术。通过调整PWM信号的占空比,可以精确控制电机的转速和舵机的转向角度

4.5. 串口通信

单片机中的串口是一种用于数据传输的通信接口,它可以将数据以串行的方式进行传输。串口通常由两个引脚组成,即发送引脚(TX)和接收引脚(RX)。当单片机需要发送数据时,它将数据转换为串行格式,并通过TX引脚发送出去。接收方通过RX引脚接收数据,并将其转换为原始格式,从这里可以知道串口通信在连接时需要将发送引脚(TX)连接接收引脚(RX)。

 串口通信可以通过硬件或软件实现,其中硬件串口通常具有更高的速度和可靠性,而软件串口则具有更高的灵活性和可定制性。在单片机中,串口通常用于与其他设备进行通信,例如遥控器、传感器、显示屏、上位机等。

串口协议是指在串行通信过程中,双方之间所遵守的通信规则和约定。UART串口协议包含以下内容:

  1. 数据帧格式:UART串口协议使用包含起始位、数据位(5至8位)、可选的奇偶校验位及1或2个停止位的数据帧来传输信息。具体格式需双方预先协商确定。
  2. 波特率:UART串口协议使用波特率来指定数据传输的速率。波特率表示每秒钟传输的位数。常见的波特率包括9600、19200、38400、57600和115200等。通信双方必须使用相同的波特率才能正确地接收和发送数据。
  3. 帧同步:UART串口协议使用起始位和停止位来标识每个数据帧的开始和结束。起始位是一个低电平信号,用于通知接收端数据帧的开始。停止位是一个高电平信号,用于通知接收端数据帧的结束。
  4. 错误检测:UART串口协议利用奇偶校验位检查数据位数量是否符合预期,并通过校验和验证整个数据帧的完整性,以此来发现传输过程中的错误。
  5. 数据流控制:UART串口协议支持硬件数据流控制和软件数据流控制。硬件数据流控制使用CTS和RTS信号来控制数据传输。软件数据流控制使用XON(ASCII码为0x11)和XOFF(ASCII码为0x13)字符来控制数据传输。

串口通信作为一种基础而强大的技术手段,广泛应用于智能车等自动化领域中,可以实现数据的传输,从而对系统进行实时监控和调试。

感兴趣的也可以搭配龙邱的USB-TTL模块学习,或者跟进一步可以使用BLE蓝牙模块进行无线串口透传实现无线通信。

5. 通用控制算法

5.1. PID 算法简介

PID 算法是工业应用中最广泛算法之一,是一种常用的反馈控制算法,它是根据系统当前状态与期望状态之间的差异来调整控制器输出的方式。在闭环系统的控制中,可自动对控制系统进行准确且迅速的校正。PID 算法已经有 100 多年历史,在四轴飞行器,平衡小车、汽车定速巡航、温度控制器等场景均有应用。PID  Proportional-Integral-Derivative 的缩写,分别代表比例、积分和微分三个部分。

PID控制算法将比例、积分和微分三个部分的输出进行线性组合,得到最终的控制器输出。通过调整三个部分的权重和参数,可以实现对系统的精确控制

5.2. 位置式PID

位置式PID控制器是最经典的PID实现方式,它直接计算误差及其积分和微分,并据此输出控制量。其控制公式为

e(t) 为当前时刻的误差(目标值与实际值之差)。

Kp,Ki,Kd分别为比例、积分和微分增益。

u(t)为控制量输出。

位置式PID的控制原理:

位置式PID计算输出时,考虑的是当前的误差、误差的累积和误差变化的速度。其特点是输出的控制量与误差的绝对值、历史累计值以及变化速率相关,适用于系统的稳定控制。

位置PID的优点:

  • 精确控制:能够在给定目标下快速收敛并保持系统稳定。

容错能力强:对于系统的扰动具有较强的抵抗能力。

位置式PID的缺点:

  • 需要长期累积误差:由于积分项的存在,位置式PID控制可能会有超调现象。
  • 对噪声敏感:微分项对于高频噪声较为敏感,可能导致系统不稳定。

5.3. 增量式PID

增量式PID是另一种常见的PID控制方式,其核心思想是通过计算误差的变化量(增量)来调整控制量,而不是直接计算误差本身。其公式为:

·  e(t) 为当前误差与上一个时刻误差之差(即误差增量)。

·  u(t)为当前时刻控制量的增量。

增量式PID的控制原理:

增量式PID的控制量是基于误差的增量来计算的,也就是说,每次控制输出都与上一时刻的控制输出相对比,更新量为误差的变化量。其核心思想是调整误差变化趋势,而非直接通过误差的绝对值来调整控制量。

增量式PID的优点:

  • 适用于离散系统:增量式PID在数字控制系统中使用更加广泛,因为它避免了连续的积分运算和微分运算。
  • 没有累积误差:由于采用增量控制方式,系统不容易出现位置式PID中的超调现象。

增量式PID的缺点:

  • 初始误差响应慢:因为增量式PID需要通过多次调整才能有效改变系统状态。

可能需要较多的调节时间才能稳定。

5.4. PID调参方式

PID控制算法将比例、积分和微分三个部分的输出进行线性组合,得到最终的控制器输出。通过调整三个部分的权重和参数,可以实现对系统的精确控制

 根据实际系统的特性和需求,调整PID控制算法中的比例、积分和微分三个部分的权重和参数,以使系统能够以最佳的性能响应和控制的过程,我们一般称之为“调参”。

在调参过程中:

Kp 过大会对误差的变化做出过大的反应,从而导致系统动作幅度过大,容易引起振荡甚至不稳定。过小意味着对误差的调整力度不足,系统达到目标值的速度变慢,响应滞后。

Kp 即使设置得较好,仅靠 Kp 控制仍会存在部分问题:

Kp 控制对持续存在的小误差没有累计作用,无法完全消除系统的稳态误差。这是因为比例控制的输出直接与当前误差成正比,而当误差较小时,调整力度可能不足。需要Ki(积分)控制来消除这种误差。

Kp 控制对快速变化的误差反应不足,而Kd(微分)控制可以预测误差变化趋势,帮助提高系统动态性能,避免过冲,减少超调。

总结

  • 位置式PID是经典的PID控制方式,适用于精确控制任务。它通过计算误差的绝对值、历史积累值和误差变化率来调节控制量。
  • 增量式PID适用于离散控制系统,其计算方法通过误差的增量来调整控制输出,更适合数字系统,但响应速度较慢。

 6. 智能视觉组思路分享

6.1. 智能视觉整体系统基本结构

6.1.1. 全向三轮的车模结构

 如图为全向三轮地盘的基本结构示意图,可以看出车模是通过三个电机配合三个福来轮,实现运动的。如果想让车模做向左原地旋转,则三个轮子之间的运动受力情况如下:

 当然了,这是这对称的结构,且三个轮子均在同一圆方向上,因此做原地旋转只需要三个电机以相同的速度和相同的方向运行即可,那么要控制小车直行则需要,关掉一个电机,让其中一个方向的福来轮小轮与地面做从滚动运动,另外两个对称的电机带动福莱轮控制方向,也就是使得这两个轮运动东产生的合力指向二者中垂线方向,其受力图如下:

其他方向运行,皆在前后左右,和旋转的基础上演化而来,同事搭配三个编码器从而实现更加精确的位置控制。

 6.1.2. 系统结构器件连接示意图

6.2. 陀螺仪的使用 

陀螺仪在智能视觉组中起着非常重要的作用,因为 GPS采集到的数据并不是一直稳定不变的而是可能会出现漂移,加上陀螺仪后,可以更好地判断方向来辅助完成整个比赛。在比赛中我们可以利用陀螺仪欧拉角计算车模运动方向,在常规车模中陀螺仪可以配合编码器累加计算距离的惯性导航算法再配合上GPS做调整可以更加精准的完成车模循迹,遮掩就使得循迹过程中细节的处理有更多可操作性。使用陀螺仪还可以检测车身的倾斜状态,当在颠簸路段和坡道时,车模的前后倾斜状态会发生改变,主控可以及时的采集到车模的倾斜状态,控制电机及时进行加速或减速,或者倾覆后立即刹车,防止无刷高速带动得桨叶撞击到其他地造成伤害等。

在智能视觉中,陀螺仪的主要应用侧重于方向上的辅助,因为气垫船的前进动力来源于两个向后桨叶在控制器的推力来使得窗体向前,但在实际情况中,地面两侧摩擦力不同,平整程度不同,往往在控制船体直线向前时出现左右晃动甚至偏离目标,加上陀螺的偏航角与方向控制组成闭环,来。实时调整最有桨叶输出功率达到实时调整船体前进姿态的目的,同样在定点行驶任务中有陀螺仪在方向上的辅助将会更加容易完成。

6.3. 编码器的使用

在全向三轮的运动过程中,编码器是必不可少的器件,它通过采集每个电机的输出转速的参考值来供给PID实现动态调节每个电机实际需要的输出情况,从而保证小车整体不会出现往前走时左右发生偏移。

另外车模需要将立方体推离赛道,在这个过程中也需要用到编码器,来记录小车大概向前运动多远,完成推离动作后返回赛道需要走多远等。

6.4. 全向三轮差速控制

电机差速控制是指通过控制车辆两侧电机的转速差异来实现车辆的转向和转弯。一般来说,当车辆需要向左转时,右侧电机的转速会比左侧电机的转速快,从而使车辆向左转弯。反之,当车辆需要向右转时,左侧电机的转速会比右侧电机的转速快,从而使车辆向右转弯。

比赛中,单片机通过转向环的输出值,在基础速度的基础上,通过差速计算公式分别计算出左右轮的目标速度然后结合电机PID闭环控制实现速度的精确调节。

在全向福来三轮车模的控制中,差速转向的方式依然适用,但是要想精确控制车模运行方向还是比较复杂和困难的,感兴趣的同学可以参考网上关于《全向轮机器人运动模型及应用分析》以及相关类文章,了解福来三轮的运动模型。

6.5. 神眼摄像头循迹

智能视觉室内赛道首先需要车模能够在赛道上实现基循迹,包括十字、环岛等,为了减轻视觉处理上的复杂程序,当然也是为了满足对赛道高速巡线的处理,使用RT1064+神眼循迹和控制小车运动。

图像预处理:因选用的摄像头传感器为灰度传感器,无需额外进行图像灰度化,主要采用阈值分割法进行图像分割。阈值的确定是阈值分割法的核心,常见的阈值分为静态阈值和动态阈值,静态阈值容易受到环境光线影响,对不同环境的赛道适应力较差;动态阈值抗干扰性强,对光照变化不敏感。为更好地适应不同赛道环境变化,采用大津法确定动态阈值。大津法(OTSU)利用统计学方法,让计算机在每一张图片上都自适应的根据图片整体亮度确定阈值,单片机在不同环境下都能自适应找到不同的分割阈值,每一张图片的阈值都不一样,受图像亮度和对比度的影响小,但对噪声非常敏感。一般采集的灰度直方图会存在两个峰值,两峰之间存在一个谷底,而大津法的阈值即为峰谷对应的灰度值。

其算法逻辑是循环0 - 255个灰度值,记录每一个灰度值对应的类间方差值,将其与已知的最大类间方差值比较,记录两者间最大值,并进行循环计数,当循环计数值达256次,即可确定此时最大类间方差值对应的灰度值为二值化阈值Threshold。如果是固定赛道,可以多次试运行大津法算法,记录对应多种赛道元素的二值化阈值,可以得到一个灰度值范围,比如70 - 140,缩小灰度值遍历范围,提高算法效率。

循迹控制:通过将得到的赛道中线的水平位置与屏幕显示的中间位置(就是数组的宽的一半)进行比较,算出小车与赛道中心的误差值,将这个误差值输入到PID中进行计算,最后输出PWM给给电机差速进行转向,从而实现摄像头循迹控制。

6.6. OMV-RT图像模型训练

智能视觉中的智能不光是通过程序算法使得小车能够在赛道上完成自动循迹,更重要的是考察机器视觉AI模型的训练,目标检测结果的精确度等的考试,要求同学们根据官方发布的任务和相关图集训练自己的AI模型并且部署到比赛规定的视觉处理模块中运行,如基于NXP Imxrt 1064OMV-RT/MV5-RT等。

在完成小车的运动控制,赛道循迹,推离赛道、回到赛道、十字、环岛等基础任务后,就需要对视觉组最主要的视觉识别着手准备,如下图所示这里将主要的任务截图摘录出来。

  1. 深度学习模型训练部署
    1. 数据集处理:可将数据集导入到NXP提供的EIQ软件中,参考往年的NXP培训视频或EIQ官方文档制作成EIQ能够打开的工程文件;除官方数据集外,还可将图片打印下来制作成比赛需要的,如本次红色立方体上防止图片用OMV-RT拍摄自制数据集提高识别精度
    2. 模型训练:导入数据集后即可开始训练,EIQ的训练简单且可视化程度高,训练时可参考B站十七届NXP的培训设置数据增广。
  2. 训练基础步骤:
  • 创建工程及数据集导入:

打开eIQPortal工具,点击create project -> import dataset。Structured Folders导入数据集。点击“IMPORT”后,选择工程保存路径,点击“保存” 。

  • 选择基础模型训练:

数据集导入后,点击select model,选择base models,修改input size为128,128,3。点击start training。其他参数根据需要进行设定即可,若为首次演示,可以先使用默认的learning rate、batch size、epoch值,训练一轮。如果后续精度一直不达标,可以通过修改各训练参数,或者更新训练数据,再次点击CONTINUE TRAINING继续进行训练 。

  • 模型评估:

点击VALIDATE,进入模型评估,设置参数Softmax,inputDataType和outputDataType。目前MCXN系列Neutron NPU只支持int8类型,选择Softmax函数的阈值需要综合考虑多种因素,应根据具体的应用场景和性能目标来决定最合适的阈值,在实际操作中,需要通过多次实验和调整来找到最佳的阈值。设置完成后,点击VALIDATE,等待生成混淆矩阵,通过混淆矩阵可以清晰看出不同类别的分类情况,图中x轴是预测的标签,y轴是实际的标签,能看到每一张图片预测标签和实际标签的对应情况 。

  • 模型导出:

点击DEPLOY,设置Export file Type,inputDataType和outputDataType,打开Export Quantized Model,然后点击Export Model。设置模型保存位置,点击保存 。

  • 转换模型:

保存完成后,点击open model,可以查看模型结构。点击convert,选择TensorFlowLite for Neutron(.tflite)。选择Neutron Target,点击convert,设置保存路径即可 。

  • 部署模型:

将转换后的模型部署到对应的工程中,例如部署到OMV-RT工程,具体过程通OpenMV  RT1062

模型训练是个需要不断重读进行过程,需要不断的去验证、去优化、需要去不断优化提升识别精度,提高程序综合鲁棒性,以免再比赛环境有所变化,如室内灯光明暗、颜色、反光等情况下导致自己训练的AI模型识别精度出现问题。

7. 综合备赛建议与资源推荐

以下是针对智能车竞赛初次参赛者的准备要点总结,结合竞赛特点和实践经验整理而成

7.1、基础技能与知识准备

  1. 编程与硬件基础
    • 学习C语言基础、单片机原理(推荐STM32系列入门资料丰富全面等),掌握PWM控制、ADC采集、中断处理等核心功能。
    • 学习Python 以及OpenMV IDE的使用,掌握基础micropython语法等s
    • 熟悉常用传感器(如摄像头、电磁传感器、陀螺仪)的驱动与数据处理。
  2. 硬件设计与调试
    • 优先使用龙邱科技等官方合作商的成熟模块(如电机驱动、摄像头模块),降低开发难度。
    • 学习PCB设计基础,注意元器件封装选择(如贴片封装更轻量化)和电路隔离设计(如电机与控制器地线隔离)。

7.2、车辆硬件搭建

  1. 机械结构调整
    • 降低重心:通过调整电池和主控板位置提升高速稳定性。
    • 舵机安装:确保舵机连杆水平安装,避免左右打角不对称。
  2. 传感器布局优化
    • 摄像头组需关注图像采集时序(场中断与行中断),电磁组需合理布置电感位置以增强信号质量。

7.3、算法与控制策略

  1. 基础控制实现
    • 优先完成传感器信号处理(如摄像头二值化、电磁信号滤波),再调试PID控制(速度、方向)。
    • 尝试开环调试验证机械结构合理性,再过渡到闭环控制。
  2. 赛道元素识别
    • 针对弯道、坡道、障碍物等元素编写专用处理逻辑,可参考网上开源代码优化算法或向往届优秀组别学习。

7.4、比赛流程与资源整合

  1. 规则与工具熟悉
    • 仔细阅读《竞赛规则》和《裁判员手册》,关注赛道元素判罚标准(如视觉组图片分类规则)。
    • 推荐龙邱的多功能 试助手(如无线串口模块,蓝牙/lora/WiFi模块等)实时监控数据。
  2. 资源获取与协作
    • 加入龙邱的官方交流群,获取开源代码库和技术支持。
    • 与队友分工明确(硬件、软件、机械),定期进行联调测试。

7.5、实战建议

  1. 分阶段验证
    • 第1-2周:完成基础功能(如电机转动、舵机打角);
    • 第3-4周:实现简单巡线;
    • 第5-6周:优化速度与稳定性。
    • * * * * * * *
  2. 调试技巧
    • 有条件可以使用Matlab仿真PID参数,减少实车调试时间;
    • 记录每次参数调整结果,建立调试日志。

7.6推荐学习路径

  1. 教程与开源项目
    • 龙邱科技以及往届智能车相关方案资料、视频;
    • GitHub/gitee开源仓库(搜索“智能车竞赛”)学习往届优秀案例。
  2. 官方资源
    • 关注公众号“TSINGHUAJOKING”获取规则更新;
    • 观看龙邱/逐飞的B站直播教程。
  3. 学习路径:C语言→单片机基础→传感器实验→算法移植。
  4. 团队分工:
    • 硬件——电路设计板子焊接制作
    • 软件——算法调试,完成控制程序
    • 机械——车模改装
  5. 学习资源:CSDN、往届技术报告、GitHub、gitee、B 站学习视频。

以上内容综合了硬件搭建、算法设计、比赛策略等关键环节,建议结合具体组别(如摄像头/电磁组)进一步细化方案。

结语

到这里,这篇手册分享就结束了。智能车大赛的魅力不仅在于追求胜利,更在于探索过程中的每一次自我突破大家在参考我们方案的同时,别忘了充分发挥自己的创造力去挖掘更多可能。

祝愿每一位同学都能在比赛中有所收获,享受智能车带来的乐趣。期待在赛场上看到你们的精彩表现,祝大家都能取得理想的成绩,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值