基于视觉系统瞄准的电磁炮-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7605|回复: 2

[项目] 基于视觉系统瞄准的电磁炮

[复制链接]
发表于 2019-3-25 14:17 | 显示全部楼层 |阅读模式
本帖最后由 xp2xp 于 2019-4-28 23:24 编辑

基于视觉的电磁炮

[size=10.5000pt]一、整体构造
完成版的整体构造如下图。
整体.png

其中基座部分采用“全方位蜂巢云台”(http://www.dfrobot.com.cn/goods-1058.html),在上面分别安装了两个云台,分别用于搜索目标和瞄准目标。

使用“RosBot机器人主控板”(https://item.taobao.com/item.htm?spm=a1z10.1-c.w5003-16507481177.2.7a92f97f08xHVH&id=551011963085)作为各舵机的控制枢纽。
使用“树莓派3B”作为主控部分,识别图像和距离,并判断如何瞄准定位,将图像投射到屏幕上。
使用“带功放喇叭模块”(http://www.dfrobot.com.cn/goods-1228.html)播放配乐。
[size=10.5000pt]二、各功能模块
[size=10.5000pt]1、基座
采用舵机调整瞄准镜和炮口。
[size=10.5000pt]2、瞄准(位置/距离检测)功能
使用小MU53L0X进行目标物位置和距离判定。
小MU.jpg 53l0x2.jpg
由于小MU和53L0X都可以使用IIC连接,因此可以将两个器件并连起来。
图像、距离传感器.jpg

[size=10.5000pt]3、驱动板(下位机)
使用RosBot通过IIC读取瞄准器的信息,通过GPIO进行舵机和继电器的控制。基本代码通过Arduino编写。

[size=10.5000pt]4、主控单元(上位机)
使用树莓派做为主控单元,和下位机通过命令字进行交互。通过识别图像和距离,进行瞄准。
主控板.jpg
[size=10.5000pt]5、电磁炮发射装置
采用升压电路(考虑到儿童使用安全,升压至30V)给电容充电,由充满电的电容向电磁线圈放电,由磁力射出“子弹”。
[size=10.5000pt]6、瞄准装置
所谓瞄准装置,其实就是一个激光管,在充电阶段可以指向目标(附近)。
电磁炮头.png
[size=10.5000pt]7、电源
[size=10.5000pt]树莓派要求为usb供电,rosbot主控使用5V供电,电磁炮采用升压后的供电。
复杂的电源部分.png

8、系统框图
整体框图.png 9、业务流程
电磁炮工作流程.png
[size=10.5000pt]三、代码
[size=10.5000pt]1、协议命令字
定义上位机和下位机交互命令字如下:
由上位机发送命令,下位机仅做响应,包括3个部分:
1)舵机控制
包括四个舵机,分别驱动瞄准器的方位角、俯仰角,基座的方位角,发射器的俯仰角。例如:
#o150,150,150,150
设置4个舵机均为150,无响应字。
2)IIC信息读取
读取小MU53L0X的信息,命令字为i,响应字包括距离distance、位置xy,颜色color。例如:
#i
3)继电器控制
控制电磁炮发射的充放电、辅助瞄准激光的开启关闭等,命令字为l。例如:
#l0,0
使能激光器和继电器(低电平有效)。
无响应字。
[size=10.5000pt]2、下位机代码
arduino_serial.rar (17.92 KB, 下载次数: 29)
[size=10.5000pt]3、上位机代码
gui.rar (2.49 KB, 下载次数: 25)
[size=10.5000pt]四、开发心得
[size=10.5000pt]1、缺陷
这个电磁炮系统的核心是小MU视觉板,但这个视觉板相对比较“近视”,在目标物直径3cm时,有效的瞄准距离只有20cm,我试图加过镜头,但效果不明显。
MU使用确实极大程度化简了视觉系统的开发,可以识别出图像(在这套系统中,目标物选择为红色的苹果和绿色的西瓜)。
53L0X测距似乎抖动有些偏大,因此瞄准距离计算并不是特别精确。
[size=10.5000pt]2、焊接心得
这个系统中用到焊接的地方不多,只是将电容和电压表焊接到一起、小MU53L0X焊接到一起,我所说的心得无非是烙铁头的选择,因为不慎将小MU的接口烫坏,重新进行了粘贴修复,因此,建议大家如果进行类似操作,务必选择合适的烙铁,细小器件最好用尖头焊接,焊接时选择固定架子夹牢后再操作,烙铁温度切勿过高。
[size=10.5000pt]3、器件选择、机电安装心得
1)电磁线圈的选择
我曾自行进行了线圈的绕制,效果其实不错,但由于手工绕制,及时涂上树脂胶,仍然非常不稳定(直接散架),因此选择了现成的电磁阀线圈。
2)电容选择
理论上电容容量应该是越大越好,但实际上考虑到电压并不太高,由于“子弹”加速路程短,在电容容量过大时,反吸的情况很严重,经过测试0.1F左右是比较合适的(我使用了两个0.047F的并联)。
3)舵机选择
舵机真的可以说是1分钱1分货,用的铜芯的舵机明显精度高于塑料电机。在装配时,应先让舵机“归零”后再进行装配,防止由于阻挡让舵机不能旋转到正确位置,造成舵机“空烧”,事实上,我在调试中就因为这个原因烧毁了一个舵机。
[size=10.5000pt]4、UI开发心得
使用pygame开发界面。大约是树莓派本身性能原因,界面并没有在windows下流畅,但动画效果基本可以提现出来。
由于开发的课题是“基于视觉系统瞄准的电磁炮”,意思就是机器视觉,而不是人的视觉,因此人为的介入越少越好,在本系统中,人为输入只需要两次:
1)手工输入命令行:python gui.py
2)用鼠标选择苹果或者西瓜

完成视频如下:
调试中
链接:https://pan.baidu.com/s/1VWIJfSPpZWNTZoG8aqQKTA
提取码:8o08
完成2
链接:https://pan.baidu.com/s/10XKmBIvU_fKxE4Pi1goWPQ
提取码:tqjd



发表于 2019-8-3 12:12 来自手机 | 显示全部楼层
请问大佬要控制充电和线圈放电的继电器要多大电压的呢?
 楼主| 发表于 2019-8-4 06:50 | 显示全部楼层
难道是关怀 发表于 2019-8-3 12:12
请问大佬要控制充电和线圈放电的继电器要多大电压的呢?

就用普通的啊,我是用5V低电平控制就够了啊,如果你电压比较高,为了防止打火,建议用光继电器,比如东芝TLP3547,现在好多网站都在免费送。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-9-20 22:47 , Processed in 0.075824 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表