回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

行空板无人驾驶系列课程 第1课:自动驾驶车道保持系统 简单

头像 zoey不种土豆 2025.05.15 39 0

自动驾驶车道保持系统是一项引领未来交通领域的创新项目,旨在开发一种先进的技术解决方案,让车辆能够在道路上稳定行驶并保持在正确的车道内。该系统将为驾驶员提供更安全、舒适的驾驶体验,同时为道路安全和交通流畅性作出贡献。接下来,就使用巡线传感器来完成自动驾驶车道保持系统吧!

image.png

 

任务目标

小车通过巡线传感器,可以实现精准地巡线,让小车可以自主地在预定的地图上沿线路行驶。

image.png

知识点

1. 了解巡线传感器的工作原理

2. 掌握巡线传感器的使用方法

3. 掌握如何通过巡线传感器实现转向

 

材料清单

硬件准备:

image.png

 

软件使用:Mind+编程软件

下载地址:https://mindplus.cc/

image.png

 

课前准备

在开始正式学习之前,我们需要对行空板进行一些基础准备,确保系统和环境设置都正确。

 

1. 检查行空板系统固件版本

这套课程中,行空板使用的是专用固件,因此我们首先需要确认系统版本是否正确。查看方法如下:长按行空板“home”键,选择“6-查看系统信息”,查看当前系统版本是否为v0.3.5-0175_02,若一致,则说明固件设置正确!

image.png

 

这套课程中,行空板使用的是专用固件,因此我们首先需要确认系统版本是否正确。查看方法如下:长按行空板“home”键,选择“6-查看系统信息”,查看当前系统版本是否为v0.3.5-0175_02,若一致,则说明固件设置正确!


 

特别提示:

如果你购买的是行空板Maxbot无人驾驶套件,那么出厂时系统固件已经更新为指定版本,通常无需手动更新。

 

但如果你在“查看系统信息”时发现版本不一致或显示异常,请按照官方使用说明进行固件重新烧录,以确保课程程序正常运行。

 

2.设置Mind+编程环境

完成硬件检查后,我们需要配置编程软件 Mind+,确认软件版本在v1.8.0 RC3.0及以上。

Mind+下载地址:https://mindplus.cc

image.png

 

后续课程中,部分AI项目将调用以下用户库。为避免重复操作,推荐首次使用时一次性导入全部用户库。

numpy——https://gitee.com/kiki12345/maxbot_numpy

opencv——https://gitee.com/kiki12345/maxbot_opencv

audio——https://gitee.com/kiki12345/maxbot_audio

cnn——https://gitee.com/kiki12345/maxbot_cnn

电机——https://gitee.com/kiki12345/maxbot_motordriver

打开Mind+,切换到“Python模式”,在“用户库”的搜索框中,输入对应的链接进行搜索即可。例如,添加“numpy”库文件的操作方法,如下图。

 

image.png

所有库文件添加完成后,它们将统一出现在Mind+的“用户库”分类下,后续课程可直接调用,无需重复添加,如下图:

注意:其中“base64”库无需链接,直接在用户库中搜索关键词“base64”添加即可。

image.png

至此,行空板Maxbot无人驾驶小车的学习环境已全部就绪!你已经完成了出发前的所有准备,下一步就要进入正式编程之旅啦!

 

动手实践

小车要按照指定轨迹行驶,首先,需要如何使用巡线传感器,传感器检测到黑线和白线时,数值有什么不同。然后,分析巡线传感器检测到的数据,根据数据控制小车直行,左转、右转。下面,就从下面两个小任务来完成自动驾驶车道保持系统吧!

任务一:读取巡线传感器值

这个任务,主要是获取巡线传感器在检测到黑线和白线时,数值有什么不同。

任务二:小车巡线

通过分析巡线传感器检测到的数值,从而控制小车直行、左转、右转,让小车可以沿着地图上的指定黑线行驶。

 

任务一:读取巡线传感值

1. 硬件连接

这个巡线传感器是由3个独立的巡线传感器组合在一起,因此,每个巡线传感器是独立工作的。下面,将这三个巡线传感器分别连接P10、P11、P13这三个引脚。左侧巡线传感器—P10、中间巡线传感器—P11、右侧巡线传感器—P13。

image.png

2. 软件准备

(1)打开Mind+:按照下面的图示完成软件准备工作。

image.png

 

3. 编写程序

这个项目中要使用Pinpong库,因此,在“Python主程序开始”下,使用“pinpong初始化 板型自动识别 端口”指令,板型可以选择“自动识别”,也可以选择“行空板”,不输入端口号则自动识别。

image.png

巡线传感器分别连接在主板上的P10、P11、P13引脚,需要使用“pin初始化 引脚号 模式”指令,分别设置这几个引脚的模式为“数字输入”。

image.png

 

要获取巡线传感器检测到的值,使用“pin读数字值”指令,并修改该指令的对象名。

image.png

将获取的巡线传感器数值显示在行空板上,在“Python主程序开始”之下,使用“对象名 显示文字 在X Y 字号()颜色”指令,分别新建左、中、右三个文本对象。

image.png

 

最后,使用“更新对象名 的文本内容参数为 ”指令,在“循环执行”指令中,修改对象名,并将内容参数更新为“读数字值”指令。

image.png

4. 程序运行

在上传程序之前,需要先对巡线传感器进行校准。打开小车电源,行空板初始化成功后,将巡线传感器放到地图的校准区域上,长按校准按钮,当巡线传感器上的蓝色LED闪烁三次后,完成校准。

image.png

 

校准完成后,可以简单地测试一下,将小车巡线传感器放到地图白色区域,巡线传感器的指示灯亮;将小车巡线传感器放到地图黑色区域,巡线传感器的指示灯全灭。

image.png

远程连接192.168.1.80,连接成功后,点击运行。将小车巡线传感器放到地图上的黑白不同区域,行空板上显示的数据也不一样。效果如下:

image.png

 

任务二:小车巡线

开始编程之前,先来分析一下,要让小车能沿着黑线行驶,巡线传感器会有哪些情况。当中间传感器检测到黑线,小车直行;当左侧传感器检测到黑线,车头偏右,小车左转;当右侧传感器检测到黑线,车头偏左,小车右转。

注意:3个巡线传感器一共有7种不同情况,这里只分析3种,其余的见知识园地。

image.png

 

2. 编写程序

在任务一程序的基础上,保留“pinpong初始化 板型自动识别 端口”和“pin初始化 引脚号 模式”指令,设置模式为“数字输入”。

image.png

接下来,使用“如果那么 执行 ”指令,对读取的巡线传感器数值进行判断。当“C读数字值”指令等于0时,说明中间巡线传感器检测到黑线,使用“电机(M1)以0速度”指令,设置左右两个电机以450的速度正转。

image.png

当小车右侧巡线传感器检测到黑线,中间传感器检测到白色时,说明小车的车头开始左偏了,就应该控制小车右转。使用逻辑“”指令,判断“C读数字值”等于1,与“R读数字值”等于0,这两个条件是否成立,成立就使用“电机(M1)以0速度”指令,设置小车右转。

image.png

同样的,当小车左侧巡线传感器检测到黑线,中间传感器检测到白色时,说明小车的车头开始右偏了,就应该控制小车右左转。使用逻辑“”指令,判断“C读数字值”等于1,“L读数字值”等于0,这两个条件是否成立,成立就使用“电机(M1)以0速度”指令,设置小车左转。

image.png

完整程序如下:

image.png

 

2. 程序运行

先将小车放在地图上,然后打开小车电源,等行空板初始化成功后。远程连接192.168.1.80,连接成功后,点击运行,小车将沿着地图上的黑线行驶。

image.png

 

 

知识园地

1. 了解巡线传感器的工作原理

我们使用的巡线传感器是由三个独立巡线传感器组合在一起的,每个巡线传感器检测头都有两个红外探头。一个探头用于红外发射,一个探头用于红外接收。

image.png

巡线传感器的工作原理是基于反射光的特性,在白色背景下,黑色的线路标记将反射较少的光,而白色的背景将反射更多的光,因此,在传感器检测到地面上的黑线时,输出0。反之,当巡线传感器检测到地面上的白色背景时,输出1。

image.png

2. 了解巡线传感器状态

三个巡线传感器可以组成以下7种不同的状态,状态分析如下:

image.png

 

3. 指令学习

image.png

 

挑战自我

巡线传感器状态中,有一种状态是三个巡线传感器都没检测到黑线。接下来,大家试一下在任务二程序的基础上添加一个小车停止的程序,当三个巡线传感器都没检测到黑线时,让小车停止。

提示:使用“”指令,同时判断三个巡线传感器的状态。

image.png

整个课程中,都是使用pinpong库中的“pin 读数字值”指令。之前,我们获取数字传感器检测到的值使用的是行空板中的“读取数字引脚 ”指令,这个课程中获取巡线传感器的值,是否也可以使用这个指令呢?大家可以试一下哦~

image.png

评论

user-avatar