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

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

知识点
1. 了解巡线传感器的工作原理
2. 掌握巡线传感器的使用方法
3. 掌握如何通过巡线传感器实现转向
材料清单
硬件准备:

软件使用:Mind+编程软件
下载地址:https://mindplus.cc/

课前准备
在开始正式学习之前,我们需要对行空板进行一些基础准备,确保系统和环境设置都正确。
1. 检查行空板系统固件版本
这套课程中,行空板使用的是专用固件,因此我们首先需要确认系统版本是否正确。查看方法如下:长按行空板“home”键,选择“6-查看系统信息”,查看当前系统版本是否为v0.3.5-0175_02,若一致,则说明固件设置正确!

这套课程中,行空板使用的是专用固件,因此我们首先需要确认系统版本是否正确。查看方法如下:长按行空板“home”键,选择“6-查看系统信息”,查看当前系统版本是否为v0.3.5-0175_02,若一致,则说明固件设置正确!
特别提示:
如果你购买的是行空板Maxbot无人驾驶套件,那么出厂时系统固件已经更新为指定版本,通常无需手动更新。
但如果你在“查看系统信息”时发现版本不一致或显示异常,请按照官方使用说明进行固件重新烧录,以确保课程程序正常运行。
2.设置Mind+编程环境
完成硬件检查后,我们需要配置编程软件 Mind+,确认软件版本在v1.8.0 RC3.0及以上。
Mind+下载地址:https://mindplus.cc

后续课程中,部分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”库文件的操作方法,如下图。

所有库文件添加完成后,它们将统一出现在Mind+的“用户库”分类下,后续课程可直接调用,无需重复添加,如下图:
注意:其中“base64”库无需链接,直接在用户库中搜索关键词“base64”添加即可。

至此,行空板Maxbot无人驾驶小车的学习环境已全部就绪!你已经完成了出发前的所有准备,下一步就要进入正式编程之旅啦!
动手实践
小车要按照指定轨迹行驶,首先,需要如何使用巡线传感器,传感器检测到黑线和白线时,数值有什么不同。然后,分析巡线传感器检测到的数据,根据数据控制小车直行,左转、右转。下面,就从下面两个小任务来完成自动驾驶车道保持系统吧!
任务一:读取巡线传感器值
这个任务,主要是获取巡线传感器在检测到黑线和白线时,数值有什么不同。
任务二:小车巡线
通过分析巡线传感器检测到的数值,从而控制小车直行、左转、右转,让小车可以沿着地图上的指定黑线行驶。
任务一:读取巡线传感值
1. 硬件连接
这个巡线传感器是由3个独立的巡线传感器组合在一起,因此,每个巡线传感器是独立工作的。下面,将这三个巡线传感器分别连接P10、P11、P13这三个引脚。左侧巡线传感器—P10、中间巡线传感器—P11、右侧巡线传感器—P13。

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

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

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

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

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

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

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

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

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

任务二:小车巡线
开始编程之前,先来分析一下,要让小车能沿着黑线行驶,巡线传感器会有哪些情况。当中间传感器检测到黑线,小车直行;当左侧传感器检测到黑线,车头偏右,小车左转;当右侧传感器检测到黑线,车头偏左,小车右转。
注意:3个巡线传感器一共有7种不同情况,这里只分析3种,其余的见知识园地。

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

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

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

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

完整程序如下:

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

知识园地
1. 了解巡线传感器的工作原理
我们使用的巡线传感器是由三个独立巡线传感器组合在一起的,每个巡线传感器检测头都有两个红外探头。一个探头用于红外发射,一个探头用于红外接收。

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

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

3. 指令学习

挑战自我
巡线传感器状态中,有一种状态是三个巡线传感器都没检测到黑线。接下来,大家试一下在任务二程序的基础上添加一个小车停止的程序,当三个巡线传感器都没检测到黑线时,让小车停止。
提示:使用“与”指令,同时判断三个巡线传感器的状态。

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

评论