【Arduino】2017年电子设计大赛B题 滚球控制系统|板球系统
今年电赛我们队伍选择的是B题,滚球控制系统。最后我们得到了省特和国一,也算是了结了我大一时的心愿吧。下面对这次比赛进行一下总结,以后回忆起来的时候也有个念想。
滚球控制系统是一个多变量、非线性控制对象,是球杆系统的二维扩展。本系统以Arduino Due为核心控制板,通过摄像头采集到球的位置信息,经过PID的控制算法来控制舵机的运行,从而控制小球的运动。其目的是让一个自由滚动的小球能够平衡在平板上特定的位置,或者沿一定的轨迹滚动。经测试,系统能够实现题目要求的各项功能,实测指标均达到或超过题设要求。
关键词:滚球控制系统;Arduino Due;位置检测;PID控制
当时网传已经有板球系统这道题了,虽然说心里没当一回事,但是还是默默地查起了一些资料。
板球系统、板球系统,最关键的就是需要检测到球的位置,然后通过板的机械运动将球保持在指定的位置上。
怎么检查球的位置呢?有两种不错的方法:一种方法是利用电阻屏,还有一种是利用摄像头。这两种方法比赛之前我都试过,电阻屏的话市场上有卖的一般就是7寸-17寸的四线、五线电阻屏,它获取小球位置比较灵敏,而且精度高、延迟低,对小球的材质、颜色没有要求,但是要求小球具备一定的重量,要不然检测不到球呀。至于摄像头检测小球的位置的话,一种方法是检测圆形,另一种方法是颜色检测,一般颜色检测的速度会快一些。如果使用摄像头检测小球位置的话,那么对处理器的运算速度要求较高,而且对光线的要求也较大,但是也可以使用开源摄像头(如OpenMV,pixy等),直接把小球位置信息等通过I2C、USART传输回单片机上。我们最后使用的就是Pixy。
最后赛题出来的时候,我们就傻眼了,居然和网传的消息那么像,但是尺寸却那么巨大。本来写好的电阻屏的程序是用不到了,只能用摄像头检测小球位置这种方法了。
当然我们想,小的我们都做好了,大的岂不是直接把原来的结构放大一些就是啦。但是后来发现我们想多了,尺寸变大许多导致的结果就是,机械结构需要重新设计。之前小板球系统的稳定性超级好,根本不会出现板子的抖动问题。但是等系统变大许多,板子变得很大很重,摄像头需要架设的很高,就带来了许多问题了。
摄像头是距离板子1m多的位置,这带来的后果就是,可能摄像头找不到那么小的球的位置了。
在比赛的那几天中,我们的机械结构换了4套。感觉一直都是在做木工活。第一套结构是纯木质的,各个部位全部用胶粘死。第二套是板子用的泡沫板,其他部分还是木质的。第三套是板子用的黑色喷漆铁板,支架是铁的,底板是木的,整套结构超级重、而且也不能拆卸。第四套结构的话,我们板子选择的是60*60*1cm的雪弗板,这个比较轻、而且也比较平,底板是PVC版,画原理图然后切割,支持部分是铝架,所有部分均可拆卸。
等机械结构做好之后,还剩一天的时间来写程序,简直奔溃,感觉比赛的大部分时间全部都在设计机械结构。但是这是非常必要的,因为机械结构如果不好,你的程序优化的再好,也是不会稳定的,尤其是这么巨大的一个装置。
前面说了一堆废话,下面说一点有用的:
①我们选用的控制器是Arduino Due。因为使用它开发简单方便快速,而且时钟频率大84Mhz,相比于普通的stm32f1一点也不逊色。本来想直接用树莓派了,但是想到用树莓派可能有违规的可能,所以还是算了。
②摄像头选择的是pixy。利用Pixy图像识别传感器检测小球位置坐标。Pixy支持多物体、多色彩的颜色识别,同时也支持多种通信方式,它搭载的图像传感器配合强大的硬件,可以将小球的位置坐标信息快速地发送给微控制器。注意!!!这可是直接把小球的坐标发到单片机里唉,所以你用性能差一点的单片机也没有关系了,这大大的简化了程序的复杂性,省去了自己写图像处理部分的事,节省了许多时间。
③舵机的话我们试了好多舵机,贵的、便宜的,最后还是选择了MG996R。具体原因我不多说,大家可以买来试试。
(待续。。。)
【Arduino】2017年电子设计大赛B题 滚球控制系统|板球系统的更多相关文章
- 2020年电子设计大赛F题
挺简单前一百分得了九十多 当然主要是队友很给力 1 温度判别 MLX90614DCC,然后测温拟合吧...从五十度到三十度平均一次要测一个半小时...这是真的痛苦...然后虽然文件里面说自带测温工具, ...
- 2020 年TI 杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置)
2020年TI杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置) 摘要:E题的竞赛内容主要是参赛者自己搭建一个晶体管放大器,能够产生不失真.顶部失真.底部失真.双向失真和交越失真五种波形,并分别 ...
- 2014年湖北省TI杯大学生电子设计竞赛论文格式
2014年湖北省TI杯大学生电子设计竞赛 B题:金属物体探測定位器(本科) 2014年8月15日 文件夹 1 系统方案 1.1 XXX的论证与选择........................... ...
- MCM/ICM2018美国大学生数学建模大赛D题翻译
MCM/ICM2018美国大学生数学建模大赛D题翻译 2018年ICM问题D: 非使用汽油并在使用电力行驶的汽车(电量非空的) 由于环境和经济的原因,全球都在减少使用化石燃料,包括汽车汽油. 无论是受 ...
- 2014年TI杯大学生电子设计竞赛地区赛使用仪器及器件、设备
2014年TI杯大学生电子设计竞赛地区赛使用仪器及器件.设备 a) 3A/30V双路稳压电源(可并联): b) 60MHz示波器: c) 三位半数字万用 ...
- 摹客 · Veer 第二届设计大赛邀你来战!
2018年12月,摹客设计大赛一年一度一归来. 继2017年摹客全国首届原型设计大赛成功举办后,本次大赛是摹客第二届设计大赛.大赛由摹客主办,Veer独家冠名赞助,iSlide和创客贴协办,国内多家知 ...
- 郑捷2017年电子工业出版社出版的图书《NLP汉语自然语言处理原理与实践》
郑捷2017年电子工业出版社出版的图书<NLP汉语自然语言处理原理与实践> 第1章 中文语言的机器处理 1 1.1 历史回顾 2 1.1.1 从科幻到现实 2 1.1.2 早期的探索 3 ...
- Mockplus设计大赛获奖选手专访 | High音:轻松生活,随心嗨音
"看似低调,实则高调的设计,UI设计是用了功力,主页功能和内容一览无余,方便用户选择,金字黑底,给予用户极好的奢华体验.原来听歌也是一种视觉享受.创新性源于对听歌氛围的把握,大幅的图片,刺激 ...
- 3I工作室的成员在2013年(第6届)中国大学生计算机设计大赛总决赛中荣获全国二等奖
在暑假举行的2013年(第6届)中国大学生计算机设计大赛中,我院的参赛作品<毕业生论文选导系统>(作者:祝丽艳/许明涛:指导老师:元昌安/彭昱忠)入围总决赛,并荣获全国二等奖. 2013年 ...
随机推荐
- Gradient Boost 算法流程分析
我们在很多Gradient Boost相关的论文及分析文章中都可以看到下面的公式: 但是,对这个公式的理解,我一直也是一知半解,最近,终于下决心对其进行了深入理解. 步骤1:可以看作优化目标的损失函数 ...
- thinkphp传参
use think\Request; 写法1: $parms=Request::instance()->param(); $param=$params['键值']; 写法2: $request= ...
- C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取
状况描述: 需要上传文件,但是不想要保存到实体路径下,便可以用该功能来实现. 效果图: 点击[Upload]按钮,上传文件到数据库: 点击[Preview],预览文件: 具体实现: 前台: <t ...
- util包里的一些类的使用
好几天没有更新我的博客了 .国庆放假出去玩了一趟,这回来应该收心回到我的事业上了,哈哈哈!废话不多说,开始学习吧!首先今天来学习一些例子,这些例子可以回顾假期遗忘的知识,还能提高自己的能力.程序也会相 ...
- Java视频扩展知识 线程池的了解
Java视频扩展知识 线程池的了解 1.简单介绍: Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用.为我们在开发中处理线程的 ...
- c# 反射得到实体类的字段名称和值,DataTable转List<T>
/// <summary> /// 反射得到实体类的字段名称和值 /// var dict = GetProperties(model); /// </summary> /// ...
- SAP 月结F.19与GR/IR
http://blog.sina.com.cn/s/blog_3eeba40101008v75.html 为什么要做月结?月结究竟都结些啥? 月结的目的和手段都不知道,只知道一部分.月结,为了出资产负 ...
- WPF 如何画出1像素的线
如何有人告诉你,请你画出1像素的线,是不是觉得很简单,实际上在 WPF 上还是比较难的. 本文告诉大家,如何让画出的线不模糊 画出线的第一个方法,创建一个 Canvas ,添加一个线 界面代码 < ...
- VisualStudio 合并代码文件
如果有相同的类,一般可以使用 partial 让他写在多个文件,那么如何把多个文件合并?请看 MainWindow.xaml 和 MainWindow.xaml.cs 其中 代码文件被折叠,那么如何做 ...
- TsBatis 预览
前言 在发布了 mybatis-dynamic-query之后感觉基本功能稳定了,而且现在在工作项目开发效率大大提高,而且非常易于维护. 最近准备带几个小朋友以前用typescript 打通前后端,当 ...