移远 QuecPi Alpha 使用说明
本文档是介绍阿加犀Docker以及AI工具链的使用方法,
如在Docker以及工具链的使用上遇到问题,请联系阿加犀FAE(阿加犀小助手)。
如在QuecPi Alpha硬件外设接口以及底层系统的使用上遇到问题,请参考 移远官方文档。
💡注意
请勿安装移远官网提供的docker镜像或者开源的docker镜像,否则无法使用阿加犀AI工具链。
1. 快速开始
1.1 环境准备
1.1.1 硬件准备
- 装有 Windows 10 以上的电脑
- QuecPi Alpha
- USB Type-A to Type-C 数据线(随板卡附赠)
- USB Type-A to Type-C 电源线(随板卡附赠,Type-A口可接入普通手机充电器接头)
1.1.2 软件准备
请参见工具安装章节,安装必要的工具以辅助开发者完成硬件产品的使用。
2. AidLux Docker使用
为了能快速与其他厂商板卡结合,阿加犀推出了AidLux 自定义docker方案,为开发者提供AI工具链。如下是Docker以及AI工具链的使用方法简介。
2.1 AidLux Docker使用方法
当开发者拿到设备并开箱后,根据快速开始章节中做好软硬件准备。按照如下步骤开机:
- 1、电源线接入板子POWER IN口。
- 2、数据线的Type-A口接入Windows电脑,Type-C口接入板子Type-C口。
- 3、在Windows电脑端,按Win+R,输入:cmd ,打开Terminal窗口。并输入如下命令检查设备是否被识别。
adb devices
- 4、设备识别到后,输入如下命令,通过adb进入到宿主机系统中。
adb shell
- 5、设备在发货前已预装了AidLux Docker,可使用如下命令查看。
docker images # 查看image
docker ps -a # 查看容器
- 6、通过命令进入到容器中:
docker exec -it aidlux bash
2.2 通过Web访问Aidlux Docker
除了通过adb登录系统后再通过docker命令进入到容器的方法之外,阿加犀还为AidLux Docker开发了一款Web Desktop,访问方法如下:
- 1、板卡接入网线,并获取到IP地址。可通过adb shell登录到系统查看IP地址。
adb shell # 通过adb登录到宿主机系统
ifconfig eth0 # 查看IP地址
- 2、打开浏览器,输入url:http://192.168.111.21:8000/ ,其中 192.168.111.21 应替换为实际的IP地址。
登录密码:aidlux
登录后,可点击下排第一个按钮打开终端,可用于命令行操作。
💡注意
在终端操作中,部分命令需要使用 sudo 命令提升权限,其密码为:aidlux
2.3 文件传输
2.3.1 使用SCP文件传输
SCP传输需要板卡正常联网, 在终端可输入命令查看IP地址:
ifconfig
- 在PC终端中使用下面命令,上传文件test.txt到 /home/aidlux/目录。
scp -r .\test.txt aidlux@192.168.111.21:/home/aidlux/
- 在 PC 终端中使用下面命令,下载文件到 PC 当前目录。
scp -r aidlux@192.168.111.21:/home/aidlux/test.txt ./
2.3.2 使用AidLux文件浏览器传输文件
使用AidLux文件浏览器传输需要板卡正常联网,若开发板的IP为192.168.110.194,如下步骤进行文件传输:
- 在浏览器中输入url: http://192.168.110.194:8000/ 登录到AidLux桌面环境,密码:aidlux。登录后可点击文件浏览器图标进入。
- 点击右上角上传按钮,传入文件或目录到/home/aidlux/目录下。
- 点击右上角下载按钮,将/home/aidlux/目录下的文件或目录下载到本地。
3. 机器人套件使用
3.1 机器人套件安装
请参见机器人软件安装指南章节进行安装相关软件。
3.2 Ubuntu Desktop访问指南
在使用机器人相关仿真软件时,阿加犀也为开发者提供了一套稳定的Ubuntu Desktop桌面系统。使用方法如下:
1、参照2.2 通过Web访问Aidlux Docker章节访问web桌面。
2、点击右下角Ubuntu Desktop按钮,启动该服务。
- 3、在Windows电脑上打开VNC连接工具,通过远程登录到Ubuntu Desktop 访问IP:板卡IP 访问端口:5902 访问密码:aidlux
4. AI工具链使用
阿加犀构建了一套完备的边缘端AI开发工具套件帮助开发者加速AI应用落地,其涵盖了底层系统到上层应用级SDK。 详见开发者指南
4.1 Aidlite SDK使用示例
4.1.1 SDK&API文档
4.1.2 aidlite_qnn
# 进入工程目录:
cd /usr/local/share/aidlite/examples/aidlite_qnn231/python
#运行测试工程脚本:
sudo python3 qnn_yolov5_multi.py 3
# 注意:1、sudo需要输入密码:aidlux 2、当前示例仅调用DSP
# 进入工程目录:
cd /usr/local/share/aidlite/examples/aidlite_qnn231/cpp
# 编译可执行程序:
sudo mkdir build && cd build
sudo cmake ..
sudo make
# 运行测试工程脚本:
sudo ./qnn_yolov5_multi 3
# 注意:1、sudo需要输入密码:aidlux 2、当前示例仅调用DSP
4.1.3 aidlite_snpe
# 进入工程目录:
cd /usr/local/share/aidlite/examples/aidlite_snpe229/python
# 运行测试工程脚本:sudo python3 snpe2_yolov5_multi.py 3
# 注意:1、sudo需要输入密码:aidlux 2、当前示例仅调用DSP
# 进入工程目录:
cd /usr/local/share/aidlite/examples/aidlite_snpe229/cpp
# 编译可执行程序:
sudo mkdir build && cd build
sudo cmake ..
sudo make
# 运行测试工程脚本:
sudo ./snpe2_yolov5_multi 3
# 注意:1、sudo需要输入密码:aidlux 2、当前示例仅调用DSP
4.1.4 aidlite_tflite
# 进入工程目录:
cd /usr/local/share/aidlite/examples/aidlite_tflite/python
# 运行测试工程脚本:
# 调用DSP:
sudo python3 tflite_yolov5_multi.py 3
# 注意:1、sudo需要输入密码:aidlux 2、当前示例仅调用DSP
# 进入工程目录:
cd /usr/local/share/aidlite/examples/aidlite_tflite/cpp
# 编译可执行程序:
sudo mkdir build && cd build
sudo cmake ..
sudo make
# 运行测试工程脚本:
# 调用CPU:
sudo ./snpe2_yolov5_multi 1
# 调用GPU:
sudo ./snpe2_yolov5_multi 2
# 调用DSP:
sudo ./snpe2_yolov5_multi 3
# 注意:1、sudo需要输入密码:aidlux
4.2 AidCV使用示例
4.2.1 AidCV SDK文档
# 进入工程目录:
cd /usr/local/share/aidcv/samples
# 运行测试工程脚本调用本地视频文件:
python3 test_video.py 0
# 注意:1、使用aidcv时,需要启用图形化桌面,如在aidlux desktop上执行aidcv后才能观看到弹出的窗口。
4.3 Aidstream-gst SDK使用示例
4.3.1 Aidstream-gst SDK文档
4.3.2 纯编解码示例
# 进入工程目录:
cd /usr/local/share/aidstream-gst/example/cxx
# 编译可执行文件:
sudo mkdir build && cd build
sudo cmake -DV4L2=ON ..
sudo make
# 运行测试工程脚本:
./start 1
# 注意:1、sudo需要输入密码:aidlux 2、需修改配置文件/usr/local/share/aidstream-gst/conf/aidstream-gst.conf 中输入输出地址。
4.3.3 编解码+算法示例
# 进入工程目录:
cd /usr/local/share/aidstream-gst/example/cxx
# 编译可执行文件:
sudo mkdir build && cd build
sudo cmake ..
sudo make
# 运行测试工程脚本:
./qnn_rtsp 1
# 注意:1、sudo需要输入密码:aidlux 2、需修改配置文件/usr/local/share/aidstream-gst/conf/aidstream-gst.conf 中输入输出地址。
5. 刷机指导
如果您不小心将宿主机系统破坏,请参照如下方法进行重新刷机。
刷机前,需要安装必要的工具以辅助您刷机。工具下载链接:软件工具安装
根据文档安装如下工具:
1、USB驱动
2、ADB工具
3、刷机工具
安装如上工具后,即可开始刷机。
5.1 镜像下载
镜像下载链接:QuecPi Alpha ROM
下载链接中存在三份文件:
1、移远LE系统:SG565DWFPARL1A01_BETA25080801BL01BP01K0M02V01_QDP_BETALP6.6.052.01.002V03.zip
2、阿加犀docker程序包:aid-docker.zip
3、AidLux docker镜像:aidlux_ql_ubun2204_full.30.tar.gz
5.2 刷机
5.2.1 切换到刷机模式
设备开机后,使用usb-typec线缆,连接电脑和设备。usb接电脑端,typec口接设备端。
连接好后,执行"adb devices",会列出已连接设备。如果没有,则多等待一会,或者拔插一下typec线缆再执行该命令。
- 切换到刷机模式,执行"adb shell reboot edl"。x
5.2.2 配置QFIL的Configuration项
- 打开QFIL,点击上方Configuration-FireHose Configuration选项。
- 在弹出的Download Configuration窗口里做如下设置:
Download Protocol 选择"0-Sahara"
Device Type 选择 "ufs"
勾选"Reset After Download"选项
其他选项均与如下截图保持一致即可。
- 配置完成后,点击OK进行保存。
5.2.3 选择刷机端口
点击"Select Port"选项,在弹出的窗口,选择出现的9008端口,点击"OK"。
经过前面章节中的切换,该窗口应该会自动出现9008端口选项,如未出现请断电重启后再次执行切换并等待其出现。
5.2.4 选择Build Type
- 找到"Select Build Type"项,选择"Flat Build"。
5.2.5 选择刷机文件
解压rom文件:SG565DWFPARL1A01_BETA25080801BL01BP01K0M02V01_QDP_BETALP6.6.052.01.002V03.zip
找到"Select Programmer"项,点击"Programmer Path"后的"Browse...",找到解压路径后,选择解压后的rom文件。
- 选择"prog_firehose_Qcm6490_ddr.elf",点击打开。
5.2.6 选择刷机xml文件
- 找到"Select Flat Build"项,点击下方的"Load XML...",选择刷机xml文件。
- 在弹出的窗口,选择所有的xml文件。
- 在选择xml文件后,会自动再弹出一个窗口。仍然全选所有的文件。
5.2.7 开始刷机
- 以上选项全部选择好后,点击Download开始刷机。
- 等待几分钟后,出现successful后表示刷机完成。
5.3 替换阿加犀docker程序包
由于硬件设备和底层系统均由第三方厂商提供,因此需要手动替换docker相关文件以满足阿加犀容器及AI工具链的使用,方法如下:
5.3.1 挂载文件系统
在Windows电脑端,按Win+R,在弹出的窗口输入”cmd”,打开终端窗口。在窗口中输入如下命令:
- 获取root权限
adb root
- 进入到板卡底层系统
adb shell
- 挂载文件系统
mount -o remount,rw /usr
5.3.2 上传阿加犀docker程序包
- 从windows电脑端找到下载好的aid-docker.zip文件,使用adb push到系统中,如下:
adb push aid-docker.zip /
- 上传后,进入到系统中解压该包,如下:
adb shell // 进入到系统中
unzip aid-docker.zip // 解压zip文件
- 解压后,可看到生成一个aid-docker的目录,进入到该目录中。
5.3.3 替换阿加犀docker程序包
- 替换docker文件前,需要停止系统原本的docker服务。系统下执行如下命令:
systemctl stop docker
- 替换/aid-docker/下的二进制文件
cp -r /aid-docker/docker* /usr/bin/
- 替换/aid-docker/conf/下的配置文件
cp -r /aid-docker/conf/* /lib/systemd/system/
- 重启docker服务
systemctl daemon-reload
systemctl restart docker
systemctl restart containerd
- 重启后,查看docker版本为1.0.70
docker -v
5.4 配置容器开机自启动
当前系统docker无法开机自启,为方便用户使用容器,可采用如下方法进行快速规避。
- 通过adb登录到系统下,打开/etc/profile文件,在末尾添加一行内容。
vi /etc/profile //打开文件
docker ps > /dev/null //引导开机自启动
- 输入完,保存后reboot重启即可。
6. Docker镜像加载与容器创建
如开发者在使用过程中,不小心将docker容器或者镜像损坏,可参考如下方法进行恢复。
6.1 Docker镜像加载
如果您仅仅是Docker容器被破坏,则不需要再进行image加载,仅参考xxxx章节恢复容器即可。如果您把image给删除了,则参考如下步骤进行恢复。
- 打开Windows电脑的命令提示符窗口,通过adb进入到系统下
adb shell
- 找到出厂时存放的docker镜像:路径:/aidlux_ql_ubun2204_full.30.tar.gz
find / -name aidlux_ql_ubun2204_full.30.tar.gz
- 进到镜像所在路径,执行加载命令
docker load < aidlux_ql_ubun2204_full.30.tar.gz
- 等待加载完成后,查看Image ID
docker images
- 记录好Image ID 并在Docker容器构建中使用
6.2 Docker容器创建
Docker镜像加载好后,还需要创建容器,具体操作如下:
- 打开Windows电脑的命令提示符窗口,通过adb进入到系统下
adb shell
- 查看Image ID,并记录ID
docker images
- 创建容器,注意将命令中的Image_ID修改成上一步所查询出的ID值
docker run -d --aidfunc --net host --restart always --dns 223.6.6.6 --name aidlux Image_ID
- 等待创建完成即可
7. FAQ
Q: AidLux 容器损坏,如何恢复?
A: 仅容器损坏,需要重新加载容器,请先使用命令删除原来的容器,然后再参照 6.2 Docker容器构建 章节重新创建。
docker stop aidlux //停止正在运行的aidlux容器
docker rm aidlux //删除aidlux容器
Q: Aidlux Docker镜像损坏,如何恢复?
A: 如果镜像损坏,需要重新加载镜像,请参照 6.1 Docker镜像加载, 6.2 Docker容器构建 章节重新加载镜像和创建容器。
Q: 底层系统被破坏,需要重新刷机怎么处理?
A: 请参照 第5、6章节重新刷机以及AidLux容器创建。