基于pylon嵌入式目标应用(Basler相机)

基于pylon嵌入式目标应用(Basler相机)

1简介

pylon Camera软件套件(简称“pylon”)是Basler的软件包,它包含易于使用的SDK、驱动程序和工具,使您能够将Basler相机集成到自己的应用程序中。pylon提供以下组件:

不同摄像头接口所需的所有驱动程序(GigE Vision、USB3 Vision、MIPI CSI-2等)。

pylon Viewer:一个强大的GUI工具,用于配置相机和抓取图像或视频。它在开发过程中也提供了宝贵的支持。

易于使用的API,用于不同的编程语言(C,C++,C#,Python等),使您能够轻松地集成相机功能到自己的应用程序。pylon为所有Basler摄像机提供了了一个统一的API,允许您对所有不同的摄像机接口使用(或重复使用)相同的代码。

pylon通过其统一的API支持不同的操作系统(Windows、macOS、Linux)。在本应用说明中,重点介绍Linux for x86和基于ARM的嵌入式平台(32位和64位),以及在使用嵌入式平台时需要考虑的具体情况。

一般来说,必须区分嵌入式目标上的三种不同Linux方法:

运行支持Debian包管理器dpkg的Linux发行版的目标(例如,Debian、Ubuntu、Linaro等)

运行不支持Debian软件包管理器dpkg的Linux发行版的目标(如RedHat、Suse等)

需要使用Yocto项目提供的技术为其构建定制Linux的目标

2使用支持Debian包管理器dpkg的Linux发行版上的pylon

在任何运行基于Debian的Linux发行版(或任何其他支持Debian包管理器dpkg的Linux)的嵌入式x86或ARM目标上安装pylon非常简单,与运行Ubuntu的计算机没有什么区别。

1从Basler网站下载用于pylon的Debian安装程序包。

确保下载的软件包与您的操作系统/硬件体系结构相匹配。x86或ARM、32位或64位有不同的软件包版本。

2下载软件包后,打开shell,将cd放入下载位置,然后键入:

sudo dpkg -i <package-name>

pylon现在安装在您的系统上。默认位置是/opt/pylon5、/opt/pylon6或/opt/pylon(即,pylon根目录)。根据嵌入式系统的性能,可能需要手动对GigE Vision或USB3 Vision相机执行一些性能优化。pylon自述中详细描述了所需的步骤,安装后可以在pylon根目录中找到。

安装完成后,可以立即启动pylon Viewer。

对于pylon 5,在shell中键入以下内容:

/opt/pylon5/bin/PylonViewerApp

对于pylon 6,键入:

/opt/pylon6/bin/pylonviewer

或者

/opt/pylon/bin/pylonviewer

取决于使用的pylon版本。

安装C/C++工具链需要安装Linux发行版,以便创建C/C++应用程序。

若要安装C++工具链,请键入:

sudo apt install build-essential

现在您可以构建和运行pylon-based的程序了。首先,可以构建pylon示例程序,可以在/opt/pylon5/Samples或/opt/pylon6/share/pylon/Samples目录中找到。Basler建议将Samples目录复制到您的主目录中,以便拥有完全的用户访问权限。例子:

cp -r /opt/pylon5/Samples ~/Pylon-Samples

samples附有make文件。例如,为了构建所有C++样本,进入C++子目录并运行make是足够的。

Basler dart BCON,用于基于高通公司Snapdragon 820的MIPI摄像机模块,可与目标进行操作

Basler dart daA2500-60mc是一个MIPI CSI-2摄像头模块,设计用于高通SD820-based的嵌入式目标。Basler提供这样一个目标作为专用开发工具包的一部分。Basler为这个板提供了一个完整的Linaro Linux(Debian-based)映像,您可以从Basler网站下载。

3在不支持Debian软件包管理器dpkg的Linux发行版上使用pylon

对于那些具有不同于dpkg的包管理器的Linux发行版或那些根本没有包管理的发行版,Basler还提供了pylon For Linux作为归档文件:

  1. 从Basler网站下载pylon归档文件(压缩为gzip)。
    确保下载的软件包与您的操作系统/硬件体系结构相匹配。x86或ARM、32位或64位有不同的软件包版本。

  2. 下载软件包后,打开shell,将cd放入下载位置并键入:

sudo tar –xzf  <archive-name>

这将提取归档文件并创建一个子目录,其中包含Basler示例程序(Samples)和一个子目录pylon--。

  1. Cd进入子目录pylon--。

4)安装udev规则以设置Basler USB摄像头的权限。

./setup-usb.sh

5)拔掉并重新安装所有Basler USB摄像头,以应用udev规则。

6)提取包含pylonsdk的归档文件(也可以在新的子目录中找到)。它需要被解压到pylon根目录中。Basler建议将/opt/pylon5或/opt/pylon6作为pylon根目录。

pylon现在安装在您的系统上。根据嵌入式系统的性能,可能需要手动对GigE Vision或USB3 Vision相机执行一些性能优化。pylon自述中详细描述了所需的步骤,安装后可以在pylon根目录中找到。

安装完成后,可以立即启动pylon Viewer。

对于pylon 5,在shell中键入以下内容:

<pylon根目录>/bin/PylonViewerApp

对于pylon 6,键入:

<pylon根目录>/bin/pylonviewer

现在您可以构建和运行基于pylon的程序了。首先,您可以构建pylon示例程序,您可以在上面提到的Samples目录中找到它。在生成示例之前,必须相应地设置权限:

chown -R <user>:<group> Samples

示例附有make文件。例如,为了构建所有C++示例,进入C++子目录并运行make是足够的。

4在需要定制yocto linux的目标上使用pylon
与上述两种方法不同的是,pylon安装在已经存在的Linux系统上,基于Yocto的方法旨在创建一个完整的Linux映像,其中包含所有必需的软件包、库等,例如Basler pylon Camera软件套件。

开源Yocto项目(https://www.yoctoproject.org/)提供创建这样一个Linux映像所需的所有工具,最重要的是一个名为BitBake的工具。Yocto的主要思想是通过处理告诉BitBake如何构建目标系统的不同组件的方法来创建目标映像。

每种组件在配方中被描述为所谓的元层(meta-layer)。每一个想要将他们的产品(例如,pylon)集成到Yocto构建的映像中的人都提供了这样的元层。元层提供了构建和集成此特定产品的说明。这很像用烹饪书(食谱)和火锅/烤箱(BitBake)做火锅(目标映像)。

Yocto是为特定(嵌入式)硬件目标制作非常具体和定制的Linux映像的理想技术。它允许构建一个Linux系统(“固件”),其中包含目标所需的所有内容,但不超过这个。这种方法的另一个优点是能够在任何时候复制/重建完全相同的Linux映像(只要配方保持稳定,通常就是这样)。

许多嵌入式硬件供应商(例如,具有i.MX8 SoC系列的NXP等SoC供应商)默认支持Yocto。他们提供了元层,允许构建一个Linux映像,例如,用于他们的参考评估工具包。通过在相关的Yocto项目中为附加软件包添加其他元层,可以很容易地扩展图像,例如支持Basler相机。

Basler提供Yocto元层来支持基于NXP i.MX8 SoC系列的嵌入式平台。这些都是作为所谓的“摄像头支持包”(CEP)提供的,您可以从Basler网站下载。有不同的cep可供使用,目前本机支持用于i.MX8MQ、i.MX8M Mini和i.MX8QM Plus的NXPs官方评估工具包。

Basler的CEP包含两个元层:

meta-basler-imx8:该层包含basler相机驱动程序的内核补丁和NXP评估包的设备树。

meta-basler-tools:这个层包含pylon软件的用户空间方面(GenTL producer、pylon SDK、pylon Viewer等)。这个元层独立于实际的SoC,也可以集成到其他基于ARMv8的平台上,这些平台不基于i.MX8(例如Nvidia Jetson)。

此外,CEP还包含一个详细的自述文件,逐步解释如何为NXP评估工具包构建一个完整的Linux映像。

CEP还可以用于将pylon添加到基于支持的NXP soc的任何其他硬件上。但是,在这种情况下,有必要修改相关硬件平台的设备树。一些SOM供应商(例如Variscite、SolidRun)为基于i.NX8的SOM提供设备树,该设备树已经包括Basler相机支持。

对于用BitBake构建Linux映像,Basler建议使用性能足够的Linux计算机(如Ubuntu)(如corei7)和具有500gb可用磁盘空间的快速SSD。构建过程仍然需要几个小时。要构建映像,需要安装许多工具(包括Yocto工具链)。Basler自述中也详细解释了这一点。

构建Linux映像后,在目标映像系统上安装pylon。根据嵌入式系统的性能,可能需要手动对GigE Vision或USB3 Vision相机执行一些性能优化。pylon自述中详细描述了所需的步骤,安装后可以在pylon根目录中找到。

通常,您不会为目标本身上的嵌入式目标构建自己的基于pylon的应用程序。另外,你通常不会在目标图像上有一个完整的C/ c++工具链或sdk,因为图像被缩减为最终产品实际需要的内容——除此之外就没有别的了。典型的方法是在一台专用的Linux开发计算机(例如Ubuntu)上使用跨工具链和跨SDK构建应用程序。好消息是,您可以使用BitBake轻松地从Yocto项目生成跨工具链和跨SDK。这些都在Basler的自述中解释过。

4.1使用Yocto Cross工具链构建Basler pylon Samples

  1. 在开发计算机上创建交叉工具链(SDK)。

该过程假设您已经按照Basler README中描述的那样为嵌入式目标(例如,带有i.MX8M Mini SoC的NXP EVK)构建了Yocto Linux映像。

a. 进入你的Yocto构建目录(例如,imx-yocto-bsp)。此目录包含setup-environment环境设置脚本。

b. 脚本以目标构建目录为参数,例如:

$ source setup-environment build-xwayland-imx8mmevk-basler/

c. 使用BitBake构建交叉工具链:

$ bitbake -c populate_sdk fsl-image-validation-imx

这可能需要一些时间。

  1. 在开发计算机上安装交叉工具链SDK。

a. cd到 imx-yocto-bsp/build-xwayland-imx8mqevk-basler/tmp/deploy/sdk.
在这里,您可以找到作为安装脚本构建的SDK(例如,fsl-imx-xwayland-glibc-x86_64-fsl-image- validate -imx-aarch64-toolchain-4.14-sumo.sh)。。

b.执行SDK安装脚本。它提示您为交叉工具链SDK指定安装目录。
安装现已完成。

  1. 交叉构建的aarch64 pylon samples。

a.在开发计算机上打开终端窗口。
对于交叉工具链,你必须找到环境源。为此,输入:

$ source <cross toolchain installdir> environment-setup-aarch64-poky-linux

aarch64的pylon示例可以在Basler CEP元层中的meta-tools找到。meta-basler-tools/meta-basler-common/recipes-camera/pylon/files/ 包含打包为tar.gz文件的完整pylon安装。这又包含share/pylon/samples/目录中的示例。

最好在某个目录中提取pylon tar.gz文件,例如~/pylon6-aarch64,然后它就成为aarch64的pylon根目录。

c.为了构建c++示例,cd到c++目录中:

$ cd ~/pylon-aarch64/share/pylon/Samples/C++

d.现在您必须为pylon环境(例如,PYLON_ROOT)提供源代码。
这是通过pylon-setup-env.sh脚本完成的:

$ source <pylon-installdir>/bin/pylon-setup-env.sh <pylon-installdir>

示例:如果已将pylon提取到pylon-aarch64,则必须键入以下内容:

$ source ~/pylon-aarch64/bin/pylon-setup-env.sh ~/pylon-aarch64
  1. 现在可以运行make一次性构建所有示例程序。之后,您可以将构建的程序复制到aarch64目标并从那里运行它们。

  2. 使用交叉工具链和Qt Creator构建、运行和调试远程应用程序

Qt Creator是一个用户友好的IDE,它帮助您开发、构建、运行和调试应用程序,例如使用C++,并且也可以用于跨工具链。为了使用Qt Creator,您需要一个CMake项目(CMakeLists.txt作为相关的项目文件)。在使用Qt Creator之前,您应该首先确保可以使用CMake成功地构建应用程序。
在开发计算机上,需要交叉工具链SDK,如第6页第2步所述。您还需要安装Qt Creator。在任何基于Debian的系统(如Ubuntu)上,只需键入以下命令即可安装Qt create:

$ sudo apt install qtcreator

现在,您可以打开一个终端窗口并为交叉工具链提供源环境,如第6页的步骤3所述。现在可以从终端窗口中启动Qt Creator:

$ qtcreator & 

5.1创建交叉工具链套件

首先验证是否能够使用CMake构建项目是很重要的。在某些情况下,如果在使用Qt Creator打开项目之前没有创建CMake输出,那么使用Qt Creator配置CMake项目可能会失败。

1)在Qt Creator菜单中,进入File -> Open File or Project,并选择CMakeLists.txt作为项目。
打开之后,您需要创建一个所谓的工具包,为Qt Creator配置构建和调试环境。

2)单击Manage Kits按钮。

下一步是创建一个表示远程目标的设备。在执行此操作之前,请确保可以通过ssh访问远程目标。

3)在“选项”对话框中,选择“设备”,然后单击“添加”。

4)在“设备配置向导选择”对话框中,选择“通用Linux设备”,然后单击“启动向导”。

这将导致一个配置对话框,在该对话框中,您应该给目标一个有意义的名称(例如,i.MX8M Mini)。输入其IP地址、用户名和密码(如果需要)。

5)如果单击“下一步”,向导将执行快速连接测试。如果测试成功,将打开“设备”对话框。

6)单击“确定”完成设备配置。

7)在“选项”对话框中,选择“生成和运行”。

8)在“生成和运行”对话框中,转到“编译器”选项卡并单击“添加”。
通过浏览之前安装的交叉SDK的编译器,您现在应该添加C (gcc)和c++ (g++)编译器。您还应该给编译器一个有意义的名称,并且必须将ABI设置为arm-linux-generic-elf-64位。。

9)现在转到debugger选项卡,将交叉SDK调试器添加到工具包中。
你应该给调试器一个有意义的名字(例如,“gdb for aarch64 Zeus”)。

10)转到工具包选项卡并单击Add以完成工具包的配置。
你应该给套件起一个有意义的名字,例如:AARCH64 Yocto Zeus。

11)将设备类型设置为通用Linux设备。

12)将设备设置为刚创建的设备(例如,“i.MX8M Mini”)。

13)将C和C++编译器设置为刚才添加的那些,调试器设置为刚才添加的。

14)设置CMake工具是你的交叉SDK的一部分。

15)单击“确定”。

工具包创建现已完成。

5.2配置项目

1)选择您想要构建的套件(例如,“AARCH64 Yocto Zeus”)并展开Details选项卡。

2)选择要编译(和调试)的所有生成配置。

3)指定生成工件的生成文件夹。

4)单击“配置项目”。

现在您应该可以使用Qt Creator(Ctrl+B)构建应用程序了。

5.3将构建的程序部署到远程目标并调试它
1)单击左侧窗口窗格中的Projects按钮,并在Build & Run下选择Run。
您现在在Run Settings对话框中。
2) 删除任何现有的部署步骤(通常存在使用sftp的默认部署步骤)。
3)单击“添加部署步骤”并选择“自定义流程步骤”。
4)输入命令“scp”。
5)作为参数,使用以下格式输入你想要复制到哪个位置的内容:
@
6)单击左侧窗格中的Debug按钮,告诉Qt您想要对远程设备进行调试。
7)转到Run Environment,打开Details,并单击Add以相应地设置变量。

你可能感兴趣的:(图像处理,嵌入式,linux,yacto)