58浏览
查看: 58|回复: 10

[K10教程] 【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

[复制链接]
  今天早上打完羽毛球,捡到一个胜利牌的空球筒,于是突发奇想,试试看用这个能否做个智能小车?

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图2

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1

驴友花雕  高级技神
 楼主|

发表于 前天 20:43

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

使用的TT电机、麦克纳姆轮、锂电池与扩展板

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图3

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图4

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图2
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 前天 20:45

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图2
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 15:41

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

主打:人工智能模块

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1

语音识别合成相关说明

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 15:43

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

辅助:屏幕显示相关积木

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1

接脚 IO 扩展模块

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 15:46

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

知识点:麦克纳姆轮(麦轮)

一、基础结构与核心原理

1. 硬件结构
麦克纳姆轮由轮毂 + 45° 斜向自由辊子两部分组成:
轮毂:电机驱动主轮体;
辊子:环绕轮毂倾斜 45° 安装,可独立自由滚动,与地面接触产生斜向摩擦力CSDN博...。
四轮底盘必须搭配2 个左旋麦轮 + 2 个右旋麦轮,矩形四角对称安装(标准 X 型布局),缺一无法实现全向移动。
2. 力学原理
单个轮子转动时,地面摩擦力会分解为纵向分力(车身前后)、横向分力(车身左右);
通过独立控制四个电机的转向、转速,让四个轮子的分力相互抵消 / 叠加,合成任意平面运动:前后直行、左右横移、原地 360° 旋转、斜向行走抖音。
3. 和普通两轮差速小车核心区别

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1

二、四轮布局与电机编号定义

使用Microbit_Motor四路驱动,编号定义:
M1:左前轮
M2:右前轮
M3:右后轮
M4:左后轮
转向标识:CW=顺时针正转,CCW=逆时针反转

三、6 种基础运动电机转向对照表
1. 前进 qian jin

  1. motorbit.motorRun(M1, CW, 200);
  2. motorbit.motorRun(M3, CCW, 200);
复制代码

逻辑:左前 CW、右后 CCW;四轮纵向分力同向叠加,横向力抵消,车身直线向前。
2. 后退 hou tui

  1. motorbit.motorRun(M1, CCW, 200);
  2. motorbit.motorRun(M3, CW, 200);
复制代码

逻辑:与前进转向全部反向,车身直线向后倒退。
3. 右横移 you heng(车身整体向右平移)

  1. motorbit.motorRun(M2, CCW, 200);
  2. motorbit.motorRun(M4, CW, 200);
复制代码

逻辑:右前 CCW、左后 CW;纵向分力抵消,横向合力向右,车身横着走。
4. 左横移 zuo heng(车身整体向左平移)

  1. motorbit.motorRun(M2, CW, 200);
  2. motorbit.motorRun(M4, CCW, 200);
复制代码

逻辑:右前 CW、左后 CCW,横向合力向左。
5. 原地顺时针转圈 zhuan quan

  1. motorbit.motorRun(M1, CW, 200);
  2. motorbit.motorRun(M2, CW, 200);
  3. motorbit.motorRun(M3, CW, 200);
  4. motorbit.motorRun(M4, CW, 200);
复制代码

逻辑:四轮全部同向 CW 旋转;前后左右分力形成旋转力偶,无平移分量,原地持续旋转。
6. 停车 ting che

  1. motorbit.motorStop(ALL);
复制代码

四路电机全部断电刹车,所有轮子无驱动力,小车立刻静止锁死。

四、适配代码的语音控制整体架构
1、硬件组合
行空板 K10 + ASR 离线语音识别模块 + Microbit 四路电机驱动板 + 麦克纳姆四轮底盘
语音模块:识别唤醒词「你好小新」+6 条拼音口令;
Microbit 电机库:封装四路电机motorRun/motorStop,直接控制每轮转向与 PWM 速度;
LCD 屏幕:24 号大字实时显示当前运动状态。
2、程序控制流程
上电初始化主板、语音模块、四路电机引脚;
预注册语音指令:前进 / 停车 / 后退 / 右横 / 左横 / 转圈;
麦克风持续监听唤醒词,唤醒后解锁电机控制权限;
识别到语音口令,自动输出对应电机转向组合,屏幕同步提示;
循环清空屏幕文字,持续等待下一条语音指令。

五、麦克纳姆轮优缺点
1·、优点
全向移动:可前后、左右横移、原地自转,狭小室内、仓储机器人首选;
运动灵活,无需预留转弯空间,侧向避障、侧方停靠极强;
运动解耦:平移和旋转互不干扰,可一边横移一边转向;
模块化控制:每路电机独立调速,代码只需要调整转向组合即可切换运动模式。
2、缺点
成本更高,需要 4 套独立电机驱动;
辊子耐磨差,长期重载、粗糙地面容易磨损;
传动效率低于普通橡胶轮,相同电机功率下速度略慢;
安装要求严格,轮子左右不能装反,否则运动错乱、跑偏。

六、典型应用场景
1、教育创客:行空板 / Arduino 语音遥控全向小车;
2、仓储 AGV 物流小车,狭窄货架之间侧向穿梭;
3、工业重载转运平台、机器人比赛底盘;
4、室内巡检机器人、云台全向移动底座。

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 15:47

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

【花雕动手做】行空板 K10 系列实验之胜利牌羽毛球筒麦克纳姆轮四驱语音识别控制小车

实验开源代码

  1. // 1.离线语音识别库:提供语音唤醒、拼音指令识别、持续收音功能
  2. #include "asr.h"
  3. // 2.行空板K10底层驱动库:管理LCD屏幕、画布绘制、主板硬件初始化
  4. #include "unihiker_k10.h"
  5. // 3.Microbit四路电机驱动库,专门适配四轮麦克纳姆轮底盘,独立控制M1/M2/M3/M4电机
  6. #include <Microbit_Motor.h>
  7. // ===================== 全局硬件对象实例化 =====================
  8. UNIHIKER_K10   k10;        // 行空板主控实例,统一管理屏幕、系统总线、板载外设
  9. ASR            asr;         // 离线语音识别模块实例,处理麦克风收音与人声解析
  10. uint8_t        screen_dir=2; // 屏幕旋转参数:数值2代表屏幕倒置显示
  11. Microbit_Motor motorbit;    // 四路电机驱动对象
  12. /* 电机编号对应四轮麦克纳姆轮底盘布局
  13. M1 = 左前轮
  14. M2 = 右前轮
  15. M3 = 右后轮
  16. M4 = 左后轮
  17. CW = 电机顺时针正转;CCW = 电机逆时针反转
  18. 速度参数范围 0~255,数值越大转速越快,本程序统一使用200中高速 */
  19. //=====================================================================
  20. // setup() 上电初始化函数,设备开机/重启仅执行1次
  21. // 功能:初始化主板、语音模块、屏幕画布,批量注册7条麦轮小车语音控制拼音指令
  22. //=====================================================================
  23. void setup() {
  24.         // 初始化行空板全部底层硬件:串口、I2C总线、LCD屏幕、IO外设资源
  25.         k10.begin();
  26.         // 离线语音识别模块初始化三大核心参数
  27.         // CONTINUOUS:持续收音模式,麦克风不间断实时监听环境人声
  28.         // CN_MODE:中文识别模式,仅能识别提前注册的中文拼音口令
  29.         // 10000:收音抗噪灵敏度阈值,数值越大过滤环境杂音、防误唤醒能力越强
  30.         asr.asrInit(CONTINUOUS, CN_MODE, 10000);
  31.         // 阻塞循环等待语音识别模型加载完成
  32.         // _asrState == 0 代表模块未就绪,每100ms循环检测一次,防止未初始化调用报错
  33.         while(asr._asrState == 0){delay(100);}
  34.         // 根据预设screen_dir参数初始化倒置LCD显示屏
  35.         k10.initScreen(screen_dir);
  36.         // 创建屏幕绘图画布缓存区,所有文字先存入缓存,再统一刷新到实体屏幕,减少刷屏闪烁
  37.         k10.creatCanvas();
  38.         // 批量注册7条离线语音控制指令,语音模块仅识别预先录入的拼音
  39.         asr.addASRCommand(0+1, "qian jin");    // ID=1 语音口令:前进
  40.         asr.addASRCommand(1+1, "ting che");    // ID=2 语音口令:停车
  41.         asr.addASRCommand(2+1, "hou tui");     // ID=3 语音口令:后退
  42.         asr.addASRCommand(3+1, "you heng");   // ID=4 语音口令:右横移
  43.         asr.addASRCommand(4+1, "zuo heng");   // ID=5 语音口令:左横移
  44.         asr.addASRCommand(5+1, "zhuan quan"); // ID=6 语音口令:原地转圈
  45.         asr.addASRCommand(6+1, "xie zou");    // ID=7 语音口令:斜着走(斜向直行)
  46. }
  47. //=====================================================================
  48. // loop() 主循环函数,初始化完成后无限循环持续运行
  49. // 功能:实时检测语音唤醒状态、识别语音指令,驱动四路麦克纳姆电机,屏幕同步显示车辆运行状态
  50. //=====================================================================
  51. void loop() {
  52.         // 判断麦克风是否识别到固定唤醒关键词【你好小新】
  53.         if (asr.isWakeUp()) {
  54.                 // 唤醒成功:画布第6行输出红色提示文字
  55.                 k10.canvas->canvasText("已唤醒行空板小车.......", 6, 0xFF0000);
  56.                 // 将画布缓存内所有文字一次性刷新输出到LCD实体屏幕
  57.                 k10.canvas->updateCanvas();
  58.         }
  59.         else {
  60.                 // 未唤醒待机状态:画布第4行输出蓝色提示文字,告知用户唤醒口令
  61.                 k10.canvas->canvasText("唤醒词为“你好小新”", 4, 0x0000FF);
  62.                 k10.canvas->updateCanvas();
  63.         }
  64.         // ==========语音指令ID1:qian jin 小车直线前进(麦克纳姆标准直行逻辑)==========
  65.         if (asr.isDetectCmdID(0+1)) {
  66.                 // ALL代表同时控制M1/M2/M3/M4四路电机全部顺时针转动
  67.                 // 四轮同向正转,纵向推力叠加、横向分力相互抵消,车身笔直向前行驶
  68.                 motorbit.motorRun(ALL, CW, 200);
  69.                 // 屏幕居中24号黑色中英文字体打印运行状态
  70.                 // 参数说明:X坐标,Y坐标,文字RGB颜色,字体类型,字号大小,自动换行开关
  71.                 k10.canvas->canvasText("K10 小车前进", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  72.                 k10.canvas->updateCanvas();
  73.         }
  74.         // ==========语音指令ID2:ting che 小车全部刹车停止==========
  75.         if (asr.isDetectCmdID(1+1)) {
  76.                 // motorStop(ALL):一次性切断四路电机全部输出,电机断电锁死,小车立刻静止
  77.                 motorbit.motorStop(ALL);
  78.                 k10.canvas->canvasText("K10 小车停止", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  79.                 k10.canvas->updateCanvas();
  80.         }
  81.         // ==========语音指令ID3:hou tui 小车直线后退==========
  82.         if (asr.isDetectCmdID(2+1)) {
  83.                 // 四轮全部逆时针反转,与前进转向完全反向,车身直线向后倒退
  84.                 motorbit.motorRun(ALL, CCW, 200);
  85.                 k10.canvas->canvasText("K10 小车后退", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  86.                 k10.canvas->updateCanvas();
  87.         }
  88.         // ==========语音指令ID4:you heng 车身整体向右横向平移==========
  89.         if (asr.isDetectCmdID(3+1)) {
  90.                 // 麦克纳姆轮横移差速组合:纵向分力完全抵消,仅保留向右横向合力
  91.                 motorbit.motorRun(M1, CCW, 200); // 左前轮逆时针
  92.                 motorbit.motorRun(M2, CW, 200);  // 右前轮顺时针
  93.                 motorbit.motorRun(M3, CW, 200);  // 右后轮顺时针
  94.                 motorbit.motorRun(M4, CCW, 200); // 左后轮逆时针
  95.                 k10.canvas->canvasText("K10 小车右横", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  96.                 k10.canvas->updateCanvas();
  97.         }
  98.         // ==========语音指令ID5:zuo heng 车身整体向左横向平移==========
  99.         if (asr.isDetectCmdID(4+1)) {
  100.                 // 反向差速组合,纵向分力抵消,合力向左,整车横向左移
  101.                 motorbit.motorRun(M1, CW, 200);  // 左前轮顺时针
  102.                 motorbit.motorRun(M2, CCW, 200); // 右前轮逆时针
  103.                 motorbit.motorRun(M3, CCW, 200); // 右后轮逆时针
  104.                 motorbit.motorRun(M4, CW, 200);  // 左后轮顺时针
  105.                 k10.canvas->canvasText("K10小车左横", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  106.                 k10.canvas->updateCanvas();
  107.         }
  108.         // ==========语音指令ID6:zhuan quan 小车原地顺时针转圈==========
  109.         if (asr.isDetectCmdID(5+1)) {
  110.                 // 对角电机反向转动,形成纯旋转力偶,无前后/左右平移分量,零半径原地自转
  111.                 motorbit.motorRun(M1, CCW, 200);
  112.                 motorbit.motorRun(M2, CW, 200);
  113.                 motorbit.motorRun(M3, CCW, 200);
  114.                 motorbit.motorRun(M4, CW, 200);
  115.                 k10.canvas->canvasText("K10小车原地转圈", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  116.                 k10.canvas->updateCanvas();
  117.         }
  118.         // ==========语音指令ID7:xie zou 小车斜向直行(左前方斜走)==========
  119.         if (asr.isDetectCmdID(6+1)) {
  120.                 // 仅左前M1、左后M4电机顺时针运转,M2/M3停机,推力合成斜向前左方向
  121.                 motorbit.motorRun(M1, CW, 200);
  122.                 motorbit.motorRun(M4, CW, 200);
  123.                 k10.canvas->canvasText("K10小车斜着走", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  124.                 k10.canvas->updateCanvas();
  125.         }
  126.         // 清空画布第6行及下方全部文字,清除上一轮运动状态残留文字,避免新旧文字重叠产生残影
  127.         k10.canvas->canvasClear(6);
  128. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 15:55

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

# 代码解读

## 一、项目整体简介

硬件搭配:行空板 K10 + 离线 ASR 语音识别模块 + Microbit 四路电机驱动板 + **四轮麦克纳姆轮底盘**

1. 唤醒固定口令:**你好小新**,识别唤醒词后才能操控小车;
2. 共 7 组语音拼音指令:前进、停车、后退、右横移、左横移、原地转圈、斜向行走;
3. 依托麦克纳姆轮 45° 斜辊推力矢量叠加原理,实现直行、横移、零半径自转、斜走全向移动;
4. LCD 屏幕使用 24 号大号字体实时展示小车当前动作,电机统一固定速度 200(调速范围 0~255)。


## 二、头文件与全局对象解析

  1. #include "asr.h"
  2. #include "unihiker_k10.h"
  3. #include <Microbit_Motor.h>
复制代码

1. `asr.h`:离线语音识别库,实现持续收音、唤醒检测、自定义拼音指令识别;
2. `unihiker_k10.h`:行空板底层驱动,管理 LCD 屏幕、画布缓存、主板硬件初始化;
3. `Microbit_Motor.h`:四路直流电机专用驱动库,可单独控制 M1/M2/M3/M4 任意一路电机,适配麦轮底盘。

  1. UNIHIKER_K10   k10;
  2. ASR            asr;
  3. uint8_t        screen_dir=2;
  4. Microbit_Motor motorbit;
复制代码

- `k10`:行空板主控实例,统一管理屏幕、系统通信总线;
- `asr`:语音识别实例,负责麦克风收音、人声解析;
- `screen_dir=2`:设置屏幕倒置显示;
- `motorbit`:四路电机驱动对象,电机编号定义:
  - M1 = 左前轮  M2 = 右前轮
  - M3 = 右后轮  M4 = 左后轮
  - CW = 电机顺时针正转,CCW = 电机逆时针反转


## 三、setup () 上电初始化(开机仅执行 1 次)

  1. k10.begin();
复制代码

初始化行空板全部底层硬件:串口、I2C 总线、屏幕、板载 IO 外设。

  1. asr.asrInit(CONTINUOUS, CN_MODE, 10000);
  2. while(asr._asrState == 0){delay(100);}
复制代码

语音模块初始化参数说明:

- `CONTINUOUS`:持续收音模式,麦克风不间断监听人声;
- `CN_MODE`:中文识别模式,仅识别提前注册的拼音口令;
- `10000`:收音抗噪灵敏度,数值越大过滤环境杂音、防误唤醒能力越强;
循环阻塞等待语音模型加载完毕,模块就绪才执行后续代码,防止调用报错。

  1. k10.initScreen(screen_dir);
  2. k10.creatCanvas();
复制代码

按照倒置参数点亮 LCD 屏幕,创建画布缓存,所有文字先存入缓存再统一刷新,减少屏幕闪烁。

  1. asr.addASRCommand(0+1, "qian jin");   // ID1 前进
  2. asr.addASRCommand(1+1, "ting che");   // ID2 停车
  3. asr.addASRCommand(2+1, "hou tui");    // ID3 后退
  4. asr.addASRCommand(3+1, "you heng");  // ID4 右横移
  5. asr.addASRCommand(4+1, "zuo heng");   // ID5 左横移
  6. asr.addASRCommand(5+1, "zhuan quan"); // ID6 原地转圈
  7. asr.addASRCommand(6+1, "xie zou");    // ID7 斜着走
复制代码

批量录入 7 条离线语音口令,语音模块仅能识别预存指令,无法识别未录入词语。


## 四、loop () 无限主循环,实时监听语音指令

### 1. 唤醒状态判断

`asr.isWakeUp()` 检测麦克风是否识别唤醒词「你好小新」:

- 唤醒成功:画布第 6 行输出红色文字 `已唤醒行空板小车.......`;
- 未唤醒待机:画布第 4 行输出蓝色提示文字 `唤醒词为“你好小新”`;
`updateCanvas()` 将缓存文字一次性刷新到实体屏幕。

### 2. Microbit 电机库核心函数

1. `motorRun(通道, 转向, 速度)`
   - 通道:`ALL` 四路同时控制 / M1/M2/M3/M4 单路独立控制;
   - 转向:`CW` 顺时针、`CCW` 逆时针;
   - 速度区间:0~255,本代码统一 200 中高速;
2. `motorStop(ALL)`:四路电机同时断电锁死,小车立即静止。

### 3. 每条语音指令麦轮运动逻辑

#### ① qian jin 前进

  1. motorbit.motorRun(ALL, CW, 200);
复制代码


四轮全部顺时针同步转动,麦轮纵向摩擦力叠加、横向分力抵消,车身直线向前行驶。

#### ② ting che 停车

  1. motorbit.motorStop(ALL);
复制代码

M1/M2/M3/M4 全部切断动力输出,四轮无驱动力,小车立刻刹车静止。

#### ③ hou tui 后退

  1. motorbit.motorRun(ALL, CCW, 200);
复制代码

四轮全部逆时针反转,与前进转向完全反向,车身直线向后倒退。

#### ④ you heng 右横移

  1. motorbit.motorRun(M1, CCW, 200);
  2. motorbit.motorRun(M2, CW, 200);
  3. motorbit.motorRun(M3, CW, 200);
  4. motorbit.motorRun(M4, CCW, 200);
复制代码

四路电机反向差速配合,前后纵向推力相互抵消,仅保留向右的横向合力,整车整体右移。

#### ⑤ zuo heng 左横移

  1. motorbit.motorRun(M1, CW, 200);
  2. motorbit.motorRun(M2, CCW, 200);
  3. motorbit.motorRun(M3, CCW, 200);
  4. motorbit.motorRun(M4, CW, 200);
复制代码

与右横移转向全部反向,纵向分力抵消,横向合力向左,车身整体左移。

#### ⑥ zhuan quan 原地转圈

  1. motorbit.motorRun(M1, CCW, 200);
  2. motorbit.motorRun(M2, CW, 200);
  3. motorbit.motorRun(M3, CCW, 200);
  4. motorbit.motorRun(M4, CW, 200);
复制代码

对角电机反向转动,形成纯旋转力偶,无前后、左右平移分量,零半径原地持续顺时针自转。

#### ⑦ xie zou 斜着走

  1. motorbit.motorRun(M1, CW, 200);
  2. motorbit.motorRun(M4, CW, 200);
复制代码

仅左前 M1、左后 M4 电机顺时针运转,右前 M2、右后 M3 停机,推力合成左前方斜向直行。

### 4. 屏幕清理语句

  1. k10.canvas->canvasClear(6);
复制代码

清空画布第 6 行及下方全部文字,清除上一轮动作文字,避免新旧文字重叠出现残影。


## 五、7 种运动电机配置对照表

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1

## 六、完整运行流程

1. 设备上电,初始化行空板硬件、语音识别模块,循环等待语音模型加载完成;
2. 初始化倒置 LCD 屏幕、创建绘图画布,录入 7 条语音控制拼音指令;
3. 麦克风不间断监听唤醒词「你好小新」;
4. 识别唤醒词后屏幕红色文字提示已唤醒,未唤醒则蓝色文字提示唤醒口令;
5. 说出对应语音口令,四路电机按照麦克纳姆矢量差速逻辑运转,屏幕同步打印当前运动状态;
6. 循环末尾自动清空屏幕下方文字,持续等待下一条语音指令。


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 16:00

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

Mind+图形编程

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1
【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图2
【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图3
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 16:02

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

实验场景图与视频记录

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图2

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图3

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 16:32

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图3

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图1

【花雕动手做】行空板K10羽毛球筒麦轮四驱语音识别小车图2


【【花雕动手做】行空板 K10 系列实验之胜利牌羽毛球筒麦克纳姆轮四驱语音识别控制小车#手工机械爱好者 #行空板k10 #人工智能技术 #diy造车】

https://www.bilibili.com/video/BV1PiKG6fEGD/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail