妙算manifold2G完整环境配置
我先提前搭建一台妙算的环境,在这里记录下搭建步骤以及我踩的坑。
希望后面的学弟学妹们能够按照我这个教程同理搭建其他的妙算环境
虽然我们学校RM刚起步,没有什么任何经验参考,但总需要有人迈出这第一步
一、刷机
按照官网教程来,注意:
1、进入恢复模式:按下RVC、再按下RST、再松开RST、最后松开RVC,此时屏幕不亮。
2、选用micro-B线,要用原装的,必须能传输数据(这里花了我好久时间,我的线出问题了)
二、换源
注意用arm Ubuntu16.04的源,即后缀名带有-ports
三、安装中文输入法(我参考的链接)
这里我安装的是google中文输入法:省略步骤
四、挂载自带的SSD(我参考的链接)
由于manifold自带了一个128G的固态硬盘,默认没有挂载,所以我们自己挂载利用起来。
2: https://blog.csdn.net/GNNUXXL/article/details/116298787
五、安装软件
1、嵌入式QT环境搭建:
参考链接:https://blog.csdn.net/yc5300891/article/details/80657439
遇到的问题:
No tools chain can produce code for this qt version please define one or more tool chains
解决办法:我选择的解决办法
2、manifold2安装opencv
https://blog.csdn.net/display_chen/article/details/103548819
https://blog.wanghaoyu.cn/2016/02/12/install-OpenCV-and-CUDA-on-Manifold/
这里我遇到了编译过程报错,先不编译新的opencv版本了,后面再研究下,先用官方自带的opencv吧。
3、海康工业相机环境配置
a、我用的是这种安装方法,安装MVS-2.1.1_aarch64_20211224.tar.gz,然后运行包里面脚本安装。
参考安装后包里文件
b、运行qt实例程序,在这里注意设置环境变量之后,要重启才能更新环境变量。
在这里学习了QT界面编程,创建了一口窗口显示。
4、安装CH341SER_LINUX驱动。
由于我在调试程序时准备使用妙算串口通信时,插上usb-ttl后发现,妙算的/dev目录下找不到usb串口(虽然目录下面有显示,但根本不能用),运行lsmod | grep usbserial
命令也没有发现设备,所以我猜测官网系统上默认没有带ch340串口驱动。
那就接下来自己安装一个吧,在这里真是搞死我了,在网上试了各种各样方法,终于找到了成功的方法:
(1)下载CH341SER_LINUX 源码;
(2)进行编译,发现报错,在这里我查看多个资料,有的资料说版本不支持,应该去网站找到自己对应的内核版本文件,卵用没有,后说又要修改CH341SER_LINUX/ch34x.c文件里的几行代码,还是不行,后又试了几种方法还是不行,气死我了。(真是老程序员了,天天在找bug的路上,又浪费我一天时间)
(3)编译成功的办法:进入linux内核源码目录,妙算2G源码在/usr/src/linux-headers-4.4.38+
,进入之后,执行make scripts
,再回到装软件的目录,编译成功。附上我参考的链接
(4)上一步虽然编译成功了,可是安装驱动时,即执行命令make load
时又报错。哎,然后我运行了:sudo dmesg -c
sudo dmesg -c 能查看最新的内核打印信息找到出错的原因,发现内核打印出version magic 不匹配的错误,这个错误是编译驱动的内核源码version magic与开发板的系统内核的version magic不一致造成的。后我又在网上试了无数次方法,还是不行,真的快哭了。。。
最后找到一种适合妙算的办法,打开内核源码中include/generated/utsrelease.h
文件,修改version magic为开发板的版本。(------>查看开发板命令uname -r
)附上我参考的链接
切换目录,编译然后迁移到驱动目录以实现开机自动加载,重启depmod,最后验证是驱动是否安装成功:
我迁移.ko文件到lib/modules/$(uname -r)/kernel/drivers/usb/serial/,我感觉没什么变化啊,很奇怪,不过我还是添加进去吧,还是实现了开启自动挂载USB驱动。本来我准备在/etc/rc.local文件里添加自动挂载命令的或者写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本。(先不管了,暂时能用就行,后面出问题了在回过头看看)
5、海康工业相机 MVS 抓图并转为Mat格式,支持彩色相机:MVS转Mat
由于opencv处理图像的格式不支持海康工业相机获取的图像格式,并且个人擅长用opencv实时显示出视频,这样才方便调试。所以在这我转换一下图像格式,方便进行后续处理,不知道官方有没有相关的转换函数,我找了一下官方的函数库,并没有找到,先调通程序吧,后面我在回过头来看看可不可以优化一下。
总结一下转换步骤:
(1) 获取相机参数(这里并打印出来)
(2)创建一个可读取的相机对象
(3)相机开始捕获图像流(取流)
(4)像素数据缓冲池初始化
(5)获取一帧图片并进行格式转换
(6)通过cv::Mat()函数直接转换(由于我们用的彩色相机,参数要选择CV_8UC3)