快速开始
1 准备
1.1 硬件准备
- 装有 Windows 10 以上的电脑
- 第二代智能相机
- USB Type-A to Type-C 数据线
- HDMI线缆、HDMI显示屏、鼠标、键盘
- RJ45转航插接口线缆(随设备发货)
- 17PIN航插线缆(随设备发货)
- Type-C拓展坞(可拓展Type-A口)
- 电源适配器(12V/24V 3A)
1.2 软件准备
请参见工具安装章节,安装必要的工具以辅助开发者完成阿加犀硬件产品的使用。
2 设备开机
2.1 电源线连接
使用DC12V/24V 3A电源适配器正、负分别接入17PIN航插线缆VCC+、VCC-口,默认开机自启动。观察上电时,PWR灯绿灯闪烁(启动中)到PWR灯常亮(启动完成)即可。
2.2 Type-C线连接
在Windows电脑端的USB3.0接口接入线缆的Type-A口;在第二代相机端的type-c接口接入线缆的Type-C口。
在Windows电脑端按win+R,在弹出的窗口输入cmd,打开终端窗口,在窗口中输入如下命令:
adb devices
2.3 HDMI显示屏连接
- 使用HDMI线缆连接HDMI显示屏
- 使用Type-C拓展坞接入设备Type-C口,并在拓展坞上接入鼠标键盘
根据如上操作连接后,系统默认登录到SVE(Smart Vision)界面,输入默认用户名/密码:sve/sve 登录到系统中。
3 配置有线网IP地址
3.1 通过ADB配置
3.1.1 获取动态IP地址
第二代相机默认配置为动态IP地址,当接入用户的局域网(上端设备带DHCP服务)中,为自动被分配到一个IP地址,仅使用命令查看IP即可。
在Windows电脑端按win+R,在弹出的窗口输入cmd,打开终端窗口,在窗口中输入如下命令:
adb shell //进入到系统
ifconfig eth0 //查看IP地址
3.1.2 配置静态IP地址
当用户网络中没有DHCP服务器,或者需要配置静态IP地址以满足需求时,可参照如下方法进行配置。
- 在Windows电脑端按win+R,在弹出的窗口输入cmd,打开终端窗口,在窗口中输入如下命令:
adb shell //登录到系统
- 获取连接名称:connection_name
nmcli -g GENERAL.CONNECTION device show eth0
- 配置静态ip设置
nmcli connection modify '上一步获取的connection_name' ipv4.method manual ipv4.addresses 192.168.1.231/24 ipv4.gateway 192.168.1.1 ipv4.dns '114.114.114.114'
- 应用网络配置
nmcli device reapply eth0
💡注意
此处设置的IP地址和子网掩码均仅做参考,具体需根据实际情况设置。
3.1.2.1 从静态IP恢复成DHCP IP
当用户需要从已配置静态IP恢复到动态IP模式的时候,可以参照如下步骤:
- 在Windows电脑端按win+R,在弹出的窗口输入cmd,打开终端窗口,在窗口中输入如下命令:
adb shell //登录到系统
- 获取连接名称:connection_name
nmcli -g GENERAL.CONNECTION device show eth0
- 恢复成动态IP配置
nmcli connection modify '第一步获取的connection_name' ipv4.method auto ipv4.addresses '' ipv4.gateway '' ipv4.dns ''
- 应用网络配置
nmcli device reapply eth0
3.2 通过直连HDMI屏配置
当用户需要通过接入HDMI屏后配置IP地址时,可参照如下方法进行配置:
设备接入DHMI显示屏
设备Type-C口接入Type-C拓展坞,并接入鼠标、键盘
设备上电并接入显示屏后,默认看到的是SVE(Smart Vision)软件登录界面。可输入用户名/密码:sve/sve 登录到SVE软件中。
登录后点击网络配置
注: 默认是配置动态IP,实际设备接入有DHCP服务的网络后,即可立即获取到DHCP IP
- 选择静态IP后,即可配置设备有线网静态IP地址
根据提示,输入各项后,点击"保存配置"即可
如需从静态IP地址切换成动态IP地址,则选择动态IP选项后,点击保存配置即可
3.3 通过aid-deploy-tool工具配置
在用户已安装aid-deploy-tool工具后,也可通过该工具快速给设备配置IP。工具安装请参考aid-deploy-tool安装。
3.3.1 配置有线网静态IP
通过Type-A转Type-C线缆将设备与Windows电脑连接,并打开该工具
在设备管理-网络配置页面下,进行IP地址配置
连接类型选择"手动",其他项请根据实际需要进行填写
- 填写完毕后,点击下方"更新"按钮即可
3.3.2 配置有线网动态IP
第二代智能相机,首次开机时有线网默认配置为动态IP,如果您已配置过静态IP地址,想要恢复成动态IP,可根据如下操作进行配置:
通过Type-A转Type-C线缆将设备与Windows电脑连接,并打开该工具
连接类型选择"自动(DHCP)",点击下方"更新"按钮即可
4 配置无线WIFI
4.1 通过ADB配置
第二代相机也支持通过命令行界面进行IP的配置,具体步骤参照如下方法:
- 在Windows电脑端按win+R,在弹出的窗口输入cmd,打开终端窗口,在窗口中输入如下命令进入到系统:
adb shell
- 执行命令扫描WIFI
nmcli dev wifi list 2>&1 | less
💡注意 按键盘的上下键,可以查看扫描的所有AP,要退出扫描界面,请按 q 退出
- 连接WIFI
nmcli dev wifi connect "WiFi-SSID" password "WiFi-password"
- 断开WIFI连接
nmcli connection down id WIFI-SSID
5 SSH登录
在通过第3、4章节配置好设备IP地址后,可SSH登录到系统命令行界面。
【root账号登录】
用户名:root
密码:P@ssw0rd
【aidlux账号登录】
用户名:aidlux
密码:aidlux
6 SVE(Smart Vision)简介
6.1 SVE登录方法
6.1.1 通过默认端口直接登录(推荐)
第二代智能相机设备上电后,SVE软件默认自启动,因此我们可通过如下方法直接登录到SVE中:
- 设备连接好有线或无线网络,并获取到IP地址。可参照第3、4章节进行配置
- 打开本地电脑浏览器,在浏览器中输入:http://相机IP:58200/login
- 输入默认用户名/密码: sev/sve
6.1.2 通过HDMI屏直连登录
第二代智能相机设备配备了HDMI接口,可接入HDMI显示屏直接登录到SVE软件中,操作如下:
- 设备连接HDMI屏,并通过Type-C拓展坞接入鼠标和键盘
- 设备上电后,可看到HDMI屏上默认显示了SVE软件的登录界面
请输入默认用户名/密码登录SVE软件:sve/sve
6.2 设备概览
设备概览页面展示的是当前相机设备的一些基本信息,如:Soc型号、MAC地址、IP地址、OS信息、相机状态、运行任务等。以方便用户快速获取设备信息。
6.3 任务管理
任务管理页面主要展示相机已有的AI应用列表,默认安装"分割"和"采图"示例,用户也可以根据需要添加其他应用。在当前页面,可以管理所有应用,可对应用进行预览、启停、 设置、查看日志、删除等操作。
6.3.1 运行并预览内置应用
在应用列表中默认安装"分割"和"采图"示例,以"分割"应用为例,运行并预览推理效果。
- 点击列表中的【启动/停止应用】按钮,运行应用示例。
点击【运行预览】按钮,查看运行效果。
返回"应用列表"界面后,点击【进入成像设置界面】按钮,可进行成像设置、算法设置、结果处理设置。
💡注意
在做这些设置前,需要停止正在运行的任务才可保存。
【成像设置】
在成像设置中,可以调整一些基本参数,如:触发方式、输出通道、分辨率、触发帧率、曝光模式、白平衡、饱和度、对比度、锐度... 。通过这些参数来优化成像结果, 提升识别准确度。
【算法设置】
该界面展示出对应的AI应用所涉及的阈值相关参数,不同应用涉及阈值参数各不相同,支持进行动态化的不同展示。
【结果处理设置】
在结果处理方式中,有"输出信号设置"和"数据集成设置"两项。
输出信号设置是指二代相机的4路IO输出信号,可选择输出IO信号和TCP包以及不做输出。
数据集成设置是指应用在检测中所采集的图片可以集成备份到其他服务器上,图片任意选择原图、结果图、Mask图。
6.4 系统监控
系统监控分为"告警信息"和"资源监控"两个页面。
6.4.1 告警信息
告警信息页面,主要记录SVE的一些告警信息。分为"特别严重"、"严重"、"较重"、"一般"五个等级,并且不同等级的信息用不同的颜色标记区分。并且每条告警中 都详细记录了严重级别、事件发生时间、事件类型、事件内容等信息。方便用户及时和快速定位问题。
6.4.2 资源监控
资源监控页面,主要记录设备运行时的CPU、GPU、NPU、Memory、Storage、Network等信息,可实时监控设备运行状态。同时可通过"停止/开始"按钮控制资源的 监控,也可根据"数据展示区间"选项进行调节页面数据展示,目前仅支持查看3分钟、5分钟的数据区间。
6.5 网络配置
网络配置页面,主要是针对本地有线网配置IPv4地址,可配置静态和动态IP。
6.6 信号设置
信号设置页面,主要是对相机的输入信号、输出信号做相关设置。目前相机支持三路输入信号、四路输出信号,可满足绝大部分的工业检测场景的信号输入输出要求。
同时,可点击"IO信号调试"按钮,进入到IO信号调试界面。在该界面,可以模拟信号的输入、输出,以便用户调试整个检测流程,而不用在调试阶段就接入待测设备信号源。
6.7 设备维护
设备维护页面,主要是对设备的登录信息和本地缓存进行设置。在这里可以修改SVE软件的登录用户名和密码,以及对本地缓存的保存周期,系统保留空间,超限处理方式等 进行设置。其中系统保留空间是当系统剩余可用空间达到设定值后,系统会上报告警,并且会根据设定的超限处理方式进行处理。
7 从AIC生成应用并部署到相机
7.1 AI应用生成
- 打开浏览器,登录到AI Creator。点击【项目中心】进入项目列表。找到已经训练完成的【芯片分割】项目(AICreator模型如何训练请参考AICreator用户使用说明文档),点击【进入项目】可查看模型详情。如下图所示:
注: 由于模型是在 x86 平台下训练的,如果希望在智能相机或边缘端运行,还需要对模型进行优化。AICreator 内置了 AIMO 模型优化功能,支持一键优化和高级优化。针对运行模型的设备芯片型号,一键优化预设了一系列参数,用户只需选择运行模型的设备芯片型号即可。我们实验使用的智能相机芯片型号为 QCS8550,并推荐将模型转换为 QNN 格式以进行运行。
- 点击左侧【 模型优化 】标签,在优化发布界面,点击【一键优化】,选择 QNN 格式和 QCS8550 芯片型号,即可完成模型优化。
- 点击左侧【部署】标签,点击【生成智能相机应用】,填写应用ID、应用版本、应用名称等应用信息,并选择图片数据后点击确定,即可生成AI应用。
💡注意
第二代智能相机默认是Linux系统,需选择 智能相机(Linux)
7.2 AI应用部署到相机
- 在节点管理页面,点击【集成节点】-【IP集成】按钮,在弹出的表单中,"节点类型"选项全部勾选,并输入节点名称和智能相机的IP地址(关于如何查看智能相机IP,请参考3 配置有线网IP地址)。 输入完成后,点击确定。
- 智能相机集成成功后,返回项目的应用生成界面,选择上一小节中生成的智能相机应用并点击【部署】,然后选择已集成的智能相机节点,点击【开始部署】
- 点击后将会跳转到【部署记录界面】,当【部署状态】为成功后,表示该应用已部署完成。
- 返回智能相机界面查看应用列表,已新增一条数据,即表示部署成功。运行即可查看推理效果。
- 点击列表中的【启动/停止应用】按钮,即可运行应用示例。
8 构建相机应用
除了通过AIC部署应用到相机之外,还可以自己构建相机应用,构建方法如下。
8.1 生成示例应用(含示例源码)
为了帮助开发者快速学习上手,Aidlux系统默认提供appc的命令行工具,可以直接生成基于SmartVision SDK的示例应用。
示例代码分为C++和Python两种语言版本。
appc使用说明
进入aidlux命令行终端,输入"appc -h"即可获取使用帮助。
(1)创建项目
可通过命令:appc init外加指定参数来创建不同的项目类型。
具体操作信息可通过appc init --help命令来获取更多帮助。
(2)打包项目
当开发完成之后,可通过命令appc package来打包具体项目。
命令格式:appc package -p <项目路径>
Camera上执行以下命令:
# 在本地目录生成C++的示例代码
aidlux@aidlux:~$ appc init -t "cpp" -n demoApp
aidlux@aidlux:~$ cd demoApp
# 在本地目录生成python的示例代码
aidlux@aidlux:~$ appc init -t "py" -n demoApp
aidlux@aidlux:~$ cd demoApp
8.2 应用源码说明
文件结构如下:
├── README.md
├── config #配置文件
│ ├── camera.config #相机参数配置文件(需要补上相机参数配置的说明)
│ ├── algorithm.config #算法参数配置文件(需要补上算法参数配置的说明)
│ ├── model.config #模型相关配置文件
├── imgs #静态图片目录
├── lib #三方库目录
├── manager.sh #应用启动脚本
├── model #模型文件目录
│ ├── Segment_V41_0
│ │ └── det_bestModelIoU_xxx_int8.serialized.bin #模型文件
│ ├── det.txt
│ └── modelInfo.json #模型配置文件
├── release.txt #应用说明文件
├── src #应用主程序目录
│ ├── CMakeLists.txt #cmake编译文件
│ ├── main.cpp #应用主代码
│ ├── main.hpp #应用主代码头文件
│ └── model.cpp #模型加载主代码
├── svapp #可执行程序文件
├── config #配置文件
│ ├── camera.config #相机参数配置文件(需要补上相机参数配置的说明)
│ ├── algorithm.config #算法参数配置文件(需要补上算法参数配置的说明)
│ ├── model.config #模型相关配置文件
├── lib #三方库目录
├── manager.sh #应用启动脚本
├── model #模型文件目录
│ ├── Segment_V41_0
│ │ └── det_bestModelIoU_xxx_int8.serialized.bin #模型文件
│ ├── det.txt
│ └── modelInfo.json #模型配置文件
├── release.txt #应用说明文件
├── svapp.py #应用主代码
8.3 源码编译并打包部署到相机
C++ 示例
1. 确认相机cmake编译环境
执行cmake判断是否安装cmake命令。
# 未安装cmake
aidlux@aidlux:~$ cmake
bash: cmake: command not found
如果没有安装,执行以下命令安装cmake。
aidlux@aidlux:~$ sudo apt-get update
aidlux@aidlux:~$ sudo apt-get install cmake
安装完成后,执行cmake命令出现帮助信息即为安装成功,如图所示:
2. 编译源代码
Camera上执行:
# 进入示例应用目录
aidlux@aidlux:~$ cd ~/demoApp
# 执行编译命令
aidlux@aidlux:~/demoApp$ cd src/
aidlux@aidlux:~/demoApp/src$ mkdir build
aidlux@aidlux:~/demoApp/src$ cd build/
aidlux@aidlux:~/demoApp/src/build$ cmake ..
aidlux@aidlux:~/demoApp/src/build$ make
编译完成后,会在应用根目录下生成可执行文件 svapp
3. 应用打包并部署
Camera上执行:
# 执行应用打包命令
aidlux@aidlux:~$ appc package -p ~/demoApp
打包完成后,会在应用目录下生成可直接部署的应用包:
至此,整个应用打包完成,接下来进行应用部署流程,可以将应用部署在本相机直接预览效果,也可以将应用部署到其他的相机设备上
场景 1:若需要将应用部署到本相机设备上:
Camera上执行: (1) 执行sve应用安装命令
# 执行sve应用安装命令
aidlux@aidlux:~$ appc install ~/demoApp.zip
💡注意:
若安装过程提示应用已存在,可以通过加入“-f”参数进行强制覆盖安装:
appc install -f ~/demoApp.zip
(2) 重启智能相机应用运行框架
💡注意:
需要重启相机应用运行框架服务后,智能相机应用列表才能重新加载,并展示解压后的应用
# 进入智能相机应用框架目录
cd /opt/aidlux/cpf/aid-sve/
# 重启相机应用运行框架
sudo ./manager.sh restart
(3) 打开相机管理网页,进入【任务管理】,查看部署的应用.
若应用列表中显示出示例应用,则表示已经部署成功
场景 2:若需要将应用部署到其他相机上,需要先将应用包拷贝到 PC 上
PC上执行: (1) 将应用包拷贝到 PC 本地
# 将相机上打包后的应用包拷贝到 PC 本地
scp aidlux@[camera IP]:/home/aidlux/demoApp.zip ./
(2) 打开其他相机管理网页,进入【任务管理】,点击【导入应用包】,选择 PC 上的应用包
导入后,若应用列表中显示出示例应用,则表示已经部署成功
9 刷机指导
9.1 镜像下载
第二代智能相机在出厂前已预装了镜像帮助您快速进行开箱操作体验(非最新版本)。如需体验其他版本,可点击如下表格的版本链接进行下载。
序号 | 镜像名称 | 版本下载路径 |
---|---|---|
1 | A8550CM2_ROM | A8550CM2_ROM |
9.2 系统刷机
9.2.1 切换到刷机模式
设备开机后,使用usb-typec线缆,连接电脑和设备。usb接电脑端,type-c口接设备端。
连接好后,在Windows电脑端按win+R,在弹出的窗口输入cmd,打开终端窗口,执行"adb devices",会列出已连接设备。如果没有,则多等待一会,或者拔插一下typec线缆再执行该命令。
- 切换到刷机模式,执行"adb shell reboot edl"。
9.2.2 配置QFIL的Configuration项
- 打开QFIL,点击上方Configuration-FireHose Configuration选项。
- 在弹出的Download Configuration窗口里做如下设置:
Download Protocol 选择"0-Sahara"
Device Type 选择 "ufs"
勾选"Reset After Download"选项
其他选项均与如下截图保持一致即可。
- 配置完成后,点击OK进行保存。
9.2.3 选择刷机端口
点击"Select Port"选项,在弹出的窗口,选择出现的9008端口,点击"OK"。
经过 9.2.1 切换到刷机模式 章节中的切换,该窗口应该会自动出现9008端口选项,如未出现请断电重启后再次执行切换并等待其出现。
9.2.4 选择Build Type
- 找到"Select Build Type"项,选择"Flat Build"。
9.2.5 选择刷机文件
解压rom文件。
找到"Select Programmer"项,点击"Programmer Path"后的"Browse...",找到解压路径后,选择解压后的rom文件。
打开后,点击右下角下拉框选择文件类型为" All Files(*.*) "。
- 跳转后,找到"xbl_s_devprg_ns.melf"文件,选中后,点击右下角打开按钮。
9.2.6 选择刷机xml文件
- 找到"Select Flat Build"项,点击下方的"Load XML...",选择刷机xml文件。
- 在弹出的窗口,选择"rawprogram0_split.xml"文件,点击打开。
- 在选择xml文件后,会自动再弹出一个窗口,选择"patch0.xml",点击打开。
9.2.7 开始刷机
- 以上选项全部选择好后,点击"Download"开始刷机,等待刷完即可。