智能车学习(二十一)——浅谈CCD交叉以及横线摆放
一、CCD为何要交叉摆放?
首先使用横线摆放,CCD前瞻如果远一点,弯道丢线,再远一点直接窜道。所以需要很多很多代码的工作量,而且过弯的过程相当于没有任何的调节过程,就是一个偏差保持,或者就是根据前面拟合(三次样条效果可以),但是终究是盲跑,写得好就跑的好,写不好各种窜道,各种问题。
其次可能会想到加个舵机做摇头CCD,想法很好,就是会重了那么一点点,就是会很容易不对称,就是可能不能加前瞻。
最后,综合以上两种思路,可以做一个交叉摆放的CCD支架。使用成熟的3D打印技术,辅助一些胶水固定,可以达到随便翻车,随便撞,都可以稳定对称,而且不会至少一个CCD不会丢线,算法简单好写,赛道元素识别容易,偏差连续,前瞻可以无限远,就是有点浪费。因为加减速单靠这个的话会有一点点问题,所以一般加一个CCD辅助一下。

二、CCD交叉摆放算法设计
1、方法一:
左CCD算一偏差,右CCD算一偏差,两个相加。
A、直道对称,偏差为0
B、弯道丢掉的CCD不要,另一个CCD偏差乘以2
C、丢与不丢交界处有跳变
2、方法二:
使用模糊算法,提取出来交叉的部分,给定经验值,使用Matlab进行培训,得到一组表
优点:肯定连续且可调
缺点:特殊元素偏差要修正,可移植性不强
3、方法三:
使用神经网络进行培训,但是由于CCD信息量还是过少,导致有3到4个地方需要进行特殊处理,加以识别。
优点:稳定,参数不用调= =
缺点:要识别比较麻烦,毕竟CCD信息量少。
(最后使用了这个方法,因为小S可以走直线。。)
三、支架制作:
使用3D打印,可以外发(有钱人任性),可以直接做一个打印机,很简单,材料也有,一般400搞定,淘宝可以买现成的大概也就1500左右吧。基本上这种3D打印机,有了一台就可以做第二台。。鸡生蛋,蛋生鸡。。。。

使用SolidWork画出来,然后转成STL,然后使用打印机对应的上位机进行打印就行了(上位机一般转化为Gcod)。
制作打印机的话,教程另发,也是大神教的啊,已经去了MIT,膜拜膜拜
智能车学习(二十一)——浅谈CCD交叉以及横线摆放的更多相关文章
- 智能车学习(十一)——陀螺仪学习
一.学习说明 感觉就是配置I2C通信,然后直接移植51代码... 二.代码分享: 1.头文件: #ifndef I2C_GYRO_H_ #define I2C_GYRO_H_ /*********** ...
- Spring5.0源码学习系列之浅谈BeanFactory创建
Spring5.0源码学习系列之浅谈BeanFactory创建过程 系列文章目录 提示:Spring源码学习专栏链接 @ 目录 系列文章目录 博客前言介绍 一.获取BeanFactory主流程 二.r ...
- 【.Net基础二】浅谈引用类型、值类型和装箱、拆箱
目前在看CLR via C#,把总结的记下来,索性就把他写成一个系列吧. 1.[.Net基础一] 类型.对象.线程栈.托管堆运行时的相互关系 2.[.Net基础二]浅谈引用类型.值类型和装箱.拆箱 引 ...
- 智能车学习(十五)——K60野火2013版例程
一.中断函数注册方法: 1.格式: 配置某个功能的中断 注册中断函数 开启中断 2.一个例子 pit_init_ms(PIT0,);//定时中断初始化 set_vector_handler(PIT0_ ...
- 【SSH学习笔记】浅谈SSH框架
说在前面 本学期我们有一门课叫做Java EE,由陈老师所授,主要讲的就是Java EE 中的SSH框架. 由于陈老师授课风格以及自己的原因导致学了整整一学期不知道在讲什么,所以才有了自己重新学习总结 ...
- Spring5.0源码学习系列之浅谈循环依赖问题
前言介绍 附录:Spring源码学习专栏 在上一章的学习中,我们对Bean的创建有了一个粗略的了解,接着本文浅谈Spring循环依赖问题,这是一个面试比较常见的问题 1.什么是循环依赖? 所谓的循环依 ...
- 智能车学习(二十)——浅谈C车硬连接与软连接
一.为何要追求软连接? 车子进行软连接之后,可以达到一种效果,就是在高速过程中,车子如果快要发生侧翻的时候,只会跳一个后轮,且只是轻微,而前轮如果进行的内倾,就可以让前轮最大面积接触,增大 ...
- 智能车学习(二十二)——浅谈速度控制
一.经典PID控制 使用遇限反向PID会比较适合有加减速的车子,使用变速积分适合跑匀速的车子.然后这种方法的条件下,一定要尽可能缩短控制周期.. 二.PID加棒棒控制 针对 ...
- 智能车学习(二十三)——浅谈心得体会
因为毕竟是竞赛,跟学校挂钩,没办法开源代码和算法完成思路,所以不能详细写太多,如果可以等价交换的话,应该还是可以向领导申请一下的. 在厦大信科通信系,参加这个比赛,大家都觉得性 ...
随机推荐
- Qt 信号槽如何传递参数(或带参数的信号槽)
信号槽如何传递参数(或带参数的信号槽) 利用Qt进行程序开发时,有时需要信号槽来完成参数传递.带参数的信号槽在使用时,有几点需要注意的地 ...
- ios The App Life Cycle
先推荐ios 必读文章 App Programming Guide for iOS ,请在苹果官网搜索,并仔细阅读所有内容 State Description Not running The app ...
- 类型转换辅助工具类TypeCaseHelper
package org.sakaiproject.util; import java.math.BigDecimal; import java.sql.Date; import java.sql.Ti ...
- C#集合及特殊字符
集合里面 打印 出来时 要把 集合内的格式转化为其他格式! 壹. 集合 在.add之前 为空 数组 同样 添加元素之前 为 空(下一章超市购物例题具体体现) 1.System Collec ...
- 【编程题目】有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配...
37.(字符串)有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配,则两个字符串可以联接,问这 n 个字符串最多可以连成一个多长的字符串,如果出现循环, ...
- HDU 1159 Common Subsequence --- DP入门之最长公共子序列
题目链接 基础的最长公共子序列 #include <bits/stdc++.h> using namespace std; ; char c[maxn],d[maxn]; int dp[m ...
- Rsync+lsync实现触发式实时同步
使用rsync+lsync实现触发式实时同步 服务器信息 centos6.5 主:192.168.5.4 搭建lsync 从:192.168.5.3 搭建rsync 1.1 从服务器设置 # yum ...
- 会话控制(session、cookie)
1.session(1)session存储在服务器的(2)session每个人存一份(3)session有默认的过期时间(4)session里面可以存储任意类型的数据安全,对服务造成压力用法:1.当一 ...
- qt编译mysql插件
安装MySQL,C:\Program Files (x86)\MySQL\MySQL Server 5.7,然后把include和lib文件夹拷贝到C盘,因为qmake不允许路径中有空格!!! 安装Q ...
- 无法解析的外部符号 __imp__InitCommonControlsEx@4
需要comctl32.lib 今天在codeproject上找到一个屏保程序,http://www.codeproject.com/Articles/1551/Creating-a-screen-sa ...