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

非常幸运能被聆思科技选中,获得测评CSK6的机会,感谢官方大大和超级nice的客服小姐姐(笔芯_)。一拿到芯片的第一反应就是想做一个手势操控的Unity3D小游戏,应该会蛮好玩的(童心未泯_),经过一番折腾,终于搞定了,但也有一些待优化的方面感觉可以讨论。由于最近一直比较忙,文章现在才发出来。

拆箱组装好后如图所示:

1、烧录

按照官方文档烧录了hello_world,测试了串口工具,比较容易,一切OK。

2、体验手势识别

然后按照官方AI头肩检测实例项目的开发指引下载、配置prj.conf、编译并烧录了相应源代码,一路顺利过关。

按照PC 查看工具指引下载查看工具,并一路安装测试OK。

(原谅我单手手机拍照技术太菜,但必须得说手势识别效果真是666)

3、源码研究

接下来就是花了些时间好好看了下[app_algo_hsd_sample_for_csk6]的项目源码,找到非WEBUSB情况下的串口数据输出代码 :

LOG_INF("gesture result id: %d,state: %d", result->id, result->gesture_state);

考虑到我的Unity3D项目中要使用串口而非webusb,所以将prj.conf文件中的CONFIG_WEBUSB设置为n,编译对应项目代码(添加-p将编译产物文件夹恢复原始状态来进行编译),并将代码通过lisa zep flash烧录进芯片。

4、创建Unity3D游戏场景(略过一万字…)

5、编写Unity3D代码

这里我先是直接把数据线插到了CSK USB口,导致在使用如下代码查找串口连接时总是找不到,最后是将数据线连接到DAPLink USB上时才找到串口连接的(期待官方如果能_出一个对各种常用语言的串口搜寻和连接示例代码_)。

string[] portList = SerialPort.GetPortNames()

我的串口是COM3,这里直接连接它,全部代码如下:

//连接对应串口,并开启数据监听函数
sPort = new SerialPort("COM3", 115200, Parity.None, 8, StopBits.One);sPort.ReadTimeout = 10;try {if(!sPort.IsOpen) {sPort.Open();Debug.Log("sPort Open.");StartCoroutine(DataReceiveFunc());}}catch (Exception ex ) {Debug.Log(ex.Message);}StartCoroutine(CountdownThenCloseUsbRoutine00());//数据监听函数IEnumerator DataReceiveFunc() {while(true) {// Debug.Log("sport.isopen: " + sPort.IsOpen.ToString());if(sPort != null && sPort.IsOpen) {try {processDataFunc();}catch (Exception ex) {Debug.LogError(ex);}}yield return new WaitForSeconds(Time.deltaTime);}}

然后是数据转换函数,供参考。

//数据转换函数private static string byteToHexStr(byte[] bytes) {string str = "";if(bytes != null) {for(int i=0; i < bytes.Length; i++) {str += bytes[i].ToString("x2");str += "_";}}return str;}private static string hexStrToStr(string hexstr) {string[] hexvalsplit = hexstr.Split("_");string end = string.Empty;foreach(string hex in hexvalsplit) {try {int val = Convert.ToInt32(hex, 16);string strVal = char.ConvertFromUtf32(val);char charVal = (char)val;end += charVal;}catch(Exception ex) {break;}}return end;}

重点的手势识别结果解析及游戏动作控制部分代码如下:

string msg = "";private void processDataFunc() {int n = sPort.BytesToRead;byte[] buf = new byte[n];sPort.Read(buf, 0, n);bufList.AddRange(buf);string hexStr = byteToHexStr(buf);if(hexStr != "") {string str = hexStrToStr(hexStr);// Debug.Log("str : " + str);int i0 = str.IndexOf("<inf> main: gesture result id: ");if(i0>=0) {msg= "";}msg += str;int i1 = msg.IndexOf("state: ");if(i0>=0 && i1>=0 && i1>i0+30) {Debug.Log("msg: "+msg);int action = Convert.ToInt32(msg.Substring(i1+8,1));if(action > 0) {Debug.Log("action:"+action);bool go = true;float turnAngle = 0;if(action == 1) {//LIKE }else if(action == 2) {//OKgo = true;} else if(action == 3) {//STOPgo = false;} else if(action == 4) {//YESturnAngle = 10; //turn right} else if (action == 5) {//SIXturnAngle = -10; //turn left} else {//OTHER//经常会错判为OTHER手势,为保证游戏连续性,我们不管它。}// Input.Accelerate = go;// Input.Brake = !go;// Input.TurnInput = turnAngle;}msg = "";}}}

最终展示结果如下:

通过手势识别结果我们成功控制Unity3D场景中的赛车按照我们的逻辑进行运动。经测试,站在摄像头前半米左右时反应速度还算灵敏,误判率相对较低。

6、其他尝试

本游戏还有很多不完善的地方,同时在尝试优化的过程中发现有可以提升的地方,比如最开始我是想 通过LIKE手势向左指表示左转,向右指表示右转 ,但是通过对官方文档的阅读和对webusb输出信息进行调试发现,输出的手势坐标并不含对应的角度或方向信息。

7、测评反馈及与官方大大探讨

总体上,通过一段时间的试玩,本款芯片的头肩和手势识别效果还是非常棒的,非常期待其后续更多模块的更新和推出。

7.1 建议官方可以优化增加手势的方向数据指标,这样我们的游戏控制项目应该可以做到更好玩。
7.2 另外,建议官方大大可以_出一个对各种常用语言的串口搜寻和连接的示例代码_ 方便不同应用方向的更好实现。

后续我准备做一些跟元宇宙旅游相关的小demo项目,探讨该芯片可能的应用空间和相关可玩性。 再次感谢官方给与这次测评的机会!

【聆思CSK6视觉AI开发套件试用测评】使用CSK6手势识别操控Unity3D游戏及待优化问题探讨相关推荐

  1. 【聆思CSK6 视觉AI开发套件试用】基于CSK6的头肩手势检测控制会议相机进行数字变焦

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:海锋 基于CSK6的头肩手势检测控制会议相机实现变倍功能 首先感谢极术社区与聆思科技的信 ...

  2. 【聆思CSK6 视觉AI开发套件试用】基于CSK6011a_nano的虚拟打砖块交互系统

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:马博 非常感谢极术社区和聆思科技提供的机会,加之前做过其他视觉模块的测试项目,于是尝试申 ...

  3. 【聆思CSK6视觉AI开发套件试用】AI手势检测识别+编译Helloworld示例

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:Zeee 前言: 首先,感谢极术社区联合聆思科技给予宝贵的试用机会.借助本次对CSK6视 ...

  4. 【聆思CSK6 视觉AI开发套件试用】AI控制直流电机转速接口打通

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:oxlm 背景 在访问极术社区时,偶然发现聆思科技的CSK6开发板的评估活动,看CSK6 ...

  5. 【聆思CSK6视觉AI开发套件试用】从部署工程师和测试工程师角度体验CSK6

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:cfx 1.体验(baipiao)之前 作为一个精通多种移动端AI框架(TFLite.A ...

  6. 【聆思CSK6 视觉AI开发套件试用】人脸识别和 tflite-micro 语音识别推理实验

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:SunnyCase 1. 前言 非常幸运得到这次测评 CSK6 视觉AI开发套件的机会, ...

  7. 【聆思CSK6视觉AI开发套件试用】基于AI手势识别的剪子包袱锤游戏

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:寒冰1988 感谢极术社区联合聆思组织的本次活动,很荣幸得到本次体验国产AI MCU的机 ...

  8. 【聆思CSK6 视觉AI开发套件试用】CSK6011与STM32F469I 开发板对比

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:冷山 1. 引言 非常感谢极术社区和聆思科技提供的这次试用机会,让我再一次被幸运击中,因 ...

  9. 【聆思CSK6 视觉AI开发套件试用】开发环境与烧写问题解决

    本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动,更多开发板试用活动请关注极术社区网站.作者:ifconfig 抱歉这么晚才发文章,由于疫情被封在家了一个多星期,刚开始正常. 一.开 ...

最新文章

  1. git钩子放服务器_服务器git钩子
  2. html怎么做到滚动鼠标转换,横向的网页如何实现鼠标滑轮横向移动?_html/css_WEB-ITnose...
  3. Activity后台运行一段时间回来crash问题的分析与解决
  4. 前端学习(3302):createRef
  5. ExtJs 备忘录(1)—— Form表单(一) [ 控件使用 ]
  6. (45)FPGA条件编译(选择模块)
  7. 计算机垃圾回收的过程,计算机体系 – 垃圾收集器
  8. 利用VisualVm和JMX远程监控K8S里的Java进程
  9. 2016年04月28日-统一沟通之OCS 2007 R2-公开课-通知
  10. 现在最火的深度学习框架是什么?
  11. linux设置ps1命令行
  12. UEFI 是什么?硬盘的EFI分区? .efi格式的文件?UEFI 标准定义了一种可执行文件格式:efi格式
  13. 自定义android控件EditText边框背景
  14. python输出数字怎么办_python怎么输出数字
  15. gnuplot绘图程序中对线型(linetype)、点型(pointtype)、线条宽度(linewidth)、点大小(pointsize)、图样
  16. 在腾讯云部署一个自己的网站 问题总结
  17. FPGA之复数乘法器的设计
  18. 带你认识有源晶振的分类和英文缩写
  19. MFC Windows 程序设计[192]之六只眼八卦图按钮组(附源码)
  20. 一文解密 Netflix 的快速事件通知系统是如何工作的

热门文章

  1. FJUT ACM 2592 查询队列
  2. 大学计算机基础教程孔令信,数据模型
  3. 酷家乐x极盾科技:“智能安全决策平台”助力日均十亿级日志分析
  4. Httperf测试web服务器
  5. NVIDIA TensorRT安装包下载分享—— 云盘分享 【TensorRT安装】
  6. python直线交点数量_计算直线的交点数
  7. Ubuntu更换阿里源和清华源
  8. 世界人工智能大会 | 你们只看到“双马”不在一个频道,却忽视了阿里平头哥和清微的结盟...
  9. 单片机程序配置成开漏输出_改变单片机IO口默认电平
  10. Mac开发不上线打包dmg格式步骤