Skip to content
ย 
ย 

Latest commit

ย 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

AI ๆ™บ่ƒฝ็›ฒไบบ็œผ้•œ็ณป็ปŸ ๐Ÿค–๐Ÿ‘“

ไธ€ไธช้ขๅ‘่ง†้šœไบบๅฃซ็š„ๆ™บ่ƒฝๅฏผ่ˆชไธŽ่พ…ๅŠฉ็ณป็ปŸ๏ผŒ้›†ๆˆไบ†็›ฒ้“ๅฏผ่ˆชใ€่ฟ‡้ฉฌ่ทฏ่พ…ๅŠฉใ€็‰ฉๅ“่ฏ†ๅˆซใ€ๅฎžๆ—ถ่ฏญ้Ÿณไบคไบ’็ญ‰ๅŠŸ่ƒฝใ€‚ ๆœฌ้กน็›ฎไป…ไธบไบคๆตๅญฆไน ไฝฟ็”จ๏ผŒ่ฏทๅ‹ฟ็›ดๆŽฅ็ป™่ง†้šœไบบ็พคไฝฟ็”จใ€‚ๆœฌ้กน็›ฎๅ†…ไป…ๅŒ…ๅซไปฃ็ ๏ผŒๆจกๅž‹ๅœฐๅ€๏ผšhttps://www.modelscope.cn/models/archifancy/AIGlasses_for_navigation ใ€‚ไธ‹่ฝฝๅŽๅญ˜ๆ”พๅœจ/model ๆ–‡ไปถๅคน

ๅŠŸ่ƒฝ็‰นๆ€ง โ€ข ๅฟซ้€Ÿๅผ€ๅง‹ โ€ข ็ณป็ปŸๆžถๆž„ โ€ข ไฝฟ็”จ่ฏดๆ˜Ž โ€ข ๅผ€ๅ‘ๆ–‡ๆกฃ


1 2 4

๐Ÿ“‹ ็›ฎๅฝ•

โœจ ๅŠŸ่ƒฝ็‰นๆ€ง

๐Ÿšถ ็›ฒ้“ๅฏผ่ˆช็ณป็ปŸ

  • ๅฎžๆ—ถ็›ฒ้“ๆฃ€ๆต‹๏ผšๅŸบไบŽ YOLO ๅˆ†ๅ‰ฒๆจกๅž‹ๅฎžๆ—ถ่ฏ†ๅˆซ็›ฒ้“
  • ๆ™บ่ƒฝ่ฏญ้Ÿณๅผ•ๅฏผ๏ผšๆไพ›็ฒพๅ‡†็š„ๆ–นๅ‘ๆŒ‡ๅผ•๏ผˆๅทฆ่ฝฌใ€ๅณ่ฝฌใ€็›ด่กŒ็ญ‰๏ผ‰
  • ้šœ็ข็‰ฉๆฃ€ๆต‹ไธŽ้ฟ้šœ๏ผš่‡ชๅŠจ่ฏ†ๅˆซๅ‰ๆ–น้šœ็ข็‰ฉๅนถ่ง„ๅˆ’้ฟ้šœ่ทฏ็บฟ
  • ่ฝฌๅผฏๆฃ€ๆต‹๏ผš่‡ชๅŠจ่ฏ†ๅˆซๆ€ฅ่ฝฌๅผฏๅนถๆๅ‰ๆ้†’
  • ๅ…‰ๆต็จณๅฎš๏ผšไฝฟ็”จ Lucas-Kanade ๅ…‰ๆต็ฎ—ๆณ•็จณๅฎšๆŽฉ็ ๏ผŒๅ‡ๅฐ‘ๆŠ–ๅŠจ

๐Ÿšฆ ่ฟ‡้ฉฌ่ทฏ่พ…ๅŠฉ

  • ๆ–‘้ฉฌ็บฟ่ฏ†ๅˆซ๏ผšๅฎžๆ—ถๆฃ€ๆต‹ๆ–‘้ฉฌ็บฟไฝ็ฝฎๅ’Œๆ–นๅ‘
  • ็บข็ปฟ็ฏ่ฏ†ๅˆซ๏ผšๅŸบไบŽ้ขœ่‰ฒๅ’Œๅฝข็Šถ็š„็บข็ปฟ็ฏ็Šถๆ€ๆฃ€ๆต‹
  • ๅฏน้ฝๅผ•ๅฏผ๏ผšๅผ•ๅฏผ็”จๆˆทๅฏนๅ‡†ๆ–‘้ฉฌ็บฟไธญๅฟƒ
  • ๅฎ‰ๅ…จๆ้†’๏ผš็ปฟ็ฏๆ—ถ่ฏญ้Ÿณๆ็คบๅฏไปฅ้€š่กŒ

๐Ÿ” ็‰ฉๅ“่ฏ†ๅˆซไธŽๆŸฅๆ‰พ

  • ๆ™บ่ƒฝ็‰ฉๅ“ๆœ็ดข๏ผš่ฏญ้ŸณๆŒ‡ไปคๆŸฅๆ‰พ็‰ฉๅ“๏ผˆๅฆ‚"ๅธฎๆˆ‘ๆ‰พไธ€ไธ‹็บข็‰›"๏ผ‰
  • ๅฎžๆ—ถ็›ฎๆ ‡่ฟฝ่ธช๏ผšไฝฟ็”จ YOLO-E ๅผ€ๆ”พ่ฏๆฑ‡ๆฃ€ๆต‹ + ByteTrack ่ฟฝ่ธช
  • ๆ‰‹้ƒจๅผ•ๅฏผ๏ผš็ป“ๅˆ MediaPipe ๆ‰‹้ƒจๆฃ€ๆต‹๏ผŒๅผ•ๅฏผ็”จๆˆทๆ‰‹้ƒจ้ ่ฟ‘็‰ฉๅ“
  • ๆŠ“ๅ–ๆฃ€ๆต‹๏ผšๆฃ€ๆต‹ๆ‰‹้ƒจๆกๆŒๅŠจไฝœ๏ผŒ็กฎ่ฎค็‰ฉๅ“ๅทฒๆ‹ฟๅˆฐ
  • ๅคšๆจกๆ€ๅ้ฆˆ๏ผš่ง†่ง‰ๆ ‡ๆณจ + ่ฏญ้Ÿณๅผ•ๅฏผ + ๅฑ…ไธญๆ็คบ

๐ŸŽ™๏ธ ๅฎžๆ—ถ่ฏญ้Ÿณไบคไบ’

  • ่ฏญ้Ÿณ่ฏ†ๅˆซ๏ผˆASR๏ผ‰๏ผšๅŸบไบŽ้˜ฟ้‡Œไบ‘ DashScope Paraformer ๅฎžๆ—ถ่ฏญ้Ÿณ่ฏ†ๅˆซ
  • ๅคšๆจกๆ€ๅฏน่ฏ๏ผšQwen-Omni-Turbo ๆ”ฏๆŒๅ›พๅƒ+ๆ–‡ๆœฌ่พ“ๅ…ฅ๏ผŒ่ฏญ้Ÿณ่พ“ๅ‡บ
  • ๆ™บ่ƒฝๆŒ‡ไปค่งฃๆž๏ผš่‡ชๅŠจ่ฏ†ๅˆซๅฏผ่ˆชใ€ๆŸฅๆ‰พใ€ๅฏน่ฏ็ญ‰ไธๅŒ็ฑปๅž‹ๆŒ‡ไปค
  • ไธŠไธ‹ๆ–‡ๆ„Ÿ็Ÿฅ๏ผšๅœจไธๅŒๆจกๅผไธ‹ๆ™บ่ƒฝ่ฟ‡ๆปคๆ— ๅ…ณๆŒ‡ไปค

๐Ÿ“น ่ง†้ข‘ไธŽ้Ÿณ้ข‘ๅค„็†

  • ๅฎžๆ—ถ่ง†้ข‘ๆต๏ผšWebSocket ๆŽจๆต๏ผŒๆ”ฏๆŒๅคšๅฎขๆˆท็ซฏๅŒๆ—ถ่ง‚็œ‹
  • ้Ÿณ่ง†้ข‘ๅŒๆญฅๅฝ•ๅˆถ๏ผš่‡ชๅŠจไฟๅญ˜ๅธฆๆ—ถ้—ดๆˆณ็š„ๅฝ•ๅƒๅ’Œ้Ÿณ้ข‘ๆ–‡ไปถ
  • IMU ๆ•ฐๆฎ่žๅˆ๏ผšๆŽฅๆ”ถ ESP32 ็š„ IMU ๆ•ฐๆฎ๏ผŒๆ”ฏๆŒๅงฟๆ€ไผฐ่ฎก
  • ๅคš่ทฏ้Ÿณ้ข‘ๆทท้Ÿณ๏ผšๆ”ฏๆŒ็ณป็ปŸ่ฏญ้Ÿณใ€AI ๅ›žๅคใ€็Žฏๅขƒ้ŸณๅŒๆ—ถๆ’ญๆ”พ

๐ŸŽจ ๅฏ่ง†ๅŒ–ไธŽไบคไบ’

  • Web ๅฎžๆ—ถ็›‘ๆŽง๏ผšๆต่งˆๅ™จ็ซฏๅฎžๆ—ถๆŸฅ็œ‹ๅค„็†ๅŽ็š„่ง†้ข‘ๆต
  • IMU 3D ๅฏ่ง†ๅŒ–๏ผšThree.js ๅฎžๆ—ถๆธฒๆŸ“่ฎพๅค‡ๅงฟๆ€
  • ็Šถๆ€้ขๆฟ๏ผšๆ˜พ็คบๅฏผ่ˆช็Šถๆ€ใ€ๆฃ€ๆต‹ไฟกๆฏใ€FPS ็ญ‰
  • ไธญๆ–‡ๅ‹ๅฅฝ๏ผšๆ‰€ๆœ‰็•Œ้ขๅ’Œ่ฏญ้Ÿณไฝฟ็”จไธญๆ–‡๏ผŒๆ”ฏๆŒ่‡ชๅฎšไน‰ๅญ—ไฝ“

๐Ÿ’ป ็ณป็ปŸ่ฆๆฑ‚

็กฌไปถ่ฆๆฑ‚

  • ๅผ€ๅ‘/ๆœๅŠกๅ™จ็ซฏ๏ผš

    • CPU: Intel i5 ๆˆ–ไปฅไธŠ๏ผˆๆŽจ่ i7/i9๏ผ‰
    • GPU: NVIDIA GPU๏ผˆๆ”ฏๆŒ CUDA 11.8+๏ผŒๆŽจ่ RTX 3060 ๆˆ–ไปฅไธŠ๏ผ‰
    • ๅ†…ๅญ˜: 8GB RAM๏ผˆๆŽจ่ 16GB๏ผ‰
    • ๅญ˜ๅ‚จ: 10GB ๅฏ็”จ็ฉบ้—ด
  • ๅฎขๆˆท็ซฏ่ฎพๅค‡๏ผˆๅฏ้€‰๏ผ‰๏ผš

    • ESP32-CAM ๆˆ–ๅ…ถไป–ๆ”ฏๆŒ WebSocket ็š„ๆ‘„ๅƒๅคด
    • ้บฆๅ…‹้ฃŽ๏ผˆ็”จไบŽ่ฏญ้Ÿณ่พ“ๅ…ฅ๏ผ‰
    • ๆ‰ฌๅฃฐๅ™จ/่€ณๆœบ๏ผˆ็”จไบŽ่ฏญ้Ÿณ่พ“ๅ‡บ๏ผ‰

่ฝฏไปถ่ฆๆฑ‚

  • ๆ“ไฝœ็ณป็ปŸ: Windows 10/11, Linux (Ubuntu 20.04+), macOS 10.15+
  • Python: 3.9 - 3.11
  • CUDA: 11.8 ๆˆ–ๆ›ด้ซ˜็‰ˆๆœฌ๏ผˆGPU ๅŠ ้€Ÿๅฟ…้œ€๏ผ‰
  • ๆต่งˆๅ™จ: Chrome 90+, Firefox 88+, Edge 90+๏ผˆ็”จไบŽ Web ็›‘ๆŽง๏ผ‰

API ๅฏ†้’ฅ

  • ้˜ฟ้‡Œไบ‘ DashScope API Key๏ผˆๅฟ…้œ€๏ผ‰๏ผš

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

1. ๅ…‹้š†้กน็›ฎ

git clone https://github.com/yourusername/aiglass.git
cd aiglass/rebuild1002

2. ๅฎ‰่ฃ…ไพ่ต–

ๅˆ›ๅปบ่™šๆ‹Ÿ็Žฏๅขƒ๏ผˆๆŽจ่๏ผ‰

python -m venv venv
# Windows
venv\Scripts\activate
# Linux/macOS
source venv/bin/activate

ๅฎ‰่ฃ… Python ๅŒ…

pip install -r requirements.txt

ๅฎ‰่ฃ… CUDA ๅ’Œ cuDNN๏ผˆGPU ๅŠ ้€Ÿ๏ผ‰

่ฏทๅ‚่€ƒ NVIDIA CUDA Toolkit ๅฎ‰่ฃ…ๆŒ‡ๅ—

3. ไธ‹่ฝฝๆจกๅž‹ๆ–‡ไปถ

ๅฐ†ไปฅไธ‹ๆจกๅž‹ๆ–‡ไปถๆ”พๅ…ฅ model/ ็›ฎๅฝ•๏ผš

ๆจกๅž‹ๆ–‡ไปถ ็”จ้€” ๅคงๅฐ ไธ‹่ฝฝ้“พๆŽฅ
yolo-seg.pt ็›ฒ้“ๅˆ†ๅ‰ฒ ~50MB [ๅพ…่กฅๅ……]
yoloe-11l-seg.pt ๅผ€ๆ”พ่ฏๆฑ‡ๆฃ€ๆต‹ ~80MB [ๅพ…่กฅๅ……]
shoppingbest5.pt ็‰ฉๅ“่ฏ†ๅˆซ ~30MB [ๅพ…่กฅๅ……]
trafficlight.pt ็บข็ปฟ็ฏๆฃ€ๆต‹ ~20MB [ๅพ…่กฅๅ……]
hand_landmarker.task ๆ‰‹้ƒจๆฃ€ๆต‹ ~15MB MediaPipe Models

4. ้…็ฝฎ API ๅฏ†้’ฅ

ๅˆ›ๅปบ .env ๆ–‡ไปถ๏ผš

# .env
DASHSCOPE_API_KEY=your_api_key_here

ๆˆ–ๅœจไปฃ็ ไธญ็›ดๆŽฅไฟฎๆ”น๏ผˆไธๆŽจ่๏ผ‰๏ผš

# app_main.py, line 50
API_KEY = "your_api_key_here"

5. ๅฏๅŠจ็ณป็ปŸ

python app_main.py

็ณป็ปŸๅฐ†ๅœจ http://0.0.0.0:8081 ๅฏๅŠจ๏ผŒๆ‰“ๅผ€ๆต่งˆๅ™จ่ฎฟ้—ฎๅณๅฏ็œ‹ๅˆฐๅฎžๆ—ถ็›‘ๆŽง็•Œ้ขใ€‚

6. ่ฟžๆŽฅ่ฎพๅค‡๏ผˆๅฏ้€‰๏ผ‰

ๅฆ‚ๆžœไฝฟ็”จ ESP32-CAM๏ผŒ่ฏท๏ผš

  1. ็ƒงๅฝ• compile/compile.ino ๅˆฐ ESP32
  2. ไฟฎๆ”น WiFi ้…็ฝฎ๏ผŒ่ฟžๆŽฅๅˆฐๅŒไธ€็ฝ‘็ปœ
  3. ESP32 ่‡ชๅŠจ่ฟžๆŽฅๅˆฐ WebSocket ็ซฏ็‚น

๐Ÿ—๏ธ ็ณป็ปŸๆžถๆž„

ๆ•ดไฝ“ๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        ๅฎขๆˆท็ซฏๅฑ‚                              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”‚
โ”‚  โ”‚  ESP32-CAM   โ”‚  โ”‚   ๆต่งˆๅ™จ      โ”‚  โ”‚   ็งปๅŠจ็ซฏ      โ”‚      โ”‚
โ”‚  โ”‚  (่ง†้ข‘/้Ÿณ้ข‘)  โ”‚  โ”‚  (็›‘ๆŽง็•Œ้ข)   โ”‚  โ”‚  (่ฏญ้ŸณๆŽงๅˆถ)   โ”‚      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚ WebSocket        โ”‚ HTTP/WS          โ”‚ WebSocket
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         โ”‚                  โ”‚                  โ”‚              โ”‚
โ”‚    โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚
โ”‚    โ”‚         FastAPI ไธปๆœๅŠก (app_main.py)              โ”‚    โ”‚
โ”‚    โ”‚  - WebSocket ่ทฏ็”ฑ็ฎก็†                              โ”‚    โ”‚
โ”‚    โ”‚  - ้Ÿณ่ง†้ข‘ๆตๅˆ†ๅ‘                                     โ”‚    โ”‚
โ”‚    โ”‚  - ็Šถๆ€็ฎก็†ไธŽๅ่ฐƒ                                   โ”‚    โ”‚
โ”‚    โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚
โ”‚         โ”‚                โ”‚                โ”‚                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”‚
โ”‚  โ”‚ ASR ๆจกๅ—     โ”‚  โ”‚ Omni ๅฏน่ฏ   โ”‚  โ”‚ ้Ÿณ้ข‘ๆ’ญๆ”พ     โ”‚         โ”‚
โ”‚  โ”‚ (asr_core)   โ”‚  โ”‚(omni_client)โ”‚  โ”‚(audio_player)โ”‚         โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ”‚
โ”‚                                                               โ”‚
โ”‚         ๅบ”็”จๅฑ‚                                                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚                  โ”‚                  โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     ๅฏผ่ˆช็ปŸ้ข†ๅฑ‚                                โ”‚
โ”‚    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”‚
โ”‚    โ”‚  NavigationMaster (navigation_master.py)         โ”‚       โ”‚
โ”‚    โ”‚  - ็Šถๆ€ๆœบ๏ผšIDLE/CHAT/BLINDPATH_NAV/              โ”‚       โ”‚
โ”‚    โ”‚            CROSSING/TRAFFIC_LIGHT/ITEM_SEARCH    โ”‚       โ”‚
โ”‚    โ”‚  - ๆจกๅผๅˆ‡ๆขไธŽๅ่ฐƒ                                โ”‚       โ”‚
โ”‚    โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜       โ”‚
โ”‚        โ”‚                     โ”‚                   โ”‚            โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚   โ”‚ ็›ฒ้“ๅฏผ่ˆช     โ”‚   โ”‚  ่ฟ‡้ฉฌ่ทฏๅฏผ่ˆช      โ”‚   โ”‚ ็‰ฉๅ“ๆŸฅๆ‰พ    โ”‚   โ”‚
โ”‚   โ”‚(blindpath)   โ”‚   โ”‚ (crossstreet)   โ”‚   โ”‚(yolomedia)  โ”‚   โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚                  โ”‚                  โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                       ๆจกๅž‹ๆŽจ็†ๅฑ‚                              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”‚
โ”‚  โ”‚ YOLO ๅˆ†ๅ‰ฒ     โ”‚  โ”‚  YOLO-E ๆฃ€ๆต‹ โ”‚  โ”‚ MediaPipe    โ”‚       โ”‚
โ”‚  โ”‚ (็›ฒ้“/ๆ–‘้ฉฌ็บฟ) โ”‚  โ”‚ (ๅผ€ๆ”พ่ฏๆฑ‡)   โ”‚  โ”‚  (ๆ‰‹้ƒจๆฃ€ๆต‹)   โ”‚       โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                         โ”‚
โ”‚  โ”‚ ็บข็ปฟ็ฏๆฃ€ๆต‹    โ”‚  โ”‚ ๅ…‰ๆต็จณๅฎš      โ”‚                         โ”‚
โ”‚  โ”‚(HSV+YOLO)     โ”‚  โ”‚(Lucas-Kanade)โ”‚                         โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    ๅค–้ƒจๆœๅŠกๅฑ‚                                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”            โ”‚
โ”‚  โ”‚  ้˜ฟ้‡Œไบ‘ DashScope API                         โ”‚            โ”‚
โ”‚  โ”‚  - Paraformer ASR (ๅฎžๆ—ถ่ฏญ้Ÿณ่ฏ†ๅˆซ)              โ”‚            โ”‚
โ”‚  โ”‚  - Qwen-Omni-Turbo (ๅคšๆจกๆ€ๅฏน่ฏ)               โ”‚            โ”‚
โ”‚  โ”‚  - Qwen-Turbo (ๆ ‡็ญพๆๅ–)                      โ”‚            โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ ธๅฟƒๆจกๅ—่ฏดๆ˜Ž

ๆจกๅ— ๆ–‡ไปถ ๅŠŸ่ƒฝ
ไธปๅบ”็”จ app_main.py FastAPI ๆœๅŠกใ€WebSocket ็ฎก็†ใ€็Šถๆ€ๅ่ฐƒ
ๅฏผ่ˆช็ปŸ้ข† navigation_master.py ็Šถๆ€ๆœบ็ฎก็†ใ€ๆจกๅผๅˆ‡ๆขใ€่ฏญ้Ÿณ่Š‚ๆต
็›ฒ้“ๅฏผ่ˆช workflow_blindpath.py ็›ฒ้“ๆฃ€ๆต‹ใ€้ฟ้šœใ€่ฝฌๅผฏๅผ•ๅฏผ
่ฟ‡้ฉฌ่ทฏๅฏผ่ˆช workflow_crossstreet.py ๆ–‘้ฉฌ็บฟๆฃ€ๆต‹ใ€็บข็ปฟ็ฏ่ฏ†ๅˆซใ€ๅฏน้ฝๅผ•ๅฏผ
็‰ฉๅ“ๆŸฅๆ‰พ yolomedia.py ็‰ฉๅ“ๆฃ€ๆต‹ใ€ๆ‰‹้ƒจๅผ•ๅฏผใ€ๆŠ“ๅ–็กฎ่ฎค
่ฏญ้Ÿณ่ฏ†ๅˆซ asr_core.py ๅฎžๆ—ถ ASRใ€VADใ€ๆŒ‡ไปค่งฃๆž
่ฏญ้Ÿณๅˆๆˆ omni_client.py Qwen-Omni ๆตๅผ่ฏญ้Ÿณ็”Ÿๆˆ
้Ÿณ้ข‘ๆ’ญๆ”พ audio_player.py ๅคš่ทฏๆทท้Ÿณใ€TTS ๆ’ญๆ”พใ€้Ÿณ้‡ๆŽงๅˆถ
่ง†้ข‘ๅฝ•ๅˆถ sync_recorder.py ้Ÿณ่ง†้ข‘ๅŒๆญฅๅฝ•ๅˆถ
ๆกฅๆŽฅ IO bridge_io.py ็บฟ็จ‹ๅฎ‰ๅ…จ็š„ๅธง็ผ“ๅ†ฒไธŽๅˆ†ๅ‘

๐Ÿ“– ไฝฟ็”จ่ฏดๆ˜Ž

่ฏญ้ŸณๆŒ‡ไปค

็ณป็ปŸๆ”ฏๆŒไปฅไธ‹่ฏญ้ŸณๆŒ‡ไปค๏ผˆ่ฏด่ฏๆ—ถๆ— ้œ€ๅ”ค้†’่ฏ๏ผ‰๏ผš

ๅฏผ่ˆชๆŽงๅˆถ

"ๅผ€ๅง‹ๅฏผ่ˆช" / "็›ฒ้“ๅฏผ่ˆช"     โ†’ ๅฏๅŠจ็›ฒ้“ๅฏผ่ˆช
"ๅœๆญขๅฏผ่ˆช" / "็ป“ๆŸๅฏผ่ˆช"     โ†’ ๅœๆญข็›ฒ้“ๅฏผ่ˆช
"ๅผ€ๅง‹่ฟ‡้ฉฌ่ทฏ" / "ๅธฎๆˆ‘่ฟ‡้ฉฌ่ทฏ"  โ†’ ๅฏๅŠจ่ฟ‡้ฉฌ่ทฏๆจกๅผ
"่ฟ‡้ฉฌ่ทฏ็ป“ๆŸ" / "็ป“ๆŸ่ฟ‡้ฉฌ่ทฏ"  โ†’ ๅœๆญข่ฟ‡้ฉฌ่ทฏๆจกๅผ

็บข็ปฟ็ฏๆฃ€ๆต‹

"ๆฃ€ๆต‹็บข็ปฟ็ฏ" / "็œ‹็บข็ปฟ็ฏ"   โ†’ ๅฏๅŠจ็บข็ปฟ็ฏๆฃ€ๆต‹
"ๅœๆญขๆฃ€ๆต‹" / "ๅœๆญข็บข็ปฟ็ฏ"   โ†’ ๅœๆญขๆฃ€ๆต‹

็‰ฉๅ“ๆŸฅๆ‰พ

"ๅธฎๆˆ‘ๆ‰พไธ€ไธ‹ [็‰ฉๅ“ๅ]"       โ†’ ๅฏๅŠจ็‰ฉๅ“ๆœ็ดข
  ็คบไพ‹๏ผš
  - "ๅธฎๆˆ‘ๆ‰พไธ€ไธ‹็บข็‰›"
  - "ๆ‰พไธ€ไธ‹AD้’™ๅฅถ"
  - "ๅธฎๆˆ‘ๆ‰พ็Ÿฟๆณ‰ๆฐด"
"ๆ‰พๅˆฐไบ†" / "ๆ‹ฟๅˆฐไบ†"         โ†’ ็กฎ่ฎคๆ‰พๅˆฐ็‰ฉๅ“

ๆ™บ่ƒฝๅฏน่ฏ

"ๅธฎๆˆ‘็œ‹็œ‹่ฟ™ๆ˜ฏไป€ไนˆ"          โ†’ ๆ‹็…ง่ฏ†ๅˆซ
"่ฟ™ไธชไธœ่ฅฟ่ƒฝๅƒๅ—"            โ†’ ็‰ฉๅ“ๅ’จ่ฏข
ไปปไฝ•ๅ…ถไป–้—ฎ้ข˜                 โ†’ AI ๅฏน่ฏ

ๅฏผ่ˆช็Šถๆ€่ฏดๆ˜Ž

็ณป็ปŸๅŒ…ๅซไปฅไธ‹ไธป่ฆ็Šถๆ€๏ผˆ่‡ชๅŠจๅˆ‡ๆข๏ผ‰๏ผš

  1. IDLE - ็ฉบ้—ฒ็Šถๆ€

    • ็ญ‰ๅพ…็”จๆˆทๆŒ‡ไปค
    • ๆ˜พ็คบๅŽŸๅง‹่ง†้ข‘ๆต
  2. CHAT - ๅฏน่ฏๆจกๅผ

    • ไธŽ AI ่ฟ›่กŒๅคšๆจกๆ€ๅฏน่ฏ
    • ๆš‚ๅœๅฏผ่ˆชๅŠŸ่ƒฝ
  3. BLINDPATH_NAV - ็›ฒ้“ๅฏผ่ˆช

    • ONBOARDING: ไธŠ็›ฒ้“ๅผ•ๅฏผ
      • ROTATION: ๆ—‹่ฝฌๅฏนๅ‡†็›ฒ้“
      • TRANSLATION: ๅนณ็งป่‡ณ็›ฒ้“ไธญๅฟƒ
    • NAVIGATING: ๆฒฟ็›ฒ้“่กŒ่ตฐ
      • ๅฎžๆ—ถๆ–นๅ‘ไฟฎๆญฃ
      • ้šœ็ข็‰ฉๆฃ€ๆต‹
    • MANEUVERING_TURN: ่ฝฌๅผฏๅค„็†
    • AVOIDING_OBSTACLE: ้ฟ้šœ
  4. CROSSING - ่ฟ‡้ฉฌ่ทฏๆจกๅผ

    • SEEKING_CROSSWALK: ๅฏปๆ‰พๆ–‘้ฉฌ็บฟ
    • WAIT_TRAFFIC_LIGHT: ็ญ‰ๅพ…็ปฟ็ฏ
    • CROSSING: ่ฟ‡้ฉฌ่ทฏไธญ
    • SEEKING_NEXT_BLINDPATH: ๅฏปๆ‰พๅฏน้ข็›ฒ้“
  5. ITEM_SEARCH - ็‰ฉๅ“ๆŸฅๆ‰พ

    • ๅฎžๆ—ถๆฃ€ๆต‹็›ฎๆ ‡็‰ฉๅ“
    • ๅผ•ๅฏผๆ‰‹้ƒจ้ ่ฟ‘
    • ็กฎ่ฎคๆŠ“ๅ–
  6. TRAFFIC_LIGHT_DETECTION - ็บข็ปฟ็ฏๆฃ€ๆต‹

    • ๅฎžๆ—ถๆฃ€ๆต‹็บข็ปฟ็ฏ็Šถๆ€
    • ่ฏญ้Ÿณๆ’ญๆŠฅ้ขœ่‰ฒๅ˜ๅŒ–

Web ็›‘ๆŽง็•Œ้ข

ๆ‰“ๅผ€ๆต่งˆๅ™จ่ฎฟ้—ฎ http://localhost:8081๏ผŒๅฏไปฅ็œ‹ๅˆฐ๏ผš

  • ๅฎžๆ—ถ่ง†้ข‘ๆต๏ผšๆ˜พ็คบๅค„็†ๅŽ็š„่ง†้ข‘๏ผŒๅŒ…ๆ‹ฌๅฏผ่ˆชๆ ‡ๆณจ
  • ็Šถๆ€้ขๆฟ๏ผšๅฝ“ๅ‰ๆจกๅผใ€ๆฃ€ๆต‹ไฟกๆฏใ€FPS
  • IMU ๅฏ่ง†ๅŒ–๏ผš่ฎพๅค‡ๅงฟๆ€ 3D ๅฎžๆ—ถๆธฒๆŸ“
  • ่ฏญ้Ÿณ่ฏ†ๅˆซ็ป“ๆžœ๏ผšๆ˜พ็คบ่ฏ†ๅˆซ็š„ๆ–‡ๅญ—ๅ’Œ AI ๅ›žๅค

WebSocket ็ซฏ็‚น

็ซฏ็‚น ็”จ้€” ๆ•ฐๆฎๆ ผๅผ
/ws/camera ESP32 ็›ธๆœบๆŽจๆต Binary (JPEG)
/ws/viewer ๆต่งˆๅ™จ่ฎข้˜…่ง†้ข‘ Binary (JPEG)
/ws_audio ESP32 ้Ÿณ้ข‘ไธŠไผ  Binary (PCM16)
/ws_ui UI ็Šถๆ€ๆŽจ้€ JSON
/ws IMU ๆ•ฐๆฎๆŽฅๆ”ถ JSON
/stream.wav ้Ÿณ้ข‘ไธ‹่ฝฝๆต Binary (WAV)

โš™๏ธ ้…็ฝฎ่ฏดๆ˜Ž

็Žฏๅขƒๅ˜้‡

ๅˆ›ๅปบ .env ๆ–‡ไปถ้…็ฝฎไปฅไธ‹ๅ‚ๆ•ฐ๏ผš

# ้˜ฟ้‡Œไบ‘ API
DASHSCOPE_API_KEY=sk-xxxxx

# ๆจกๅž‹่ทฏๅพ„๏ผˆๅฏ้€‰๏ผŒไฝฟ็”จ้ป˜่ฎค่ทฏๅพ„ๅฏไธ้…็ฝฎ๏ผ‰
BLIND_PATH_MODEL=model/yolo-seg.pt
OBSTACLE_MODEL=model/yoloe-11l-seg.pt
YOLOE_MODEL_PATH=model/yoloe-11l-seg.pt

# ๅฏผ่ˆชๅ‚ๆ•ฐ
AIGLASS_MASK_MIN_AREA=1500      # ๆœ€ๅฐๆŽฉ็ ้ข็งฏ
AIGLASS_MASK_MORPH=3            # ๅฝขๆ€ๅญฆๆ ธๅคงๅฐ
AIGLASS_MASK_MISS_TTL=6         # ๆŽฉ็ ไธขๅคฑๅฎนๅฟๅธงๆ•ฐ
AIGLASS_PANEL_SCALE=0.65        # ๆ•ฐๆฎ้ขๆฟ็ผฉๆ”พ

# ้Ÿณ้ข‘้…็ฝฎ
TTS_INTERVAL_SEC=1.0            # ่ฏญ้Ÿณๆ’ญๆŠฅ้—ด้š”
ENABLE_TTS=true                 # ๅฏ็”จ่ฏญ้Ÿณๆ’ญๆŠฅ

ไฟฎๆ”นๆจกๅž‹่ทฏๅพ„

ๅฆ‚ๆžœๆจกๅž‹ๆ–‡ไปถไธๅœจ้ป˜่ฎคไฝ็ฝฎ๏ผŒๅฏไปฅๅœจ็›ธๅบ”ๆ–‡ไปถไธญไฟฎๆ”น๏ผš

# workflow_blindpath.py
seg_model_path = "your/custom/path/yolo-seg.pt"

# yolomedia.py
YOLO_MODEL_PATH = "your/custom/path/shoppingbest5.pt"
HAND_TASK_PATH = "your/custom/path/hand_landmarker.task"

่ฐƒๆ•ดๆ€ง่ƒฝๅ‚ๆ•ฐ

ๆ นๆฎ็กฌไปถๆ€ง่ƒฝ่ฐƒๆ•ด๏ผš

# yolomedia.py
HAND_DOWNSCALE = 0.8    # ๆ‰‹้ƒจๆฃ€ๆต‹้™้‡‡ๆ ท๏ผˆ่ถŠๅฐ่ถŠๅฟซ๏ผŒ็ฒพๅบฆ้™ไฝŽ๏ผ‰
HAND_FPS_DIV = 1        # ๆ‰‹้ƒจๆฃ€ๆต‹ๆŠฝๅธง๏ผˆ2=้š”ๅธง๏ผŒ3=ๆฏ3ๅธง๏ผ‰

# workflow_blindpath.py  
FEATURE_PARAMS = dict(
    maxCorners=600,      # ๅ…‰ๆต็‰นๅพ็‚นๆ•ฐ๏ผˆ่ถŠๅฐ‘่ถŠๅฟซ๏ผ‰
    qualityLevel=0.001,  # ็‰นๅพ็‚น่ดจ้‡
    minDistance=5        # ็‰นๅพ็‚นๆœ€ๅฐ้—ด่ท
)

๐Ÿ› ๏ธ ๅผ€ๅ‘ๆ–‡ๆกฃ

ๆทปๅŠ ๆ–ฐ็š„่ฏญ้ŸณๆŒ‡ไปค

  1. ๅœจ app_main.py ็š„ start_ai_with_text_custom() ๅ‡ฝๆ•ฐไธญๆทปๅŠ ๏ผš
# ๆฃ€ๆŸฅๆ–ฐๆŒ‡ไปค
if "ๆ–ฐๆŒ‡ไปคๅ…ณ้”ฎ่ฏ" in user_text:
    # ๆ‰ง่กŒ่‡ชๅฎšไน‰้€ป่พ‘
    print("[CUSTOM] ๆ–ฐๆŒ‡ไปค่ขซ่งฆๅ‘")
    await ui_broadcast_final("[็ณป็ปŸ] ๆ–ฐๅŠŸ่ƒฝๅทฒๅฏๅŠจ")
    return
  1. ๅฆ‚้œ€ไฟฎๆ”นๆŒ‡ไปค่ฟ‡ๆปค่ง„ๅˆ™๏ผš
# ไฟฎๆ”น allowed_keywords ๅˆ—่กจ
allowed_keywords = ["ๅธฎๆˆ‘็œ‹", "ๅธฎๆˆ‘ๆ‰พ", "ไฝ ็š„ๆ–ฐๅ…ณ้”ฎ่ฏ"]

ๆ‰ฉๅฑ•ๅฏผ่ˆชๅŠŸ่ƒฝ

  1. ๅœจ workflow_blindpath.py ๆทปๅŠ ๆ–ฐ็Šถๆ€๏ผš
# ๅœจ BlindPathNavigator.__init__() ไธญๅˆๅง‹ๅŒ–
self.your_new_state_var = False

# ๅœจ process_frame() ไธญๅค„็†
def process_frame(self, image):
    if self.your_new_state_var:
        # ่‡ชๅฎšไน‰ๅค„็†้€ป่พ‘
        guidance_text = "ๆ–ฐ็Šถๆ€ๅผ•ๅฏผ"
    # ...
  1. ๅœจ navigation_master.py ๆทปๅŠ ็Šถๆ€ๆœบ็Šถๆ€๏ผš
class NavigationMaster:
    def start_your_new_mode(self):
        self.state = "YOUR_NEW_MODE"
        # ๅˆๅง‹ๅŒ–้€ป่พ‘

้›†ๆˆๆ–ฐๆจกๅž‹

  1. ๅˆ›ๅปบๆจกๅž‹ๅŒ…่ฃ…็ฑป๏ผš
# your_model_wrapper.py
class YourModelWrapper:
    def __init__(self, model_path):
        self.model = load_your_model(model_path)
    
    def detect(self, image):
        # ๆŽจ็†้€ป่พ‘
        return results
  1. ๅœจ app_main.py ไธญๅŠ ่ฝฝ๏ผš
your_model = YourModelWrapper("model/your_model.pt")
  1. ๅœจ็›ธๅบ”็š„ๅทฅไฝœๆตไธญ่ฐƒ็”จ๏ผš
results = your_model.detect(image)

่ฐƒ่ฏ•ๆŠ€ๅทง

  1. ๅฏ็”จ่ฏฆ็ป†ๆ—ฅๅฟ—๏ผš
# app_main.py ้กถ้ƒจ
import logging
logging.basicConfig(level=logging.DEBUG)
  1. ๆŸฅ็œ‹ๅธง็އ็“ถ้ขˆ๏ผš
# yolomedia.py
PERF_DEBUG = True  # ๆ‰“ๅฐๅค„็†ๆ—ถ้—ด
  1. ๆต‹่ฏ•ๅ•ไธชๆจกๅ—๏ผš
# ๆต‹่ฏ•็›ฒ้“ๅฏผ่ˆช
python test_cross_street_blindpath.py

# ๆต‹่ฏ•็บข็ปฟ็ฏๆฃ€ๆต‹
python test_traffic_light.py

# ๆต‹่ฏ•ๅฝ•ๅˆถๅŠŸ่ƒฝ
python test_recorder.py

๐Ÿ“„ ่ฎธๅฏ่ฏ

ๆœฌ้กน็›ฎ้‡‡็”จ MIT ่ฎธๅฏ่ฏ - ่ฏฆ่ง LICENSE ๆ–‡ไปถ

About

a open framework for blind navigation based on esp32

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages