大四狗下学期想学习机器学习、深度学习等相关知识,于是毕设想做些神经网络相关的东西,因为本科期间参加过大学生智能车竞赛,于是想利用小车,通过神经网络,实现自主学习,完成在规定赛道上的行驶。现在在这里,记录,归纳,整理下过程,同时也留点资料给实验室的学弟学妹们……持续更新……

在传统的视觉循迹小车中,主要是通过摄像头获取赛道图像,然后对图像进行处理,得到偏差,然后根据偏差控制小车行驶。小车之所以能运行,关键在于,他会根据人为设定好的判定条件,去抉择下一步该怎么做。人为设定的判定条件的好坏,决定的车能跑成什么样。而神经网络,是机器学习的一种方法。通过神经网络实现循迹功能,与传统的方法比较,他更可以被说成是一种自主学习的方法。整个思路大致如下,首先通过摇杆操纵小车运行一段时间,收集训练数据(包括图像,摇杆值),然后通过神经网络训练出一套模型,以后就可以根据这个模型,预测、控制小车行驶。

本人从最简单的做起,从BP神经网络学起,后面学习其它更快更新的算法,例如近几年特别火的CNN……(文章后面也会写出一些机器学习的笔记心得)

http://www.tudou.com/programs/view/nr8PE4RkWTY (这个是我用BP神经网络做的效果-0-)

整体框架:

 1、小车:主控芯片K60,但K60运行速度有限,于是这里只用作小车的控制驱动,不涉及图像处理,神经网络等算法。(关于小车,没什么要求,只要能通过某种方式控制就好,我用的是比赛时候的车模,也懒得重新组装了,就是往上加树莓派,加电源,所以导致太重了……太重了就不好控制了2333333,如果只是简单学习的话强烈建议用些简单的,轻的,好控制的,什么adurino小车啊,调起来不用考虑那么多因素)

 2、树莓派+camera :可以作为传输中介,将图像传给PC,通过PC进行训练预测等。也可以直接作为运算终端,直接在树莓派上进行训练,预测等。我这里是用作前者,因为用电脑开发比较快,写代码什么的都比较方便0-0:(ps:树莓派我用的是pi3,官方系统是基于debian的linux系统。刚开始用linux肯定各种陌生,然后就各种百度,谷歌的查。现在官方的桌面系统已经很好用了,但终究到底还是得通过命令行控制。摄像头用的是官方的,派上有专门接口,直接调用官方库。用usb的摄像头也行,可以通过opencv调用)

3、PC电脑:和树莓派通过wifi连接在同一个局域网内,通过socket服务传输数据。同时可以和小车主控板通过蓝牙连接,发送指令控制小车

4、手柄:通过手柄遥控小车,收集训练数据,同时记录手柄的摇杆值,即学习的标签

整个程序用python语言开发,主要python比较容易上手,而且各种库方便调用。主要用的都是opencv,opencv里有大量成熟的库,BP神经网络就是调用的是opencv的ml类,简直不能再简单了,几句话就能搭建好了一个网络…(往后打算自己写个BP,这样方能更深入学习,至少看起来不是很难写0-0)

作者:刘宇鸣
链接:https://zhuanlan.zhihu.com/p/26307292
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

-------------第二次更新-------------

一开始在各大报道论坛上听到神经网络都是被唬住的,后面认认真真看了点资料,似乎懂了那么一点点……人工神经网络(Artificial Neural Network,即ANN),就是通过模仿神经元的活动,获得一个可以变形为任意形状的任意函数。比如我们人类从小辨别猫狗,一开始我们肯定不知道这是猫还是狗,辨别准确率为0。然后家长告诉你,这只是狗,汪汪汪……这只是猫,喵喵喵……其实你还是啥也不知道。然后有了下一次,家长继续告诉你,这样的是狗,那样的是猫,汪汪汪的狗让你害怕,喵喵喵的猫让你开心。然后你的大脑神经网络慢慢在训练出一个能辨别狗和猫的模型。可能某个阶段你认错了猫,家长们又告诉了你这是狗,这样你对狗的认识又深了。随着你的成长,见着猫狗的次数不断增加,你辨别猫狗的准确率也就越来越高。直到长大,你基本能一眼就辨别出猫和狗了……这是一个监督学习的例子,动物的样貌,声音等等特征就是神经网络的输入,辨别出是猫还是狗就是输出。而你的大脑慢慢会辨别出猫狗,这个就是学习过程,至于你的大脑是如何通过神经网络学习会的,具体是识别了哪些特征,我们不知道,也难以解释。神经网络就好比一个黑箱子,我们只需要确定输入输出,然后搭建网络,训练出一个模型,尽可能让输出对应上输入,让他们满足一定的映射关系。这个关系可能是线性,也有可能是非线性的,但我们都不需要理它。以后我们就用这个模型去预测其他的输入。使用不同的神经网络,比如BP神经网络,CNN,RNN得到的模型是不一样的,效果也不一样,也各适用于不同的问题,不同的场合。

我这里这开始用的就是BP,因为简单,好理解,对于我这种刚入门的人来说。首先对于我这个小项目来说,输入就是摄像头采回来的图像,我的输出直接小车的舵机控制量。基本实现的是end-to-end(端对端)(ps:英伟达去年大约这个时候发布了一个无人驾驶系统DAVE,就是end-to-end,人家这真车实战的,仰望高端玩家 End-to-End Deep Learning for Self-Driving Cars)

……未完待续……

神经网络视觉循迹小车相关推荐

  1. 单片机寻迹小车ppt_基于单片机循迹小车的设计.doc

    目录 [摘   要]  2 第一章  绪论  3 1.1智能小车的来源  3 1.2研究智能小车的目的和意义  4 1.3智能小车的现状及未来  4 第二章  方案的设计与论证  4 2.1主控系统  ...

  2. 如何让小型双轮差速底盘实现视觉循迹功能

    1. 任务描述 在机器人小车(R023d)上搭载摄像头,摄像头采集图像信息并通过WiFi将信息传递给PC端,然后PC端使用OpenCV对摄像头读取到的视频进行灰度化.高斯滤波.腐蚀.膨胀等处理,使图像 ...

  3. 智能循迹小车_智能机器人之循迹小车——循迹原理

    智能机器人之循迹小车 --循迹原理 01 什么是循迹小车 循迹小车是指使用一定的循迹方法,使得小车自动循着赛道运行的小车. 02 循迹小车原理 循迹一般是黑色轨迹,传感器发出红外信号被接收后收入比较器 ...

  4. arduino黑线循迹小车程序_循迹小车:给我一条线,我能自己走完全程

    在老少通吃的智能小车到底是什么呢?科普来喽!一文中,我们介绍了智能小车的分类及组成,为什么循迹小车能够追踪黑线轨迹呢? 智能小车在画有黑线的白纸 "路面"上行驶,由于黑线和白纸对光 ...

  5. LDC1000循迹小车

    以LDC1000电感/数字转换器为核心,设计并制作一个可自动根据铁丝形状循迹小车. 系统的主要功能模块包括:主控模块.金属信号探测模块.速度检测模块,电机驱动模块及电源模块. 系统主控芯片STC89C ...

  6. 51单片机智能小车循迹完整程序_电气与信息工程学院双创协会开展循迹小车培训...

    为培养青年学子创新意识和创新能力,激发勇于创新的主动性和积极性,营造良好科技创新氛围,10月29日至30日,电气与信息工程学院双创协会于一教609.三教102和三教202开展循迹小车培训,该培训由电子 ...

  7. 简单循迹小车实验心得_红外自动循迹小车实验报告

    红外自动循迹小车实验报告 1摘要 本实验完成采用红外反射式传感器的自寻迹小车的设计与实现.采用与白色地面色差很大的黑色 路线引导小车按照既定路线前进,在意外偏离引导线的情况下自动回位,并能显示小车停止 ...

  8. 简单循迹小车实验心得_智能循迹小车总结 智能循迹小车报告.doc

    智能循迹小车总结 智能循迹小车报告 西京学院 自动化1002班 概要 本寻迹小车是以万能板为车架,STC12C5A60S2单片机为控制核心,将各传 感器的信号传至单片机分析处理,从而控制 L293D电 ...

  9. 循迹小车智能搬运:调车篇

    循迹小车智能搬运:调车篇 文章目录 循迹小车智能搬运:调车篇 前言 一.调车的原则 二.调车步骤 1.走直线 1.传感器的位置 2.电机的转速 3.修正函数的好坏 2.左右转90° 3.在十字路口停下 ...

最新文章

  1. OpenLayers 动态添加标记(Marker)和信息窗(Popup)
  2. linux做预警机制,预警通告:Linux内核中TCP SACK机制远程DoS
  3. leetcode 202 快乐数
  4. ubuntu16.04 安装网易云音乐
  5. java之集合框架一Collection接口
  6. mac上投屏android_全平台Win/Mac全设备Android/iOS 免费无线投屏神器
  7. 电大计算机应用基础考60,(2016年电大)电大计算机应用基础考答案.doc
  8. 2013年上半年全国高等学校(安徽考区)计算机水平考试试卷,2013年上半年全国高等学校(安徽考区)计算机水平考试试卷...
  9. python动态_python的动态性和_slot_
  10. 如何使用 abp 创建 module 并应用单独的数据库迁移
  11. 多组input文件,每组 multiple选择多张图片上传可增删其中任意一张图片,用formData对象实现(ajax,sync: false同步)
  12. IP地址资源的分配和管理
  13. 记使用springboot过程中遇到的一个问题
  14. owncloud server replied : locked 故障处理
  15. MXT6208量产修复工具+v2.0非常好用哦!
  16. centos7 ceph 集群部署
  17. Transformer基础
  18. Django中间件Middleware
  19. CAD技巧之002——如何用Cass内插高程点或者说加密高程点
  20. 2021年煤矿采煤机(掘进机)操作考试题及煤矿采煤机(掘进机)操作报名考试

热门文章

  1. JSP--从一个jsp页面通过按钮跳转到另一个jsp页面
  2. 清华计算机科学与技术研究生复试,有效包括 2018年清华计算机科学与技术系考研复试科目复试通知复试分数...
  3. 计算机毕业设计Java学生实验报告管理系统(源码+系统+mysql数据库+lw文档)
  4. ubuntu安装使用Beyond Compare4
  5. 第二次CCF计算机软件能力认证
  6. 【TDengine开源】纪念成为16k Star项目TDengine第121位贡献者
  7. 线段相交(快速排斥和跨立)
  8. JAVA文件读取和写入(内附简单的代码实现)
  9. CIDR简介以及计算方式
  10. 解锁新姿势-使用TensorRT部署pytorch模型