注意
- 文章以Orange Pi 5 Plus为例,但理论上应该在所有aarch64主机上通用
- 系统版本:ubuntu-22.04.3-server
- 作者一开始是跟着官方教程走的,没想到RM官方的教程有bug,这篇文章会修正这些问题,不要跟着官方的教程走
安装
在RMSDK官方仓库上下载源代码,找到sdk install on Raspberry Pi.7z并打开
根据树莓派上的python sdk使用.docx执行到配置完虚拟内存,接下来不要管压缩包里的其他文件
经过作者的一番踩坑,发现旧版opencv已经无法在ubuntu-22.04上安装,如果你不幸已经开始安装了,那么下面是我踩过的坑的解决方法,如果你还没开始安装opencv,请直接看安装新版opencv这个板块
旧版opencv报错
opencv下载报错
如果此时提示无法下载压缩包(如下图)
则在主机上下载opencv-4.1.2.tar.gz,opencv_contrib-4.1.2.tar.gz,此时你会发现香橙派上你的用户主目录下多了一个叫opencv的文件夹,把下载好的压缩包传上去
执行以下命令
tar -xvf "opencv-4.1.2.tar.gz"
tar -xvf "opencv_contrib-4.1.2.tar.gz"
popd
接着回到存放安装脚本的目录下,继续安装
./install-deps.sh
找不到包
此时可能会出现找不到包的报错
安装libjasper-dev
替换软件源
sudo add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main"
提示没有签名
添加签名并安装
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
sudo apt update
sudo apt install libjasper1 libjasper-dev
安装libeigen2-dev
下载libeigen2-dev_2.0.17-1ubuntu1_arm64.deb,把文件上传到当前目录并安装
sudo apt install ./libeigen2-dev_2.0.17-1ubuntu1_amd64.deb
继续安装
sudo ./install-deps.sh
./build-opencv.sh
build错误
报错
根据报错在以下路径的build.make和flags.make中把所有ipcp-unit-growth=替换成ipa-cp-unit-growth=(把yuanzl替换成自己的用户名)
/home/yuanzl/opencv/opencv-4.1.2/build/3rdparty/carotene/hal/carotene/CMakeFiles/carotene_objs.dir
如果替换完仍然有报错,可以在build目录下查找这行内容
cd /home/yuanzl/opencv/opencv-4.1.2/build
sudo find ./ -type f | xargs grep "ipcp-unit-growth="
到这里作者就放弃安装旧版opencv了,还有报错的话祝你好运
安装新版opencv
首先参考这篇文章安装opencv4.9.0取代官方的opencv4.1.2(下面的内容对文章做了一些修改,所以不要跟着参考文章走)
下载源码
opencv-4.9.0.zip、opencv_contrib-4.9.0.tar.gz
下载以上文件后解压opencv-4.9.0.zip,解压出opencv-4.9.0这个文件夹,放在用户主目录(其他地方也行),下文称这个opencv-4.9.0文件夹为安装目录
解压opencv_contrib-4.9.0.tar.gz,把解压出的opencv_contrib-4.9.0重命名为opencv_contrib,上传到安装目录内(注意不是与安装目录平级)
安装依赖库
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff-dev libgtk2.0-dev pkg-config
编译安装
进入安装目录执行以下命令
mkdir build
cd build
sudo cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules .. \
-DOPENCV_GENERATE_PKGCONFIG=1 \
..
接下来查询设备线程数
nproc
我这里查询到的是8,所以
sudo make -j8
sudo make install
如果安装出错,可能是线程数太多导致设备爆内存了,可以适当降低线程数
环境配置
sudo vim /etc/ld.so.conf.d/opencv.conf
在文件中添加以下内容
/usr/local/lib
然后保存并退出
sudo ldconfig
sudo vim /etc/bash.bashrc
在文件中添加以下内容
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
然后保存并退出
source /etc/bash.bashrc
测试
pkg-config opencv –modversion
opencv_version
输出版本号则安装成功
安装RMSDK
python3 --version
python版本需要是3.7.8+, 3.8.4+中的任意一个,且pip版本19.3+,如果不是请安装符合要求的python版本
如果已经安装符合要求的python版本但仍然无法安装,则需要更换python优先级
更换python优先级
ll /usr/bin/ |grep python
这里我的输出是
可以看到我同时安装了python3.10和3.8
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2
3.10后面的1是优先级为1(越大越靠前),3.8后面的2是优先级为2,请根据自己的情况调整优先级和python版本
sudo update-alternatives --config python3
检查优先级,正确的话按回车确认
如果之后执行pip命令报错
则执行以下命令(版本请根据自己的版本切换)
sudo apt-get install python3.8-distutils
安装RMSDK
pip install robomaster
大功告成!