当前位置: 首页 > news >正文

【星汇极客】单片机竞赛之2024睿抗机器人大赛-火线速递赛道(持续更新)

 前言

        本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括但不限于:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三

后面会经常写一下博客,分享一下资料、经验,如果想了解其他项目、技术,可以去B站搜:星汇极客,主页链接:星汇极客

此外,还开发了个人网站,里面有一些资料和源码供下载:星汇极客网站

        火线速递这个赛道可以参加很多比赛,睿抗机器人、中国高校智能机器人、全球算法等比赛都有专门的赛道,而且比赛规则都是差不多的 。有兴趣可以好好做一下这个项目。

二、2024睿抗机器人大赛-火线速递赛道

1、题目解析

        我们需要做两个东西,一个是小车机器人,一个是传送带+炮台抛投装置,小车用来在地图中循迹、抓取沙包,传送带放在运转区、抛投装置放在发射区,用来把沙包抛出去。

地图:

任务 1:巡线机器人从起止点出发,通过巡线前进;

任务 2:弹药抓取机器人到弹药库,抓取弹药;三种颜色的弹药随机顺序放在弹药库内。

任务 3:弹药转运机器人抓取弹药继续沿引导线前进,进入发射区,并由在转运去内将弹药转移至发射机构上;

任务 4:弹药发射发射机构在监测到弹药到位后,将弹药发射进打靶区内,以弹药的最终落点计打靶环数;

任务 5:弹药巡回 射结束后机器人主动巡回弹药,并将弹药运送至回收区内对应的色框内。

PS:看着这五个任务可能不理解的话,我画个线路图出来就清晰了。

思路:1、小车从起点出发,到弹药库抓取沙包,随后自行选择路线循迹到转运区。

2、将沙包放到传送带上面,传送到发射区的炮台上,由炮台上的抛投装置将沙包抛投出去,打靶区的一圈圈圆环是计分的(按最终落点为准),中间5分往外减少。

3、小车在将沙包放到传送带上后,需要循迹往回走,在沙包落地后前往打靶区,在14处进入中间正方形区域让小车不用黑线循迹,让小车一直慢慢往前走,可利用OpenMV摄像头调整小车方向,识别到沙包后抓取并按16处走。

4、按16处走遇到全黑线,调转方向,循迹黑线走到回收区,按沙包颜色放到对应位置里,随后前弹药库抓取第二个沙包,以此类推,将三个沙包抓取、运转、抛投、寻回、放置完全,再回到起止点停下。

2、比赛答疑、注意点

(1)小车起点是让灰度传感器在黑线处,还是整体在起止点里面?

答:我在比赛时看到都是可以的,我自己是选择在起止点框里面出发。

(2)路线是固定的吗?

答:按自己的选择来,可以到左边的运转区传送,也可以到右边的。PS:你可以把三个沙包全抛了再去寻回也可以,这样可以留个保底。

(3)在运转区这里,实际地图有两条黑虚线的,你可以贴上黑胶带,虚线里面你可以放置传送带、炮台。

(4)重点:一定要做一个好的爪子,我们一开始没注意,到后面发现沙包夹着会掉下去。滑轨建议买一个15cm的,比较好把沙包放到传送带上面。

(5)想到再更新...

(6)虽然历经坎坷,最后也是获得了国二。

3、关键代码

说明:代码是在官方的STM32HAL库源码上修改的,官方代码也有些是错的,需要自己去调试修改。

注意:源码用到了FreeRTOS,没有学过的也不用慌,代码不在main.c里写,只需要知道任务执行代码在RunTask.c里就行了,根据自己的路线选择把任务代码修改。

(1)黑线路口判定修改

在track.c中。PS:循迹用了9个灰度传感器,它这里是根据识别到黑线的数量来判断路口的,如果你的小车识别路口可能误判,可以修改成 > x数字就行。

(2)灰度反馈值

在track.c中。PS:这个是PID的反馈值,调整电机速度,数值越大左右电机速度差越大,用来微调小车沿黑线直走方向。

(3)舵机控制

在servo.c中。

1、控制爪子抓取:占空比最小0,最大2000。

2、控制爪子释放:

3、注意:下面这个是控制360°舵机,占空比是1500停止转动,大于1500上升,小于1500下降,用延时控制转动时间。这个函数功能是:控制爪子上去碰到上面的微动开关停止。它跟180°舵机不同的。

(4)PID参数

在MoveTask.h中。这里是调节PID的参数,P是比例,I是积分,D是微分。

可以这样理解,调P改变车的起始速度,调I改变车的加速度,调D是减速,让小车最终趋于稳定行驶。如果车过于晃动,可以调小I,增加D。

(5)任务执行重点!!!

在RunTask.h中。调节车速

在RunTask.c中。控制小车的任务执行流程。这里面很关键!!!

第一个函数:这个是控制小车从起点出发,调用单圈函数实现跑三圈后,回到起止点。、

RunMode是要执行的功能,执行完做下一个功能。

tim在这个函数里是计时了多少ms的意思。重要!

tick是FreeRTOS里的滴答计时,不用管。

单圈函数:控制小车走一圈,实现抓取、运转、抛投、寻回、放置沙包,又去抓取沙包。

SingleMode是要执行的功能,执行完做下一个功能。

SingleTim计时了多少ms,SingleTim<500意思是在500ms内执行抓取这个功能,SingleTim<700意思是:在700-500=200ms内执行后退的功能。

4、结

因为代码实在是太多了,不一一解释,只能把关键代码讲一下。

如果你觉得这篇文章用帮助请点个赞。关注下方获取更多资源

相关文章:

【星汇极客】单片机竞赛之2024睿抗机器人大赛-火线速递赛道(持续更新)

前言 本人是一名嵌入式学习者&#xff0c;在大学期间也参加了不少的竞赛并获奖&#xff0c;包括但不限于&#xff1a;江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三。 后面会经常写一下博客&…...

生信科研,教授(优青)团队一站式指导:高通量测序技术--农业植物基因组分析、组蛋白甲基化修饰、DNA亲和纯化测序、赖氨酸甲基化

组蛋白甲基化修饰工具(H3K4me3 ChIP-seq) 组蛋白甲基化类型也有很多种&#xff0c;包括赖氨酸甲基化位点H3K4、H3K9、H3K27、H3K36、H3K79和H4K20等。组蛋白H3第4位赖氨酸的甲基化修饰(H3K4)在进化上高度保守&#xff0c;是被研究最多的组蛋白修饰之一。 DNA亲和纯化测序 DNA亲…...

【Immich部署与访问】自托管媒体文件备份服务 Immich 本地化部署与远程访问存储数据

文章目录 前言1.关于Immich2.安装Docker3.本地部署Immich4.Immich体验5.安装cpolar内网穿透6.创建远程链接公网地址7.使用固定公网地址远程访问 前言 本篇文章介绍如何在本地搭建lmmich图片管理软件&#xff0c;并结合cpolar内网穿透实现公网远程访问到局域网内的lmmich&#…...

AI少女/HS2甜心选择2 仿逆水寒人物卡全合集打包

内含AI少女/甜心选择2 仿逆水寒角色卡全合集打包共6张 内含&#xff1a;白灵雪魅落霞飞雁君临华歌白君临华歌黑平野星罗晚香幽韵 下载地址&#xff1a; https://www.51888w.com/436.html 部分演示图&#xff1a;...

C/C++逆向:数据类型识别

在逆向工程中&#xff0c;数据类型识别是理解程序逻辑的重要步骤&#xff0c;因为它直接影响对程序逻辑和功能的理解&#xff0c;识别出数据类型有助于确定变量的含义和函数的行为。在分析恶意软件或者寻找安全漏洞时&#xff0c;识别数据类型能够帮助发现代码中的潜在问题。例…...

PASCAL VOC 2012数据集 20类物体,这些物体包括人、动物(如猫、狗、鸟等)、交通工具(如车、船、飞机等)以及家具(如椅子、桌子、沙发等)。

VOC2012数据集是PASCAL VOC挑战赛官方使用的数据集之一&#xff0c;主要包含20类物体&#xff0c;这些物体包括人、动物&#xff08;如猫、狗、鸟等&#xff09;、交通工具&#xff08;如车、船、飞机等&#xff09;以及家具&#xff08;如椅子、桌子、沙发等&#xff09;。每个…...

题目:最左边的数字

问题 - 1060 (hdu.edu.cn) 解题思路&#xff1a; 数字很大&#xff0c;使用科学计数法。则&#xff0c;我们需要的是a的整数位&#xff0c;最终求出a即可。 取对数&#xff1a;nlgnmlga&#xff0c;移项&#xff1a;lganlgn-m&#xff0c;接下来我们需要求m。 …...

第 4 章 Spring IoC容器之BeanFactory

Spring 的 IoC 容器是一个提供 IoC 支持的轻量级容器&#xff0c;除了基本的 IoC 支持&#xff0c;它作为轻量级容器还提供了 IoC 之外的支持。 Spring 提供了两种容器类型&#xff1a;BeanFactory 和 ApplicationContext&#xff1a; BeanFactory&#xff0c;基础类型 IoC 容…...

滚雪球学Oracle[2.3讲]:Oracle Listener配置与管理

全文目录&#xff1a; 前言一、Oracle Listener的基础概念1.1 什么是Oracle Listener&#xff1f;Listener的作用&#xff1a; 1.2 Oracle Listener的配置文件示例listener.ora配置文件&#xff1a; 1.3 启动与管理Listener 二、多Listener配置与负载分担2.1 多Listener的应用场…...

免费送源码:Javaspringboot++MySQL springboot 社区互助服务管理系统小程序 计算机毕业设计原创定制

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受居民的喜爱&#xff0c;社区互助服务管理系统小程序被居民普遍使用&#xff0c;为…...

成都睿明智科技有限公司抖音电商新蓝海的领航者

在当今这个数字化浪潮汹涌的时代&#xff0c;电商行业正以惊人的速度迭代升级&#xff0c;而抖音电商作为新兴势力&#xff0c;更是凭借其庞大的用户基数、精准的算法推荐和高度互动的社区氛围&#xff0c;成为了众多商家竞相追逐的蓝海市场。在这片充满机遇与挑战的海洋中&…...

不可错过!CMU最新《生成式人工智能大模型》课程:从文本、图像到多模态大模型

1. 课程简介 从生成图像和文本到生成音乐和艺术&#xff0c;生成模型一直是人工智能的关键挑战之一。本课程将探讨推动生成模型和基础模型&#xff08;Foundation Models&#xff09;最近进展的机器学习和人工智能技术。学生将学习、开发并应用最先进的算法&#xff0c;使机器…...

重庆数字孪生工业互联网可视化技术,赋能新型工业化智能制造工厂

重庆作为西南地区的重要工业基地&#xff0c;正积极探索和实践数字孪生、工业互联网及可视化技术在智能制造领域的深度融合&#xff0c;致力于打造新型工业化智能制造工厂&#xff0c;为制造业的高质量发展注入强劲动力。 在重庆的智能制造工厂中&#xff0c;数字孪生技术被广…...

Qt QPushButton clicked信号浅析

前言 Qt 的 QPushButton clicked 信号原型&#xff1a; void clicked(bool checked false);通常&#xff0c;使用 Qt 的 QPushButton clicked 点击信号时&#xff0c;会以如下方式使用&#xff1a; connect(ui->pushButton, &QPushButton::clicked, this, [](){qDeb…...

Python时间戳转日期

在Python中&#xff0c;你可以使用datetime模块将时间戳转换为日期。时间戳通常是一个表示自1970年1月1日&#xff08;UTC&#xff09;以来的秒数的浮点数或整数。 以下是一个简单的示例&#xff0c;展示了如何将时间戳转换为日期和时间&#xff1a; import datetime# 示例时…...

对 LLM 工具使用进行统一

我们为 LLM 确立了一个跨模型的 统一工具调用 API。有了它&#xff0c;你就可以在不同的模型上使用相同的代码&#xff0c;在 [Mistral] 或 [Llama]) 等模型间自由切换&#xff0c;而无需或很少需要根据模型更改工具调用相关的代码。此外&#xff0c;我们还在 transformers 中新…...

webpack/vite的区别

Webpack和Vite都是前端开发中常用的构建工具&#xff0c;它们在多个方面存在显著的区别。以下是对这两个构建工具的详细比较&#xff1a; 一、基础概念与定位 Webpack Webpack是一个现代JavaScript应用程序的静态模块打包器&#xff08;module bundler&#xff09;。它允许开发…...

【笔记】信度检验

一、信度 信度是指测量结果的一致性和稳定性。 1.一致性&#xff08;Consistency&#xff09; 一致性指的是测量工具内部各个部分或项目之间的协调一致程度。高一致性意味着测量工具的不同部分都在测量同一个概念或特质。 例子&#xff1a;智力测试 假设我们有一个包含100…...

使用Python实现无人机路径规划的灰狼优化算法

目录 使用 Python 实现无人机路径规划的灰狼优化算法引言1. 灰狼优化算法概述1.1 定义1.2 算法原理1.3 灰狼的狩猎策略1.4 算法步骤 2. Python 中的灰狼优化算法实现2.1 安装必要的库2.2 定义类2.2.1 灰狼类2.2.2 群体类2.2.3 路径规划类 2.3 示例程序 3. 灰狼优化算法的优缺点…...

理解递归和回溯

文章目录 什么是递归回溯 什么是递归 回溯 //使用递归回溯来给小球找路//说明//1. map 表示地图//2. i,j 表示从地图的哪个位置开始出发 (1,1)//3. 如果小球能到 map[6][5] 位置&#xff0c;则说明通路找到.//4. 约定&#xff1a; 当map[i][j] 为 0 表示该点没有走过 当为 1 表…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...

OPENCV图形计算面积、弧长API讲解(1)

一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积&#xff0c;这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能&#xff0c;常用的API…...

Linux信号保存与处理机制详解

Linux信号的保存与处理涉及多个关键机制&#xff0c;以下是详细的总结&#xff1a; 1. 信号的保存 进程描述符&#xff08;task_struct&#xff09;&#xff1a;每个进程的PCB中包含信号相关信息。 pending信号集&#xff1a;记录已到达但未处理的信号&#xff08;未决信号&a…...

Linux实现线程同步的方式有哪些?

什么是线程同步&#xff1f; 想象一下超市收银台&#xff1a;如果所有顾客&#xff08;线程&#xff09;同时挤向同一个收银台&#xff08;共享资源&#xff09;&#xff0c;场面会一片混乱。线程同步就是给顾客们发"排队号码牌"&#xff0c;确保&#xff1a; 有序访…...

大模型的LoRa通讯详解与实现教程

一、LoRa通讯技术概述 LoRa(Long Range)是一种低功耗广域网(LPWAN)通信技术,由Semtech公司开发,特别适合于物联网设备的长距离、低功耗通信需求。LoRa技术基于扩频调制技术,能够在保持低功耗的同时实现数公里甚至数十公里的通信距离。 LoRa的主要特点 长距离通信:在城…...

Java严格模式withResolverStyle解析日期错误及解决方案

在Java中使用DateTimeFormatter并启用严格模式&#xff08;ResolverStyle.STRICT&#xff09;时&#xff0c;解析日期字符串"2025-06-01"报错的根本原因是&#xff1a;模式字符串中的年份格式yyyy被解释为YearOfEra&#xff08;纪元年份&#xff09;&#xff0c;而非…...