2023年电赛---运动目标控制与自动追踪系统(E题)关于网友的问题回复

前言

(1)各位私信问问题之前,看看自己的问题是不是在这个里面再问!
(2)
<1>2023年8月3日,10点25分。增加第三问的细节回答。
<1>2023年8月3日,10点45分。更新关于舵机安装问题,细分路线的实现。

网友提问

细分路线的实现

答:
<1>一个PWM的周期是20ms对不对。假设我要从坐标点(5,9)到(7,9)。假设通过实际测试结果发现,P7的PWM的高电平时间从500ms到1000ms,P8的PWM的高电平时间从800us到1300us。(为了给哪些没有阅读能力的人强调一下,这里是假设!假设!假设!我没有实操!)
<2>因此,我们可以尝试,每20ms,让P7和P8 的PWM高电平时间同时增加10us。最终1S走完。
<3>但是有一些人反馈,他就是这样细分的,但是还是不能走直线。那么久可以尝试,P7和P8每20ms增加的PWM高电平时间不同。最终找到合适的点。
<4>注意,P7和P8没必要同时到达指定的PWM的高电平时间,一些小偏差,肉眼看不出来的!

关于舵机安装位置

这个我在交流群看到的两种安装方法

在这里插入图片描述
在这里插入图片描述

第三问是寻找整个矩形框,还是寻找红色巡线部分?

答:
寻找整个矩形框,找到矩形框之后。根据下面这个代码进行调整,获得矩形框的左上角xy坐标,然后自己找到合适的PWM值。可以写死,有人做到了。但是最好上PID

import sensor, image, timesensor.reset() # 初始化摄像头传感器
sensor.set_pixformat(sensor.RGB565) # 使用 RGB565 彩图
sensor.set_framesize(sensor.QQVGA) # 使用 QQVGA 分辨率
sensor.skip_frames(10) #跳过几帧,让新的设置生效。
sensor.set_auto_whitebal(False) # 因为是颜色识别,所以需要把白平衡关闭
clock = time.clock() # 追踪帧率,影响不大
#__________________________________________________________________
#定义寻找最大色块的函数,因为图像中有多个色块,所以追踪最大的那个
def find_max(blobs):max_size=0for blob in blobs:if blob[2]*blob[3] > max_size:max_blob=blobmax_size = blob[2]*blob[3]return max_blob
#__________________________________________________________________
while(True):clock.tick() # 跟踪快照()之间经过的毫秒数。img = sensor.snapshot() # 截取一张图片blobs = img.find_blobs([black_threshold])  #识别黑色阈值max_blob = find_max(blobs)  #调用上面自定义函数,找到最大色块max_blob.x()  #返回识别区域左上角的x坐标max_blob.y()  #返回识别区域左上角的y坐标max_blob.w()  #返回识别区域的宽度max_blob.h()  #返回识别区域的长度

激光是不是安装在OpenMV上面?会不会有偏差?

答:
<1>肯定的,一开始我认为是只要一个OpenMV就可以了。后面发现发挥题和基础题的追踪激光颜色不一样。所以需要使用两个OpenMV,激光都固定在OpenMV上面。
<2>激光和摄像头的摆放位置肯定会产生造成偏差,所以这个要你自己调整好PWM

第一问和第二问舵机控制不稳定

答:
实在不行用PID,是伪代码,需要微调。

from pid import PID
from pyb import Servo  #从内置pyb导入servo类,也就是舵机控制类pan_servo=Servo(1)  #定义两个舵机,对应P7引脚
tilt_servo=Servo(2) #定义两个舵机,对应P8引脚pan_servo.calibration(500,2500,500)
tilt_servo.calibration(500,2500,500)
max_blob = find_max(blobs)  #调用上面自定义函数,找到最大色块
pan_error = max_blob.cx()-img.width()/2    #获取中心位置x坐标
tilt_error = max_blob.cy()-img.height()/2  #获取中心位置y坐标
pan_output=pan_pid.get_pid(pan_error,1)/2
tilt_output=tilt_pid.get_pid(tilt_error,1) #上面两个都是进行PID运算,
print("pan_output",pan_output)
pan_servo.angle(pan_servo.angle()+pan_output) #将最终值传入两个舵机中,追踪目标
tilt_servo.angle(tilt_servo.angle()-tilt_output)# 因为两个舵机方向和摆放位置不同,所以一个是+一个是-

OpenMV与主控通讯

答:
看我OpenMV专栏

舵机抽搐问题

答:
<1>先拿示波器测试OpenMV的PWM输出是否正常。
<2>那万用表测试接线是否正常,如果万用表显示没问题,再焊接一下。
<3>如果上面两个都测试通过,说明舵机坏了

关于K210,OpenART mini,OpenMV代码问题

答:
刚刚我尝试了一下,发现OpenART mini可以直接放在OpenMV上跑。所有建议各位,先拿着百度网盘现成的代码尝试跑一下。如果提示bug,就把有bug的部分注释了。应该是可行的。

有完整代码吗?

答:
<1>K210的资料没有!没有!没有!认真看字!
<2>OpenMV没有完整代码,所有代码都是在博客里面了!
<3>博客视频不算使用的OpenMV,是OpenART mini,认真看字!代码在我分享的百度网盘里面!

为什么要OpenMV控制舵机,主控控制舵机不行吗?

答:可以的,但是OpenMV控制的话,官方已经提供了PID控制代码。我们只需要调整P值就可以了。而我们用主控控制舵机的话,还需要自己调整PID,又现成的用现成的比较好。

舵机那个需要多少v还是12v直接给他,单片机那个是12v转5v对吧?

答:
<1>舵机看你选择的是多少V的,如果你的舵机VCC要求12V,那么就供12V的电压。但是我推荐常规的mg90s舵机,sg90舵机也可以。
<2>单片机的供电,要看你的单片机VDD要求多少,如果是MSP430,STM32这种,一般供电都是3.3V。如果你是使用的STC89系列单片机,就需要供5V电压。
<3>舵机,电池,OpenMV,单片机的GND都要连接在一起。这就是系统需要供电,提供基准电压。

只有一个OpenMV,引脚不够用吧?

答:
<1>我简单看了一下题目,个人认为如果只做基础题只要一个OpenMV就可以了。如果不行,可以通过OpenMV和主控进行通讯实现引脚扩展。
<2>相关教程:OpenMV串口通讯详解

pid.py和main.py是要写在一个py文件里面吗?

答:不是的一个是main.py,一个是pid.py。都放在OpenMV的根目录。(也就是插上OpenMV自动打开的那个目录)

在这里插入图片描述

我们测评的时候不能改代码,那么每一问应该怎么搞?

答:
这个肯定就需要你们自己处理好了,肯定不能一个题目一个代码。我只是提供思路,所以这些你需要自己整合好。

大佬,有代码吗?

答:
我没有实物,只是这个之前刚刚做过,就提供出来思路。没有代码!!!

步进电机和舵机的区别

答:
本人已和百度,bing达成高度合作,有些问题可以直接百度或者bing上搜索!
个人建议使用舵机

知道黑框位置之后,怎么追踪?

答:
希望各位仔细看博客,都说了,看OpenMV控制舵机的教程:OpenMV输出PWM,实现对舵机控制这篇博客。别再问这种问题了!!!

为什么我复制了博客中的代码会报错?

答:
我提供的都是伪代码,需要自己进行相应的调整。不能直接跑!!!

我要用几个摄像头,几个主控?材料推荐

答:
<1>个人认为只需要一个OpenMV即可,因为OpenMV上有图像处理单元,有RGB灯,有两路舵机控制。至于最终结果是不是这样,还不清晰。因为我没有实操。但是我还是认为一个OpenMV就可以做完这道题目。
<2>除了一个OpenMV以外,我个人建议最好用上无畸变镜头。购买链接:
https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w5003-18207055866.1.6b0b1dc1nPB6IZ&id=601956249175&scene=taobao_shop

我想使用stm32来控制舵机,OpenMV用来识别,可行吗?工作量会不会大一点?

答:
<1>可行,但是和上面一样,我还是建议只用一个OpenMV。如果你硬要用stm32控制,我也不拦着,这个是OpenMV串口通讯教程:OpenMV串口通讯详解
<2>工作量是会大一些,毕竟一个主控就行的事情,你硬要搞两个。

E题官方解释

1问:E题可以使用openmv吗?
答:E题只禁止笔记本和台式机。其他任意
2问:E题目标运动追踪系统能用树莓派不?
答:同上。
3问:E题,云台和屏幕的高度关系是怎么样的?
答:自定。
4问:请问e题基本要求(1)进行自动复位时屏幕的位置是一直固定吗?
答:当然,只有绿色激光笔可以移动。
5问:E题中主板能用stm32的战舰精英mini版吗?E题中基本要求一测试完之后是否可以复位?
6问:请问E题运动目标控制与自动追踪系统中的屏幕,对材质有什么特殊要求吗?
答:白色。
7问:E题 1. 摄像头模块的摆放位置是否有要求,题目中未提及;2. 现场测试的屏幕材料是否确定,可否提供材料名称?
答:屏幕可自带。其他自定。
8问:E题:封装时屏幕和靶纸要一起封入带去吗?还是测试时由组委会提供所有队伍统一使用的?
答:封箱后自己带。赛区不提供屏幕和靶纸。
9问:E题中的两种激光笔测试开始后是一直要亮着吗?
答:自定。
10问:E题的基础部分第一问里边的“在任意位置按下按键可以复位”任意位置需要我们自己能达到还是说只需要把重点放在能复位?
答:题目已经说的很清楚,光斑处在任意位置都可通过复位功能回到原点
11问:E题屏幕高度有要求么?
答:自定。
12问:E题基础部分第一问的“任意位置都可以复位”我们需要自己写程序让激光笔达到人意位置然后再按下按键复位还是说到哪个位置不需要管只要能做到复位就可以了?
答:题目已经说的很清楚,光斑处在任意位置都可通过复位功能回到原点。
13问:测试场地屏幕是否与外界环境线条分界明显?
答:没有要求。

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

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

相关文章

掌握Python的X篇_16_list的切片、len和in操作

接上篇掌握Python的X篇_15_list容器的基本使用&#xff0c;本篇进行进一步的介绍。 文章目录 1. list的索引下标可以是负数2. 切片&#xff08;slice&#xff09;2.1 切片基础知识2.2 如何“取到尽头”2.3 按照步长取元素2.4 逆序取值 3. len函数获取lis的元素个数4. in操作符…

时间复杂度接近O(n)的三种排序算法

1.桶排序 桶排序&#xff0c;顾名思义&#xff0c;会用到“桶”&#xff0c;核心思想是将要排序的数据分到几个有 序的桶里&#xff0c;每个桶内的数据再单独进行排序。桶内排完序之后&#xff0c;再把每个桶内的数据按照顺序依次 取出&#xff0c;组成的序列就是有序的了。 …

C语言-------函数栈帧的创建和销毁------剖析描骨

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; &#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382;…

小程序原生实现左右锚点联动

效果 wxml <view classbox><scroll-view scroll-y scroll-with-animation style"width:25%"><view classnav><view wx:for"{{navList}}" wx:keyindex class"title {{index active ?select:}}"data-index{{index}} bin…

Babel编译与Webpack

目录 Babel初识BabelBabel 使用方式使用 Babel 前的准备工作 WebpackWebpack介绍Webpack初体验Webpack核心概念入口&#xff08;entry&#xff09;出口&#xff08;output&#xff09;加载 (loader)插件&#xff08;plugins&#xff09; Babel Babel官网: https://babeljs.io/…

【ASP.NET MVC】动态与静态网站(3)

一、区别 静态网页&#xff08;站&#xff09; 用户通过浏览器提交访问需求&#xff0c;需求可以是默认首页或者指定的网站中的某个页面&#xff0c;WEB服务器查找对应的网页&#xff0c;通过HTTP协议发送到客户端&#xff0c;完成访问。 特点&#xff1a;每次访问、不同角色…

PHP 前后端分离,运行配置

H5 WEB目录:安装 yarn install、npm install &#xff08;依赖包&#xff09; 在电脑&#xff1a;安装nodejs Composer下载 &#xff1a;https://getcomposer.org/

K8s影响Pod调度和Deployment

5.应用升级回滚和弹性伸缩

【飞书】飞书导出md文档 | 飞书markdown文档导出 | 解决飞书只能导出pdf word

一、飞书导出markdown github地址&#xff1a;https://github.com/Wsine/feishu2md 这是一个下载飞书文档为 Markdown 文件的工具&#xff0c;使用 Go 语言实现。 请看这里&#xff1a;招募有需求和有兴趣的开发者&#xff0c;共同探讨开发维护&#xff0c;有兴趣请联系。 二、…

大数据Flink(五十三):Flink流处理特性、发展历史以及Flink的优势

文章目录 Flink流处理特性、发展历史以及Flink的优势 一、Flink流处理特性 二、发展历史

uni-app引用外部图标库(阿里矢量图)

uni-app引用外部图标库&#xff08;阿里矢量图&#xff09; 作为前端程序员&#xff0c;nui-app是必备的&#xff0c;但是有时候内置的图标&#xff0c;组件又不完全满足&#xff0c;这里就可以引进外部图标&#xff0c;这里引用的是阿里矢量图标 第一步&#xff0c;在项目目…

「如何优雅有效利用周末和下班时间?」

文章目录 每日一句正能量前言下班的时间规划周末的时间规划提升周末体验感的好方法怎样才能获得充分的休息后记 每日一句正能量 眼望古城街尽&#xff0c;心谱落愁无序&#xff0c;旧时的誓言&#xff0c;曾而相似&#xff0c;河水在遵循河道的指引下&#xff0c;在曲折前进中放…

【爬虫案例】用Python爬取iPhone14的电商平台评论

用python爬取某电商网站的iPhone14评论数据&#xff0c; 爬取目标&#xff1a; 核心代码如下&#xff1a; 爬取到的5分好评&#xff1a; 爬取到的3分中评&#xff1a; 爬取到的1分差评&#xff1a; 所以说&#xff0c;用python开发爬虫真的很方面&#xff01; 您好&…

springCloud Eureka注册中心配置详解

1、创建一个springBoot项目 2、在springBoot项目中添加SpringCloud依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.3</version><type>…

使用SSM框架实现个人博客管理平台以及实现Web自动化测试

文章目录 前言1. 项目概述2. 项目需求2.1功能需求2.2 其他需求2.3 系统功能模块图 3. 开发环境4. 项目结构5. 部分功能介绍5.1 数据库密码密文存储5.2 统一数据格式返回5.3 登录拦截器 6. 项目展示7. 项目测试7.1 测试用例7.2 执行部分自动化测试用例 前言 在几个月前实现了一…

4 Promethues监控主机和容器

目录 目录 1. 监控节点 1.1 安装Node exporter 解压包 拷贝至目标目录 查看版本 1.2 配置Node exporter 1.3 配置textfile收集器 1.4 启动systemd收集器 1.5 基于Docker节点启动node_exporter 1.6 抓取Node Exporter 1.7 过滤收集器 2. 监控Docker容器 2.1 运行cAdviso…

【微软知识】微软相关技术知识分享

微软技术领域 一、微软操作系统&#xff1a; 微软的操作系统主要是 Windows 系列&#xff0c;包括 Windows 10、Windows Server 等。了解 Windows 操作系统的基本使用、配置和故障排除是非常重要的。微软操作系统&#xff08;Microsoft System&#xff09;是美国微软开发的Wi…

电商高并发设计之SpringBoot整合Redis实现布隆过滤器

文章目录 问题背景前言布隆过滤器原理使用场景基础中间件搭建如何实现布隆过滤器引入依赖注入RedisTemplate布隆过滤器核心代码Redis操作布隆过滤器验证 总结 问题背景 研究布隆过滤器的实现方式以及使用场景 前言 本篇的代码都是参考SpringBootRedis布隆过滤器防恶意流量击穿缓…

Data Structure, Algorithm,and Applications in C++

在学习这本书进阶内容之前&#xff0c;我们可以跟着它的第一章部分再巩固和复习。本书由Sartaj Sahni撰写&#xff0c;由王立柱和刘志红翻译。全书通俗易懂&#xff0c;内容丰富&#xff0c;是巩固C内容的不二选择。希望本文对各位有所帮助。 目录 1.函数与参数 1.1.传值参数…

wxwidgets Ribbon构建多个page与按钮响应

新建一个控制台应用程序&#xff0c;添加好头文件的依赖与lib库文件的依赖&#xff0c;修改属性&#xff1a; 将进入ribbon界面的文件与主界面的类分开&#xff1a; 1、RibbonSample.cpp #include "stdafx.h" #include "MyFrame.h" class MyApp : public…