有人回复本文太乱了,确实是这样。我现在已经开始按篇章整理。欢迎大家看我RoboMaster专栏的第一篇文章。
Robomaster视觉专栏
RoboMaster视觉教程大纲
RoboMaster视觉教程OpenCV(一)环境安装及代码测试
RoboMaster视觉教程OpenCV(二)读取视频图像与转换
RoboMaster视觉教程OpenCV(三)利用文件保存图片以及视频
RoboMaster视觉教程CMake(一)hello-cmake
RoboMaster视觉教程CMake(二)hello-headers
RoboMaster视觉教程Linux(一)保姆级换源教程
`
manifold要正式用到机器上,需要令程序开机自启动。使用Ubuntu自带的setup application,不要采用修改rc.local文件的方式,很麻烦
可知,manifold系统是linux Debian系统,而不是rap类的linux系统,之后下载方便跳转的vscode时便可以下载deb类型。
另外,设置开机自启动之后,如果还要外接屏幕,需要先top指令,出现一堆后台,kill自启动代码的PID号就可以关闭后台进程。
设想编写一个可执行程序,能够双击后直接关闭后台程序
killall -e run
这句话的意思就是关闭名字叫做run的后台进程。把这句话编译成一个可执行文件
TX2安装链接
manifold用的也是TX2的GPU,必须下载arm64的,而不是amd64
可以结合普通amd64的安装教程amd64
$ sudo apt-get install visual-studio-code
安装完,妙算(manifold)联网(manifold-2G需要连接WIFI接收器),code-oss需要安装C++等各类插件,才能实现跳转
但是!!!vscode里的C++插件不支持arm版本,所以,vscode也无法实现跳转,只能是用搜索功能凑合用了。
有用的vsc配置过程
nano配置vscode
open cv 中width angle heigh定义
返回的角度在[-90.0]度之间
和电控对接,有以下要点:
float和double等类型传送方式
联调时,多一个鼠标键盘很麻烦,使用ssh用笔记本调节,同时笔记本的串口助手等内容可以显示在妙算屏幕上
妙算发数据,经常发一堆ASCII码
比如:
c 5939,421956] usb 2-2: usbfs; process 4419 (run) did not claim interface 0 before use5939.564047] usb 2-2: usbfs: process 4426 (run) did not claim interface 2 before use 6005.196316] usb 2-2: usbfs: process 4446 (run) did not claim interface 0 before use [6005,337046] usb 2-2: usbfs: process 4453 (run) did not claim interface 2 before use [6314.817455] tegrade 15210000. nvdisplay: blank-powerdown 6314.882207] PD DISP2 index4 DOW 6314.882298] PD DISP1 index3 DOWN I [6314.882376] PD DISPO index2 DOWN [6321.293894] tegrade 15210000. nwdisplay: hdmi: unplugged 6321.316016] tegradc 15210000. nvdisplay: blank -power down [ 6321.321455] tegrade 15210000. nvdisplay: unblank [ 6321.326062] tegrade 15210000. nvdisplay: unblank.. 6322.190370] tegrade 15210000. nwdisplay: blank-powerdown [ 6322,195900] tegrade 15210000. nwdisplay: hdmi: plugged [ 6322.215364] tegrade 15210000. nvdisplay: blank-powerdown 6322,220817] tegrade 15210000. nvdisplay: unblank 6322.220832] PD DISPO index2 UP [ 6322.221788] FD DISP1 index3 UP 6822.221883] PD DISP2 index4 UP 6322,223506] Parent Clock set for DC plld2 [ 6322.225222] tegrade 15210000, nwdisplay: hdmi: pelk:148500K, set prod- setting: prod c 150M
串口助手如下显示:
我怀疑这是manifold系统的缘故,拔插串口时会发这堆数据
发数据,对数据进行滤波
为什么要滤波,是因为串口在发送装甲板位置的时候,偶尔会发送一个很夸张的值,有脉冲干扰,最好的方法当然是找出原因,但暂时打算用滤波算法
上面介绍的滤波算法中,1,限幅方法能有效克服因偶然因素引起的脉冲干扰。而且速度不慢,所以给串口数据发送端用上了.但是似乎没啥反应
5.中位值平均滤波法(防脉冲干扰平均滤波法) 计算速度慢,需要排序,求和,防脉冲干扰
6.限幅平均滤波法 限幅再求和 可以试一下 采样多,用的全局变量比较多,浪费ram
激光笔在下面,做补偿,根据远近,补偿量不一致
研究所测得角度值的误差,线性变化还是非线性
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,这个软件只有Windows版,但是它在Linux的Wine环境中运行的非常好,所以在Linux上安装一个wine就可以用这个软件了,这个软件可以很方便的跳转到变量、函数、类的定义处,还能前进、后退,阅读源码非常方便。
现在我觉得配置vim实在是太浪费时间了,而且vs code因为不支持arm架构的C++插件,看工程也无法跳转。其实应该使用专门编C++工程的qtcreator,或者是只能利用cmake构建工程的CLION,Clion还可以自动保存工程。
vim配置好ctags能达到什么效果呢?就是,当看到一个变量的时候,按“ctrl”和“]”这两个键,可以跳转到变量定义的地方。
linux ctag1
linux ctag2
ctags1链接里的指导可以说是句句箴言:
下载和输入以上四个命令很简单,唯一需要注意的是:
在make 和make install的时候,可能有个提示,说给usr下的一个目录cp的时候,没有权限,注意使用Sudo
sudo make && sudo make install
&&的前后注意都要加sudo,都需要加权限
在这里我说一下,比如,上交的工程名字叫SJTU-RM-CV-2019-master,里面有各种文件,我们
cd SJTU-RM-CV-2019-master
ctags -R *
//-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。
注意:
需要在终端里使用vim命令打开某个源文件,才可以使用跳转,利用UI界面右击使用vim打开某文件。是不管用的
之后,可以参考一下tags2的链接。创建vim的用户vimrc,在etc/vim/vimrc是系统vimrc,修改需要权限
所以ctags2里,在home用户目录下创建了自己的配置文件,并且进行了路径包含,包含后就可以愉快使用了。
cd ~/
ls
ls -a
touch .vimrc
cd .vim/
mkdir ~/.vim/plugin
mkdir ~/.vim/doc
我上面的操作便是在home目录下创建了隐藏文件.vimrc,文件前有.表示隐藏.然后把我的tags路径包含进去
set tags=/home/dji/Desktop/SJTU-RM-CV-2019-master/tags
set tags=tags;/
https://blog.csdn.net/syfly007/article/details/6413523
上文linux ctag1链接中的文章详述了taglist的安装过程
有几点注意事项:
下载之后,进入压缩包所在目录:
cp taglist.zip ~/.vim
忘记压缩包是不是叫taglist.zip了,不过,注意使用~,这个符号代表在home目录下,从home中找到.vim文件夹
之后进行解压以及粘贴,最终,vim右边会出现一个taglist窗口,出现变量以及宏定义等等。不过我还不会双击进入变量。
github上其他人实现的vim-ide
linux配环境,可真是麻烦!!!!,如果不是arm,而是amd架构,真心觉得应该用VSCode
还是根据上述教程,首先下载scope那个安装包到自己的一个文件夹里,
在解压之后的压缩包里
./configure
make
make install
首先执行configure文件,是用来配置,用什么,不用什么
make是用来编译的,它从Makefile中读取指令,然后编译。 make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置
make后面可以跟进程数
make -j4
在make这一步,显示如下错误,没有curses这个库,因此无法编译成功
build.c:52:20: fatal error: curses.h: No such file or directory
找不到这个curses库
在解决问题过程中,用到了一些命令,予以记录
make clean //将刚刚编译出来的文件都清理掉,方便重新编译
vim README //在某个库,阅读里面的README,理解如何使用
./configure -help //大胆的在某一个命令后加-h或者-help来寻求帮助
sudo find / -name curses.h //在全部文件找名字叫curses.h的文件
/表示所有目录,如果是 . 表示当前目录。
sudo apt-get install libncurses5-dev
利用apt-get安装,但是不是这个库
安装时,可以按table向服务器请求备选的库,补全
从网上下载了这个缺少的库,ncurses-6.1
在谷歌浏览器默认目录下,执行:
tar zxvf ncurses-6.1.tar.gz
cd ncurses-6.1/
ls
vim README
./configure -h
./configure
make -j4
sudo make install
上面的configure make,make install 也可以不下载安装包,直接apt-get install一条龙安装
也就是说,下载了这个缺少的库,在默认目录下,配置,编译,安装之后,继续scope的编译安装即可!
解压之后,进解压后的文件夹里,看一下README,
cs_read_prompt EOF: No such file or directory
E609: Cscope error: cscope: cannot open file /untitled file
这个报错的原因是因为代码的路径中某一个文件夹名字存在空格
解决方法是利用’-'这个中间的小横代替空格
命名要标准,不要出现空格
这是因为如果文件夹中间有空格,那么会把一个字符串分为两个字符串。
之后又报错:
cs_read_prompt EOF: No such file or directory
cannot read trailer offset from file cscope.out
江苏省省赛只需要识别装甲板,不需要识别数字。所以现在的任务是准确识别装甲板并且帧率达到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上编译东南大学代码
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
在编译上交代码时,刚下载下来就出现这样的错误。(对于一个摄像机驱动库)
解决方法
只需要去迈德威视官网下载linux开发包,然后打开lib文件夹。选择arm64文件夹里的linuxMVSDK.so替换掉原本的这个同名文件即可编译成功。
把摄像头的网口线拔掉才可以使用WIFI
使用迈德威视的网口摄像头
摄像头型号:MV-SUA31GC-T
第一步:利用官网给的软件先给摄像头一个ip(划重点:每一个需要网口连接的设备,自身需要一个ip):比如:192.168.1.178
子网掩码设置为255.255.255.0
第二步:manifold上的网口不能掉,(一般是eth0)要可以显示的出来,比如在终端输入:ifconfig
如果无法显示,可以直接给eth0一个ip,这样他就可以显示出来
那么,如果无法用软件设置摄像头ip,可以通过nmap的方式得知摄像头的ip
使用nmap的指令
sudo ./jetson_clocks.sh //开风扇
ip a //和ifconfig一样查看ip
sudo apt install nmap
nmap -nS 192.168.1.0/24
man nmap
nmap -sn 192.168.1.0/24 //扫描并展示所有从192.168.1.0到192.168.1.255的ip地址
-sn 只进行主机发现,不进行端口扫描(只ping,不扫描)
192.168.1.0/24,192.168.1.0是ipv4地址,后边是子网掩码
为什么要录像,因为装甲板有限,有时候手头就是没有,最好能准备几个录好的视频,用于检验效果。或者自己利用灯条制作一个装甲板(自制装甲板亮度过大,可能无法识别)
其实,使用摄像头录像很简单,因为迈德威视工业摄像头都有一个IDE,下载windows安装包就可以。打开MindVision 演示程序这个快捷方式,选择开始录制视频即可!录制出来的是mp4格式,640X480.
用手机摄像头录制的视频应该也可以打开,还没有尝试
手机拍摄的视频能够打开,但是视频格式过大,处理缓慢,另外手机视频在代码读取后会旋转九十度
所以还是选择摄像头拍摄的代码
使用小丸工具箱压制也不顶用
所以还是使用摄像头拍视频最真实
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/highgui/src/window.cpp, line 331
terminate called after throwing an instance of 'cv::Exception'
what(): /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/highgui/src/window.cpp:331: error: (-215) size.width>0 && size.height>0 in function imshow
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/highgui/src/window.cpp, line 331
terminate called after throwing an instance of 'cv::Exception'
what():
这个报错的意思是说,open cv需要打开一个长宽大于0的视频,但是并没有。所以,意思是没有正确打开视频。网上其他人的错误是
网口摄像头相比USB摄像头,需要两根线,一个电源,一个信号。而usb信号和电源在一根线
另外,manifold的eth0口容易掉,所以需要在开机自启动的时候,都先配置一下ip,再启动代码的可执行程序,至于他们的运行速度,在迈德威视官网看到,网口适合100米等远距离传输,USB3.0>网口>USB2.0
所以强烈建议购买USB3.0接口摄像头
此外,只要是迈德威视的摄像头,都使用了相同的SDk,也就是说,如果其中任意款摄像头,你的代码可以使用这个摄像头,换用迈德威视其他摄像头,不用做其他任何改动便可以直接使用。只要硬件线连好。
除了拧摄像头上的两个旋钮以调节焦距和曝光之外,还需要在linux上安装LinuxSDK,之后按照文档运行GDK_Demo这个程序,便会出来一个图形界面,通过这个界面可以调节摄像头的Gamma和曝光,但软件的曝光调节范围不如硬件,所以一般只用来调Gamma,Gamma值应该调大。具体作用可以阅读江达小记的CSDN博客。
此处要说一个坑,因为在运行install.sh安装SDK的时候,会复制X86的库,但是manifold的核心是arm64,所以需要阅读install.sh里的内容,手动复制。
以下是LinuxSDK中的内容。可以看出其中有个判断,复制了X64和X86里面的库。
#!/bin/bash
CURDIR=`pwd`
echo "Your current directory is $CURDIR. This is where the MVSDK software will be installed..."
A=`whoami`
B=`getconf LONG_BIT`
if [ $A != 'root' ]; then
echo "You have to be root to run this script"
echo "Fail !!!"
exit 1;
fi
cp 88-mvusb.rules /etc/udev/rules.d/
cp include/* /usr/include/
echo "Copy header files"
if [ $B == '64' ]; then
cp lib/x64/libMVSDK.so /lib
echo "Copy libMVSDK.so to /lib"
else
cp lib/x86/libMVSDK.so /lib
echo "Copy libMVSDK.so to /lib"
fi
echo "Successful"
echo "Please restart system now!!!"
manifold的eth0口容易掉,所以需要在开机自启动。可以在/etc/rc.local 里设置配置eth0的ip命令
在startup application里设置代码可执行程序的自启动
因为rc.local先执行,所以可以先配置ip再执行程序,保证摄像头连接成功
rc.local里添加
ifconfig eth0 192.168.1.14 netmask 255.255.255.0
init 6 //通常情况下用于重启
reboot //强制情况重启
sudo umount /dev/sdb4 //拔U盘
jetson clocks //英伟达nano等板子上开风扇
crtl+L //在一个文件管理下,按这个出现当前路径
//当出现很长的文字时,可以按home键,就可以回到命令前面,可以用来加一个sudo
vim jetson_clocks.sh
展示文件里的权限:
ll
删掉一行所有文字
在代码开头敲。前面加数字,表示删除之后的几个字符
dd
只能撤回一步
u
删除该文件夹下所有的文件
rm -rf *
类似教程
类似教程
推荐的详细教程
详细manifold和TX1教程
使用官方用户手册
进行刷机即可,这里提出一些官方没有涉及的东西。
硬件连接:
只需要三根线:电源线,开关控制扩展单元,写着丝印为OTG的线,就是micro-B口,用自带的线,一端连着manifold,一端连着Ubuntu主机。
jetson TX2是英伟达的
但是manifold是大疆的
由于驱动兼容性问题,切勿使用NVIDIA提供的TX2 Jetpack进行系统还原,否则将导致大多数硬件接口无法正常工作。
刷机时硬件连接:
很多教程建议不要制作系统镜像
按住开关控制扩展单元的RCV按键,再按住RST按键,2秒后同时松开两个按键。
这里有一个误区,有时候按两秒是没反应的,我的一个队员刷了英伟达的系统,导致许多硬件接口凉凉。重新刷机的时候,按2秒没反应,需要按5秒以上。直到风扇开始旋转。
对于刷机的主机Ubuntu版本要求:19.04可行
网上所说manifold刷机系统需要14.04
我使用Ubuntu19.04,完成了manifold的刷机,成功启动。所以Ubuntu版本应该不是刷机的问题
建议将妙算配置好后制作一下系统镜像,以便妙算哪天挂了能够快速恢复,不必重新恢复出厂重新配置所需环境(网络上一些人不建议制作镜像,可能意思是自己做的镜像实际上不好重新安装
)
建议将电脑睡眠改为从不,否则容易中断正在做的事情
打开manifold,一直显示错误:
Your screen, graphics card.and input device settings could not be detecte correctly. arlan. You will need to configure these yourself.
输入设备和显卡无法正常检测
官网上说:
一定注意:输入lsusb之后,出现的设备名称为
ID 0955:7740 NVidia Corp.
才算恢复模式
如果出现 ID 0955:7740 NVidia Corp. L4T(for terge) XXXx(后面记不清了)
说明不对劲儿。重新进入恢复模式。恢复模式风扇不转。
使用学长的Ubuntu19.04,也可以烧写成功。有可能是python环境的问题
使用一台笔记本,笔记本版本是Ubuntu16.04.也成功了。
在第一台电脑的Ubuntu系统上,没有python、,当时重复安装了四五遍。
所以,建议在Ubuntu主机上,提前安装python,可以把2和3都安装上
sudo apt install python3
sudo apt install python
成功刷机后,打开系统。但报了一个似乎不影响使用的错误:
提示,系统出现了一个内部错误,需要重启,重启后解决,不再报错
暂时忽略
初始密码一般为dji
环境配置使用了学长做的一个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-nonfree
sleep 5
make -j8
sudo make install
之后配置OpenCV
在opencv_family_bucket文件夹里
cd opencv-3.4.8
#!/bin/sh
rm -rf build
mkdir build
cd build
cmake \ -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文件夹里的包
在home目录下,打开终端
vim jetson_clocks.sh
在vim打开的文件里输入:搜索文件里对于风扇速度的pwm配置 小写n,上一个,大写N下一个
:/255
ni //vim里进入编辑模式
显示Fan_SPEED = 255
将255改成127
之后esc退出编辑模式
在vim里输入
:wq
表示保存后退出
之后,在home目录下运行这个脚本
sudo jetson_clocks.sh
即可半速打开风扇
近视眼可能需要
在设置display里面,调大那个比例即可
比较容易找到
换源之后,一定要记得更新。sudo必须有
sudo apt-get update
sudo apt-get upgrade
换了阿里云之后,报错:The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY(公钥)
这是因为,缺少公钥 公钥在报错提示里面
这时候,输入下面的代码:
如果还想要安装库,需要下载dpkg包,然后安装他的依赖的依赖的依赖……
比如这个网站:
https://pkgs.org/
很长时间,停留在waiting for headers
感觉别人不这样儿啊。之后再请教一下其他人
以前看过别人换源,大多打出来一行代码就可以,更新速度也很快,但在我这儿,速度就极慢。
首先想到两点,一个是不要安装网上所说,直接复制一大堆源,然后替换掉原本sourses.list里面的内容
第二个是,按照网上所说,需要清除一下上次未完成的更新遗留的文件,速度才能变快。打出如下代码,实测无用:
rm /var/lib/apt/lists/*
rm /var/lib/apt/lists/partial/*
还有说:删除/var/cache/apt/archives/下的所有文件。可能是上次没有成功导致遗留了部分文件。这个没有试验。
update很慢。可能是源不好使,再 换源后重试,可以从清华,阿里云,中科大等等都试一试
再重新update
如果根据error来删除文件,很可能虽然能成功update,但是之后安装的时候回出错,
apt-get install -y apt-transport-https
cd /etc/apt
sudo vim sources.list
//在vim里做的修改是利用替换功能,Ubuntu官方的源换为阿里云的源命令为下面这句:
//:%s/ports.ubuntu/mirrors.aliyun/
//(等同于 :g/vivian/s//sky/) 替换每一行的第一个ports.ubuntu 为 mirrors.aliyun
sudo apt clean
sudo apt update
sudo apt upgrade
正常情况下,上面的指令可以很方便地执行,但是也有可能出错。报错如:http://packages.ros.org/ros/ubuntu xenial InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXXXXXX
404 Not Found
The repository 'http://ppa.launchpad.net/bzindovic/suitesparse-bugfix-1319687/ubuntu xenial Release' does not have a Release file.
The repository 'http://ppa.launchpad.net/bzindovic/suitesparse-bugfix-1319687/ubuntu xenial Release' does not have a Release file.
An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error:
比如说缺少公钥publickey,还有无法fetch等等,我按照上面进行过的步骤删除或者添加公钥,最后也没有成功。这些错误是一起报出来的,但是像我这样一个个上网搜索,按照网络教程弄,最后能够达到不报错的目的,但是更新完后不成功。
但是一位大佬为我示范了正确的操作。其核心就是网络无法连接到什么,就把这个东西忽略掉。
最终做法是在sources.list.d文件夹里删除了ros-latest.list和bzindovic-ubuntu-suitesparse-bugfix-1319687-xenial.list这两个东西就成功了。秘钥什么的不用管
dji@manifold2:/etc/apt$ cd sources.list.d/
ls
sudo mv ubuntu-toolchain-r-ubuntu-test-xenial.list ubuntu-toolchain-r-ubuntu-test-xenial.list.bk
//移动后重命名的方法,之后还能够修改回来
sudo rm bzindovic-ubuntu-suitesparse-bugfix-1319687-xenial.list
sudo mv ubuntu-toolchain-r-ubuntu-test-xenial.list.bk ubuntu-toolchain-r-ubuntu-test-xenial.list
sudo rm ros-latest.list
注意manifold资料比较少,很多时候,可以通过TX2的资料进行配置。
为什么要安装Ubuntu系统?
一是manifold的刷机需要用到Ubuntu14.04
而是可以在实验室有linux系统,方便学习
首先在官网下载一个Ubuntu14.04官网地址
这篇教程借鉴u盘的制作,后边的看别的
详细一些
戳F12
注意安装Ubuntu双系统和重装为Ubuntu系统时,给u盘写入映像的操作一样,只是在安装过程中,选择是否保留原系统这一项上有所区别。
写入后,按F12进入安装界面。选择Legacy 下面的USB而不是UEFi下面的启动方式
之后就是图形化操作了。
因为有些软件在中文界面下不支持,安装英文就对了。
还有,在选择安装选项的时候,注意选择,清除所有磁盘并重装系统。不要选择那个只是重装系统的选项
使用结构体,可以直接利用内存进行复制,操作极其方便。
超频可以令CPU执行指令的时间变短,帧率提高。
上交代码单纯运行在manifold上,一般是3.4十帧。但如果超频,在3米外可以达到90帧。想要更高的帧率,只能换intel更好的CPU或者是利用CUDA以及tensorRT加速。
此处记录一下如何自启动超频
感谢CSDN博主,江达小记的启发,以及在私信上的悉心解答。
service ssh status //查看ssh状态
这个链接是教怎么通过网线,连接到LINux从机,我使用的是XSHELL软件,这里有一个谬误,是说在接口192.168.137.1下的为动态类型的IP地址就是树莓派的地址。
其实,对manifold来说,类型是静态,在192.168.137.1接口下的第一个ip地址就是,我这里是192.168.137.220 此处注意,主机名把192.168.137.220 输进去。可以耐心看一下方这个链接,还有哔哩哔哩的视频教程
windows主机登录Linux
江达小记中SSH使用
江达的笔记本是Ubuntu,利用Ubuntu链接Ubuntu
而我这里是利用Windows链接Ubuntu,Windows是客户端。linux服务端
登录上主机,还需要能够把LINUX的图形界面传输到window,以显示摄像头图像,根据图像调节曝光
如果想把linux的屏幕投到Windows上,一定是需要xrdp的,Windows开启远程桌面,linux打开xrdp,并且打开VNC。所以说,要在linux端下载VNC和xrdp(听说可以用xmanager搞,还没尝试)
很多教程用的VNC在官网没有找到arm64版本的,只好找其他的。manifold的这个架构,兼容性真的垃圾!!!
一个是利用Windows端的putty以及Windows端的xming这两个软件,便可以开启Linux端的图形界面。实现效果是虽然无法显示整个桌面,但是当运行程序出现弹窗时,能够通过xming显示弹窗。在Robomaster上,便可以看到摄像头数据,因此来调节曝光以及焦距。
有用文档:
Putty+xming1
Xming安装和设置
putty不用设置localhost
putty
注意:
启动Xming.
(是Xming而不是XLanuch命令),如果要使用图形界面的话,必须要先启动Xming。否则可以省去。
不用安装openssh-serve和xbase-clients
这两个软件是自带的,其实不用安装。使用sudo dpkg -l查看已安装软件包
另外,这个命令会把上面之前的命令顶掉,可以到vim里设置回滚行数,注意是vim,不是tetminal终端
在终端的界面里复制列出来的信息就可以了(终端查看时,一定要做如下步骤:点终端界面上的"编辑"-->配置文件首选项-->滚动-->回滚-->不限制"打上勾",这样输入到界面的信息就完整显示了)
不用配置linux系统上的什么文件之类的
主要是Windows上的xming和putty,linux几乎不搞啥。
比如说:打开SSH服务:/etc/init.d/ssh start,允许Linux主机上的SSH X转发:在 /etc/ssh/sshd_config 文件末尾,加入:X11Forwrding yes 这个就不需要,因为X11是自动打开的。
不用写localhost:0
还有一种方法是通过在电脑上安装VNC-Viewer,在linux系统上安装VNC和xrdp,则可以通过VNC-Viewer这个软件看到整个桌面。
如果单纯安装xrdp,应该是无法使用这个远程桌面的。我dpkg -l发现vnc4serve是自带的,我遍寻网络,发现教程里说的什么tigervnc和tightvnc等等都只有amd版本。也是很受伤了。
按说我有了vnc4serve,不需要其他vnc了,但是后来还是下载并且配置了X11VNC。
x11vnc配置,
tigervnc+xrdp
上面链接有一些注意事项:
请一定要把两个链接都看完!!!!
首先去配置x11vnc,再去配置xrdp
5903
端口的设置应该很重要。x11vnc -storepasswd
x11vnc -rfbport 5903 -rfbauth ~/.vnc/passwd -display :0 -forever -bg -repeat -nowf -o ~/.vnc/x11vnc.log
可以先自启动配置好manifold的eth0的ip,使用ssh输入上述命令,然后再利用Windows上的vnc开启远程桌面。
亲测,在x11vnc + windows vnc viewer后,应该是不需要xrdp的
也不算太卡,万不得已可以使用这招。但是不太稳定,容易忽然连接不上。
参考文档:
利用xrdp和vnC显示图像化界面
下载xfdp
LINUX为主机的教程
比较详细,Linux为主机
windows从机一根网线SSH登录Linux系统