--NeoZng【neozng1@hnu.edu.cn】
3.视觉组接触的软件
进行视觉开发会用到各种各样的软件、开发环境、辅助工具等,所以很有必要了解一些相关的快捷键、命令、使用技巧。选择一款适合自己的IDE能够提高开发效率,方便版本管理。
3.1.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:
- Clion:JetBrain家的IDE,界面也很美观,智能提示也很智能。以前用过PyCharm或者其他jb系的IDE的同学可以继续使用。用.edu后缀的学校邮箱可以免费申请教育优惠,就可以免费用了。
这里需要特别提及的是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. 其他常用软件和小工具
上交的同学更是把这件事做到了极致,他们直接通过网页来修改机器人的各种参数并得到反馈信息,能做到不需要任何远程桌面就能实时调参,此想法以为妙绝!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)