【E481】基于MLP神经网络和树莓派的自动驾驶小车

2021-08-23 11:09:05      索炜达电子      476     

项目编号:E481

文件大小:16K

源码说明:带中文注释

开发环境:Python

简要概述:

小车使用arduino,树莓派等硬件模块,采用摄像头,并使用MLP神经网进行路径识别的自动驾驶。


主要设计方法如下,先用arduino、树莓派和摄像头等模块搭建小车。再用树莓派摄像头采集到的图片通过局域网发送到上位机。上位机保存图像,处理后得到训练集。接着,在电脑上训练mlp神经网络模型。得到模型后,运行自动驾驶程序,摄像头捕获图片,上位机接收图像,加载训练模型,解算图像得出控制参数,通过蓝牙发送给arduino,控制小车。

【E481】基于MLP神经网络和树莓派的自动驾驶小车

【E481】基于MLP神经网络和树莓派的自动驾驶小车

小车以arduino和树莓派为核心,并搭载有摄像头感器模块,蓝牙等硬件模块作为下位机的硬件部分,用PC机端相关程序为作为上位机。 Arduino 主要用于负责小车的运动控制,通过串口接收来自PC上位机所发来的控制信息,树莓派主要负责图像的接收和发送,还有与上位机间的信息传递,树莓派与上位机之间通过无线局域网络进行连接。PC机主要负责接收树莓派传来的图像数据,并利用PC机对神经网络进行训练,预测小车的运动方向并返回给Arduino。


小车在搭建使用的硬件模块清单如下: 

树莓派3b+,

树莓派原装摄像头,

包含电机的小车车体,

L298N电机驱动模块,

arduino uno R3开发版,

HC05蓝牙模块。 


在小车硬件环境搭建好后,需要完成arduino驱动程序和树莓派端的数据采集与发送程序的编写。小车arduino的驱动程序fourlun.ino,树莓派上的程序stream_client.py,收集训练数据获取数据集该模块的功能是在PC机上收集树莓派端传输的图像以作为训练数据并形成数据集的功能。收集的数据应该是我们提前布置好的实验场景下的跑道图片,为了使特征明显,采用在深色地面上用白纸铺设跑道的方法。在采集数据的过程中,要保证树莓派和上位机连在同一个网段下。 240*320分别运行下面两个代码在上位机端和树莓派端。收集训练数据制作数据集的代码路径如下:上位机端运行的代码:collect_training_data3.py 树莓派端运行的代码:stream_client.py运行训练算法模型的程序,我们就可以将MLP模型通过搜集好的训练数据,在上位机上训练了,执行训练程序后,就可以完成训练,得到参数模型了。训练模型的代码mlp_training.py 训练之后,就可以得到mlp在我们获取的数据集的参数模型了。参数模型的保存路径为:mlp_xml/ 将模型应用到我们的布置的实验场景下,就可以实现小车自动驾驶功能了。将小车放在预先铺设跑道好的实验环境下,并保证树莓派和上位机连接在同一个局域网下,具体的连接方法为:分别运行下面两个代码在上位机端和树莓派端。上位机端运行的程序rC_driver.py 树莓派端运行程序为: stream_client.py


目录│文件列表:

 └ Self-DrivingCar_MLP_RaspberryPi

    │ collect_training_data3.py

    │ collect_train_data3.ipynb

    │ mlp_training.py

    │ rc_driver.py

    │ rc_driver_pc.ipynb

    │ trainning_car.ipynb

    ├ fourlun

    │  └ fourlun.ino

    ├ pi

    │  └ stream_client.py

TAG树莓派
  • 4 次
  • 1 分