run Openmvide in Raspberry pi3

在树莓派上跑x86应用程序有几种办法:
1.在qemu-user-mode下运行大多数应用程序,不过超级慢
2.XeargearDesktop运行X86程序,Exagear Desktop是官方开发用来在ARM架构下跑x86的中间层软件,可以去官网购买或者获取三天的试用版。
3.获取程序源码,进行交叉编译,生成可直接在树莓上运行的arm应用程序。

因为openmvide需要用到串口,前两种方法可以安装成功,不过无法链接上摄像头。无奈采用复杂的交叉编译,还好在官方论坛中发现了openmv工程师贴心的在github上创建了教程,一步一步跟着做就ok。

**

准备编译环境

**
准备树莓派:
一. 创建树莓派系统映像:
为树莓派安装最新的官方操作系统。

二.通过编辑sources.list中来启用源代码包:

  $ cd /etc/apt               
  $ sudo leafpad sources.list

(删除”deb-src”这行前面的注释 )

更新源

$ sudo apt-get update  
$ sudo upgrade --with-new-pkgs  
$ sudo shutdown $-r now

为Qt的安装构建依赖项:

 $ sudo apt-get build-dep qt4-x11
 $ sudo apt-get build-dep libqt5gui5
 $ sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0
 $ sudo apt-get install chrpath
 $ sudo apt-get install p7zip-full

为OpenMV-IDE安装附加构建依赖项。注意:如果将来OpenMV-IDE依赖关系随着新功能的添加而改变,则必须更新此列表,并且必须创建一个新的SYSROOT映像:

$ sudo apt-get install libusb-1.0.0 libusb-1.0.0-dev libusb-dev python-pip
$ sudo pip install pyusb

二.准备主机:
通过编辑sources.list中来启用源代码包:

$ cd /etc/apt
$ sudo nano sources.list
(Remove the comment on the "deb-src" lines and save the file)

安装Qt和OpenMV-IDE构建依赖关系,以便安装所有构建基本部件:

$ sudo apt-get update
$ sudo apt-get build-dep qt4-x11
$ sudo apt-get build-dep libqt5gui5
$ sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0
$ sudo apt-get install chrpath
$ sudo apt-get install p7zip-full
$ sudo apt-get install libusb-1.0.0 libusb-1.0.0-dev libusb-dev python-pip
$ sudo pip install pyusb
$ sudo apt-get install git

下载并安装QtIFW(Installer Framework):
https ://download.qt.io/official_releases/qt-installer-framework/

创建文件夹进行交叉编译并安装Raspberry Pi交叉编译工具:

$ mkdir ~/raspi
$ cd ~/raspi
$ git clone https://github.com/raspberrypi/tools

将sysroot复制到主机PC。

使用rsync通过网络传输文件。将下面的“raspberrypi.local”替换为您的RPi的正确网络名称或IP地址,该方法必须可以网络访问。

$ cd ~/raspi
$ mkdir sysroot sysroot/usr sysroot/opt
$ rsync -avz pi@raspberrypi.local:/lib sysroot
$ rsync -avz pi@raspberrypi.local:/usr/include sysroot/usr
$ rsync -avz pi@raspberrypi.local:/usr/lib sysroot/usr
$ rsync -avz pi@raspberrypi.local:/opt/vc sysroot/opt

更新主机上的sysroot副本中的符号链接。这将下载一个帮助脚本,它将自动将复制的sysroot中的所有绝对符号链接路径修改为相对符号链接:

$ cd ~/raspi
$ wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
$ chmod +x sysroot-relativelinks.py
$ ./sysroot-relativelinks.py sysroot

**

开始交叉编译:

**
在主机上下载和交叉编译Qt 5.6.2:

$  cd ~/raspi  
$  wget https://download.qt.io/official_releases/qt/5.6/5.6.2/single/qt-everywhere-opensource-src-5.6.2.7z $  7z x qt-everywhere-opensource-src-5.6.2.7z $ cd  qt-everywhere-opensource-src-5.6.2 $ ./configure -release -opengl es2
-device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
-sysroot ~/raspi/sysroot -opensource -confirm-license -make libs -skip wayland -no-pkg-config -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -v 
$ make -j 8 
$ make install

此时,Qt 5.6.2应完全交叉编译并准备使用

交叉编译OpenMV-IDE:
将Openmv-ide存储库和子模块克隆到主机:

$ cd ~/raspi
$ git clone https://github.com/openmv/openmv-ide.git
$ cd openmv-ide
$ git submodule init
$ git submodule update --recursive
$ cd qt-creator
$ git submodule init
$ git submodule update --recursive

设置环境指向交叉编译的Qt和Build openmv-ide:

$ cd ~/raspi/openmv-ide
$ export QTDIR=~/raspi/qt5
$ export PATH=~/raspi/qt5/bin:$PATH
$ ./make.py

完成后,您应该在〜/ raspi / openmv-ide / build文件夹中有一个7-Zip存档。将其复制到您的RP​​i,无论是通过将其直接复制到主机PC上的SDCard映像,或通过sftp通过网络将其复制到RPi(将“raspberrypi.local”替换为您的RPi的正确网络名称或IP地址,可以通过此方法进行网络访问)。将下面的“openmv-ide-linux-arm-1.6.0-installer-archive.7z”文件替换为您刚刚编译的openmv-ide版本:

$ cd ~/raspi/openmv-ide/build $ sftp pi@raspberrypi.local sftp> put openmv-ide-linux-arm-1.6.0-installer-archive.7z sftp> exit

通过在您的RPi上运行以下命令将其安装在您的RPi上:

$ mkdir ~/openmvide
$ cd ~/openmvide
$ 7z x ../openmv-ide-linux-arm-1.6.0-installer-archive.7z

openmvide应用程序现在应该可以在您的RPi上使用了。此时,请遵循OpenMV-IDE网站的说明,为Linux环境设置udev规则,以使您的RPi正确看到您的OpenMV Camera,并确保’pi’用户是拨号组的一部分(为方便起见,这里列出) :

$ sudo adduser pi dialout
$ sudo cp ~/openmvide/share/qtcreator/pydfu/50-openmv.rules /etc/udev/rules.d/50-openmv.rules
$ sudo udevadm control --reload-rules

在RPi上运行openmvide将取决于要运行的环境。如果您在大多数Raspbian映像中默认的X11服务器中运行它,您可以在X11服务器中启动终端并输入以下内容:

$ cd ~/openmvide/bin
$ ./openmvide -platform xcb
(NOTE: the "-platform xcb" is important to tell Qt to use the X11
front-end.  The default is "eglfs" (OpenGL Full-Screen) which will
likely hang or crash if trying to use it at the same time as X11.)

如果要在X11之外运行openmvide作为您的RPi上的单独的独立应用程序,可以使用Qt的eglfs前端。但是,您首先要修复EGL / GLES库问题,请按照以下网址下列步骤#11进行修改,以防万一此网址发生变化:https: //wiki.qt.io/RaspberryPi2EGLFS#Step_by_step

(on the RPi):
$ cd /usr/lib/arm-linux-gnueabihf/
$ sudo cp libEGL.so.1.0.0 libEGL.so.1.0.0.orig
$ sudo cp libGLESv2.so.2.0.0 libGLESv2.so.2.0.0.orig
$ sudo rm /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0
$ sudo ln -s /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0
$ sudo ln -s /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0

github链接:
https://github.com/openmv/openmv-ide

你可能感兴趣的:(树莓派)