【聆思CSK6视觉AI开发套件试用】Win11下安装全过程处理兼容性问题以及实现亮灯AI头肩检测

news2025/1/16 9:08:54

本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站。作者:Wordiansom

Win11上并且安装在其他盘的时候会出现的问题坑。。。。。。(能用win10就用win10)。

1. 晚拿到的开发板套件

2. 开始搭建环境(问题开始的地方)

2.1 安装 lisa zep 工具,并初始化 CSK6 SDK 所需的开发环境。

开发环境:Windows11 21H2
通过下面连接下载CSK6 SDK,

https://castor.iflyos.cn/castor/v3/lisaPluginZephyr/download?platform=windows

选择安装在其他盘(我安装在了D盘)

一直等待安装结束。

2.2 在使用lisa info zep命令之后出现如下问题

使用诊断命令lisa zep doctor之后出现问题

即使pip更新之后依旧是旧版本的pip,这仍然会导致安装环境出现警告,需要更新pip使用新版本的,这个警告就不会出现了,但是会出现依旧使用旧版本的问题,需要卸载原有的版本,然后后安装匹配的版本,就不会出现这样的警告了。
由于操作环境是win11各种问题还有兼容性,处理这些也费劲(能用win10就win10吧。。。。。。)
在Git安装目录下找到git.exe,赋予兼容性运行。

更新之后就需要更新.gitconfig文件
手工编辑.gitconfig文件(一般在c:\Users\你的windows用户名\),在[safe]节点下加入:

directory = D:/SoftWare/LISTENAI/LISA/csk-sdk/zephyr

注意这个directory会在诊断中出现问题所在上图中已经标出来了。需要将他直接加在这个directory中。
然后再lisa info zep出现下面的说明安装成功了

3. 启动板子的第一个应用程序

3.1 新建项目工程

在HelloWorld最简项目的基础上实现LED灯的控制操作,(一定是要在跑通helloworld的项目之后,会生成对应的文件,否则会出现很多文件不会有,后面无法添加。若没有可查看一下文档,其实就是在基础文件编译的条件下进行修改。文档连接:

https://docs.listenai.com/chips/600X/application/getting_start

)需要新建一个 HelloWorld 项目,创建项目指令:lisa zep create
选中helloworld之后会出现修改项目名称,(可修改成LED) ,确认之后

3.2 组件配置

LED灯控制的应用需要通过GPIO来控制,故需要在项目配置文件 应用根目录/prj.conf 文件中添加GPIO配置,将下面的复制进去即可。

# 打开GPIO配置
CONFIG_GPIO=y

3.3 CMake配置

应用项目下的C文件通过CMakeLists.txt配置进行编译,如下所示:

target_sources(app PRIVATE src/main.c)

这部分其实在对应文件已经生成。

3.4 设备树配置

在app/boards/目录下增加csk6011a_nano.overlay设备树配置文件并添加led的GPIO配置,具体内容如下:(这是原文中的,你会发现找不到app文件夹,app就是你自己使用的工程目录,而且需要自己建立app/boards目录,再添加csk6011a_nano.overlay文件在该目录下,这里原文中没有说清楚。。。。)
/ /根节点/

/*定义别名为led0的gpio设备树*/ 
{
    aliases {
        led0 = &board_led_0_label;/* led0别名映射到led0设备树node label */
};

{
    leds {
        compatible = "gpio-leds";/* 设置led设备树的ymal绑定文件 */
        board_led_0_label: board_led_0_nodeid { /* node label和node id,皆可自定义命名 */
                gpios = <&gpiob 6 GPIO_ACTIVE_LOW>; /* GPIO逻辑电平模式设置 */
                label = "User LED1"; /* 节点的 label 属性,通过传入device_get_binding()接口可以获取gpio设备实例 */
        };
};

3.4 将main.c文件修改成

#include <zephyr/zephyr.h>
#include <zephyr/drivers/gpio.h>

/* 1000 msec = 1 sec */
#define SLEEP_TIME_MS   1000

/* 通过别名获取 "led0" 设备树 node id */
#define LED0_NODE DT_ALIAS(led0)

/* 通过 node id 获取 led0 设备树信息 */
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);

void main(void)
{
printk("Hello World! %s\n", CONFIG_BOARD);

int ret;
/* 检查硬件设备是否就绪 */
if (!device_is_ready(led.port)) {
    return;
}

/* 将GPIO配置为输出并将其初始化为逻辑电平1 */
ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
if (ret < 0) {
    return;
}

while (1) {
    /* GPIO电平反转控制 */
    ret = gpio_pin_toggle_dt(&led);
    if (ret < 0) {
        return;
    }
    k_msleep(SLEEP_TIME_MS);
}
}

3.4 编译

在helloworld根目录下通过以下指令完成编译:

lisa zep build -b csk6011a_nano

-b 后的参数为开发板对应的板型,本章节使用的开发板对应的板型为:csk6011a_nano 。

3.5 烧录

将开发板的DAPLink USB通过USB数据线连接PC,通过烧录指令烧录:

lisa zep flash --runner pyoc

效果(闪图)如下:

可以开始新的卡bug之路了。

4. 开始图像识别应用

4.1 获取源码

获取并初始化Sample与SDK执行以下命令后,将拉取 Sample 项目 和SDK到本地并自动完成初始化,注意代码仓在本地存放的路径不能有中文名称,否则容易引起错误;

lisa zep create --from-git          https://cloud.listenai.com/zephyr/applications/app_algo_hsd_sample_for_csk6.git

时间有点长,慢慢等待。

4.2 修改配置

打开PC端图像预览功能

打开项目的根目录下找到的prj.conf文件,将CONFIG_WEBUSB=n改为CONFIG_WEBUSB=y 。

4.3 编译固件

lisa zep build -b csk6011a_nano

若需抛弃已有编译产物,进行全量编译(Rebuild这个在所有项目里面都可以使用到)

4.4 烧录应用程序

lisa zep flash

4.5 烧录资源

前面完成了应用程序烧录,接下来将算法运行所需的资源进行烧录,可以在app_algo_hsd_sample_for_csk6/resource/res.overlay 文件中看到这些资源所占用的分区。

4.6 使用串口烧录

使用 USB 线接上 DAPLink USB 口进行烧录,依次执行以下命令,完成资源的烧录。
Windows下

lisa zep exec cskburn -s \\.\COMx -C 6 0x500000 .\resource\res.bin -b 748800

其中的 COMx 代表开发套件连接到 PC 上对应的串口号。例如:COM7
烧录之后会出现下面的问题:

无论怎么使用烧录都是这样的,需要另外一根USB先连接,文中根本没有提到,如果一根线可能出现供电不足,出现烧录失败,反复尝试依旧失败。再多加入一根线之后,烧录就成功了。

4.7 查看结果

连接开发板的 DAPLink USB ,使用串口调试工具打开 COM 口(波特率为 115200 ),使用开发板上的 reset 按键进行复位后,即可看到日志输出。(瞎看结束之后一定要记得关闭串口,后面有坑。。。。。)

*** Booting Zephyr OS build 36309bca986d  ***
[00:00:03.185,000] <inf> hsd: Setup resource [head_shoulder] which in <0x18500031,0xa6ce0>
[00:00:03.187,000] <inf> hsd: Setup resource [gesture] which in <0x185a6d11,0x132448>
- Device name: DVPI
[00:00:03.315,000] <inf> hsd: fmt: [VYUY] width [640] height [480]
[00:00:03.316,000] <inf> hsd: Alloc video buffer: 614400
[00:00:03.317,000] <inf> hsd: Alloc video buffer: 614400
[00:00:03.318,000] <inf> hsd: Alloc video buffer: 614400
Heap at 0x305c9530 contains 42841 units in 16 buckets

  bucket#    min units        total      largest      largest
             threshold       chunks      (units)      (bytes)
  -----------------------------------------------------------
       15        32769            1        42831       342640

342640 free bytes, 0 allocated bytes, overhead = 96 bytes (0.0%)
[00:00:03.515,000] <inf> main: head shoulder cnt: 1
[00:00:03.516,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.608,000] <inf> main: head shoulder cnt: 1
[00:00:03.609,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.700,000] <inf> main: head shoulder cnt: 1
[00:00:03.701,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.792,000] <inf> main: head shoulder cnt: 1
[00:00:03.793,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.884,000] <inf> main: head shoulder cnt: 1
[00:00:03.885,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.976,000] <inf> main: head shoulder cnt: 1
[00:00:03.976,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:04.068,000] <inf> main: head shoulder cnt: 1
[00:00:04.069,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:04.159,000] <inf> main: head shoulder cnt: 1

5. PC 查看工具

5.1 开启 PC 调试模式

开启 PC 调试模式后,设备会在输出算法识别结果的同时,将图像压缩传至 PC 端供用户预览。
在 app_algo_hsd_sample_for_csk6 项目的根目录下找到 prj.conf 文件,将其中的 CONFIG_WEBUSB=n 改为 CONFIG_WEBUSB=y ,再进行固件编译、烧录。如已开启,则跳到下一步;

lisa zep build -b csk6011a_nano
lisa zep flash

5.2 PC 工具获取

拉取PC工具项目到本地

git clone   https://cloud.listenai.com/zephyr/applications/csk_view_finder_spd.git

5.3 打开工具

使用 Chrome 内核的浏览器,打开项目 csk_view_finder_spd/src 目录下的 index.html, driver.html, usage.html文件都需要仔细查看下,里面是指南少走弯路;(注意一定要使用Chrome 内核的浏览器,我是用搜狗浏览器时钟无法连接设备,读取的设备号也是乱码)

5.4 安装驱动(坑,浪费时间)

会发现设备管理下面没有安装驱动,开始打驱动,这里会出现兼容问题,安装过程简单,就是好费时间。

工具csk_view_finder_spd/src 目录下有指引html文件,可以看着按照顺序来。
我这边在win11的环境下安装等待了很长时间,在安装驱动文件的时候一定要使用管理员方式打开,结果显示操作超时。

但是在设备管理器中发现驱动是安装成功的,驱动的设备名称和设别号都是正常工作,但是始终连接不上设备,都没有提示。后来在驱动的管理的页面发现上面提示需要重新启动。在一个就是在安装驱动的时候一定不能开串口助手连接查看返回日志,这样会出现串口设备占用,导致通信时间过长,使得安装时间非常长。
重启之后,对驱动进行重新安装,就可以安装成功了,依然管理员权限使用,否则就会出现安装时间过长,最后安装成功。

6. 开始使用

6.1 使用工具查看

使用TypeC数据线连接 CSK6 USB 接口至电脑,若在PC端可看到如下弹窗提示,说明设备已被识别成功

6.2 连接设备

点击选择设备,看到匹配成功的。

连接上就会出现如下的画面:

6.3 下载数据

点击开始记录之后,在结束记录后会自动下载记录数据到本地电脑上面

这个压缩文件里面都是识别的用到的文件,

pic目录下都是记录过程中图像文件

rect文件下都是记录下来的头肩识别到的数据,每一个照片里面都标记了识别出头肩的方框,

recognize.json文件这里面存储的都是头肩的坐标文件,文件详情如下,详细记录下了头肩方框的X,Y,坐标还有方框的大小数据,还有识别到的概率值,可以在这里面查找对应的数据进一步使用,就比如在宣讲会PPT中说到的云台人脸跟随的设备,这是百万级的应用,结合这些数据进行进一步的使用。

7. 总结

整个过程下来,可能不同的配置环境会出现不同问题,但是总体来说这些还是比较友好的,就是处理系统的兼容问题,以及安装过程中出现的各种问题。AI性能方面,可能在由于为了帧率的问题,将分辨率设置的非常低,很模糊,但是是被框可以很好的跟随人的位置变化,实时效果可以说随时不错的了。摄像头距离方面,稍微远离就会出现识别不到,可能跟分辨率有关系,可以通过综合性能权重来权衡这个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

冲量在线携手中国电信研究院、北京电信和海光信息打造的数信链网的入选2022“星河”隐私计算标杆案例

为促进大数据技术产品及相关产业发展&#xff0c;加快培育数据要素市场、充分发挥数据作为生产要素的独特价值&#xff0c;树立行业标杆榜样力量&#xff0c;中国信息通信研究院、中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)连续六年共同组织大数据“星河&#xf…

Java8 Stream流

目录Java8 Stream流一、Stream概述二、Stream 的创建&#xff08;4种方式&#xff09;参考地址&#xff08;表示感谢&#xff09;&#xff1a;Java8 Stream流 一、Stream概述 Stream API说明 Java8中有两大最为重要的改变。第一个是 Lambda 表达式&#xff1b;另外一个则是 St…

Gradle Plugin的开发及发布

Gradle Plugin的开发及发布前言插件的开发学习阶段&#xff08;build.gradle脚本&#xff09;开发阶段&#xff08;buildSrc&#xff09;PluginTaskExtension发布阶段&#xff08;独立module&#xff09;发布到本地发布到MavenCentral准备sonatype账号创建pgp证书配置sonatype和…

数据结构与算法基础(王卓)(6):带尾指针(单向)循环链表的合并;双链表及其插入和删除的详细操作

带尾指针&#xff08;单向&#xff09;循环链表的合并 PPT(157)&#xff1a; 操作前初始设定预设的条件​​​​我们要做的&#xff0c;即&#xff1a; 让A表尾节点指向B表首结点&#xff0c;让B表尾节点指向A表首结点&#xff1a; Project 1&#xff1a; Status 合并链表(…

NVIDIA NCCL 源码学习(九)- 单机内ncclSend和ncclRecv的过程

上节介绍了通信链路的建立过程&#xff0c;本节介绍下单机内部ncclSend和ncclRecv的运行过程。 单机内的通信都是通过kernel来进行的&#xff0c;所以整个通信的过程可以分为两步&#xff0c;第一步是准备kernel相关的参数&#xff0c;第二步是实际执行kernel的过程。 为方便…

闯关(贪心)

某综艺频道推出了一个闯关活动。 活动一共包含 n 个关卡&#xff08;编号 1∼n&#xff09;&#xff0c;其中 m 个关卡为特殊关卡。 每个关卡都有一个通关分数&#xff0c;其中第 i 个关卡的通关分数为 ai。 挑战者可以自由决定所有关卡的具体挑战顺序&#xff0c;并且每通过…

【工具类】Elasticsearch的HTTP客户端(Java)

一、介绍 1. 原理 Java基于Http请求操作ES&#xff0c;与Kibana上的操作一致。 Kibana上的dsl与Http的关系&#xff1a; GET、POST等同于HTTP的POSTPUT 等同于HTTP的PUTDELETE 等同于HTTP的DELETE 如图 该DSL可转化为HTTP请求 POST ip:port/docwrite/_search 请求体为&…

Mysql online DDL工具:gh-ost

gh-ost特点&#xff1a; 1、不使用触发器。 在gh-ost出现之前第三方MySQL DDL工具均采用触发器的方式进行实现&#xff0c;包括前面percona的pt-osc&#xff0c;Facebook的OSC等等。而gh-ost采用的机制和他们完全不同&#xff1a;它通过MySQL binlog来同步数据。 gh-ost会伪装…

PowerToys 微软效率工具包 使用指南

PowerToys 微软效率工具包 使用教程 Microsoft PowerToys 是一组实用程序&#xff0c;供高级用户调整和简化其 Windows 10 和 11 体验以提高工作效率。 下载 PowerToys⇲ 安装教程 1.双击文件运行 点击我同意 2.等待下载安装完成 3.安装完成 使用指南 Always on Top 通…

FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D)

本教程将在Unity3D中混合Optitrack与数据手套的数据流&#xff0c;在人体运动的基础上&#xff0c;添加双手手指部分的运动。 双手手背的角度仍由Optitrack提供&#xff0c;数据手套提供双手手指的角度。 01 客户端软件 分别安装MotiveBody与MotionVenus并校准人体与数据…

Kafka-Topic创建源码分析

Kafka-Topic创建源码分析 在kafka中,创建topic通过使用kafka-topics.sh脚本或者直接调用AdminClient对外提供的adminApi来进行创建. 即使是使用kafka-topics.sh&#xff0c;其最终会通过生成并调用AdminClient来进行处理. 0,创建topic流程图 1,创建topic示例代码 通过引入A…

工作两年半,终于学会了Jenkins部署Maven项目

上期我们讲了Linux部署Jenkins Linux安装Jenkins&#xff08;Java11最新版&#xff09; 这期我们来讲的是使用Jenkins部署一个maven项目 文章目录&#x1f46e;所需要的环境&#xff08;必须要有&#xff0c;否则不能进行下一步&#xff09;&#x1f64b;第一步&#xff0c;安装…

02 运算符

目录 第一章&#xff1a;概述 第二章&#xff1a;算术运算符 2.1 概述 2.2 应用示例 2.3 号的两种用法 2.4 自增自减运算 2.4.1 概述 2.4.2 单独使用 2.4.3 复合使用 第三章&#xff1a;赋值运算符 3.1 概述 3.2 应用示例 第四章&#xff1a;关系运算符&#xff0…

vue3.0找不到模块“./App.vue”或其相应的类型声明

vue3报错提示 找不到模块“/App.vue”或其相应的类型声明 情况一、vue3.0js 报错原因&#xff1a;javascript只能理解.js文件&#xff0c;无法理解.vue文件。 解决方案&#xff1a;根目录新建jsconfig.json {"compilerOptions": {"baseUrl": "./&qu…

被取消的AP考试到底是什么嘞?

最近&#xff0c;好多考试都延期或取消了&#xff0c;美国大学理事会&#xff08;College Board&#xff09;也发布公告&#xff0c;宣布受疫情影响&#xff0c;上海、北京等地的AP考试正式取消&#xff0c;不提供线上考试的机会&#xff0c;而且不会安排后续补考。 这条消息惊…

芯片漫游指南(5)-- UVM寄存器

目录1.寄存器模型概览1.1 概述1.2 uvm_reg相关概念1.3 MCDF寄存器模型1.4 寄存器建模1.5 模型使用流程2.寄存器模型集成2.1 总线UVC的实现2.2 纵向UVC的示例3.寄存器模型的常规方法3.1 mirror、desired和actual value3.2 prediction的分类3.3 uvm_reg的访问方法3.4 mem与reg的联…

python扩展实现方法--python与c混和编程

大部分的Python的扩展都是用C语言写的&#xff0c;但也很容易移植到C中。 一般来说&#xff0c;所有能被整合或者导入到其它python脚本的代码&#xff0c;都可以称为扩展。 扩展可以用纯Python来写&#xff0c;也可以用C或者C之类的编译型的语言来扩展。 就算是相同的架构的两…

Spring Boot学习篇(三)之通用mapper的使用(oracle版)

Spring Boot学习篇(三)之通用mapper的使用(oracle版) 1 配置pom.xml <parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.7.2</version></parent> <de…

概念辨析|电子文件单轨制与电子档案单套制

电子文件单轨制和电子档案单套制是档案业务中的重要概念&#xff0c;在建设数字中国的时代背景下&#xff0c;厘清“套”与“轨”的区别和联系是革新档案工作的基础 产生背景 随着信息技术的不断发展和政务信息化的持续推进&#xff0c;电子文件逐渐在业务工作中大量出现&…

从工具到实践:如何在GitHub上保障开源项目安全?

1998年&#xff0c;Christine Peterson创造了 “开源软件”这个词。她解释道&#xff1a;“这是刻意为之&#xff0c;为了让其他人更容易理解这个领域”。同年&#xff0c;O’Reilly组织了首届“开源峰会”。 开源软件受到更多人青睐原因在于&#xff0c;用户对软件拥有更多的…