ARC6490 开发板产品手册
产品概述
ARC6490 开发板基于高通QCM/QCS 6490打造,支持CAN,支持EtherCAT,8核CPU,12TOPS独立NPU算力;具备灵活的操作系统选择,标配Android+Linux双系统融合并行,也可独立运行Android、Linux操作系统;接口丰富,支持多种网络连接模式,AI能力强劲,综合性能极高,能够满足协作机器人在不同应用场景下的智能化需求。
规格参数
Function 功能 | Parameter 参数 |
---|---|
Soc | Qualcomm® QCM/QCS 6490 |
CPU | 1 * Cortex A78 2.7GHz |
GPU | Adreno 643 812MHz |
独立算力 | 12TOPS INT8 |
内存 | 8G LPDDR4X |
储存 | 128G uMCP,支持TF储存卡扩展 |
尺寸 | 100 * 75mm |
系统 | AidLuxRT 融合系统(Android + LinuxRT) |
无线网络 | Wi-Fi 6 (WLAN 802.11ax) |
有线网络 | 1 * 1000Mbps 以太网 Mini IO |
视频输出 | 1 * HDMI2.0(1080P@60fps) |
摄像头 | 3 * MIPI D PHY,1 * MIPI C PHY |
音频 | I2S |
USB | 3 * USB2.0 TypeA |
通讯支持 | 2 * CAN |
其他接口 | 1 * 20 PIN GPIO,1 * 10 PIN GPIO |
电源 | 12V 3PIN 2mm |
接口描述
固件烧录(QFIL 方式)
请根据需求获取对应的固件版本,获取后将压缩包解压,参照以下步骤进行固件烧录。
设备上电开机,通过Type-C口连接设备到电脑。
- 打开高通QFIL工具,首先确认是否进入刷机模式,如Type-C口连接到电脑后,下载端口显示9008
则表示进入刷机模式,当机器没有出现下载端口的时候,可以执行如下指令切换到下载端口。
adb reboot edl
- 点击Configuration进入Download Configuration界面,Device Type选择ufs选项,勾选Reset After Download选项,点击OK按钮返回主界面。
- Select Port选择9008端口,Select Build Type选择Flat Build选项,然后点击Browse按钮选择需要刷机的ROM版本中的prog_firehose_ddr.elf文件。
- 点击Load xml按钮load XML文件,选择rawprogram0_new.xml,再选择patch0.xml,如下图:
- 点击Download按钮下载即可,当log信息提示Download Succeed ,则表示刷机成功,刷机成功后,设备自动重启,至此刷机完成。
安装AidLux APP
-
首先需要在电脑中配置ADB环境变量。
-
请根据需求获取对应的AidLux APP版本,获取后参照以下步骤进行AidLux APP安装。
-
设备上电开机,通过Type-C口连接设备到电脑。
-
DOS窗口执行adb devices命令查看电脑是否能够识别到设备。
- DOS窗口执行如下命令安装AidLux APP,其中D:\aidlux_2.0.0.x.x.apk为apk文件的路径和文件名称,根据实际修改。
adb install D:\aidlux_2.0.0.x.x.apk
- 出现Success时表示AidLux APP安装成功,此时可以在设备安卓界面中点击AidLux APP图标进行初始化和运行。
- AidLux系统初始化完成后,可参考https://v2.docs.aidlux.com/docs/aidluxi/进行使用。
AidLite SDK
AidLite SDK for Python
https://v2.docs.aidlux.com/sdk-api/aidlite-sdk/aidlite-python
AidLite SDK for Android
https://v2.docs.aidlux.com/sdk-api/aidlite-sdk/aidlite-android
AidLite SDK for C++
https://v2.docs.aidlux.com/sdk-api/aidlite-sdk/aidlite-c++
AidStream SDK
简介
AidStream 是用来构建流媒体应用的视频框架,其目标是要简化视频+AI应用程序的开发中需要插入算法的程序构建。 AidStream 基于pipeline的概念,aidstream中的pipeline元素也非常简单,只分为输入端和输出端,使用函数调用即可,且在pipeline开始后时,sdk可以在输入端和输出端之间通过回调函数获取RGB数据,在回调函数中可以将此RGB数据经算法处理后再返回给pipeline,经处理后的RGB数据会继续pipeline的后续输出过程。 处理流程:
AidStream SDK for python
简介
AidStream 是用来构建流媒体应用的视频框架,其目标是要简化视频+AI应用程序的开发中需要插入算法的程序构建。 AidStream 基于pipeline的概念,用户需定义输入流与输出流,并通过回调函数处理从输入流中截取的RGB数据,并通过输出流输出处理后的RGB数据。
功能说明
AidStream SDK 为开发者提供以下功能:
· 拉取、推送rtsp流。
· 读取本地文件。
· 渲染图形到 wayland 桌面。
开发环境
AidStream 仅适用于 AiBox6490。
工作流程
导入
import aidstreamer_gst
快速使用
这是一个使用了全部 AidStream API 的例子
import cv2
from multiprocessing import Process
import aidstreamer_gst
def callback(frame):
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
retrun frame
StreamInput0 = aidstreamer_gst.StreamInputRtsp("rtsp://192.168.0.1:554/test_stream")
StreamInput1 = aidstreamer_gst.StreamInputFile("/home/test.mp4")
StreamOutput0 = aidstreamer_gst.StreamOutputRtspsink("rtsp://192.168.0.1:554/push_stream")
StreamOutput1 = aidstreamer_gst.StreamOutputWaylandsink(0,0,1920,1080)
thread0 = Process(target = aidstreamer_gst.StartStream, args = [StreamInput0, StreamOutput0, "example0", callback])
thread1 = Process(target = aidstreamer_gst.StartStream, args = [StreamInput1, StreamOutput1, "example1", callback])
thread0.start()
thread1.start()
thread1.join()
API 详细说明
类 StreamInputRtsp
初始化 | StreamInputRtsp(rtsp_url) | |||
---|---|---|---|---|
参数 | 参数名 | 类型 | 默认值 | 说明 |
rtsp_url | str | 无默认值 | rtsp 视频流拉取地址。 | |
返回值 | 一个完成了初始化的 StreamInputRtsp 实例。 |
初始化一个输入流对象,该输入流对象拉取一个 rtsp 视频流,并进行硬件解码。
使用例
import aidstreamer_gst
StreamInput = aidstreamer_gst.StreamInputRtsp("rtsp://192.168.0.1:554/test_stream")
类 StreamInputFile
初始化 | StreamInputFile(file_path) | |||
---|---|---|---|---|
参数 | 参数名 | 类型 | 默认值 | 说明 |
file_path | str | 无默认值 | 本地文件路径。 | |
返回值 | 一个完成了初始化的 StreamInputFile 实例。 |
初始化一个输入流对象,该输入流对象读取一个本地文件,并进行硬件解码。
使用例
import aidstreamer_gst
StreamInput = aidstreamer_gst.StreamInputFile("/home/test.mp4")
类 StreamOutputRtspsink
初始化 | StreamOutputRtspsink(rtsp_url) | |||
---|---|---|---|---|
参数 | 参数名 | 类型 | 默认值 | 说明 |
rtsp_url | str | 无默认值 | rtsp 视频流推送地址。 | |
返回值 | 一个完成了初始化的 StreamOutputRtspsink 实例。 |
初始化一个输出流对象,该输出流编码图形,并以 rstp 协议推流到指定地址。
使用例
import aidstreamer_gst
StreamOutput = aidstreamer_gst.StreamOutputRtspsink("rtsp://192.168.0.1:554/push_stream")
类 StreamOutputWaylandsink
初始化 | StreamOutputWaylandsink(x, y, w, h) | |||
---|---|---|---|---|
参数 | 参数名 | 类型 | 默认值 | 说明 |
x | int | 无默认值 | 矩形区域左上角的横坐标。 | |
y | int | 无默认值 | 矩形区域左上角的纵坐标。 | |
w | int | 无默认值 | 矩形区域的宽。 | |
h | int | 无默认值 | 矩形区域的高。 | |
返回值 | 一个完成了初始化的 StreamInputFile 实例。 |
初始化一个输出流对象,该输出流在 wayland 桌面的指定的矩形区域渲染图形。描述矩形区域使用的坐标系以 wayland 桌面左上角为原点,向右为横轴的正方向,向下为纵轴的正方向。
此处有图示。
使用例
import aidstreamer_gst
StreamOutput = aidstreamer_gst.StreamOutputWaylandsink(0,0,1920,1080)
StartStream
API | StartStream(StreamInput, StreamOutput, uname, callback) | |||
---|---|---|---|---|
参数 | 参数名 | 类型 | 默认值 | 说明 |
StreamInput | StreamInputRtsp类 或 StreamInputFile 类 | 无默认值 | 配置 pipeline 的输入流。 | |
StreamOutput | StreamOutputRtspsink类 或 StreamOutputWaylandsink类 | 无默认值 | 配置 pipeline 的输出流。 | |
uname | str | 无默认值 | 工作流名称。 | |
callback | function | 无默认值 | 回调函数。 回调函数需遵循该格式: call_back(frame) -> numpy.array。 该回调函数接收一个输出 frame,为解码后的 三维 uint8 类型 numpy数组,颜色编码方式为 RGB。该函数需要返回一个与输出类型相同,尺寸相同的numpy数组。返回的 numpy 数组使用 RBG 进行颜色编码。 | |
返回值 | None |
使用完成了初始化的输入流对象和输出流对象 以及回调函数构建 pipeline,构建完成后会阻塞当前进程开始工作。
使用例
import cv2
import aidstreamer_gst
def callback(frame):
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
retrun frame
uname = "stream0"
StreamInput = aidstreamer_gst.StreamInputFile("/home/test.mp4")
StreamOutput = aidstreamer_gst.StreamOutputWaylandsink(0,0,1920,1080)
aidstreamer_gst.StartStream(StreamInput, StreamOutput, uname, callback)
AidStream SDK for C++
快速上手
读取文件显示,并获取后在回调函数中将把rgb数据的前三分之一全部替换为0,即三分之一置为黑色,最后显示
#include "StreamBuild.h"
#include "StreamInputFile.h"
#include "StreamOutputWaylandsink.h"
CallBack callback;
void inter(guint8 *data, gsize size)
{
//获取rgb宽度
std::cout<<"rgb width:"<<callback.width<<std::endl;
//获取rgb高度
std::cout<<"rgb height:"<<callback.height<<std::endl;
//把rgb数据的前三分之一全部替换为0
//rgb数据是在内存中,当函数执行完后,输出端会继续获取该内存段的数据往后执行,所以直接修改data指向的数据
gsize half_size = size / 3;
memset(data, 0, half_size);
}
int main(int argc, char *argv[])
{
//设置回调
callback.inter = inter;
//设置打印log
callback.log = true;
//设置读取文件的输入端
StreamInputFile streamInputFile("/usr/local/share/aidstreamer-gst/example/datas/test_kobe.mp4 ");
StreamInputFile *streamInputFilep = &streamInputFile;
//设置Wayland 显示的输出端
StreamOutputWaylandsink streamOutputWaylandsink(0 ,0, 640, 480);
StreamOutputWaylandsink *streamOutputWaylandsinkp = &streamOutputWaylandsink;
//启动aidstream
startStream(streamInputFilep, streamOutputWaylandsinkp, "aidstream", &callback);
return 0;
}
读取rtsp流显示,不做任何处理,最后显示
CallBack callback;
int main(int argc, char *argv[])
{
//设置读取文件的输入端
StreamInputRtsp streamInputRtsp("rtsp://admin:aidlux123@192.168.110.234:554/h265/ch1/main/av_stream");
StreamInputRtsp *streamInputRtspp = &streamInputRtsp;
//设置Wayland 显示的输出端
StreamOutputWaylandsink streamOutputWaylandsink(0 ,0, 640, 480);
StreamOutputWaylandsink *streamOutputWaylandsinkp = &streamOutputWaylandsink;
//启动aidstream
startStream(streamInputRtspp, streamOutputWaylandsinkp, "aidstream", &callback);
return 0;
}
启动函数
fun startStream(input, out, name, callback);
头文件:StreamBuild.h
成员变量名 | 类型 | 描述 |
---|---|---|
streamInput | StreamInput* | AidStream输入端 |
streamOutput | StreamOutput* | AidStream输出端 |
name | std::string | pipeline名称(主要做标识用) |
callback | CallBack* | 回调函数和其他参数 |
CallBack结构体
struct CallBack{bool log=false;intercept inter;int width;int height;};
成员变量名 | 类型 | 描述 |
---|---|---|
log | bool | 是否打印log |
inter | intercept | RGB回调函数 |
width | int | RGB图片的宽度 |
height | int | RGB图片的高度 |
StreamInputFile
class StreamInputFile(path)
类型:输入端
描述:读取本地Mp4文件
成员变量名 | 类型 | 描述 |
---|---|---|
path | std::string | Mp4地址 |
StreamInputRtsp
class StreamInputRtsp(url);
类型:输入端
描述:读取rtsp流
成员变量名 | 类型 | 描述 |
---|---|---|
path | std::string | rtsp拉流地址 |
StreamOutputRtspsink
class StreamOutputRtspsink(path);
类型:输出端
描述:输出到rtsp服务器
成员变量名 | 类型 | 描述 |
---|---|---|
url | std::string | rtsp推流地址 |
StreamOutputWaylandsink
class StreamOutputWaylandsink(x,y,width,height);
类型:输出端
描述:显示到wayland桌面
成员变量名 | 类型 | 描述 |
---|---|---|
x | int | 窗口左上角位置x轴 |
y | int | 窗口左上角位置y轴 |
width | int | 窗口宽度 |
height | int | 窗口高度 |