树莓

注册

 

发新话题 回复该主题

树莓派水弹发射器自瞄射击教程,威力十 [复制链接]

1#
治疗白癜风最好的药膏 https://baike.baidu.com/item/%e5%8c%97%e4%ba%ac%e4%b8%ad%e7%a7%91%e7%99%bd%e7%99%9c%e9%a3%8e%e5%8c%bb%e9%99%a2/9728824?fr=aladdin

致力于开源硬件

与STEAM教育

树莓派控制水弹枪自动瞄准并射击

--格物创意

树莓派控制水弹枪自动瞄准并射击

简介

我们重点讲解图像识别并将相应控制信息输出的部分,在程序最后我们也会提供一个控制舵机的方法,作为参考作为测试代码只需要连接树莓派和摄像头即可。

我们导入图像识别需要的库

tolerance变量作为自动瞄准范围的宽容度

这个数值越小,自动瞄准的准确率越高

但同时对舵机的要求也比较高

X_lock和Y_lock这两个变量用于判断是否已经瞄准物体

我们使用HSV色彩空间来定义一个用来识别的颜色(这里的数值是黄色)

运行程序后机器人会在摄像头画面中找这个颜色范围内的目标,初始化这个程序,注意这里需要记住设置的分辨率,开始获取来自树莓派摄像头的图像,如果你使用的是USB摄像头,这里需要改为False识别出画面中目标颜色的物体。

如果目标颜色的物体数量大于1,选择其中最大的一个瞄准

获得这个最大的目标中心点的坐标值和半径

为了简化程序我们这里只使用坐标值来进行瞄准

实际上宽容度变量随着目标半径大小而变化会更加合理

如果中心点坐标值在画面中心的下方,那么就让舵机控制水弹枪向上方瞄准,向上方的幅度是这里的error值。

将print()函数替换为你自己的控制云台的函数即可

如果Y值处于瞄准宽容度范围以内,则将Y_lock赋值为1,如果X_lock和Y_lock同时为1,则开枪,由于不可避免的误差,实际上水弹枪不可能打在画面正中心,那么就需要调整这里的和来校准准星。

最后记得在处理下一帧信息前清空一下缓存(clearthestreambetweencaptures),否则会遇到Incorrectbufferlengthforresolution之类的PiCameraValueError。

识别

分享 转发
TOP
发新话题 回复该主题