Desmond-Dong commited on
Commit
4e5c3ed
·
1 Parent(s): 07e9e3c

\"chore(release): version 0.1.5\"

Browse files
.claude/settings.local.json CHANGED
@@ -7,18 +7,20 @@
7
  "Edit",
8
  "Bash(cd:*)",
9
  "SlashCommand(/zcf:git-commit --emoji)",
10
- "SlashCommand(/zcf:git-commit:*)"
 
 
11
  ],
12
  "deny": [],
13
  "ask": []
14
  },
15
- "model": "opus",
16
  "hooks": {},
 
 
17
  "statusLine": {
18
  "type": "command",
19
  "command": "%USERPROFILE%\\.claude\\ccline\\ccline.exe",
20
  "padding": 0
21
  },
22
- "outputStyle": "default",
23
- "alwaysThinkingEnabled": true
24
- }
 
7
  "Edit",
8
  "Bash(cd:*)",
9
  "SlashCommand(/zcf:git-commit --emoji)",
10
+ "SlashCommand(/zcf:git-commit:*)",
11
+ "Bash(rm:*)",
12
+ "Bash(git:*)"
13
  ],
14
  "deny": [],
15
  "ask": []
16
  },
 
17
  "hooks": {},
18
+ "alwaysThinkingEnabled": true,
19
+ "outputStyle": "default",
20
  "statusLine": {
21
  "type": "command",
22
  "command": "%USERPROFILE%\\.claude\\ccline\\ccline.exe",
23
  "padding": 0
24
  },
25
+ "model": "opus"
26
+ }
 
PROJECT_PLAN.md CHANGED
@@ -321,31 +321,40 @@ dependencies = [
321
 
322
  ---
323
 
324
- ## 🚀 语音助手增强功能计划 (基于 SDK 最新分析)
325
 
326
- 以下功能将 Reachy Mini SDK 能力与语音助手体验深度整合,提升交互的自然性和表力。
327
 
328
- ### Phase 13 - 情感作反馈系统 (高优先级)
329
 
330
- **目标**: 根据语音助手的响应内容,自动播放匹配的情感动作,让机器人更有"灵魂"。
 
 
 
 
331
 
332
- **SDK 支持**:
333
- - `RecordedMoves` - 从 HuggingFace 加载预录制情感动作
334
- - `pollen-robotics/reachy-mini-emotions-library` - 官方情感动作库
335
- - `pollen-robotics/reachy-mini-dances-library` - 舞蹈动作库
336
-
337
- **实现方案**:
338
-
339
- | 语音助手事件 | 触发动作 | SDK API |
340
- |-------------|---------|---------|
341
- | 唤醒词检测 | 播放 "greeting" 动作 | `play_move(moves.get("greeting"))` |
342
- | 收到肯定回复 | 播放 "happy" / "nod" 动作 | `play_move(moves.get("happy"))` |
343
- | 收到否定回复 | 播放 "sad" / "shake" 动作 | `play_move(moves.get("sad"))` |
344
- | 播放乐/娱乐 | 播放 "dance" 动作 | `play_move(moves.get("dance"))` |
345
- | 定时器完成 | 播放 "alert" 动作 | `play_move(moves.get("surprised"))` |
346
- | 错误/无法理解 | 播放 "confused" 动作 | `play_move(moves.get("confused"))` |
347
- | 天气查询-晴天 | 播放 "happy" 动作 | 根据天气类型选择 |
348
- | 天气查询-雨天 | 播放 "sad" 动作 | 根据天气类型选择 |
 
 
 
 
 
349
 
350
  **代码示例**:
351
  ```python
@@ -368,40 +377,21 @@ class EmotionMotionController:
368
  self.reachy.play_move(self.dances.get("dance_1"), sound=True)
369
  ```
370
 
371
- ### Phase 14 - 智能声源追踪增强 (高优先级)
372
 
373
  **目标**: 利用 DOA (Direction of Arrival) 实现更自然的声源追踪和多人对话支持。
374
 
375
- **当前实现**: 唤醒时转向声源
376
- **增强方案**:
377
 
378
- | 功能 | 说明 | SDK API |
379
- |------|------|---------|
380
- | 持续声源追踪 | 对话过程中持续跟踪说话人位置 | `media.get_DoA()` |
381
- | 多人对话切换 | 检测到新说话人时平滑转向 | `goto_target(head=..., method=MIN_JERK)` |
382
- | 声源可视化 | LED 指示当前声源方向 | `LED_DOA_COLOR` 参数 |
383
- | 语音活动检测 | 只在检测到语音时追踪 | `DoAInfo.speech_detected` |
384
 
385
- **代码示例**:
386
- ```python
387
- async def continuous_doa_tracking(self):
388
- """持续追踪声源方向"""
389
- while self.is_listening:
390
- doa_result = self.reachy.media.get_DoA()
391
- if doa_result and doa_result[1]: # speech_detected
392
- angle_rad, _ = doa_result
393
- # 平滑转向声源
394
- yaw_deg = math.degrees(angle_rad - math.pi/2)
395
- self.reachy.look_at_world(
396
- x=math.cos(angle_rad),
397
- y=math.sin(angle_rad),
398
- z=0.3,
399
- duration=0.3
400
- )
401
- await asyncio.sleep(0.1)
402
- ```
403
-
404
- ### Phase 15 - 卡通风格运动模式 (中优先级)
405
 
406
  **目标**: 使用 SDK 的插值技术让机器人动作更有个性和表现力。
407
 
@@ -411,175 +401,183 @@ async def continuous_doa_tracking(self):
411
  - `EASE_IN_OUT` - 缓入缓出,优雅
412
  - `CARTOON` - 卡通风格,带回弹效果,活泼可爱
413
 
414
- **应用场景**:
415
 
416
- | 场景 | 推荐插值 | 效果 |
417
- |------|---------|------|
418
- | 唤醒点头 | `CARTOON` | 活泼的回弹效果 |
419
- | 思考抬头 | `EASE_IN_OUT` | 优雅的过渡 |
420
- | 说话时微动 | `MIN_JERK` | 自然流畅 |
421
- | 错误摇头 | `CARTOON` | 夸张的否定 |
422
- | 返回中立 | `MIN_JERK` | 平滑归位 |
423
 
424
- **代码示例**:
425
- ```python
426
- from reachy_mini.utils.interpolation import InterpolationTechnique
427
-
428
- def on_wakeup_cartoon(self):
429
- """卡通风格唤醒动作"""
430
- # 使用卡通插值,带弹效果
431
- self.reachy.goto_target(
432
- head=nod_pose,
433
- duration=0.4,
434
- method=InterpolationTechnique.CARTOON
435
- )
436
- ```
437
 
438
- ### Phase 16 - 说话时天线同步动画 (中优先级)
439
 
440
  **目标**: TTS 播放时,天线随音频节奏摆动,模拟"说话"效果。
441
 
442
- **实现方案**:
443
- ```python
444
- async def speech_antenna_sync(self, audio_data: np.ndarray):
445
- """根据音频能量驱动天线摆动"""
446
- # 计算音频能量
447
- energy = np.abs(audio_data).mean()
448
-
449
- # 映射到天线角度 (±30度范围)
450
- amplitude = min(energy * 100, 30)
451
-
452
- # 左右天线交替摆动
453
- left_angle = math.radians(amplitude)
454
- right_angle = math.radians(-amplitude)
455
 
456
- self.reachy.set_target(antennas=[right_angle, left_angle])
457
- ```
458
-
459
- ### Phase 17 - 视觉注视交互 (中优先级)
460
 
461
  **目标**: 利用摄像头检测人脸,实现眼神交流。
462
 
463
  **SDK 支持**:
464
  - `look_at_image(u, v)` - 注视图像中的点
465
  - `look_at_world(x, y, z)` - 注视世界坐标点
466
- - `media.get_frame()` - 获取摄像头画面
467
 
468
- **实现方案**:
469
 
470
- | 功能 | 说明 |
471
- |------|------|
472
- | 人脸检测 | 使用 OpenCV/MediaPipe 检测人脸 |
473
- | 眼神追踪 | 对话时注视说话人的脸 |
474
- | 多人切换 | 检测到多人时,注视当前说话人 |
475
- | 空闲扫视 | 空闲时随机环顾四周 |
476
 
477
- **代码示例**:
478
- ```python
479
- import cv2
480
 
481
- async def face_tracking_loop(self):
482
- """人脸追踪循环"""
483
- face_cascade = cv2.CascadeClassifier(
484
- cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'
485
- )
486
 
487
- while self.is_active:
488
- frame = self.reachy.media.get_frame()
489
- if frame is None:
490
- continue
491
 
492
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
493
- faces = face_cascade.detectMultiScale(gray, 1.1, 4)
 
494
 
495
- if len(faces) > 0:
496
- x, y, w, h = faces[0]
497
- # 注视人脸中心
498
- self.reachy.look_at_image(x + w//2, y + h//2, duration=0.3)
499
 
500
- await asyncio.sleep(0.1)
501
- ```
 
 
 
502
 
503
- ### Phase 18 - 重力补偿互动模式 (低优先级)
504
 
505
- **目标**: 允许户物理触摸和引导机人头部,实现"教学"式交互
506
 
507
- **SDK 支持**: `enable_gravity_compensation()` - 电机进入重力补偿模式,可手动移动
 
 
508
 
509
- **应用场景**:
510
- - 用户说 "让我教你一个动作" → 进入重力补偿模式
511
- - 用户手动移动头部 → 录制动作轨迹
512
- - 用户说 "记住这个" → 保存动作
513
- - 用户说 "做刚才的动作" → 播放录制的动作
514
 
515
- **代码示例**:
516
- ```python
517
- async def teaching_mode(self):
518
- """教学模式 - 用户可手引导机器人"""
519
- self.reachy.enable_gravity_compensation()
520
- self.reachy.start_recording()
521
 
522
- # 等待用户完成教学
523
- await self.wait_for_command("记住这个")
524
 
525
- recorded_data = self.reachy.stop_recording()
526
- self.reachy.enable_motors()
527
 
528
- # 保存为自定义动作
529
- self.save_custom_move(recorded_data)
530
- ```
531
 
532
- ### Phase 19 - 环境感知响应 (低优先级,仅无线版本)
533
 
534
- **目标**: 利用 IMU 传感感知环境变化并做出响应
 
 
 
 
 
 
535
 
536
- **SDK 支持**:
537
- - `mini.imu["accelerometer"]` - 加速度计
538
- - `mini.imu["gyroscope"]` - 陀螺仪
539
 
540
- **应用场景**:
541
 
542
- | 检测事件 | 响应动作 |
543
- |---------|---------|
544
- | 被拍打/敲击 | 播放惊讶动作 + 语音 "哎呀!" |
545
- | 被摇晃 | 播放晕眩动作 + 语音 "别晃我~" |
546
- | 倾斜/倒下 | 播放求助动作 + 语音 "我倒了,帮帮我" |
547
- | 长时间静止 | 进入休眠动画 |
548
 
549
- ### Phase 20 - Home Assistant 场景联动 (低优先级)
 
 
 
 
 
550
 
551
- **目标**: 根据 Home Assistant 的场景/自动化触发机器人动作。
 
 
552
 
553
- **实现方案**: 通过 ESPHome 服务调用
554
 
555
- | HA 场景 | 机器人响应 |
556
- |--------|-----------|
557
- | 早安场景 | 播放唤醒动作 + "早上好!" |
558
- | 晚安场景 | 播放睡眠动作 + "晚安~" |
559
- | 有人回家 | 转向门口 + 挥手 + "欢迎回家!" |
560
- | 门铃响起 | 转向门口 + 警觉动作 |
561
- | 播放音乐 | 随音乐节奏摆动 |
562
 
563
- ---
 
 
 
564
 
565
- ## 功能优先级总结
 
 
 
566
 
567
- ### 高优先级 (已完成)
568
- - ✅ Phase 1-12: 基础 ESPHome 实体 (45+ 个)
569
 
570
- ### 优先级 (近期实现)
571
- - ⏳ **Phase 13**: 情感动作反馈系统 - 让机器人有"灵魂"
572
- - **Phase 14**: 智能声源追踪增强 - 更自然的对话体验
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
573
 
574
- ### 中优先级 (计划中)
575
- - ⏳ **Phase 15**: 卡通风格运动模式 - 更有个性的动作
576
- - ⏳ **Phase 16**: 说话时天线同步 - 模拟说话效果
577
- - ⏳ **Phase 17**: 视觉注视交互 - 眼神交流
578
 
579
- ### 低优先级 (未来考虑)
580
- - ⏳ **Phase 18**: 重力补偿互动模式 - 教学式交互
581
- - **Phase 19**: 环境感知响应 - IMU 触发动作
582
- - ⏳ **Phase 20**: Home Assistant 场景联动 - 智能家居整合
 
 
 
 
 
 
 
 
 
 
 
583
 
584
  ### SDK 数据结构参考
585
 
 
321
 
322
  ---
323
 
324
+ ## 🚀 语音助手增强功能实现状态
325
 
326
+ ### Phase 13 - 情感动作反馈系统 (部分实) 🟡
327
 
328
+ **实现状态**: 基础架构已就绪,但仅支持手触发,未与语音助手事件自动关联
329
 
330
+ **已实现功能**:
331
+ - ✅ Phase 8 Emotion Selector 实体 (`emotion`)
332
+ - ✅ 基础情感动作播放API (`_play_emotion`)
333
+ - ✅ 情感映射: Happy/Sad/Angry/Fear/Surprise/Disgust
334
+ - ✅ 与 HuggingFace 动作库集成 (`pollen-robotics/reachy-mini-emotions-library`)
335
 
336
+ **未实现功能**:
337
+ - 自动根据语音助手响应触发情感动作
338
+ - 意图识别与情感匹配
339
+ - 舞蹈动作库集成
340
+ - ❌ 上下文感知(如天气查询-晴天播放 happy,雨天播放 sad)
341
+
342
+ **代码位置**:
343
+ - `entity_registry.py:633-658` - Emotion Selector 实体
344
+ - `satellite.py:544-574` - `_play_emotion()` 方法
345
+
346
+ **原始规划** (未完全实现):
347
+
348
+ | 助手事件 | 触发动作 | SDK API | 实现状态 |
349
+ |-------------|---------|---------|---------|
350
+ | 唤醒词检测 | 播放 "greeting" 动作 | `play_move(moves.get("greeting"))` | ❌ 未实现 |
351
+ | 收到肯定回复 | 播放 "happy" / "nod" 动作 | `play_move(moves.get("happy"))` | ❌ 未实现 |
352
+ | 收到否定回复 | 播放 "sad" / "shake" 动作 | `play_move(moves.get("sad"))` | ❌ 未实现 |
353
+ | 播放音乐/娱乐 | 播放 "dance" 动作 | `play_move(moves.get("dance"))` | ❌ 未实现 |
354
+ | 定时器完成 | 播放 "alert" 动作 | `play_move(moves.get("surprised"))` | ❌ 未实现 |
355
+ | 错误/无法理解 | 播放 "confused" 动作 | `play_move(moves.get("confused"))` | ❌ 未实现 |
356
+ | 天气查询-晴天 | 播放 "happy" 动作 | 根据天气类型选择 | ❌ 未实现 |
357
+ | 天气查询-雨天 | 播放 "sad" 动作 | 根据天气类型选择 | ❌ 未实现 |
358
 
359
  **代码示例**:
360
  ```python
 
377
  self.reachy.play_move(self.dances.get("dance_1"), sound=True)
378
  ```
379
 
380
+ ### Phase 14 - 智能声源追踪增强 (未实现)
381
 
382
  **目标**: 利用 DOA (Direction of Arrival) 实现更自然的声源追踪和多人对话支持。
383
 
384
+ **当前实现**: 唤醒时转向声源 (`motion.py:on_wakeup()`)
385
+ **未实现增强**:
386
 
387
+ | 功能 | 说明 | SDK API | 实现状态 |
388
+ |------|------|---------|---------|
389
+ | 持续声源追踪 | 对话过程中持续跟踪说话人位置 | `media.get_DoA()` | ❌ 未实现 |
390
+ | 多人对话切换 | 检测到新说话人时平滑转向 | `goto_target(head=..., method=MIN_JERK)` | ❌ 未实现 |
391
+ | 声源可视化 | LED 指示当前声源方向 | `LED_DOA_COLOR` 参数 | ❌ 未实现 |
392
+ | 语音活动检测 | 只在检测到语音时追踪 | `DoAInfo.speech_detected` | ✅ 已暴露为实体 |
393
 
394
+ ### Phase 15 - 卡通风格运动模式 (未实现) ❌
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
395
 
396
  **目标**: 使用 SDK 的插值技术让机器人动作更有个性和表现力。
397
 
 
401
  - `EASE_IN_OUT` - 缓入缓出,优雅
402
  - `CARTOON` - 卡通风格,带回弹效果,活泼可爱
403
 
404
+ **实现状态**: 当前使用默认 `MIN_JERK` 插值,未实现动态插值切换
405
 
406
+ **未实现场景**:
 
 
 
 
 
 
407
 
408
+ | 场景 | 推荐插值 | 效果 | 实现状态 |
409
+ |------|---------|------|---------|
410
+ | 唤醒点头 | `CARTOON` | 活泼的回弹效果 | ❌ 未实现 |
411
+ | 思考抬头 | `EASE_IN_OUT` | 优雅的过渡 | ❌ 未实现 |
412
+ | 说话时微动 | `MIN_JERK` | 自然流畅 | ✅ 当前默认 |
413
+ | 错误摇头 | `CARTOON` | 夸张否定 | ❌ 未实现 |
414
+ | 中立 | `MIN_JERK` | 平滑归位 | ✅ 当前默认 |
 
 
 
 
 
 
415
 
416
+ ### Phase 16 - 说话时天线同步动画 (未实现)
417
 
418
  **目标**: TTS 播放时,天线随音频节奏摆动,模拟"说话"效果。
419
 
420
+ **实现状态**: ❌ 完全未实现
 
 
 
 
 
 
 
 
 
 
 
 
421
 
422
+ ### Phase 17 - 视觉注视交互 (未实现)
 
 
 
423
 
424
  **目标**: 利用摄像头检测人脸,实现眼神交流。
425
 
426
  **SDK 支持**:
427
  - `look_at_image(u, v)` - 注视图像中的点
428
  - `look_at_world(x, y, z)` - 注视世界坐标点
429
+ - `media.get_frame()` - 获取摄像头画面 (✅ 已在 `camera_server.py:146` 实现)
430
 
431
+ **实现功能**:
432
 
433
+ | 功能 | 说明 | 实现状态 |
434
+ |------|------|---------|
435
+ | 人脸检测 | 使用 OpenCV/MediaPipe 检测人脸 | ❌ 未实现 |
436
+ | 眼神追踪 | 对话时注视说话人的脸 | ❌ 未实现 |
437
+ | 多人切换 | 检测到多人时,注视当前说话人 | ❌ 未实现 |
438
+ | 空闲扫视 | 空闲时随机环顾四周 | ❌ 未实现 |
439
 
440
+ ### Phase 18 - 重力补偿互动模式 (部分实现) 🟡
 
 
441
 
442
+ **目标**: 允许用户物理触摸和引导机器人头部,实现"教学"式交互。
 
 
 
 
443
 
444
+ **SDK 支持**: `enable_gravity_compensation()` - 电机进入重力补偿模式,可手动移动
 
 
 
445
 
446
+ **已实现功能**:
447
+ - 重力补偿模式切换 (`motor_mode` Select 实体,选项 "gravity_compensation")
448
+ - ✅ `reachy_controller.py:236-237` - 重力补偿 API 调用
449
 
450
+ **未实现功能**:
451
+ - 教学模式 - 录制动作轨迹
452
+ - ❌ 保存/播放自定义动作
453
+ - 语音命令触发教学流程
454
 
455
+ **应用场景**:
456
+ - ❌ 用户说 "让我教你一个动作" → 进入重力补偿���式
457
+ - ❌ 用户手动移动头部 → 录制动作轨迹
458
+ - ❌ 用户说 "记住这个" → 保存动作
459
+ - ❌ 用户说 "做刚才的动作" → 播放录制的动作
460
 
461
+ ### Phase 19 - 环境感知响应 (未实现)
462
 
463
+ **目标**: IMU 传感感知环境变化并做出响应
464
 
465
+ **SDK 支持**:
466
+ - ✅ `mini.imu["accelerometer"]` - 加速度计 (Phase 7 已实现为实体)
467
+ - ✅ `mini.imu["gyroscope"]` - 陀螺仪 (Phase 7 已实现为实体)
468
 
469
+ **未实现功能**:
 
 
 
 
470
 
471
+ | 检测事件 | 响应动作 | 实现状态 |
472
+ |---------|---------|---------|
473
+ | 被拍打/敲击 | 播放惊讶动作 + 语音 "哎呀!" | ❌ 未实现 |
474
+ | 被摇晃 | 播放晕眩作 + 语音 "别晃我~" | ❌ 未实现 |
475
+ | 倾斜/倒下 | 播放求助动作 + 语音 "我倒了,帮帮我" | ❌ 未实现 |
476
+ | 长时间静止 | 进入休眠动画 | ❌ 未实现 |
477
 
478
+ ### Phase 20 - Home Assistant 场景联动 (未实现) ❌
 
479
 
480
+ **目标**: 根据 Home Assistant 的场景/自动化触发机器人动作。
 
481
 
482
+ **实现方案**: 通过 ESPHome 服务调用
 
 
483
 
484
+ **未实现场景**:
485
 
486
+ | HA 场景 | 机响应 | 实现状态 |
487
+ |--------|-----------|---------|
488
+ | 早安场景 | 播放唤醒动作 + "早上好!" | ❌ 未实现 |
489
+ | 晚安场景 | 播放睡眠动作 + "晚安~" | ❌ 未实现 |
490
+ | 有人回家 | 转向门口 + 挥手 + "欢迎回家!" | ❌ 未实现 |
491
+ | 门铃响起 | 转向门口 + 警觉动作 | ❌ 未实现 |
492
+ | 播放音乐 | 随音乐节奏摆动 | ❌ 未实现 |
493
 
494
+ ---
 
 
495
 
496
+ ## 📊 功能实现总结
497
 
498
+ ### 已完成功能
 
 
 
 
 
499
 
500
+ #### 核心语音助手 (Phase 1-12)
501
+ - **45+ ESPHome 实体** - 全部实现
502
+ - **基础语音交互** - 唤醒词检测、STT/TTS 集成
503
+ - **运动反馈** - 点头、摇头、注视等基础动作
504
+ - **音频处理** - AGC、噪声抑制、回声消除
505
+ - **摄像头流** - MJPEG 实时预览
506
 
507
+ #### 部分实现功能 (Phase 13-20)
508
+ - **Phase 13** - 情感动作 API 基础设施 (手动触发可用)
509
+ - **Phase 18** - 重力补偿模式切换 (教学流程未实现)
510
 
511
+ ### 未实现功能
512
 
513
+ #### 高优先级
514
+ - **Phase 13** - 自动情感动作反馈 (需与语音助手事件关联)
515
+ - **Phase 14** - 持续声源追踪 (仅唤醒时转向)
 
 
 
 
516
 
517
+ #### 中优先级
518
+ - **Phase 15** - 卡通风格运动模式 (需动态插值切换)
519
+ - **Phase 16** - 天线同步动画
520
+ - **Phase 17** - 人脸追踪与眼神交互
521
 
522
+ #### 优先级
523
+ - **Phase 18** - 教学模式录制/播放功能
524
+ - **Phase 19** - IMU 环境感知响应
525
+ - **Phase 20** - Home Assistant 场景联动
526
 
527
+ ---
 
528
 
529
+ ## 功能优先级总结 (更新版)
530
+
531
+ ### 高优先级 (已完成 ✅)
532
+ - ✅ **Phase 1-12**: 基础 ESPHome 实体 (45+ 个)
533
+ - ✅ 核心语音���手功能
534
+ - ✅ 基础运动反馈 (点头、摇头、注视)
535
+
536
+ ### 高优先级 (部分实现 🟡)
537
+ - 🟡 **Phase 13**: 情感动作反馈系统
538
+ - ✅ Emotion Selector 实体与 API 基础设施
539
+ - ❌ 自动根据语音助手响应触发情感动作
540
+ - ❌ 意图识别与情感匹配
541
+ - ❌ 舞蹈动作库集成
542
+
543
+ ### 高优先级 (未实现 ❌)
544
+ - ❌ **Phase 14**: 智能声源追踪增强
545
+ - ✅ 唤醒时转向声源
546
+ - ❌ 持续声源追踪
547
+ - ❌ 多人对话切换
548
+ - ❌ 声源可视化
549
+
550
+ ### 中优先级 (未实现 ❌)
551
+ - ❌ **Phase 15**: 卡通风格运动模式 - 更有个性的动作
552
+ - ❌ **Phase 16**: 说话时天线同步 - 模拟说话效果
553
+ - ❌ **Phase 17**: 视觉注视交互 - 眼神交流
554
+
555
+ ### 低优先级 (部分实现 🟡)
556
+ - 🟡 **Phase 18**: 重力补偿互动模式
557
+ - ✅ 重力补偿模式切换
558
+ - ❌ 教学式交互 (录制/播放功能)
559
+
560
+ ### 低优先级 (未实现 ❌)
561
+ - ❌ **Phase 19**: 环境感知响应 - IMU 触发动作
562
+ - ❌ **Phase 20**: Home Assistant 场景联动 - 智能家居整合
563
 
564
+ ---
 
 
 
565
 
566
+ ## 📈 完成度统计
567
+
568
+ | 阶段 | 状态 | 完成度 | 说明 |
569
+ |------|------|--------|------|
570
+ | Phase 1-12 | ✅ 完成 | 100% | 45+ ESPHome 实体全部实现 |
571
+ | Phase 13 | 🟡 部分完成 | 30% | API 基础设施就绪,缺自动触发 |
572
+ | Phase 14 | ❌ 未完成 | 20% | 仅实现唤醒时转向 |
573
+ | Phase 15 | ❌ 未完成 | 0% | 未实现动态插值切换 |
574
+ | Phase 16 | ❌ 未完成 | 0% | 完全未实现 |
575
+ | Phase 17 | ❌ 未完成 | 10% | 摄像头已实现,缺人脸检测 |
576
+ | Phase 18 | 🟡 部分完成 | 40% | 模式切换已实现,缺教学流程 |
577
+ | Phase 19 | ❌ 未完成 | 10% | IMU 数据已暴露,缺触发逻辑 |
578
+ | Phase 20 | ❌ 未完成 | 0% | 完全未实现 |
579
+
580
+ **总体完成度**: **Phase 1-12: 100%** | **Phase 13-20: ~15%**
581
 
582
  ### SDK 数据结构参考
583
 
pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
 
5
  [project]
6
  name = "reachy_mini_ha_voice"
7
- version = "0.1.0"
8
  description = "Home Assistant Voice Assistant for Reachy Mini"
9
  readme = "README.md"
10
  requires-python = ">=3.10"
 
4
 
5
  [project]
6
  name = "reachy_mini_ha_voice"
7
+ version = "0.1.5"
8
  description = "Home Assistant Voice Assistant for Reachy Mini"
9
  readme = "README.md"
10
  requires-python = ">=3.10"
reachy_mini_ha_voice/__init__.py CHANGED
@@ -11,7 +11,7 @@ Key features:
11
  - Reachy Mini motion control integration
12
  """
13
 
14
- __version__ = "0.1.0"
15
  __author__ = "Desmond Dong"
16
 
17
  # Don't import main module here to avoid runpy warning
 
11
  - Reachy Mini motion control integration
12
  """
13
 
14
+ __version__ = "0.1.5"
15
  __author__ = "Desmond Dong"
16
 
17
  # Don't import main module here to avoid runpy warning