Robomaster视觉组成长之路

本文目录

  • Robomaster视觉组成长之路
    • 前言
    • 11.28 看装甲板
    • 11.30
    • Source Insight和wine
    • 东南大学代码
      • apt安装qt5
    • error adding symbols: file wrong format
    • 刷机后配置环境
      • 上交代码包配置
    • Ubuntu安装教程
      • 注意不要安装中文!!!!!
    • 串口通信时,使用结构体

前言

有人回复本文太乱了,确实是这样。我现在已经开始按篇章整理。欢迎大家看我Robomaster视觉专栏的相关文章。

首先,本人也只是做了一年的RM视觉,通过这样一场比赛,和同学们学到了很多知识。不过,升学之后的研究生院校不做RM了,所以之后博客更新的内容也和RM的重合度不会太大了。
那么,我们想要通过这个比赛学到什么东西呢?具体可以看RoboMaster视觉教程大纲。主要是在linux上编写C++代码,使用Open CV库,通过Cmake构建C++工程。利用Python进行机器学习。完成整个庞大的代码,以上是最基本的内容。
除此之外,好学的老铁们可能还会利用Qt作为ide,使用qt库(还有人用Clion)。可能会用到卡尔曼滤波、小孔成像等数学物理知识:‘可能会使用makefile构建工程。可能会纠结于一些特定的Linux平台,比如manifold(nuc要更通用);等等等等
我想说的是,这样一个比赛,全心全意做一年不算少,做两年三年不嫌多。真的可以利用学校的条件学到很多很多东西。
对于这篇博客,我认为我所总结的CMake篇,linux篇(包括manifold介绍)对于应付比赛的使用应该是足够了。对于qt以及Open CV我也还只是一个初学者罢了。
如果想要开始cmake的学习,可以点击cmake总体介绍开始。全心学习,几个小时就可以上手了。
如果想要开始Linux的学习,可以点击linux总体介绍开始。

其他内容有:
opencv专栏
Qt+OpenCV专栏
CMake专栏
linux专栏
Robomaster视觉专栏
对于使用manifold的队伍,参考官方guide是必须的,当然,也可以看一下我的踩坑指南。
manifold专栏
学习体验manifold(一)刷机
学习笔记manifold(二)迈德威视摄像头配置
学习笔记manifold(三)配置ssh以及vnc
视觉笔记manifold(四)串口调试
视觉笔记manifold(五)manifold使用小技巧

2020比赛,我们队伍暂时采取2019年上交开源代码。在消化代码的过程中,我学到很多,予以记录!

11.28 看装甲板

open cv 中width angle heigh定义
返回的角度在[-90.0]度之间

11.30

if(target_box.rect != cv::Rect2d())
这句话的意思是装甲板类的一个对象target_box有一个变量rect,这个变量类型是cv::Rect2d(),那么上面这个判断,左边是rect,左边构建了一个临时的cv::Rect2d()类型数据,如果装甲板没有找到,那么rect就是初始值,(target_box.rect与cv::Rect2d()值也会相等。
Rect2d()是open cv里的一个矩形类,有x,y,width,heigh四个变量。d意思是四个变量是整型,Rect2f()就是浮点型
滤波算法需要限幅
使用上述限幅滤波方法1,记得初始值一定要用恰当方法赋值
12.5
linux下看代码感觉vscode是最方便的,所以下载linux的vscode,vim看工程不舒服
linux下能用的vs code包,官方提供的不太好用
这个网址有各种版本的vscode包,而且包括各种架构vs code包网址
在这里,我们选择arm架构,deb版本。因为manifold和TX2就是arm架构,而且系统是Ubuntu,属于Debian发行版。
下载了包,之后就可以安装了。安装方法可以参考下方网址linux vscode安装技巧
ubuntu不休眠方法,screensaver
坑爹的地方来了,vscode中C/C++插件不支持arm架构,所以仍然只能使用搜索

Source Insight和wine

如果是一个项目,里面有很多源码文件,经常需要在不同的源码文件之间切换,用文本编辑器软件查看就没有那么方便了,这时推荐用专门的源码阅读软件Source Insight,这个软件只有Windows版,但是它在Linux的Wine环境中运行的非常好,所以在Linux上安装一个wine就可以用这个软件了,这个软件可以很方便的跳转到变量、函数、类的定义处,还能前进、后退,阅读源码非常方便。

东南大学代码

江苏省省赛只需要识别装甲板,不需要识别数字。所以现在的任务是准确识别装甲板并且帧率达到60以上!这样才能快速击打,否则只能跟随不能打中。
在硬件平台是manifold,使用上交代码的情况下,怎么提高帧率呢?
识别数字必须用到机器学习的方法,但是帧率就会下降,所以,需要识别装甲板,不识别数字,单纯识别装甲板的代码已经很成熟了。
1.使用更好的cpu平台,比如Intel的
因为现在在manifold跑代码,只是单纯的利用了CPU,而英伟达的cpu性能并不好。但是重新买硬件,经济不允许
2.利用cuda,使用manifold的GPU
但是CUDA想要用起来。花费时间太长。TX2对于CUDA支持很好,买了manifold-2G,那么CUDa一定要用一下。TX1已经停产
3.将上交代码中和数字识别有关系的删去
4.使用tensor RT重新编译open cv速度必然能够加快,
这种方法花费的精力比cuda要小
5.再使用其他仅识别装甲板的开源代码
因为现在买的摄像头是上交用的,换代码需要换摄像头驱动库
总而言之,看开源代码太有用了!
今天尝试在manifold上编译东南大学代码

apt安装qt5

2018年东南大学的开源代码,用到了qt5.想安装一下,

sudo apt install qt
sudo apt install qt5-default
sudo vim /etc/apt/sources.list
sudo apt update
sudo apt install qt5-default

学到的东西:
首先在sudo apt install qt 时
可以按table键,向服务器发出请求,这样服务器就可以尝试补全后面的东西,猜测要安装什么。在不换源的情况下,服务器是ubuntu官网。
在/etc/apt/sources.list,可以换源为aliyun
换源之后,需要清掉缓存,再更新一下,这时候才能够重新apt install

apt clean
apt update

error adding symbols: file wrong format

在编译上交代码时,刚下载下来就出现这样的错误。(对于一个摄像机驱动库)
解决方法
只需要去迈德威视官网下载linux开发包,然后打开lib文件夹。选择arm64文件夹里的linuxMVSDK.so替换掉原本的这个同名文件即可编译成功。

刷机后配置环境

环境配置使用了学长做的一个sh脚本,这部分操作不熟悉,之后重新配置学习一下
自己写一个脚本,一定要记得加可执行权限

chmod +x Auto.sh
make install    //有时候不行,无法创建文件,这时候使用
sudo make install

配置环境使用了学长提供的包,直接在包里便可以安装各种软件
将opencv_family_bucket.tgz这个压缩包放到manifold的download文件夹里
以下是在这个文件夹里的命令

tar -xvzf opencv_family_bucket.tgz
ls
cd opencv_family_bucket
cd ffmpeg-4.2.1./configure --enable-cuda-nvcc --enable-opengl --enable-shared --enable-nonfreesleep 5make -j8sudo make install

之后配置OpenCV
在opencv_family_bucket文件夹里

cd opencv-3.4.8
#!/bin/shrm -rf buildmkdir buildcd buildcmake \      -DCMAKE_BUILD_TYPE=Release \      -DBUILD_PNG=ON \      -DBUILD_TIFF=OFF \     -DBUILD_TBB=OFF \      -DBUILD_JPEG=ON \      -DBUILD_JASPER=OFF \      -DBUILD_ZLIB=ON \      -DBUILD_EXAMPLES=OFF \      -DBUILD_opencv_java=OFF \      -DBUILD_opencv_python2=ON \      -DBUILD_opencv_python3=ON \      -DENABLE_PRECOMPILED_HEADERS=OFF \      -DWITH_OPENCL=OFF \      -DWITH_OPENMP=OFF \      -DWITH_FFMPEG=ON \      -DWITH_GSTREAMER=OFF \      -DWITH_GSTREAMER_0_10=OFF \      -DWITH_CUDA=ON \      -DWITH_GTK=ON \      -DWITH_VTK=OFF \      -DWITH_TBB=ON \      -DWITH_1394=OFF \      -DWITH_OPENEXR=OFF \      -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \      -DINSTALL_C_EXAMPLES=ON \      -DINSTALL_TESTS=OFF \      ..
make -j8
sudo make install

大功告成

上交代码包配置

妙算的架构是arm64
所以摄像头的包要用arm64版本

将迈德威视这个开发包里的,arm版本的libMVSDK.so替换掉上交代码中other文件夹里的包

Ubuntu安装教程

为什么要安装Ubuntu系统?
一是manifold的刷机需要用到Ubuntu14.04
而是可以在实验室有linux系统,方便学习
首先在官网下载一个Ubuntu14.04官网地址
这篇教程借鉴u盘的制作,后边的看别的
详细一些
戳F12

注意安装Ubuntu双系统和重装为Ubuntu系统时,给u盘写入映像的操作一样,只是在安装过程中,选择是否保留原系统这一项上有所区别。
写入后,按F12进入安装界面。选择Legacy 下面的USB而不是UEFi下面的启动方式
之后就是图形化操作了。

注意不要安装中文!!!!!

因为有些软件在中文界面下不支持,安装英文就对了。
还有,在选择安装选项的时候,注意选择,清除所有磁盘并重装系统。不要选择那个只是重装系统的选项

串口通信时,使用结构体

使用结构体,可以直接利用内存进行复制,操作极其方便。

Robomaster视觉组成长之路相关推荐

  1. 从语音识别到语义识别,中间还有多长的路要走?-模拟/电源-与非网

    最近科技圈刮起一股收购风,前面博通收购高通还在如火如荼的进行,这周苹果就宣布收购音乐识别软件 Shazam.Shazam 这个软件,通过手机麦克风收录音频片段,能够识别音乐.电影.电视节目甚至是广告. ...

  2. RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置)

    RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置) 概览 算法原理 solvePnP的使用流程 实验:测量二维码相对于摄像头的位置 RoboMaster视觉程序中的位 ...

  3. RoboMaster视觉教程(4)装甲板识别算法

    RoboMaster视觉教程(4)装甲板识别算法 概览 下面是一些资料链接,篇篇经典! 装甲板识别 test_sentry.cpp 分析一下装甲板 识别函数 int ArmorDetector::de ...

  4. 机器学习漫谈:还有很长的路要走

    来源:王宏琳科学网博客 链接地址:http://blog.sciencenet.cn/blog-3005681-1285948.html  人工智能已经成为大数据.机器人和物联网等新兴技术的主要驱动力 ...

  5. AI 识别抑郁症正确率高达八成,但AI+精神健康还有很长的路要走

    来源: 智能相对论(aixdlun) 近年来,"抑郁症"一词越来越多的被人们提起,不少名人如白岩松.崔永元等都曾表示陷入过抑郁症的痛苦,而抑郁症患者不堪病痛而自杀的新闻也屡见不鲜. ...

  6. 华为鸿蒙系统真的好吗,鸿蒙系统真的成熟吗?华为还有很长的路要走

    许多人认为,华为的产业发展规划尽管早已非常健全,但2020年发布鸿蒙手机的概率并不大.为了更好地搭建一个详细的系统软件生态体系,华为投入了许多精力.鸿蒙系统也代表着国产系统的风采,假如轻率发布,对华为 ...

  7. 奔跑中的2015--成长之路

    奔跑中的2015--成长之路 看到小歌在群里发"奔跑中的2015"征文活动,我不禁陷入了沉思,2015年已经在忙忙碌碌中过去了一半,在这过去的半年里我都做了什么? 其实前一段时间就 ...

  8. 没有比脚更长的路 没有比人更高的山

    不畏艰险,勇往直前 没有比脚更长的路,没有比人更高的山 人生就该如此,这样的人生态度 是胆量,是再多困难也要把事情做好的勇气. 是坚持,是做事有始有终,是对工作的无比忠诚 是自信,是不断的超越自己,是 ...

  9. RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角)

    RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角) 概览 直接使用像素坐标的缺陷 摄像头标定 根据小孔成像原理得到需要的转角 角度测量验证 概览 在识别到目标后,有一个很重要的问题: ...

最新文章

  1. hdu 1022 Train Problem I(栈)
  2. 【错误记录】Android 分区存储 错误 ( 文件格式不匹配 )
  3. python for net_转:.NET 4.0 下使用 Python for .NET
  4. Chapter1-1_Speech_Recognition(Overview)
  5. 01 离散时间信号的时域表示
  6. html怎么加漂浮物,全面开展水面漂浮物清理专项行动
  7. Oracle数据库间的数据复制 - SQLPlus中的COPY命令
  8. IntelliJ IDEA代码格式化,代码超出规定宽度自动换行
  9. python爬虫ip限制_爬虫访问中如何解决网站限制IP的问题?
  10. PNG转ICO-在线转换
  11. VirtualBox虚拟机E_INVALIDARG (0x80070057)
  12. 路德维希贝多芬计算机怎么操作,路德维希·凡·贝多芬(Ludwig van Beethoven)-欢乐颂(Ode an die Freude)...
  13. 【更新】关于VMware虚拟机无法正常获取IP地址问题的解决方法及思路
  14. 在计算机领域中 ascii码,在计算机领域中,ascii码用一个字节来干什么
  15. 什么是基本的逻辑运算?
  16. 初尝Google Code
  17. Egret QQ玩一玩适配【踩坑日记】
  18. python爬取智联招聘网_Python-爬取智联招聘
  19. 二、肺癌检测-LUNA数据集下载和介绍
  20. android 解决图片替换之后没有更新图片

热门文章

  1. STEM 是个怎样高大上的东西?
  2. java的四种访问权限_Java四种访问权限
  3. python爬虫和数据分析的书籍_豆瓣书籍数据爬取与分析
  4. 集五福招数都在这了,2021 支付宝集五福全攻略
  5. M415步进电机驱动器的使用(C51)
  6. IDEA SpringBoot项目Docker一键部署
  7. android数学公式编辑,数学公式编辑器下载-数学方程式编辑器APP 2.122 安卓版-我游网...
  8. Cesium学习笔记(六)粒子系统
  9. 计算机视觉软件安装全教程(python opencv VSCodeUserSetup)
  10. 字节跳动2018校招前端方向(第三批)题目3