自主-RC车
该项目旨在使用具有单个隐藏层的神经网络的监督学习来构建自主的rc车辆。我们没有使用任何机器学习库,因为我们想从头开始实现神经网络,以更好地了解概念。我们修改了遥控车,以消除对RF遥控器的依赖。Raspberry Pi通过L293D电机驱动器IC控制直流电机。您可以在这里找到一个解释这个项目的帖子。这是一辆汽车在行动中的视频。
组装
我们将把控制左/右方向的直流电动机作为前电动机和控制前后方向的电动机作为后电动机。连接
和BACK_MOTOR_DATA_ONE和BACK_MOTOR_DATA_TWO。GPIO管脚(GPIO17和GPIO27树莓Pi的GPIO)到输入引脚为电机1( ,Input 1)Input 2和BACK_MOTOR_ENABLE_PINGPIO引脚(GPIO22),以启用销为电机1(Enable 1,2在L293D电机驱动器IC)。将IC的电机1(Output 1,Output 2)的输出引脚连接到背面电机。
连接FRONT_MOTOR_DATA_ONE和FRONT_MOTOR_DATA_TWOGPIO管脚(GPIO19和GPIO26树莓Pi的)到输入引脚为电机2( Input 3,Input 4在IC)。将IC的电机2(Output 3,Output 4)的输出引脚连接到前电机。
PWM_FREQUENCY和INITIAL_PWM_DUTY_CYCLE表示PWM输出的初始频率和占空比。
我们已经建立了五个类标签,即forward
reverse
left
right
idle
和分配他们的预期值。所有类标签都需要同一名称的文件夹才能存在于当前目录中。
IMAGE_DIMENSION
在训练期间,输入图像大小调整为元组值的维度。该值LAMBDA和HIDDEN_LAYER_SIZE值表示在训练神经网络时隐藏层中的默认lambda值和节点数。
所有这些值都可以配置configuration.py
建立
用于训练的图像interactive_control_train.py
使用方向箭头控制汽车,并且所有的图像与对应的按键一起被记录在同一个文件夹中。在命令提示符下,运行以下命令:
python interactive_control_train.py
根据文件名中所示的按键按钮,将图像分离到各自的类文件夹之前完成数据清理。
培养图像分离成其相应的类文件夹后,神经网络使用训练有素的
train.py
它有两个可选参数-
lambda、hidden layer size
默认值将是配置文件中指定的值。在命令提示符下,运行以下命令:
python train.py
0.1 100
图像从对应的类文件夹加载,并分配给配置文件中指示的类值。生成的模型optimized_thetas
作为pickle文件存储在文件夹中。这是一个样本数据集和训练有素的模型,让您开始。
一旦我们有了训练有素的模型,RC车就是自主运行的autonomous.py
这对于训练有素的模型来说是可以选择的。默认将使用
optimized_thetas
文件夹中的最新型号。在命令提示符下,运行以下命令:
python autonomous.py
当模型预测转弯时,我们正在降低汽车的速度。虽然我们希望在未来增加一个速度分量,神经网络并没有减少这个减少。
计划功能
我们打算在将来添加以下功能:
-
使用神经网络控制汽车的速度
-
停止信号检测
-
障碍物检测
特别谢谢
感谢Andrew Ng为他的Coursera机器学习课程。
关于
自主车由Multunus Software Pvt维护和资助。Multunus的名称和徽标是Multunus Software Pvt的商标。有限公司
我们建立了这个在20%的投资时间内探索和学习机器学习概念。我们将在投资的时候支持这个项目。
原文出自github
原文始发于:使用Raspberry Pi和ANN自动驾驶的RC车
|