这里所说的妙算是大疆的第一代妙算,核心处理器为 Tegra K1 ,很轻颜值很高,现在已经停产了。
在实际应用中可以明显的感觉到妙算的性能不够。妙算主要是给 M100 设计的,对 M100 的 X3 摄像头做了优化,即可以通过 GPU 读取 X3 摄像头的数据。但对于比赛来说基本没用,而且我也从来没有成功用它读取过 X3 摄像头数据 (T_T) 。妙算的 GPU 只有在进行深度学习类的任务时才有用武之地,而在识别装甲板之类的任务时基本上是摆设,尽管有 zero copy 的特性,但是很不好用。
在这里吐槽了半天妙算,可能你会说:既然妙算这么垃圾,为啥还要用它?因为穷啊,当初买妙算的时候也是割了肉买的,还买了5个……
妙算系统的安装在说明书中写的非常详细了,这里我说一下流程。
首先要有一台装了 Ubuntu 的电脑,将需要的镜像和软件包都下载好。
将镜像解压缩到某一个目录,我推荐在用户目录下解压。这里要强调一点在解压缩的时候千万不要右键提取到此处,而一定要按照说明书中的命令来操作即:
sudo tar -xvpzf <your path>/manifold_image_v1.0.tar.gz
如果不这样解压将会破坏各个文件之间的用户权限关系,在装好系统后会出现奇奇怪怪的bug。
妙算进入恢复模式(就是刷机模式)
有两种方法我推荐使用说明书中的方法2,方法2只要按一个按钮而方法1要同时按两个按钮。
制作系统默认镜像,在说明书中制作系统镜像和恢复系统镜像这两个标题容易误导。我解释一下:
如果你想恢复到系统的默认镜像只要运行
sudo ./flash.shjetson-tk1 mmcblk0p1
就可以了。
而如果你想将现有妙算的系统备份则需要用到制作系统镜像中的内容。
这里我推荐一种批量刷机的方法,在比赛中需要用到多个妙算,如果每个妙算都要从零开始配置工作量是巨大的。当我们在一台妙算上把所有的配置搞定之后就可以通过制作系统镜像功能来备份该妙算的系统,然后通过恢复系统镜像的功能来刷机。
#系统镜像备份代码
sudo ./nvflash --read APP system.img --bl ardbeg/fastboot.bin --go
#将镜像中的系统恢复到妙算
sudo ./flash.sh –r jetson-tk1 mmcblk0p1
有关刷机的部分可以参考https://elinux.org/Jetson/Cloning
在 Ubuntu 18.04 之前使用的网络管理器是 Network Manager,但是在 18.04 后换了,可能是为了符合 Gnome3 的审美吧,不过这样就缺失了一个超级好用的功能 网络共享 通过这个功能可以实现将电脑作为路由器将网络通过网线共享给妙算。
由于我没有怎么用过 Ubuntu 18.04 主要都在用 16.04 ,所以我不是很清楚怎样在 18.04 上安装 Network Manager 可以参考官方的这篇文章来安装 https://help.ubuntu.com/community/NetworkManager
下面进入正题:
之后在终端输入arp -a
就可以查看妙算对应的 ip 了。10.42.0.1 是电脑的 ip ,10.42.0.xx 是妙算的 ip 。
妙算可以直接接上显示器键盘鼠标当成正常电脑来用,但是如果手头没有多余的显示器键盘鼠标怎么办呢?可以通过 ssh 实现远程调试。
可能大家对 ssh 的印象只是停留在命令行中,其实 ssh 可以通过 X11 forwarding 来实现在本机中运行远程计算机中的图形界面程序,超级方便有没有,只要你输入 qtcreator 立刻一个编辑器的界面就弹出来了就像在运行你自己电脑中的程序一样。当然放视频会很卡。
ssh -XC [email protected] #后面的是妙算的ip
与一般 ssh 命令不同的地方就是多了 -XC 选项,X 是启用 X11 forwarding ,C 是用来通过压缩传输所有信息。
如果需要经常在妙算与电脑之间传输数据,最方便的方式不是优盘而是通过 FTP ,鉴于网上安装 ftp 的资料非常多,这里就不给出了(允许我偷下懒 (^-^*) )。
妙算用的 Ubuntu 与我们在桌面级电脑用的 Ubuntu 是不一样的,如果按照常规的桌面系统配置软件源的化一定无法使用。官方源的地址是 http://ports.ubuntu.com/ 而由于国内网络劫持严重使用官方源有大概率会下载失败,所以推荐使用清华或者中科大的软件源,软件源的修改方式可以参看中科大的帮助链接 https://mirrors.ustc.edu.cn/help/ubuntu-ports.html 需要注意的是在更改软件源的时候一定要选择对应于自己系统版本的软件源,妙算系统是 14.04 的所以需要用 14.04 的源。
默认妙算是官方源,手动修改时只需要在 /etc/apt/sources.list
文件中,将软件源的地址改为 http://mirrors.ustc.edu.cn/ubuntu-ports
即可。
官方的默认系统是存在 bug 的,就是系统标题栏会一跳一跳,具体原因不清楚,不过很好修复,只要将系统更新即可。
sudo apt update
sudo apt upgrade
妙算最好安装官方的 OpenCV4tegra ,因为 OpenCV4tegra 是专门针对妙算优化过的。在我实际应用中跑装甲检测程序用官方的 OpenCV 可以跑到 6ms 一帧,而自己编译的最快跑到 8ms 。
CUDA 也直接按照说明书安装即可,不过 TK1 只能使用 CUDA6.5 再往上不支持了,所以很多新的深度学习框架就不能用了,我安装成功的只有 caffe1 的 rc5 版本再往上就有软件包依赖性问题无解,可以到 GitHub 上找到源码自行编译。
由于我们用的视觉程序主框架是参考东南大学开源的程序,而他们使用了 C++14 中的新特性 unique_ptr 需要 GCC5 的支持,妙算由于使用的 Ubuntu 14.04 系统只提供 GCC 4.8 所以需要安装 GCC5 ,GCC5 的安装过程我忘了,当时可能参考了 https://blkstone.github.io/2016/05/25/ubuntu-1404-gcc-5/ 。如果有误请留言或私信告诉我。
Qt Creator 应该是 linux 上最好用的 IDE 了。有人可能不服, Vim 也很牛逼啊加上插件吊打一切, Emacs 的快捷键用着多爽,但是 Qt Creator 是学习成本最少界面最友好的,而且 qmake 的编译管理做的非常棒,寥寥几句就可以描述一个完整的项目与 cmake 对比爽太多了。
妙算的 cpu 由于是 Arm 架构的而且系统为 Ubuntu 14.04 ,所以无法安装最新的 Qt Creator ,不过不要紧源中的 Qt Creator 已经足够用了。
sudo apt install qtcreator
安装完 Qt Creator 后编译器 Qt 环境什么的都是装好的,但是如果需要使用 GCC5 的话需要自行配置编译器,由于手头没有妙算,我就在自己电脑上截图凭印象说了,可能会与实际情况有出入。
在选项界面找到 构建和运行中 的 编译器 可以在这里更改编译器路径,将他们都改成 GCC5 对应的路径就可以啦。