跳到主要内容

ARC6490 开发板产品手册

产品概述

ARC6490 开发板基于高通QCM/QCS 6490打造,支持CAN,支持EtherCAT,8核CPU,12TOPS独立NPU算力;具备灵活的操作系统选择,标配Android+Linux双系统融合并行,也可独立运行Android、Linux操作系统;接口丰富,支持多种网络连接模式,AI能力强劲,综合性能极高,能够满足协作机器人在不同应用场景下的智能化需求。

规格参数

Function 功能Parameter 参数
SocQualcomm® QCM/QCS 6490
CPU

1 * Cortex A78 2.7GHz
3 * Cortex A78 2.4GHz
4 * Cortex A55 1.9GHz

GPUAdreno 643 812MHz
独立算力12TOPS INT8
内存8G LPDDR4X
储存128G uMCP,支持TF储存卡扩展
尺寸100 * 75mm
系统

AidLuxRT 融合系统(Android + LinuxRT)
Ubuntu 20.04(支持定制)

无线网络

Wi-Fi 6 (WLAN 802.11ax)
蓝牙 BT 5.1
蜂窝4G/5G(仅限于QCM6490)
GPS定位/Beidou/Galileo/Glonass(仅限于QCM6490)

有线网络1 * 1000Mbps 以太网 Mini IO
视频输出1 * HDMI2.0(1080P@60fps)
摄像头3 * MIPI D PHY,1 * MIPI C PHY
音频I2S
USB

3 * USB2.0 TypeA
1 * USB3.0 with DP1.4(OTG)

通讯支持

2 * CAN
1 * RS485
1 * SPI 5
1 * UART(可转RS232)

其他接口1 * 20 PIN GPIO,1 * 10 PIN GPIO
电源12V 3PIN 2mm

接口描述

alt text

alt text

固件烧录(QFIL 方式)

请根据需求获取对应的固件版本,获取后将压缩包解压,参照以下步骤进行固件烧录。

设备上电开机,通过Type-C口连接设备到电脑。

  1. 打开高通QFIL工具,首先确认是否进入刷机模式,如Type-C口连接到电脑后,下载端口显示9008
    则表示进入刷机模式,当机器没有出现下载端口的时候,可以执行如下指令切换到下载端口。
    adb reboot edl

alt text

  1. 点击Configuration进入Download Configuration界面,Device Type选择ufs选项,勾选Reset After Download选项,点击OK按钮返回主界面。

alt text

  1. Select Port选择9008端口,Select Build Type选择Flat Build选项,然后点击Browse按钮选择需要刷机的ROM版本中的prog_firehose_ddr.elf文件。

alt text

  1. 点击Load xml按钮load XML文件,选择rawprogram0_new.xml,再选择patch0.xml,如下图:

alt text

alt text

  1. 点击Download按钮下载即可,当log信息提示Download Succeed ,则表示刷机成功,刷机成功后,设备自动重启,至此刷机完成。

alt text

安装AidLux APP

  1. 首先需要在电脑中配置ADB环境变量。

  2. 请根据需求获取对应的AidLux APP版本,获取后参照以下步骤进行AidLux APP安装。

  3. 设备上电开机,通过Type-C口连接设备到电脑。

  4. DOS窗口执行adb devices命令查看电脑是否能够识别到设备。

alt text

  1. DOS窗口执行如下命令安装AidLux APP,其中D:\aidlux_2.0.0.x.x.apk为apk文件的路径和文件名称,根据实际修改。
adb install D:\aidlux_2.0.0.x.x.apk
  1. 出现Success时表示AidLux APP安装成功,此时可以在设备安卓界面中点击AidLux APP图标进行初始化和运行。

alt text

alt text

alt text

alt text

  1. 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的后续输出过程。 处理流程:

alt text

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
成员变量名类型描述
streamInputStreamInput*AidStream输入端
streamOutputStreamOutput*AidStream输出端
namestd::stringpipeline名称(主要做标识用)
callbackCallBack*回调函数和其他参数

CallBack结构体

struct CallBack{bool log=false;intercept inter;int width;int height;};
成员变量名类型描述
logbool是否打印log
interinterceptRGB回调函数
widthintRGB图片的宽度
heightintRGB图片的高度

StreamInputFile

class StreamInputFile(path)
类型:输入端
描述:读取本地Mp4文件
成员变量名类型描述
pathstd::stringMp4地址

StreamInputRtsp

class StreamInputRtsp(url);
类型:输入端
描述:读取rtsp流
成员变量名类型描述
pathstd::stringrtsp拉流地址

StreamOutputRtspsink

class StreamOutputRtspsink(path);
类型:输出端
描述:输出到rtsp服务器
成员变量名类型描述
urlstd::stringrtsp推流地址

StreamOutputWaylandsink

class StreamOutputWaylandsink(x,y,width,height);
类型:输出端
描述:显示到wayland桌面
成员变量名类型描述
xint窗口左上角位置x轴
yint窗口左上角位置y轴
widthint窗口宽度
heightint窗口高度