# Self-DrivingCar_MLP_RaspberryPi_基于MLP神经网络和树莓派的自动驾驶小车 **Repository Path**: usst-ls/Self-DrivingCar_MLP_RaspberryPi ## Basic Information - **Project Name**: Self-DrivingCar_MLP_RaspberryPi_基于MLP神经网络和树莓派的自动驾驶小车 - **Description**: 小车使用arduino,树莓派等硬件模块,采用摄像头,并使用MLP神经网进行路径识别的自动驾驶。主要设计方法如下,先用arduino、树莓派和摄像头等模块搭建小车。再用树莓派摄像头采集到的图片通过局域网发送到上位机。上位机保存图像,处理后得到训练集。接着,在电脑上训练mlp神经网络模型。得到模型后,运行自动驾驶程序,摄像头捕获图片,上位机接收图像,加载训练模型,解算图像得出控制参数,通过蓝牙发送给arduino,控制小车。 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2021-04-29 - **Last Updated**: 2021-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Self-DrivingCar_MLP_RaspberryPi_基于MLP神经网络和树莓派的自动驾驶小车 #### 介绍 小车使用arduino,树莓派等硬件模块,采用摄像头,并使用MLP神经网进行路径识别的自动驾驶。主要设计方法如下,先用arduino、树莓派和摄像头等模块搭建小车。再用树莓派摄像头采集到的图片通过局域网发送到上位机。上位机保存图像,处理后得到训练集。接着,在电脑上训练mlp神经网络模型。得到模型后,运行自动驾驶程序,摄像头捕获图片,上位机接收图像,加载训练模型,解算图像得出控制参数,通过蓝牙发送给arduino,控制小车。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0710/100735_8b0ce47f_7402065.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/0710/100746_6b109732_7402065.png "屏幕截图.png")小车以arduino和树莓派为核心,并搭载有摄像头感器模块,蓝牙等硬件模块作为下位机的硬件部分,用PC机端相关程序为作为上位机。 Arduino 主要用于负责小车的运动控制,通过串口接收来自PC上位机所发来的控制信息,树莓派主要负责图像的接收和发送,还有与上位机间的信息传递,树莓派与上位机之间通过无线局域网络进行连接。PC机主要负责接收树莓派传来的图像数据,并利用PC机对神经网络进行训练,预测小车的运动方向并返回给Arduino。小车在搭建使用的硬件模块清单如下: 树莓派3b+,树莓派原装摄像头,包含电机的小车车体,L298N电机驱动模块,arduino uno R3开发版,HC05蓝牙模块。 在小车硬件环境搭建好后,需要完成arduino驱动程序和树莓派端的数据采集与发送程序的编写。小车arduino的驱动程序fourlun.ino,树莓派上的程序stream_client.py,收集训练数据获取数据集该模块的功能是在PC机上收集树莓派端传输的图像以作为训练数据并形成数据集的功能。收集的数据应该是我们提前布置好的实验场景下的跑道图片,为了使特征明显,采用在深色地面上用白纸铺设跑道的方法。在采集数据的过程中,要保证树莓派和上位机连在同一个网段下。 ![240*320](https://images.gitee.com/uploads/images/2020/0710/100318_9d595fee_7402065.png "屏幕截图.png")分别运行下面两个代码在上位机端和树莓派端。收集训练数据制作数据集的代码路径如下:上位机端运行的代码:collect_training_data3.py 树莓派端运行的代码:stream_client.py运行训练算法模型的程序,我们就可以将MLP模型通过搜集好的训练数据,在上位机上训练了,执行训练程序后,就可以完成训练,得到参数模型了。训练模型的代码mlp_training.py 训练之后,就可以得到mlp在我们获取的数据集的参数模型了。参数模型的保存路径为:mlp_xml/ 将模型应用到我们的布置的实验场景下,就可以实现小车自动驾驶功能了。将小车放在预先铺设跑道好的实验环境下,并保证树莓派和上位机连接在同一个局域网下,具体的连接方法为:分别运行下面两个代码在上位机端和树莓派端。上位机端运行的程序rC_driver.py 树莓派端运行程序为: stream_client.py