楼主

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
正式队员Neozng
2021-10-6 16:28:34 只看该作者

马上注册,玩转Robomaster!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
了解RoboMaster视觉
--NeoZng【neozng1@hnu.edu.cn

先发前三章,10.7后每周更新一个章节!

0.Catalogue
  • 摘要
  • 视觉组在不同兵种中的作用
    2.1.装甲板识别
    2.2.能量机关
    2.3.哨兵
    2.4.工程
    2.5.雷达
    2.5.自动步兵
  • 视觉组使用的软件
    3.1.Ubuntu
    3.2.IDE
    3.3.Git
    3.4.其他工具
  • 视觉组接触的硬件
    4.1.相机
    4.2.运算平台
    4.3.激光雷达
    4.4.特殊相机
    4.5.低速IO外设
  • 比赛中基本的算法
    5.0.CV的常识概念
    5.1.OpenCV中的函数
    5.2.目标检测
       5.2.1.神经网络
       5.2.2.卷积神经网络
       5.2.3.目标检测
    5.3.目标跟踪

          5.3.1.基本方法和原理
          5.3.2.相关滤波方法
          5.3.3.CNN-Based
       5.4.滤波器、观测器和预测
          5.4.1.一维信号
          5.4.2.预测方法
          5.4.3.图像信号
  • 各算法具体应用流程
    6.1.装甲板识别
       6.1.1.传统方法+数字识别
       6.1.2.深度学习方法
    6.2.能量机关激活
       6.2.1.传统方法
       6.2.2.深度学习方法
       6.2.3.运动拟合
    6.3.测距和深度估计
       6.3.1.单目定点解算
       6.3.2.双目相机和深度相机
       6.3.3.深度学习方法
    6.4.轨迹预测与跟踪
    6.5.雷达站检测和小地图
    6.6.反陀螺
    6.7.飞镖制导
       6.7.1.基本原理和方法
       6.7.2.解决方案
  • 视觉组成员需要掌握的知识
  • 视觉组的日常
  • 一点心得体会和对新人的建议

    !文中的所有蓝色下划线都有超链,提到的书籍和材料都放在文末的网盘链接中,若失效请留言提醒笔者!




​每个RoboMaster心中应该都有一个冠军梦,和一座金灿灿的奖杯


1.摘要
在阅读本文之前,你需要有计算机科学的基本知识并至少掌握一门编程语言,同时对robomaster比赛规则和过程有大致的了解。
若只是希望知道视觉组的基本工作,仅需要阅读第二部分
笔者希望在这篇文章中向大家介绍视觉组的工作的基本概况和进入视觉组需要学习的知识,面向的对象为热爱机器人的朋友、战队中的其他技术组或准备进入视觉组的同学。本文会尽量广泛、全面地向你介绍视觉组的方方面面,同时可能涉及一些技术细节,但又不涉及过多的数学公式和推导,提供尽可能直观的认识,让其他技术组能够了解机器人视觉模块的运行机制,以便更好地协作开发,防止出现各自为战的境况。同时让新人能更快地接触这些知识,明白视觉软件开发的过程,减少踩坑的次数。
最后也是记录一下笔者近一年来的成长,算是给自己的一个交待。
  • 计算机视觉(computer vision)无疑是当今最火热的研究领域之一。自然而然,在RoboMaster的赛场,视觉的软硬件开发也占有一席之地,视觉组便和其他技术组一样应运而生了。
  • 视觉组负责的机器人模块主要是传感器和数据处理,即通过对相机、激光雷达等传感器采集到的信息进行处理从而让机器人在一定程度上具有”视觉”和“知觉”功能。
  • 在比赛中,视觉组能够让机器人自动识别地方装甲板,实现“自瞄外挂”;也能让操作手轻松地击打能量机关,使得全队获得增益;视觉组打造的感知系统更是哨兵机器人、自动步兵上的“大脑”,没有视觉组的工作,这些机器人就完全失去了在场上的作用;视觉组同时还全权负责雷达这个兵种,耳听八方眼观六路,可谓是战场指挥官。

在第二部分,主要介绍了视觉在每个兵种中的作用
第三部分则是视觉组在开发时会使用到的软件,如Linux系统、一些IDE和小工具。随后将会简述视觉组会使用的硬件如相机、各种运算平台等。
在第五部分介绍一些会用到的算法,紧接着在第六部分叙述比赛中对第五部分算法的工程应用,即如何让算法落地发挥作用
第七部分简要说明了在视觉组需要的开发技能和知识,同时也代表着你能在视觉组学到什么东西
第八部分叙述了视觉组同学的日常工作和任务安排,以及赛季的工作进程。
最后一个部分是笔者在视觉组学习一年以来的心得体会,和对新人上手视觉工作的一些建议。
另外,在每个部分中都会穿插地介绍一些视觉组在这些方面会接触到的知识






2.视觉在各兵种中的作用2.1.装甲板识别(步兵、英雄、无人机)
  • 由于机器人上安装的图传模块到操作手看到的第一视角的延迟加上操作手反应速度的延迟,操作手几乎很难手动瞄准高速运动的机器人上的装甲板。因此,视觉组在这三个兵种的研发上主要是负责装甲板的识别算法,通过处理图像找到相机视野范围内的装甲板(相机一般安装在云台上,和枪口平行放置并指向同一个方向,类似瞄准镜),进而向下位机(STM32等用于控制的MCU,microcontroller unit,单片机)发送此装甲板的相对枪口的角度数据,电控根据此数据控制电机自动转向目标装甲板,实现装甲板的自动打击。
    ​自动跟随装甲板效果



  • 随着自瞄算法的不断升级进步,RoboMaster的赛场上也出现了“反自瞄”,其中的代表之一就是“小陀螺”。机器人在小陀螺模式下,云台和底盘处于分离状态,并且底盘绕运动中心高速自旋。在这种情况下,视觉识别的难度会大大上升,一是自瞄很难跟上装甲板的高速转动,基本上我方机器人的云台运动会滞后于装甲板的运动,且难以预测装甲板的轨迹;二是即使跟随到一个装甲板后,那个装甲板随着底盘的转动很快消失在视野中,此时就要锁定另一块装甲板,使得云台会来回转动,无法稳定,导致弹丸命中率下降,从操作手的第一界面看来,整个画面不断晃动带来晕眩感,体验极差。
    因此,反“小陀螺”算法出现了:通过设计算法,识别对手的机器人处于小陀螺状态,然后让云台对准敌方机器人的中心位置而不再跟随装甲板移动。由于机器人处于“小陀螺”状态时基本上是匀速转动,这样就可在适当的时机开火(可以采用预测算法预测装甲板何时运动到云台所对准的位置),提高命中率。
    当然,随着反”小陀螺“算法的出现,赛场上又开始出现反‘反“小陀螺“ ’算法如变速小陀螺、超快小陀螺(舵轮步兵)。快进到反反反反反小陀螺(禁止套娃)因此,今后必定需要研发出鲁棒性(健壮性)和泛化性能更好的算法,才能应对愈发“卷”的比赛啊~
    ​处于小陀螺运动下的步兵机器人


2.2.能量机关(步兵)
  • 在比赛场地的中央有一个风车形状的结构,就是能量机关。能量机关的激活点距能量机关7m。我们需要用小弹丸连续击中五片随机亮起的扇叶的末端装甲板才可以激活能量机关。激活小能量机关能够为队伍带来50%的攻击力增益,大能量机关能为队伍提供100%的攻击力增益和50%的防御增益。由于在操作手的第一视角看来五片扇叶的间距非常小,难以通过鼠标移动来进行打击,并且小能量机关是匀速旋转的状态,大能量机关更是0.785sin(1.884t)+1.305 的角速度旋转,操作手很难预测其运动轨迹。这便需要视觉组设计算法来识别未被击打过的末端装甲板并对其实现自动瞄准,找准时机控制子弹的发射从而实现自动击打能量机关。
  • 除了激活我方的能量机关,我们还可以在对手激活能量机关的过程中干扰对手。倘若击打了错误的扇叶(如已经击打过的扇叶或尚未亮起的扇叶),能量机关则会重置,回到初始状态。因此,我们可以进入敌方半场,通过识别对手已经激活的扇叶并自动瞄准它,发射子弹击中错误的装甲板进而触发重置以干扰对手的激活过程。
    ​正在激活能量机关的步兵机器人


2.3.哨兵
  • 哨兵机器人被悬挂在基地前方的导轨上往复运动,是场上的一个全自动机器人,其移动、搜索目标、打击敌人都依赖于其自主决策。它相当于基地的防御塔。编写一个优秀的感知程序和决策程序,是发挥哨兵机器人威力的关键。哨兵机器人的云台会不断地转动使得上方安装的相机能够扫描到它附近的每一个角落,一旦识别到敌方的机器人便能立即锁定对手,随后根据其决策算法判断是否开火。
  • 我们还可以让在哨兵机器人遭到攻击时进入快速机动的规避状态,在导轨上进行随机地不规则动作以躲避敌方的弹丸并干扰敌方机器人搭载的预测算法。
  • 在前哨站尚未被击毁时,哨兵机器人处于无敌状态,这时我们可以让哨兵机器人保持固定以提高自己的命中率,一旦前哨战被摧毁,立即启动哨兵机器人的底盘,进入巡逻状态。
    ​巡逻中的哨兵机器人


2.4.工程
  • 工程机器人在本赛季的任务主要有:抓取矿石、兑换矿石和救援阵亡机器人。这里的每一步都可以利用视觉识别以完成自动化。
  • 在抓取矿石的时候,可以在工程机器人的机械爪上安装相机、测距传感器,再编写相关的算法来识别矿石,实现自动对位和夹取。在技术交流中,上交、哈工大、深圳大学等惊艳全场的“空接矿石”依赖的就是自动识别矿石的算法。在兑换时,根据兑换站上的一些图像特征,可以定位扫描矿石窗口的位置,来快速地完成兑换。
  • 在我方机器人阵亡后,可以通过两种方式复活阵亡机器人:工程机器人将其拖回基地旁的补血点或是让工程机器人所携带的复活卡(RFID射频卡)和其他机器人上的场地交互模块接触(被称作“刷卡复活”)。在这两种情况下,都可以通过编写视觉算法来实现快速准确地救援。我们可以在工程机器人的救援机构(夹爪、电磁铁)旁安装相机,通过确定一些方法阵亡机器人上救援结构(环、柱、磁铁等)的位置让工程机器人自动套牢,随后就可以把阵亡机器人抬走了。

​​正在夹取矿石的工程机器人


2.5.雷达
  • 雷达是本赛季新增的兵种,被放置在场边的一处高地上,拥有全局视野。利用目标检测算法和三维重建,可以定位敌方机器人在场上的位置。随后,我们能利用这些信息为我方制作一张实时更新的“小地图”,掌握对方机器人的动向,以帮助我方操作手进行战术决策,做到知己知彼而百战不殆。
  • 雷达在将全局数据处理后,还能通过多机通信功能和己方的自动机器人如哨兵、自动步兵进行通信,相当于为它们开了一双“天眼”。这无疑是极大地增强了这些自动单位的感知能力和决策能力(我愿称之为云计算!),使得机器人不再受到边缘计算平台计算能力潺弱的限制,让算法火力全开,也让我们离全自动机器人战队又更近了一步。
    ​雷达系统检测出了场上所有机器人的位置


2.6.自动步兵
  • 自动步兵同样是本赛季新增的兵种。当不为步兵机器人配置操作手时,可以将此机器人配置为自动步兵。自动步兵的所有属性都高于普通步兵机器人,其底盘功率、枪口热量上限、冷却速度、血量上限、弹丸射速都相当于同级的步兵机器人选择了所有类型的升级加点,甚至更多,是当之无愧的“六边形战士”。
  • 超高的属性值便意味着极大的开发难度。由于没有操作手,机器人进行的所有移动、攻击等动作都需要自主决策。虽然弱AI(在一个特定的问题上能够取得比人类更好的成绩)在特定领域已经击败人类,但是强AI(拥有各方面的智能)的诞生也许还为之过早。自动步兵便算是向强AI探索的一个尝试
  • 为了知道自己“在哪里”,自动步兵需要搭载SLAM(Simultaneous Localization And Mapping)系统以帮助自己构建整个地图的信息;为了能够自己决定“怎么做”,自动步兵要配备自主决策系统以确定当下应该执行的动作;为了知道要“往哪走”,自动步兵要能够进行路径规划...... 总之,这是一个大有可为,上限极高的研发方向。
    由DJI承办的RMUA(RoboMaster Uniersity AI Challenge)赛事便是一项关于全自动机器人对抗的比赛,自动步兵的规则引入也是由此而来的。若要了解更多,请访问RoboMaster ICRA RMUA
    ​RMUA赛场:全自动机器人四处搜索目标








图像和部分连接将在之后补上,大家可以到csdn获得更好的阅读体验:https://blog.csdn.net/neozng/category_11397138.html
10月7日之后每周一更,欢迎大家督促我的进度

跳转到指定楼层
来自 2#

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
正式队员Neozng
 楼主| 2021-10-6 16:31:08 只看该作者
论坛的Markdown支持实在有点一言难尽呀,戳https://mp.csdn.net/mp_blog/creation/editor/120624917 有更好的阅读体验。成文之后会发布pdf版本供大家下载。如果有问题希望大家积极email我哈!
另外,智宝,电机,懂?
回复 支持 2 反对 0

使用道具 举报

来自 3#

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
正式队员Neozng
 楼主| 2021-10-6 16:33:27 只看该作者
本帖最后由 Neozng 于 2021-10-6 16:38 编辑

如果有想要一起开发的小伙伴,同样用邮箱戳我哦!
推荐

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
正式队员Neozng
 楼主| 2021-10-13 16:07:25 只看该作者
第四第五章已经在csdn上更新,RM论坛这里超过两万字就没法发。。等所有章节更完后会出一个合并pdf以供大家下载交流。想要实时追更请看gitee仓库:https://gitee.com/hnuyuelurm/vis ... 8%A7%89%E7%BB%84.md 每天都会有新的commit不过修改速度也很快。
地板

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
工程嘿嘿。
2021-10-6 18:16:28 只看该作者
顶顶顶!
回复

使用道具 举报

5#

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
梯队队员screw
2021-10-6 20:18:46 只看该作者
Neozng 发表于 2021-10-6 16:31
论坛的Markdown支持实在有点一言难尽呀,戳https://mp.csdn.net/mp_blog/creation/editor/120624917 有更好 ...

这个连接打不开hhh
6#

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
正式队员Neozng
 楼主| 2021-10-11 12:15:54 只看该作者
7#

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
步兵小飞哥
2021-10-13 14:37:29 只看该作者
太强了,牛
回复

使用道具 举报

9#

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
正式队员Neozng
 楼主| 2021-10-17 16:07:22 只看该作者
第五章神经网络已经更新,快来兹瓷!https://blog.csdn.net/NeoZng?spm=1011.2124.3001.5343
10#

[视觉算法] 【分享帖】全网最最最全的视觉组入门教程和概览

[复制链接]
正式队员Neozng
 楼主| 2021-10-22 14:56:08 只看该作者
https://blog.csdn.net/NeoZng?spm=1011.2124.3001.5343  更新卷积神经网络,还在使用传统视觉的你,不来看看吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

Copyright © 2024 RoboMasters 版权所有 备案号 粤ICP备2022092332号

快速回复 返回顶部 返回列表