开源硬件行空板

1.简介

行空板是一款拥有自主知识产权的国产教学用开源硬件,采用微型计算机架构,集成LCD彩屏、WiFi蓝牙、多种常用传感器和丰富的拓展接口。同时,其自带Linux操作系统和python环境,还预装了常用的python库,让广大师生只需两步就能开始python教学。

快速使用教程:https://www.unihiker.com.cn/wiki/get-started

2.简单使用教程

1.选择合适的编程方式

行空板自身作为一个单板计算机可以直接运行Python代码,同时默认开启了ssh服务及samba文件共享服务,因此可以用任意的文本编辑器编写代码,然后将代码传输到行空板即可运行。

教程:https://www.unihiker.com.cn/wiki/mindplus

2.行空板Python库安装

  • 打开MInd+,连接行空板,切换到代码标签页,点击库管理,此时库管理页面左上角显示行空板logo,说明此处显示的是行空板的库管理。

  • 如果你需要卸载库或者更新库则可以在库列表中进行操作。

  • 如果推荐库中没有你需要的,则可以切换到PIP模式,在输入框中输入库名字安装,右上角可以切换不同的源,例如此处安装dominate则可以输入dominate或者完整指令 pip install dominate,或者指定版本安装pip install dominate==2.5.1,提示**”Successfully installed xxxx”**即表示安装成功。

    ../../_images/install_1.png

例如可以在行空板安装我们的深度学习工具库XEduHub和模型部署库BaseDeploy,Mind+中甚至可以添加XEduHub积木套件和BaseDeploy积木套件,更多说明详见在Mind+中使用XEduHubMind+中的BaseDeploy积木块

../../_images/install_lab.png

3.部署模型到行空板

我们可以通过XEduHub库的方式部署。在XEduHub中,我们介绍了一个实时摄像头的人体关键点识别案例,这里,我们首先需要安装对应的库文件:

pip install xedu-python==0.2.0 onnx==1.13.0 onnxruntime==1.13.1

安装完成后,可以通过python代码进行部署。代码可以直接迁移前面的案例,模型部分不需要做任何改动,可视化的部分,为了适配行空板的屏幕尺寸,我们参考相关资料做了适配调整,代码如下:

from XEdu.hub import Workflow as wf
import cv2

body = wf(task='pose_body17')# 实例化pose模型
det = wf(task='det_body')# 实例化detect模型

#False:不旋转屏幕(竖屏显示,上下会有白边)
#True:旋转屏幕(横屏显示)
screen_rotation = True 

cap = cv2.VideoCapture(0)   #设置摄像头编号,如果只插了一个USB摄像头,基本上都是0
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320)  #设置摄像头图像宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) #设置摄像头图像高度
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)     #设置OpenCV内部的图像缓存,可以极大提高图像的实时性。

cv2.namedWindow('camera',cv2.WND_PROP_FULLSCREEN)    #窗口全屏
cv2.setWindowProperty('camera', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)   #窗口全屏

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    bboxs = det.inference(data=frame,thr=0.3)
    img = frame
    for i in bboxs:
        keypoints,img =body.inference(data=img,img_type='cv2',bbox=i)
    for [x1,y1,x2,y2] in bboxs: # 画检测框
        cv2.rectangle(img, (int(x1),int(y1)),(int(x2),int(y2)),(0,255,0),2)
    if screen_rotation: #是否要旋转屏幕
        img = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE) #旋转屏幕
    cv2.imshow('camera', img)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break    
cap.release()
cv2.destroyAllWindows()

参考资料1-AI猜拳机器人:https://mc.dfrobot.com.cn/thread-315543-1-1.html

参考资料2-智能音箱:https://xedu.readthedocs.io/zh-cn/master/how_to_use/support_resources/works/p4-smartspeaker.html

参考资料3-手搓图像识别硬件部署应用:https://www.bilibili.com/video/BV1364y1T771?p=3

更多AI用法:https://www.unihiker.com.cn/wiki/ai_project

在浦育平台硬件工坊也可支持连接行空板,参考项目-行空板与XEdu:https://openinnolab.org.cn/pjlab/project?id=65bc868615387949b281d622&backpath=/pjedu/userprofile?slideKey=project&type=OWNER#public