NVIDIA Jetson 项目:机器人足球比赛
推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑器的3D应用场景
事实上,整个比赛都致力于这个想法。RoboCup小型联盟(SSL)视觉停电技术挑战赛鼓励团队“探索本地传感和处理,而不是非车载计算机和全球摄像机感知环境的典型方法。来自巴西累西腓伯南布哥联邦大学的学生 João Guilherme、他的导师 Edna Barros 和其他 SSL 队友建造了一个由 NVIDIA Jetson Nano 开发套件提供支持的全向机器人,用于自主执行足球任务。
该团队用单目摄像头构建了他们的全向机器人,可以自主执行以下任务:
- 地方化
- 足球检测和抓取
- 坐标计算
- 将球传给其他团队机器人
- 空门得分
该团队使用AI软件管道构建了机器人,平均处理速度为30 FPS,硬件仅消耗约10.8 W的功率。
机器人的前部有一个踢腿装置,是一个四轮全向机器人。图 1 显示了机器人的几何形状。
图1.由 NVIDIA Jetson 纳米开发套件提供支持的全向机器人的运动能力,可自主执行足球任务
“我们通过三项足球任务评估我们的系统:抢球、进球和传球,分别实现了 80%、80% 和 46.7% 的成功率,”该团队在迈向自主机器人杯小型联盟机器人中解释道。
在比赛期间,球队将使用场外计算机执行大部分计算,接收球的位置并收集场地几何信息和裁判命令。比赛在11个(B级)和180个(A级)机器人的团队之间进行,机器人通过RF通信以最小的带宽接收导航命令。机器人的直径和高度限制在150毫米(B分区)和<>毫米(A分区),因此得名小尺寸联盟。
SSL RoboCup比赛包括四个阶段:
- 在球场上的某个地方抓住一个静止的球
- 空门带球得分
- 将机器人移动到特定坐标
- 打进一个间接进球(需要两个机器人)
此外,这一挑战要求机器人检测野外物体,估计其位置,计算导航路径并记录过去的轨迹。
“SSL匹配是高度动态的环境,具有极其资源受限的机器人,需要解决方案考虑尺寸,功耗,准确性和处理速度权衡。这项工作提出了一种架构,使这些机器人能够自主执行基本的足球任务,也就是说,无需接收任何外部信息,“Guilherme和他的队友在迈向自主RoboCup小型联盟机器人中表示。
项目硬件
该团队在其项目中使用了以下硬件:
- Jetson 纳米开发套件,用于执行嵌入式视觉和决策
- 全向机器人
- 罗技 C922 摄像头,提供单目视觉
- 惯性传感器,用于实现测程估计
- STM32F767ZI微控制器单元(MCU),用于接收来自Nano的目标相对位置和导航标志,并使用惯性里程计执行低级控制和轨迹估计
图2.足球机器人的AI检测流水线及运动规划
有关所用硬件的更多信息,请参阅 RobôCIn 2020 团队描述文件。
技术挑战
在比赛的视觉停电挑战赛中,获胜的机器人必须能够完成各种基于足球的技能,包括抓住一个静止的球,在空球上得分,移动到特定的坐标,以及得分一个间接进球(传给另一个机器人)。
机器人必须能够仅使用嵌入式传感和处理来执行这些技能。这项挑战没有高度限制,因此该团队在他们的典型机器人顶部增加了一个机载摄像头Jetson Nano和一个电源板。
图3.该团队为视觉停电挑战赛改装的足球机器人(左)和他们原来的机器人(右)
此外,这一挑战要求机器人检测野外物体,估计其位置,计算导航路径并记录过去的轨迹。SSL足球比赛利用外部摄像头和机外计算机来感知环境并向机器人发送命令。
根据研究人员的说法,SSL Vision架构“存在诸如相机的视野,颜色分割,软件延迟和通信中断等限制,迫使团队开发处理复杂条件的解决方案。例如,比赛中的一个常见问题是球遮挡,当机器人在相机图像上的投影与球重叠时,就会发生这种情况。另一个问题是球和机器人的位置会闪烁,偶尔不会检测到或错误地检测到它们。
在SSL竞赛中,机器人和球分别达到3.7米/秒和6.5米/秒的速度,导致快速移动的游戏需要高吞吐量的解决方案。此外,尺寸限制加上使用电池作为电源要求解决方案具有低功耗。此外,在比赛中进行精确的长距离踢球和传球,需要准确的位置估计。
该团队还指出了精确电机控制的重要性,因此机器人可以在足球场上移动并保持其测量位置准确。该团队需要一种方法来降低机器人对其位置的内部理解与其实际物理位置的分歧率。有关更多详细信息,请参阅迈向自主机器人杯小型联盟机器人。
图4.足球机器人的摄像头有助于物体检测以及用于决策和路径规划的视野
项目软件和人工智能
该团队使用OpenCV2以及校准和姿势计算技术来提取单眼相机(固定在机器人上)的“内在和外在参数”。他们使用SSD MobileNet v2来检测相机帧上物体的2D边界框。他们还使用了一个程序,将线性回归应用于SSD MobileNet创建的边界框坐标,用于估计预先校准的相机参数。这将在场上分配对应于对象底部中心(具有对象与相机的相对位置)的点,因此也分配给机器人。
结果
该团队对他们的机器人在今年的挑战中的表现感到满意。亮点包括:
- 抓住一个静止的球: 在 12 次尝试中的 15 次中,机器人能够在球接触运球器时停止,成功率为 80%。
- 进球: 12次跑动中有15次打进一球。
- 通过:机器人在 7 次尝试中的 15 次中传球,成功率为 46.7%。
访问 机器人世界杯 2023 结果以查看完整的结果列表。该团队自 2019 年以来一直参加 RoboCup 小型联赛,并在 2022 年赢得了他们的第一个世界冠军(B 级)。他们目前是三届拉丁美洲冠军。RobôCIn 2023 年 RoboCup 小型联赛扩展团队描述文件介绍了该团队在 2023 月下旬在法国波尔多举行的 RoboCup <> 中对小型联赛 (SSL) B 级冠军的项目所做的改进,当时他们获得了第一名。
图5.机器人抓住静止球(左)并进球(右)
未来计划
Guilherme分享了他们的团队在比赛中遇到的挑战的一些见解,以及未来赛事的改进机会。他指出,大多数失败是由于来自场外物体的假阳性检测。“我们正在研究一种检测场边界并应用掩模丢弃这些物体的解决方案,”他说。
团队需要更快的对象检测解决方案。“尽管到目前为止我们能够执行基本技能,但对于SSL环境来说,30 FPS的处理速度仍然很低。在主要比赛中,相机通常以 70 FPS 的速度运行,“他说。
机器人的技能仅使用检测到的物体的相对位置来实现,也就是说,没有机器人在现场的自我定位知识。“我们相信这些信息可能有助于优化我们在足球任务中的表现,同时也使我们能够避免处罚,”Guilherme指出。例如,机器人不应进入守门员的区域。“我们正在研究一种基于蒙特卡罗定位(MCL)的自我定位算法,并将在未来几个月内分享。
该团队计划在未来为机器人系统添加更多功能(例如场线检测、定位算法和路径规划),他们将努力优化系统的每个部分以满足这些需求。
此外,该团队继续研究检测场边界和线以及估计机器人自我定位的解决方案。他们还计划用Jetson Orin Nano取代Jetson Nano,这样他们就可以用机器人实现更快的处理速度。这种升级应该有助于球队在联赛中更有效地竞争。
要了解有关团队原始项目的更多信息,请访问开发人员论坛和 GitHub。探索 Jetson 社区项目,从机器人开发人员同行那里获得更多想法和灵感。
原文链接:NVIDIA Jetson 项目:机器人足球比赛 (mvrlink.com)
相关文章:

NVIDIA Jetson 项目:机器人足球比赛
推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑器的3D应用场景 事实上,整个比赛都致力于这个想法。RoboCup小型联盟(SSL)视觉停电技术挑战赛鼓励团队“探索本地传感和处理,而不是非车载计算机和全球摄像机感知环境的…...

【论文解读】Hybrid-SORT: Weak Cues Matter for Online Multi-Object Tracking
因为Hybrid-SORT的baseline是基于OCSORT进行改进的,在这之前建议先了解byteTrack和【】的相关知识 1.介绍 1.1 基本框架 多目标跟踪(MOT)将问题分为两个子任务。第一个任务是检测每个帧中的对象。第二个任务是将它们在不同的框架中联系起来。关联任务主要通过显式…...

Microsoft 图像BERT,基于大规模图文数据的跨模态预训练
视觉语言任务是当今自然语言处理(NLP)和计算机视觉领域的热门话题。大多数现有方法都基于预训练模型,这些模型使用后期融合方法融合下游任务的多模态输入。然而,这种方法通常需要在训练期间进行特定的数据注释,并且对于…...
vue3+elementUI-plus实现select下拉框的虚拟滚动
网上查了几个方案,要不就是不兼容,要不就是不支持vue3, 最终找到一个合适的,并且已上线使用,需要修改一下样式: 代码如下: main.js里引用 import vue3-virtual-scroller/dist/vue3-virtual-scroller.css; …...

学C的第三十四天【程序环境和预处理】
相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十三天【C语言文件操作】_高高的胖子的博客-CSDN博客 1 . 程序的翻译环境和执行环境 在ANSI C(C语言标准)的任何一种实现中,存在两个不同的环境。 ࿰…...

微服务中间件--Ribbon负载均衡
Ribbon负载均衡 a.Ribbon负载均衡原理b.Ribbon负载均衡策略 (IRule)c.Ribbon的饥饿加载 a.Ribbon负载均衡原理 1.发起请求http://userservice/user/1,Ribbon拦截该请求 2.Ribbon通过EurekaServer拉取userservice 3.EurekaServer返回服务列表给Ribbon做负载均衡 …...

字符设备驱动实例(ADC驱动)
四、ADC驱动 ADC是将模拟信号转换为数字信号的转换器,在 Exynos4412 上有一个ADC,其主要的特性如下。 (1)量程为0~1.8V。 (2)精度有 10bit 和 12bit 可选。 (3)采样时钟最高为5MHz,转换速率最高为1MSPS (4)具有四路模拟输入,同一时…...

python基础5——正则、数据库操作
文章目录 一、数据库编程1.1 connect()函数1.2 命令参数1.3 常用语句 二、正则表达式2.1 匹配方式2.2 字符匹配2.3 数量匹配2.4 边界匹配2.5 分组匹配2.6 贪婪模式&非贪婪模式2.7 标志位 一、数据库编程 可以使用python脚本对数据库进行操作,比如获取数据库数据…...

SpringAOP原理:手写动态代理实现
0、基础知识 AOP我们知道,是在不修改源代码的情况下,为代码添加一些新功能的技术。通过动态代理,可以在不修改原始类代码的前提下,对方法进行拦截和增强。 动态代理常用于在不改变原有业务逻辑的情况下,对方法…...

【旅游度假】Axure酒店在线预订APP原型图 旅游度假子模块原型模板
作品概况 页面数量:共 10 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:旅游度假,生活服务 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本作品为「酒店在线预订」的移动端…...
Android JNI系列详解之CMake和ndk-build编译工具介绍
一、前提 CMake和ndk-build只是编译工具,本次主要介绍ndk-build和CMake的区别,下节课介绍他们的使用。 二、CMake工具介绍 CMake:cross platform make,是跨平台的编译工具 CMake是在AndroidStudio2.2之后引入(目前默认…...

【Linux取经路】解析环境变量,提升系统控制力
文章目录 一、进程优先级1.1 什么是优先级?1.2 为什么会有优先级?1.3 小结 二、Linux系统中的优先级2.1 查看进程优先级2.2 PRI and NI2.3 修改进程优先级2.4 进程优先级的实现原理2.5 一些名词解释 三、环境变量3.1 基本概念3.2 PATH:Linux系…...

TCP编程流程(补充)
目录 1、listen: 2、listen、tcp三次握手 3、 发送缓冲区和接收缓冲区: 4、tcp编程启用多线程 1、listen: 执行listen会创建一个监听队列 listen(sockfd,5) 2、listen、tcp三次握手 三次握手 3、 发送缓冲区和接收缓冲区:…...

每天一道leetcode:433. 最小基因变化(图论中等广度优先遍历)
今日份题目: 基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是 A、C、G 和 T 之一。 假设我们需要调查从基因序列 start 变为 end 所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。 例如,&quo…...

【C++】做一个飞机空战小游戏(十)——子弹击落炮弹、炮弹与飞机相撞
[导读]本系列博文内容链接如下: 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…...

去除UI切图边缘上多余的线条
最近接到UI切图,放进项目,显示边缘有多余线条,影响UI美观。开始以为切图没切好,实则不是。如图: ->解决: 将该图片资源WrapMode改为Clamp...

Spring高手之路13——BeanFactoryPostProcessor与BeanDefinitionRegistryPostProcessor解析
文章目录 1. BeanFactoryPostProcessor 概览1.1 解读 BeanFactoryPostProcessor1.2. 如何使用 BeanFactoryPostProcessor 2. BeanDefinitionRegistryPostProcessor 深入探究2.1 解读 BeanDefinitionRegistryPostProcessor2.2 BeanDefinitionRegistryPostProcessor 的执行时机2.…...
【LeetCode动态规划】详解买卖票I~IV,经典dp题型买
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。…...

【深入探究人工智能】:常见机器学习算法总结
文章目录 1、前言1.1 机器学习算法的两步骤1.2 机器学习算法分类 2、逻辑回归算法2.1 逻辑函数2.2 逻辑回归可以用于多类分类2.3 逻辑回归中的系数 3、线性回归算法3.1 线性回归的假设3.2 确定线性回归模型的拟合优度3.3线性回归中的异常值处理 4、支持向量机(SVM&a…...
设计模式之解释器模式详解及实例
1、解释器设计模式概述: 解释器模式(Interpreter Pattern)是一种设计模式,它主要用于描述如何构建一个解释器以解释特定的语言或表达式。该模式定义了一个文法表示和解释器的类结构,用于解释符合该文法规则的语句。解…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
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 开发者设计的强大库ÿ…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...