12. K230-Canmv Micropython开发助手#

12.1. 简介#

为了进一步降低用户开发门槛,提升用户开发效率,嘉楠科技在K230 micropython的基础上为用户提供了两款机器人助手,分别是K230 Code Master V2K230 代码生成助手。

其中,K230 Code Master V2主要针对K230-Canmv Micropython AI应用,能够帮助用户讲解代码思路流程,提供AI应用核心示例代码;K230代码生成助手能够自由组合openmv、外设多媒体、网络等示例code,提供满足用户需求的代码片段。

12.2. K230 Code Master V2#

K230 code master V2是由嘉楠科技生产的k230编程助手,能够依据背景知识库中的代码知识针对用户开发时遇到的micropython ai demo问题做出回答。本助手基于ChatGPT4开发,内部内置了人脸识别、人脸关键点检测、人脸检测、动态手势识别、手掌关键点检测、通用物体检测等多项示例code。目前该助手已经发布到了GPTStore中。用户可以在https://chat.openai.com/gpts商店中搜索K230 code master v2来获取机器人助手。如图1所示。

GPTs商店

图1 GPTs Store 搜索K230 code master v2

12.2.1使用场景#

K230 Code master能够在以下场景中协助用户进行开发:

  • 代码逻辑梳理:能够帮助用户快速了解ai demo示例code运行逻辑

  • 专业名词解释:能够帮助用户了解开发过程中遇到的专业名词,降低陌生感

  • 核心代码提炼:能够帮助用户快速提炼ai demo中的核心代码片段,提高用户应用开发效率

12.2.1.1. 代码逻辑梳理#

用户在使用Micropython开发K230 应用时,打开CanMV IDE可以在File->Examples->AI Demo中看到其中存在着大量的AI Demo示例,任意选择一个,可以将其加载入CanMV IDE进行编辑。例如这里选择加载dynamic_gesture.py例程。如图2所示。

dynamic_gesture

图2 选择加载示例程序

代码加载后可以看到整体的代码量有880行,这对用户首次阅读会造成一定压力,如图3所示。

image-20240305155638002

图3 示例代码总行数

此时,用户可以一次性拷贝所有的代码到k230 code master v2中,并键入用户要求,例如”请帮我梳理这段代码的整体逻辑。”,或者”请帮我整理这段代码的整体作用。” 将代码片段+提示词发送给K230 Code Master后,机器人会对代码逻辑进行整理。输出内容如4所示。

image-20240306142759661

图4 K230 Code Master 代码整理

可以看到机器人助手会将代码的主要内容概括为:

1)导入必要的库和模块

2)初始化与配置

3)媒体、摄像头和显示初始化

4)AI模型初始化

5)动态手势识别流程

6)资源释放

并且会在每个步骤中提炼出组成该步骤的子步骤,如主要功能模块中的手掌检测、手掌关键点检测、动态手势识别等。同时用户可以针对子步骤具体提问,例如:

  • 这个例子中一共支持几种分类手势?

  • 这些手势的分类逻辑是什么?

分别将这两个问题发送给机器人,可以得到如下回复,如图5, 6所示。

image-20240306144050709

图 5 支持手势种类

image-20240306144436148

图6 手势分类逻辑

从机器人的回复中可以看到这份示例代码一共支持9种手势分类,每种手势的分类是以夹角阈值为依据进行判定的。如果用户认为机器人的回答不够直观,可以让机器人制作相应的示例图片。如图7所示。

image-20240305163637727

图7 手势分类依据示例图片

12.2.1.2. k230专业名词解释#

用户在首次使用K230 micropython进行开发时会对一些专有名词比较陌生,例如:

1)什么是kpu?

2)kpu一般怎么使用?

3)什么是ai2d?一般怎么使用?

将这些问题发送给机器人能够得到相应回答,如图8、9、10所示。

image-20240306144640159

图 8 什么是kpu

image-20240306144923054

图 9 kpu一般怎么使用

image-20240306145438786

图 10 ai2d是什么?一般怎么使用

用户在开发时如果遇到了陌生概念,可以通过这种方式与机器人进行交互,了解这些概念及使用方法。

12.2.1.3. 核心代码提炼#

在使用CanMV IDE中提供的示例时,每个例程的中核心代码片段往往具有参考价值,用户可以通过和code master对话,让code master提供某一主题的核心代码。例如:

帮我提供一份人脸检测核心代码。

2024-03-05_173925

图 11 人脸检测核心代码

根据k230 code master的返回用户可以了解到每个主题任务中的核心代码是什么,这样在开发的过程中才不至于迷失在”代码海洋”中,从code master提供的示例片段中用户可以了解到,一个核心代码片段主要包括:

1)kpu、相机、display、media对象初始化;

2)相机开启,循环采图

3)kpu run 模型推理

4)推理结果显示

5)kpu、相机、media等资源释放

用户在独立开发新任务时可以参考核心代码片段的运行逻辑,实现自己的新任务。

12.3. K230 代码生成助手#

嘉楠科技生产的K230代码生成助手能够通过分析和理解用户的需求,进而拆分成具体的任务,以生成满足这些需求的MicroPython代码。目前该机器人内部已经内置了如下知识库:

  • 外设 (Cipher、adc、fft、fpioa等)

  • 多媒体(acodec、audio、camera、Display等)

  • Openmv(find_qrcodes、circle_drawing、cross_drawing、sharpen_filter等)

  • 网络(http_client、http_server、network等)

这些内容在CanmvIDE中的示例部分可以查到。如图12所示。

image-20240306103751786

图12 K230代码生成助手包含内容

12.3.1. 使用场景#

K230 代码生成助手可以像K230 code master一样解释代码运行逻辑和专业名词含义与作用;同时K230代码生成助手还能够自由组合代码知识库中的内容生成满足用户需要的micropython代码。

  • 代码逻辑梳理及名词解释

  • micropython代码生成

12.3.1.1. 代码逻辑梳理及名词解释#

在Canmv IDE中打开GPIO例程,如图13所示。

image-20240306105016338

图13 GPIO例程

拷贝GPIO例程代码,并加入提示词:”什么是GPIO?” 发送给K230代码生成助手,可以得到如下回复。如图14所示。

image-20240306105241193.png

图14 什么是GPIO

可以看到K230代码生成助手会对GPIO进行解释,并梳理例程代码逻辑。

12.3.1.2. Micropython代码生成#

按照实际需求整理符合逻辑的输入内容,例如我们想让K230 代码生成助手生成”帮我生成打开相机、循环采集图片,然后将采集到的图片显示到屏幕上的代码”可以整理成:

1)打开相机

2)循环采集图像 3)将采集到图像显示到屏幕上 发送以上内容给 K230 代码生成助手,可以看到K230代码生成助手会生成如下代码:

相机采图示例.png

图15 编写相机采图代码

将生成的代码拷贝到Canmv IDE中,运行此代码,可以看到如下内容,如图16、17所示。

image-20240306113125076

图16 Canmv IDE中运行代码

image-20240306113257938

图17 相机采集画面

再换一个复杂任务让K230代码生成助手帮我们生成:

1)打开相机、循环采图,对采集到的图像做直方图均衡化 2)在做过直方图均衡化后的图片中心绘制两个圆 3)两个圆的半径为30,颜色为红色,水平并排显示 4)用point标识出圆心,圆心处的point为绿色

将需求输入到机器人中,可以得到机器人回复:

并排圆.png

图18 生成并排圆代码

将生成的代码拷贝到Canmv IDE中,并运行如图19、20所示。

image-20240306114917262

图19 并排圆代码运行

将Canmv通过hdmi与屏幕连接可以看到清晰画面,如图20所示。

image-20240306115829197

图20 并排圆图像画面

注意: K230代码生成助手有时会生成错误的代码片段,使用时请注意甄别。