资讯专栏INFORMATION COLUMN

了解RoboMaster视觉组(三)视觉组使用的软件

AlphaWallet / 3159人阅读

摘要:视觉组接触的软件进行视觉开发会用到各种各样的软件开发环境辅助工具等,所以很有必要了解一些相关的快捷键命令使用技巧。没有这样保姆级的,并不存在一款能够自动为你生成的软件。一款录制屏幕的软件。

--NeoZng【neozng1@hnu.edu.cn】

3.视觉组接触的软件

进行视觉开发会用到各种各样的软件、开发环境、辅助工具等,所以很有必要了解一些相关的快捷键、命令、使用技巧。选择一款适合自己的IDE能够提高开发效率,方便版本管理。

3.1.Ubuntu

  • 为什么使用Ubuntu?

    • Ubuntu是一个Debian系分支的第一大系统,是用户量最大的linux发行版。因此,遇到任何问题一般都能够在用户社区askubuntu中得到解答。它的安装也非常的方便,并且在更新到20.04后,ubuntu的桌面美观性也有提升。同时,ROS是在Ubutnu之下开发的。如果要使用ROS,Ubuntu是你的不二之选。

ubuntu的21.04已经发布了

  • Linux的内核和系统比Windows更加精简,故在运行时占用的各类资源都要小于Windows。在不打开任何应用的情况下,笔者的电脑在运行Windows10时占用的内存为4.2G,cpu占用率在10-20%左右,而运行Ubuntu20.04LTS的时候,只使用了2.2G的内存,cpu占用率只有10%不到。这样,在运行我们的视觉算法程序时,可以更充分地利用系统资源,最大程度压榨电脑的性能。(甚至可以在测试结束后实际运行时关闭图形界面,只保留终端!这样,系统内核作为唯一需要运行的基础程序,大概能将cpu占用率缩小到1-2%)

  • Linux对于深度学习的支持比Widnows更加友好,经常有sh脚本能够一键配置开发环境。此外Linux对一些设备驱动的支持也更完善,我们可以选择挂载自己需要的驱动和IO,并且精简属于自己的内核。

  • 想要安装Ubutnu,可以参阅这篇教程:Ubutnu的安装-排除各种问题!-NeoZng

  • 提到Linux就不得不提到命令行的使用,在Linux上进行开发常会使用到命令行,有些软件甚至只有命令行界面的版本。在一些时候,直接在命令行中用键盘操作可能要比数不清的鼠标点击快得多。你需要学习:

    • cd、ls 、pwd、mv、cp、touch、diff、rm、cat、mkdir、rmdir、echo、tar等文件系统的基本操作,grep、find 查找文件和目录

    • 帮助手册man和-help参数。

    • sudo、su、chmod等权限相关的操作。

    • ping、ifconfig、wget等网络相关的操作。

    • 一定要亲手熟悉命令行的基本命令,切忌只看不动手!学习以上命令,戳这里Linux Commands.

  • 至少掌握一个无GUI的文本编辑器的基本使用,如vi,vim,nano等。这能够帮助你在系统出现问题的时候快速修改一些配置文件,或是在使用ssh连接的时候简单地编写一些程序。当然,笔者不推荐你将这些文本编辑器作为主力IDE使用(即使是安装了各种各样的插件!)例如,虽然一个熟练使用vim的程序员和一个熟练使用eclipse的程序员拥有相同的开发效率,但是vim的学习成本可不知道比eclipse高多少!

  • Linux的设计哲学是“一切皆文件”。它将所有的IO设备如网络接口、usb接口、显示屏、相机、键盘鼠标、应用都视为文件,和这些“文件”的交互就是以规定的方式进行读写。因此,有必要了解Linux的基本目录,目录结构请参考:Linux文件目录结构一览表

  • 在使用系统的时候,建议大家有良好的文件分类习惯,把代码库、软件、开发环境分开存放,避免出现home目录乱糟糟的情况。

 这篇文章就是在Ubutnu下使用markdown编辑器完成的

3.2.IDE

想要编写代码,光靠文本编辑器+gcc+gdb可不行,我们要充分利用技术进步带来的便利,谁不喜欢做懒人呢。这里推荐几款Linux下编写C++程序使用的IDE:

  • VSCode:微软的小儿子,啥系统都能用。丰富的插件生态只有你想不到没有你找不到,配置完之后使用起来非常方便,比如C++就有一个C++ extensions pack关键是好看啊!在使用了snippets和Visual Sutdio Intellicode这两个插件之后,智能提示也很智能。想要写其他的语言也能够一条龙配齐,总之,上手容易且可定制化程度极高。

  • Clion:JetBrain家的IDE,界面也很美观,智能提示也很智能。以前用过PyCharm或者其他jb系的IDE的同学可以继续使用。用.edu后缀的学校邮箱可以免费申请教育优惠,就可以免费用了。

  • Qt:Qt也是一款跨平台的C/C++ IDE,在Qt上编写的GUI程序能够在所有平台上运行。用Qt可以方便地编写一些图形化的程序,比如串口调试助手、调参助手等。他的整体界面也算是比较清爽。

这里需要特别提及的是CMakeLists的编写。Linux没有Visual Studio这样保姆级的IDE,并不存在一款能够自动为你生成makefile的软件。所以至少要学习qmake和cmake中的一种工具。这里推荐cmake,虽然比qmake的语法稍微复杂一些,但是cmake的功能非常强大,拥有非常优良的跨平台支持。学习cmake还能帮助你进一步了解程序的编译、链接过程。关于程序是怎么从源代码到机器代码最后在电脑上运行起来和cmake的基本使用,请参考《程序的生前死后-Cmake-noob-in》-NeoZng这篇文章。

虽然IDE把工具链都集成在了一起,极大地方便了我们的使用,笔者还是推荐你学习一下GNU工具链的使用,至少熟悉编译、汇编、链接的过程。这样可以更深入的了解软件的运行,以便在开发过程中出现问题的时候,快速定位问题所在并找到解决方法。

3.3.Git

团队协作开发需要一款优秀的代码管理工具,那Git就是不二之选,大家肯定都听过GitHub这个最大的同性交友平台,它便是一个基于Git的代码托管平台。这里有个小故事,Git是Linux的元老Linus因为Linux社区被禁止使用BitKeepter这款版本控制软件后,一怒之下在一周之内用C写出来的程序哦。

我们实验室开始的时候都是用u盘拷贝程序,有时候在某个人的电脑上写一点有时候又在minipc上写一点,虽然在文件夹上标准了时间和版本号,然而这并没有什么用,这导致一次合并代码的时候有十多个版本的代码,根本不知道哪个能用哪个不能用,那时候又还不知道diff这个工具,弄得眼睛都快无了。

要学习Git,推荐这几个网站:廖雪峰的git教程 git简易指南-no deep shits! GitHub Guides

在学习Git的时候,一定要动手跟着一起实践,切忌光看不动!

git的标志性图标,分岔的icon表示强大的分支功能

3.4. 其他常用软件和小工具

  • Microsofot Edge DEV for Linux :Edge浏览器Linux版,可以方便同步windows下的收藏夹、设置、插件等。集锦的功能非常好用。

  • qv4l2:linux下相机驱动的图形界面,在Ubuntu软件商店可以找到,方便调节相机参数。

  • Meld:一款diff软件的图形界面,方便对比文件的不同,在Git使用merge或pull的时候可能会用上,在Ubuntu软件商店可以找到。

  • Fsearch:和Windows下的everything类似,提供超快速的文件搜索功能。

  • Typora:好看好用的markdown编辑器,本文就是使用typora编写的。使用markdown编写代码的说明文档是一个很好的习惯,这可以降低其他人阅读你编写的代码的难度,也有利于代码分享和代码的传承。同时,你的也可以使用markdown来记录自己的学习历程、一次艰难的问题解决之路。使用markdown可以提高你的记录效率。vscode内也有相关插件提供对markdown支持。

  • TigerVNC:一款局域网内可用的远程桌面软件,VNCViewer也可以作为替代。强烈推荐使用远程桌面调车!电控都有无线调试器,我们怎么能跪在地上呢(气抖冷)。在把运算平台安装到机器人上之后,我也曾经拿着一块小屏幕和键鼠,蹲在地上和机器人进行亲密交流,这不仅加深了我和机器人的感情,也加重了我的颈椎病和腰椎键盘突出。(最恐怖的是车车的云台或者底盘疯了的时候,线全部缠到机器人上!!机器人甚至有可能对你造成伤害!!都是电控的锅,你云台怎么又疯了)使用了vnc后,只要将minipc和你的笔记本连接到同一个局域网,你就可以优雅地拿着笔记本调车了。如果校园网的带宽不够,建议买一个路由器,或者和搭建裁判系统的路由器公用也可以。

上交的同学更是把这件事做到了极致,他们直接通过网页来修改机器人的各种参数并得到反馈信息,能做到不需要任何远程桌面就能实时调参,此想法以为妙绝!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121755.html

相关文章

  • 机器视觉、模式识别库汇总

    摘要:十开放模式识别项目开放模式识别项目,致力于开发出一套包含图像处理计算机视觉自然语言处理模式识别机器学习和相关领域算法的函数库。 一、开源生物特征识别库 OpenBROpenBR 是一个用来从照片中识别人脸的工具。还支持推算性别与年龄。使用方法:$ br -algorithm FaceRecognition -compare me.jpg you.jpg二、计算机视觉库 OpenCVOpenC...

    habren 评论0 收藏0
  • 电商购物车产品在做什么?

    摘要:本文由网易跨境电商部产品经理曹宏授权发表。根据交易链路的环节,分工可以进一步简单细化为商详页产品导购页产品,购物车产品,订单产品,支付产品。那么购物车的产品都在做什么为了避免假大空,就以购物车改版这个项目介绍一下电商购物车产品的工作。 本文由网易跨境电商部产品经理曹宏授权发表。 作为电商交易链路的产品,很多人会问,你们都在做什么? 关于电商产品的工作分类,从流量角度我简单分为以下几类(...

    shixinzhang 评论0 收藏0
  • 常用十大python图像处理工具

    摘要:但无论是用于何种用途,这些图像都需要进行处理。图像处理中的常见任务包括显示图像,基本操作如裁剪翻转旋转等,图像分割,分类和特征提取,图像恢复和图像识别。图像处理系统有时被称为图像处理的瑞士军刀。 showImg(https://segmentfault.com/img/remote/1460000019631626); 原文标题:10 Python image manipulation...

    Crazy_Coder 评论0 收藏0
  • 更丰富网页多图层效果:css混合模式

    摘要:与绘制顺序密切相关的概念是层叠上下文。把正常也算上的话,现在网页里可用的混合模式一共种。因此,正片叠底是一个变暗的混合模式。需要注意的是,其中这个位于最下层的背景该元素无背景色,它的混合模式其实是没有作用的,可以认为就是默认值。 图层 在Photoshop等图像编辑软件里,图层是最基础的概念之一。我们平时看一张照片,就可能想到远处的背景、近处的人物这样的描述,这其实就是在划分图层。多个...

    Ku_Andrew 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<