传统视觉如何控制小车运动

传统视觉如何控制小车运动,第1张

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

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

BPneural_network_car-0410_土豆_高清视频在线观看 (这个是我用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类,简直不能再简单了,几句话就能搭建好了一个网络…

你好,下面是一个对应的代码

import turtle

import time

t = turtle.Pen()

def fun1(t, x, y):

t.forward(x)

t.left(y)

def fun2(t, x, y):

t.forward(x)

t.right(y)

'''

color函数有三个参数

第一个参数指定有多少红色

第二个参数指定有多少绿色

第三个参数指辩枯定有多少蓝色

都为0的时携升洞候笑悔此时为黑色

都为1的时候此时为白色

这种红色,绿色,蓝色的混搭叫做RGB

蓝色和红色混合产生紫色

黄色和红色混合产生橙色

'''

t.color(1, 0, 0)

t.begin_fill()

fun1(t, 100, 90)

fun1(t, 20, 90)

fun2(t, 20, 90)

fun1(t, 20, 90)

fun1(t, 60, 90)

fun2(t, 20, 90)

fun1(t, 20, 90)

t.forward(20)

t.end_fill()

t.color(0, 0, 0)

t.up()

t.forward(10)

t.down()

# 开始位置

#t.begin_fill()

# 画圆

t.circle(10)

# 结束位置

#t.end_fill()

# 设置当前的指定角度为0度

t.setheading(0)

t.up()

t.forward(90)

t.right(90)

t.forward(10)

t.setheading(0)

t.down()

#t.begin_fill()

t.circle(10)

#t.end_fill()

t.up()

time.sleep(20)

1、利用random随机库里的函数,生成一个由四个大小写字母组成的验证码,显示在屏幕上

我的解答:

系统解答:

系统解析:

1.用随机数要导入random库,并记别名为r

2.先李携定义好要使用的英文字母表;

3.用seed(1)初始化随机函数,保证后面产生的随机数跟标准答案的一致

4.初始化密码code为一个空字符串;

系统解答:

系统解析:

题目给出了基本数据的定义,后面要使用这些变量

在for循环里面,主要问题是画笔的定位,要考虑圆心的位置是(0,0)的时候,画笔要移动到圆心位置正下方,因此坐标点是(0,-ra[i])

画笔颜色要从颜色列表里选取

画圆的半径也从变量里面获取

系统解答:

系统陪枣解析:

字典members里的value是个列表,所以需要用到列表的索引

对着字典members遍历,按照要求显示每个员工的工资和部门哪乱伏信息,另外还要取得工资和部门的名称存入字典sal_dep

为了统计工资最高的部门的工资,需要字典sal_dep来保存这两个信息

并且这个字典的key应该是工资数

用max函数对字典sal_dep的key进行求最大值的计算,并将最大值赋给变量max_val

再从字典里,取出key为max_val的value赋给变量max_name

最后按照要求显示结果

系统解答:

5、输入一个正整数(范围为65-96),请输出对应的Unicode字符。

6、获得用户输入的一个字符串,将字符串逆序输出,同时紧接着输出字符串的个数

我的解答:

我的是错的,因为reverse()是对列表进行反转,而不是字符串,所以正确解答应该是:

7、以123为随机数种子,随机生成10个在1(含)到999(含)之间的随机整数,每个随机数后跟随一个逗号进行分隔,屏幕输出这10个随机数。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12521553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存