Git Product home page Git Product logo

selfdriving's Introduction

self_driving

利用树莓派实现无人驾驶

文件说明

collect_data.py 收集数据用的程序文件,在树莓派上运行,用于收集赛道等数据。
drive.py 无人小车的驱动程序文件,在树莓派上运行,用于无人小车的遥控驾驶。
drivetest.py 采用使能端口后的驱动测试文件,用于测试。
drivetests.py 初步驱动程序的封装函数,可用于初步测试。
test1back.py 测试小车后轮电机的程序。
test2front.py 测试小车前电机的程序。
process_img_to_npz.py 将收集到的照片数据进行数据类型的转换,方便进行进一步的学习计算,应用于计算机上。
train_model.py 训练模型的程序,用于转换类型后的数据进行模型的训练,应用于计算机上。

流程说明

1.配置树莓派(单独配置SSH文件)使其能够实现基本的操作,如putty连接,vncviewer可视化操作,winscp传输文件等,可在软件中配置
2.准备对应得设备,如杜邦线,螺丝刀,基本的车壳,
3.配置树莓派在小车上,并利用杜邦线连接相对应的电机,这里使用的L298N电机,GPIO口对应得分别是7,11(后轮电机),13,15(前轮电机),并且将电源连接到L298N电机上,注意这里的一定要单独給电机供电,靠树莓派的电压会不够,还有就是这里的接地线,连接到GPIO口9,并与电源的负极短接。可以利用test1back.py,test2front.py进行测试。
4.配置使能端口,这里利用的是GPIO口12,16,可以根据自己的实际需要进行调整,注意拔掉L298N电机上的跳线帽连接。ps:增加使能是因为测试中发现一旦转向, 车轮不能回正因电机保持通电状态需要让电机断电从而释放动力。而车前轮可自动由前轮弹簧控制回正,增加电机使能控制前后电机对应的使能分别连接一个GPIO口就可以解决,当使能端口输入低电压时,电机驱动板将不对电机输出电流,电机将不工作可自动回正。
5.车速太快跟不上,满电电池速度过快,通过PWM(Pulse-Width Modulation)调节车速脉冲宽度调制车速,并最后封装为函数drivetests.py。
6.利用树莓派的摄像模块(picamera),并采用多线程的方法采集图片,进行测试。
6.利用键盘检测输入(pygame模块检测),检测我们的输入,然后匹配响应的车辆操作,写在collect_data.py里,并在树莓派中(vnc)运行,可实现键盘通知操作小车。
7.搭建自己的赛道,然后利用collect_data.py,操控小车在赛道上运行,收集图像数据并保存在data文件夹里,这里为了方便后期的模型训练,我们采取了0,1,2,3标号的形式,对于指令给出不同的名称输出,方便我们的筛选训练过程。
8.对图像进行筛选,之后选出有价值的图片,进行保存,删掉没有意义的图像数据。
9.利用process_img_to_npz.py 转换我们的图形数据类型到npz数据类型。
10.利用train_model.py进行模型训练,并保存相应的h5文件。
11.导入h5到我们的树莓派,运行drive.py即可实现在我们的赛道的自动驾驶。

正在进行的改进

1.增加识别行人,红绿灯的操作,如利用opencv,surf等方式实现一些操作。
2.增加雷达的功能使其更加智能化。
3.利用picamera自带的一些图形处理功能训练,使其能够适应光线的变化
欢迎提出您的意见

注意事项

1.赛道需要自己制作,且分界线很重要,需要很明显的分界线,你也可以利用卫生巾来搭建一个赛道(如果你条件有限)
2.赛道的宽度是车身两倍左右
3.数据的筛选很重要,你需要调节你的摄像头使其能够在一个很好的角度去收集数据,即使我们这里利用了一些手段,就是给图像进行编号的方式去方便您的操作,可你还是要自己去筛选图像数据。
4.超参数的调节可以多尝试一些新的数值,不必局限于本项目里的参数设定

推荐链接

本项目采用了大量的神经网络,python,numpy,深度学习方面的知识,还涉及到树莓派的配置和电路的连接,建议提前了解。

selfdriving's People

Contributors

zevinli avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.