TYUST-RM2023-NewMaker哨兵视觉代码

目录

1 TYUST-RM2023-NewMaker哨兵视觉代码

1.1 说明

1.2 算法设计

1.3 识别思路

  1. TYUST-RM2023-NewMaker哨兵视觉代码
    1. 说明

本套代码是太原科技大学NewMaker战队2023赛季哨兵开源代码

本套代码主要含有:TYUST-RM2023赛季哨兵视觉代码,主要模块分为装甲板识别、SVM支持向量机,PNP角度解算、复活机制,双相机驱动及串口通信等。

如对代码有理解上的问题以及bug等,可联系:

景佳柱(QQ:108487627)

    1. 算法设计
    1. 识别思路

2.1 通过电控发送的数据确定击打颜色,进行通道分离,阈值筛选,通道相减,二值化,膨胀等过程,为后期框选识别做准备。

2.2 对处理完的图像进行轮廓检测,并计算最小包围矩形,根据灯条尺寸,装甲板两边尺寸等条件,筛选出灯条轮廓。为后续筛选装甲板,PNP 角度解算做准备。

2.3 根据灯条平行度,中心连线水平度,灯条长宽比,左右灯条长度差比值等进行装甲板初步筛选。

2.4 通过透视变换处理图像后,进行数字识别,以确保识别无误,以便后续确定击打优先级。

2.5 通过以上操作,确定极大优先级,发送击打信息给电控,以完成自动开火。

  1. 重要算法原理阐述、公式推导

3.1 SVM 数字识别

数字识别是装甲板检测的最后一项工作,也是能否击打装甲板的关键,是体现鲁棒性最重要的一环。 (1) 通过透视变换将各个角度的数字转换到正面,实现平衡性和共性比例不变性,提高分类效率。 (2) 通过加权来设置对步兵,英雄以及工程的击打优先级,以便更好的发挥哨兵的作用。

3.2 PNP 角度解算

通过处理,判断得到最佳装甲板后,将其进行 PNP 角度解算,得到相机坐标系中目标装甲板的坐标和相应的姿态角。经过坐标系变换到云台坐标系,并再加一定的 运算得到云台到目标装甲板的 pitch,yaw,距离等信息。提取出装甲板,旋转臂,旋转中心等关键要素,分析出目标形状位置及有效击打区域。

Z 轴: = 2( 21, 11) Y 轴: = 2(− 31, √ 32 2 + 33 2 ) X 轴: = 2( 32, 33) 通过以上处理来解算出装甲板位姿,为后续准确击打做准备。

  1. 自启动:

通过写脚本和用 Ubuntu 自带的‘Startup Applications’软件进行自启动。

  1. 串口通信:

通过 USB 转 ttl 模块,变化为 4pin 线接入主控板,与嵌入式达成通信协议,将数据发送给下位机,同时开放串口权限,并通过调用函数收取下位机发送的数据。

  1. 硬件:

Intel NUC11、8mm度申工业相机、USB转ttl。

  1. 算法性能,优缺点分析优化方案

算法性能:

目前可以精准框选装甲板以进行击打,图像处理速度较快,可以很好的完成视觉的基本功能。

优点:

(1) 本赛季新加了数字识别,使识别跟稳定,准确性更高,,以保证更强的鲁棒性。 (2) 设置了击打优先级,在识别到多兵种的情况下,可通过优先级进行击打,将哨兵作用最大化。 (3) 新增大津法自动调节阈值,保证在较暗环境下也可以稳定识别自瞄。 缺点:

(1)预测效果不佳,对移动的物体命中率不高,建议使用卡尔曼进行预测。 (2)在装甲板移动过快的情况下会掉识别,距离较远时识别会抖动等。

8.算法性能演示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/143436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

等保到底在“保”什么?

在信息时代,等保评级成为衡量企业信息安全水平的重要标准。那么,什么是等保评级呢?等保合规到底保的是什么呢?一起来看看吧。 编辑搜图 请点击输入图片描述(最多18字) 等保评级,会从七个维度进…

DevEco Studio开发工具下载、安装(HarmonyOS开发)_For Mac

一、说明 初学HarmonyOS开发,DevEco Studio开发工具的安装和使用是必须的。 (注:不多废话,跟着下面流程操作下载、安装DevEco Studio即可。) 二、下载DevEco Studio 1.官网下载地址: https://developer.…

springboot苍穹外卖实战:十、缓存菜品(手动用redisTemplate实现缓存逻辑)+缓存套餐(Spring cache实现)

缓存菜品 缺点 缓存和数据库的数据一致性通常解决方案:延时双删、异步更新缓存、分布式锁。 该项目对于缓存菜品的处理较为简单,实际可以用管道技术提高redis的操作效率、同时cache自身有注解提供使用。 功能设计与缓存设计 建议这部分去看下原视频&…

​软考-高级-系统架构设计师教程(清华第2版)【第8章 系统质量属性与架构评估(P286~319)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第8章 系统质量属性与架构评估(P286~319)-思维导图】 课本里章节里所有蓝色字体的思维导图

Unity中Shader矩阵的逆矩阵

文章目录 前言一、逆矩阵的表示二、逆矩阵的作用四、逆矩阵的计算五、顺序的重要性六、矩阵的逆总结1、求矩阵的逆前,这个矩阵必须得是个方阵2、只有 A x A ^-1^ A^-1^ x A 1时,A的逆才是A^-1^3、求2x2矩阵的逆:交换 a 和 b 的位置&#xf…

夯实c语言基础

二维数组 在C语言中,定义二维数组时需要指定行和列的大小。在引用中,int a[][3]{1,2,3,4,5,6,7,8}定义了一个二维数组a,其中有两行三列,即a[0]1, a2, a3, a4, a5, a6。而int a[]则是错误的定义方式,因为在定义时必须指…

使用flutter的Scaffold脚手架开发一个最简单的带tabbar的app模板

flutter自带的scaffold脚手架可以说还是挺好用的,集成了appBar,还有左侧抽屉,还有底部tabbar,可以说拿来就可以用了啊,所以我今天也体验了一下,做了一个最简单的demo,就当是学习记录了。 效果展…

JS-项目实战-代码优化-事件动态绑定

1、鼠标悬浮和离开事件.js //当页面加载完成后执行后面的匿名函数 window.onload function () {//get:获取 Element:元素 By:通过...方式//getElementById()根据id值获取某元素let fruitTbl document.getElementById("fruit_tbl");//table.rows:获取这个表格…

场景图形管理 - (2)

裁剪平面示例(二) 裁剪平面(osg::Scissor)示例(二)的代码如程序清单8-2所示 // 裁剪平面测试&#xff08;2&#xff09; void scissor_8_2(const string strDataFolder) { osg::ref_ptr<osgViewer::Viewer> viewer new osgViewer::Viewer(); osg::ref_ptr<osg::Gra…

msvcp140.dll丢失的解决办法,msvcp140.dll丢失会导致电脑出现哪些错误

msvcp140.dll丢失的解决办法都有哪些&#xff1f;如果电脑不及时将msvcp140.dll文件进行修复的话电脑可能会出电脑可会出现哪些错误&#xff1f;今天就和大家说说都有哪些解决办法有效的解决msvcp140.dll丢失的问题。 一.缺失msvcp140.dll会有什么问题 当电脑上缺少msvcp140.d…

基于stm32f103系列的简单软件I2C和硬件I2C通讯

这篇文章主要分为三个部分来阐述&#xff0c;分别是I2C的基本知识&#xff0c;软件I2C通讯&#xff0c;硬件I2C通讯。I2C的基本知识这一块&#xff0c;部分讲解以及图表来自b站江科大的up&#xff0c;很感谢这位up&#xff0c;大家可以关注一波。操作实现的时候&#xff0c;up使…

吴恩达《机器学习》8-5->8-6:特征与直观理解I、样本与值观理解II

8.5、特征与直观理解I 一、神经网络的学习特性 神经网络通过学习可以得出自身的一系列特征。相对于普通的逻辑回归&#xff0c;在使用原始特征 x1​,x2​,...,xn​ 时受到一定的限制。虽然可以使用一些二项式项来组合这些特征&#xff0c;但仍然受到原始特征的限制。在神经网…

负载均衡原理

负载均衡原理是什么&#xff1f; 负载均衡Load Balance&#xff09;是高可用网络基础架构的关键组件&#xff0c;通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。负载均衡&#xff0c;其核心就是网络流量分发&#xff0c;分很多维度。 …

iOS OpenGL ES3.0入门实践

一、效果图 入门实践&#xff0c;做的东西比较简单&#xff0c;效果如下&#xff1a; 二、关于顶点坐标和纹理坐标 绘制图片需要设置顶点坐标和纹理坐标并加载像素数据&#xff0c;之所以要指定两组坐标是因为纹理和顶点使用不同的坐标系&#xff0c;就是告诉OpenGL&#xf…

IDEA 2023搭建 SpringMVC +FreeMarker+JDBC

1.IDEA的版本&#xff0c;目前最新是2023&#xff0c;要选择旗舰版。笔者曾选择社区版&#xff0c;发现少了很多功能。只能重新安装。 2.安装好以后的第1件事&#xff0c;是设置Maven&#xff0c;并将下载地址改为淘定站&#xff0c;参照这篇一次包会——最新IDEA配置Maven指南…

老师的保命大法

数字化高度发达的今天&#xff0c;成绩查询系统已经成为学校教育中不可或缺的一部分。不同于传统的成绩公布方式&#xff0c;成绩查询系统更加高效、便捷&#xff0c;同时也充分保障了每位学生的隐私&#xff0c;今天就来揭秘这个教师保命大法&#xff01; 1、代码查询法 对于…

下载文件时的文件名中文乱码问题,文件名丢失

涉及到的java代码如下&#xff0c;下载的时候文件名为中文 package com.example.springboot.service.impl;import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringU…

墨西哥专线一次最多发几条柜?

墨西哥专线一次最多发几条柜这个问题涉及到海运业务中的一些复杂因素。墨西哥是一个重要的贸易国家&#xff0c;其与美国和加拿大之间的贸易往来非常频繁&#xff0c;因此海运业务也非常活跃。在墨西哥专线上&#xff0c;一次最多发几条柜通常取决于以下几个因素&#xff1a; 1…

Java 等后端应用如何获取客户端真实IP —— 筑梦之路

需求说明 现有一套Java开发的应用&#xff0c;需要能获取到用户访问的真实IP地址&#xff0c;以此来过滤到一些不安全的因素。而实际部署的场景中Java服务提供给用户访问需要经过多次代理&#xff0c;默认情况下是无法获取到客户端真实IP地址的&#xff0c;因此要实现该需求&a…

ubuntu 20通过docker安装onlyoffice,并配置https访问

目录 一、安装docker &#xff08;一&#xff09;更新包列表和安装依赖项 &#xff08;二&#xff09;添加Docker的官方GPG密钥 &#xff08;三&#xff09;添加Docker存储库 &#xff08;四&#xff09;安装Docker &#xff08;五&#xff09;启动Docker服务并设置它随系…