1、自动驾驶

1.1、实验说明

本实验是属于拓展类实验,需要搭配其他外部设备使用,这里用到了小车底盘和ROS扩展板都不属于K210模块套件内容,所以本实验效果仅供参考,如果没有对应的设备是不能直接使用本例程代码。

ROS扩展板需要提前烧录固件:ROS-CAR.hex

由于本次使用的电机电压为8.4V,所以ROS扩展板的电池不可以插入12.6V电池,需要插入8.4V电池。

小车电机连接线如下图所示:

电机Motor 1连接左前轮,电机Motor 2连接左后轮,电机Motor 3连接右前轮,电机Motor 4连接右后轮。

image-20230318153743961

K210模块与ROS扩展板连接的线序如下图所示:

白色(GND)连接GND,黄色(5V)连接VCC,黑色(RXD)连接SCL,红色(TXD)连接SDA。 image-20230413105609919

这里需注意一下,图示中的标识为I2C线序标识,但是K210使用的是串口通讯,由于烧录的ROS-CAR.hex文件已经把这个接口修改为串口信号,所以实际上ROS扩展板上的接口对应关系是:SCL实际上是TX,SDA实际上是RX。

image-20230318155916002

 

1.2、实验目标

本节课主要学习K210模块搭配小车底盘做视觉巡线的功能。

本次实验的参考代码路径为:CanMV\06-export\follow_line.py

 

1.3、实验操作

  1. ROS扩展板烧录固件:ROS-CAR.hex
  2. 底板电机连接ROS扩展板,按照M1连接左前电机,M2连接左后电机,M3连接右前电机,M4连接右后电机。
  3. 请将CanMV\06-export\library目录下的小车驱动库和PID控制库提前下载到内存卡的根目录上。
  4. 打开CanMV IDE将follow_line.py代码下载进入K210模块。
  5. 将K210模块通过4PIN排线连接到ROS扩展板上。
  6. 将小车放入视觉巡线的地图中,掰动K210模块支架到合适的角度,打开小车的开关。
  7. 等待系统初始化完成后,LCD显示摄像头画面,并且屏幕中间有一个白色的方框,请移动小车,将要识别的颜色填满白色方框,等待白色方框变绿则开始采集颜色,采集完成绿框消失,开始运行程序。

 

1.4、实验效果

等待系统初始化完成后,LCD显示摄像头画面,并且屏幕中间有一个白色的方框,请将要识别的颜色放到白色方框内,等待白色方框变绿则开始采集颜色,采集完成绿框消失,开始运行程序。

小车会沿着刚刚绿框中识别的颜色向前运动,如下图所示是个圆弧,则小车沿着圆弧运动。

image-20230318162225140

如果中途发现小车经常无法巡线,请查看小车再各个位置是否都能够识别到对应的颜色,然后如果是小车反应过慢或者过快的问题,可调节适当调整FollowLinePID的值。

image-20230318154948577

 

1.5、实验总结

颜色识别的功能主要是分析颜色的LAB值,先把要识别的颜色放方框内,然后系统会根据方框内读取到的颜色的LAB值,再与摄像头采集到的颜色的LAB值作为分析对比,如果符合要求则画出方框,表示识别到该颜色,并将识别到的颜色的位置信息传输给PID控制器进行计算,判断出识别到的颜色与小车中间的偏移量,根据偏移量来修改小车前进的方向,从而达到小车视觉巡线的功能。