打印

【我的电竞】2017电赛B题-滚球控制系统

[复制链接]
5874|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前两天刚刚参加综合评测,现在还在等结果。


我们机械结构的动力来源是步进电机,本来是想用舵机或推杆来着,但是手里没有这两种物品,只有步进电机。
不知道用舵机和电推杆的效果怎么样,效果应该会好一些。


对球的数据获取是通过摄像头,采用的是STM321F103+OV7670,然后对步进电机的角度进行控制。

显示部分用的是ucGUI,输入部分直接用的是屏幕的触摸来做的。

等电赛结束后来开源。.

相关帖子

沙发
山东电子小菜鸟| | 2017-8-23 13:01 | 只看该作者
顶起

使用特权

评论回复
板凳
21ic小喇叭| | 2017-8-23 13:33 | 只看该作者
等你比赛完开源撒

使用特权

评论回复
地板
qq2216691777|  楼主 | 2017-8-23 13:49 | 只看该作者

可以噻   其实现在想想也没什么东西,就是一个简单的PID控制。

使用特权

评论回复
5
21ic小喇叭| | 2017-8-23 14:01 | 只看该作者
qq2216691777 发表于 2017-8-23 13:49
可以噻   其实现在想想也没什么东西,就是一个简单的PID控制。

说起来简单,其实做下来也不简单的,主要是做的过程

使用特权

评论回复
6
qq2216691777|  楼主 | 2017-8-23 23:45 | 只看该作者
本次电赛的B题是在一个平板上(65cmx65cm)控制一个小球让其移动到相应的圆内。

使用特权

评论回复
7
qq2216691777|  楼主 | 2017-8-23 23:48 | 只看该作者
因为之前我们觉得网上的预测题应该是不怎么准的。到底会不会是板球系统?我和小伙伴还讨论了一下,然而事实是残忍的……我们准备了步进电机和直流电机,电推杆并没有准备。当题目下来的时候 整个人都不好了……

使用特权

评论回复
8
qq2216691777|  楼主 | 2017-8-24 00:00 | 只看该作者
在看到题目的时候,我觉得控制小球移动到相应的位置应该用速度环加位置环来做,单一的pid控制应该会难好多。用速度环控制小球的状态,用位置环控制小球的位置,保证其稳定性。但是我们没有考虑到这个系统的机械难度,整个机械做了两天两夜。

使用特权

评论回复
9
qq2216691777|  楼主 | 2017-8-24 00:08 | 只看该作者
可惜的是做的实物当初没有拍照,只能借其他小伙伴的图了。步进电机的安装方式是一样的。不过中间的万向节和图中的不一样!也是为了解决自旋的问题而想了好久。

IMG_20170824_000206.jpg (109.74 KB )

IMG_20170824_000206.jpg

IMG20170823135619.jpg (107.64 KB )

IMG20170823135619.jpg

IMG_20170824_000256.jpg (151.67 KB )

IMG_20170824_000256.jpg

使用特权

评论回复
10
qq2216691777|  楼主 | 2017-8-24 00:13 | 只看该作者
在机械做好之后,也就是开始写代码了。首先是数据获取,如何获取小球在板上的具体位置,我们采用了ov7670摄像头。但是这个摄像头的角度有点儿小,必须要放到2米高的位置才能看到整个木板上的图像。所以我们放摄像头的木架特别高……

使用特权

评论回复
11
qq2216691777|  楼主 | 2017-8-24 00:15 | 只看该作者
用摄像头来获取小球的位置,最大的担心是摄像头的帧率不够,最后我们测了一下,大约是7-8帧吧  差不多够了

使用特权

评论回复
12
山东电子小菜鸟| | 2017-8-24 07:44 | 只看该作者
本帖最后由 山东电子小菜鸟 于 2017-8-24 09:16 编辑

顶起,图片机械工程量挺大

使用特权

评论回复
13
icecut| | 2017-8-25 16:50 | 只看该作者
赞....

使用特权

评论回复
14
wem627| | 2017-8-25 19:36 | 只看该作者
能参加综合测评说明作品的效果应该不错吧?哪个省份啊?省测效果怎样?是不是90+啊?

使用特权

评论回复
15
qq2216691777|  楼主 | 2017-8-26 16:12 | 只看该作者
wem627 发表于 2017-8-25 19:36
能参加综合测评说明作品的效果应该不错吧?哪个省份啊?省测效果怎样?是不是90+啊? ...

是不是90+我就不知道了,参加评测的时候除了最后一个正弦波的幅值为1.63V不符合要求外,其他的差不多都达到了要求。

使用特权

评论回复
16
qq2216691777|  楼主 | 2017-8-26 16:27 | 只看该作者
本帖最后由 qq2216691777 于 2017-8-26 16:33 编辑

关于传感器的方便,我觉得在板子上安装一个陀螺仪来作为控制量应该是挺好的。
但是时间是太紧了,所以就用了摄像头+步进电机。控制的是板子的高度,也就是根据步进电机的角度来推算的。
对于任何的控制,我们必须首先要获取控制小球的运动信息(位置,运动状态)。检测小球位置的方法我们没有像网上写的那么复杂,因为硬件是我们自己搭建的。所以我们给木板刷了一层墨,用一个表面反光的金属小球,再通过一个led灯来补光,计算整个图像的行列像素点中值最小的行和列即可获得小球的具体位置信息。
当然这种方式有点儿简单粗暴了,但是我自己觉得硬件是我们自己搭建的,硬件是可以帮助软件解决一些复杂的问题。尤其是我们用的stm32F103,算法太过复杂的话我很担心在处理数据能力上达不到要求。
但是这样处理数据的同时也会遇到一个问题,那就是图像中不能出现任何的噪点。所以这么对二值化的阈值要求就很严格了。所以我们用一个白色的12V灯补光,金属球表面反光,把阈值设置高一些就没什么事儿了,也能适应各种环境。但是为了以防万一,我们在程序中还是添加了用触摸屏修改阈值这一功能(这里用gui的好处就体现出来了,新建两个个控件就行了)。

QQ截图20170826162518.jpg (193.67 KB )

QQ截图20170826162518.jpg

使用特权

评论回复
17
qq2216691777|  楼主 | 2017-8-26 16:50 | 只看该作者
对于pid控制这块, 我觉得应该是PID速度环+位置环。个人觉得这个题目必须对小球的速度控制把握好,运动速度不能太快也不能太慢,对速度控制的越准确,整个系统也将会越稳定。但是由于也是第一次用摄像头来获取小球的位置信息,摄像头的帧率也不是很高(7-8),主要是时间不够。
在搭建完硬件后就直接用位置pid写了。为了控制小球速度,同时也为了更好的规划小球的移动路径,在本身的9个圆点的基础上又增加了4个点来辅助小球的移动。
(控制周期很重要,关系到你能不能调的出来)

QQ截图20170826162518.jpg (237.01 KB )

QQ截图20170826162518.jpg

使用特权

评论回复
18
qq2216691777|  楼主 | 2017-8-26 17:10 | 只看该作者
在控制方面,我用的是最简单的位置PID控制,在每次启动之前都要手动将木板调到水平。个人觉得用增量式的比较好,但是呢,没时间做。
下面是我用的PID控制代码,都是最基础的。不过是之前写的,也算是模块化了吧,想用的话直接把c文件和头文件直接拷贝,把参数填写一下就行了。小伙伴们都觉得写的太复杂了。
关于PID参数这块,还是我之前说的应该用速度环和位置环,其实也不是没时间,主要是太懒。这里为了控制好速度就把微分改的很大,等于是用另一个方法的控制速度吧。相当于速度环中的比例。但是这种写法肯定是不好的。等作品回来了再修改一下。

QQ截图20170826162518.jpg (124.73 KB )

QQ截图20170826162518.jpg

2.jpg (217.54 KB )

2.jpg

3.jpg (257.46 KB )

3.jpg

4.jpg (106.04 KB )

4.jpg

使用特权

评论回复
19
wem627| | 2017-8-26 18:46 | 只看该作者
qq2216691777 发表于 2017-8-26 16:12
是不是90+我就不知道了,参加评测的时候除了最后一个正弦波的幅值为1.63V不符合要求外,其他的差不多都达 ...

波形有失真吗?太厉害了,哪个省份啊?

使用特权

评论回复
20
qq2216691777|  楼主 | 2017-8-26 19:05 | 只看该作者
本帖最后由 qq2216691777 于 2017-8-26 19:06 编辑
wem627 发表于 2017-8-26 18:46
波形有失真吗?太厉害了,哪个省份啊?

当时为了照顾峰峰值,所以调的有点点儿失真。其实可以调成不失真的。
之所以峰峰值达不到貌似有个电阻弄错了,所以峰峰值一直上不去。出了评测的门才想起来是反馈电阻的问题。
河南赛区的。最后一步用的是二阶滤波。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

37

帖子

3

粉丝