πŸ€– Π£ΠΌΠ½Ρ‹ΠΉ Ρ€ΠΎΠ±ΠΎΡ‚ с мноТСствСнными Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€ΠΎΠ±ΠΎΡ‚Π° с комплСксной сСнсорной систСмой

🎯 Π€ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: ОбъСдиняСм всС ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ
⭐ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡƒΠΌΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π° с нСсколькими Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ

πŸ‘¨β€πŸ« Π£Ρ‡ΠΈΡ‚Π΅Π»ΡŒ: АхмСтов Рустам
🏫 Π¨ΠΊΠΎΠ»Π°: Π“Π‘ΠžΠ£ β„– 1362
πŸ“… Π”Π°Ρ‚Π°: 2025-06-14
⏰ ВрСмя: 105 ΠΌΠΈΠ½ΡƒΡ‚

πŸš€ Π“Ρ€Π°Π½Π΄ΠΈΠΎΠ·Π½Ρ‹ΠΉ Ρ„ΠΈΠ½Π°Π» курса!

🎯 Наша супСр-Π·Π°Π΄Π°Ρ‡Π°

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ€ΠΎΠ±ΠΎΡ‚Π°-унивСрсала, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚:

  1. πŸ“ Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ - ΠΊΠ°ΠΊ настоящий Π°Π²Ρ‚ΠΎΠΏΠΈΠ»ΠΎΡ‚
  2. 🚧 ΠžΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ прСпятствия - Π½Π΅ Π²Ρ€Π΅Π·Π°Ρ‚ΡŒΡΡ Π½ΠΈ Π²ΠΎ Ρ‡Ρ‚ΠΎ
  3. 🧠 ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡƒΠΌΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ - Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½Π΅Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚
  4. ⚑ Π”Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ быстро - Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

πŸ† ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ успСха

Наш Ρ€ΠΎΠ±ΠΎΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½:

  • βœ… Π”Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ‡Π΅Ρ€Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ Π½Π° Π±Π΅Π»ΠΎΠΌ Ρ„ΠΎΠ½Π΅
  • βœ… ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ прСпятствиями
  • βœ… ΠžΠ±ΡŠΠ΅Π·ΠΆΠ°Ρ‚ΡŒ прСпятствия ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π½Π° линию
  • βœ… Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ прСдсказуСмо

πŸŽͺ Π­Ρ‚ΠΎ настоящий Π²Ρ‹Π·ΠΎΠ² для ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ²-Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠΎΠ²!

🧠 АрхитСктура ΡƒΠΌΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π°

πŸŽ›οΈ КомплСксная сСнсорная систСма

Наши “Π³Π»Π°Π·Π° ΠΈ ΡƒΡˆΠΈ”:

  • πŸ“ Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ (2 ΡˆΡ‚.) - Π»Π΅Π²Ρ‹ΠΉ ΠΈ ΠΏΡ€Π°Π²Ρ‹ΠΉ для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ слСдования
  • πŸ“‘ Π”Π°Ρ‚Ρ‡ΠΈΠΊ расстояния (1 ΡˆΡ‚.) - ΡƒΠ»ΡŒΡ‚Ρ€Π°Π·Π²ΡƒΠΊ для обнаруТСния прСпятствий
  • 🧭 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ (ΠΏΠΎ ТСланию) - для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ точности

πŸ”„ Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ²

Π›ΠΎΠ³ΠΈΠΊΠ° принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ:

11. Π‘Π•Π—ΠžΠŸΠΠ‘ΠΠžΠ‘Π’Π¬ (Π²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚)
2   ↳ Π•ΡΡ‚ΡŒ прСпятствиС? β†’ ΠžΠ±Ρ…ΠΎΠ΄ΠΈΠΌ!
3   
42. ΠΠΠ’Π˜Π“ΠΠ¦Π˜Π― (срСдний ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚)  
5   ↳ ΠŸΠΎΡ‚Π΅Ρ€ΡΠ»ΠΈ линию? β†’ Π˜Ρ‰Π΅ΠΌ!
6   
73. Π‘Π›Π•Π”ΠžΠ’ΠΠΠ˜Π• (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚)
8   ↳ Π’ΠΈΠ΄ΠΈΠΌ линию? β†’ Π•Π΄Π΅ΠΌ ΠΏΠΎ Π½Π΅ΠΉ!

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ: Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΠΆΠ½Π΅Π΅ скорости, Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π²Π°ΠΆΠ½Π΅Π΅ эффСктности!

βš™οΈ ЀизичСскиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²

πŸ“ Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ (инфракрасныС)

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

  • Π˜Π·Π»ΡƒΡ‡Π°ΡŽΡ‚ инфракрасный свСт
  • Π˜Π·ΠΌΠ΅Ρ€ΡΡŽΡ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ сигнал
  • ЧСрная линия ΠΏΠΎΠ³Π»ΠΎΡ‰Π°Π΅Ρ‚ свСт β†’ слабый сигнал
  • БСлая ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ свСт β†’ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ сигнал

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°:

\[\text{ΠžΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅} = \frac{\text{Π˜Π½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ свСта}}{\text{Π˜Π½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈΠ·Π»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ свСта}}\]

ΠŸΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния:

  • ЧСрная линия: ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ < 30%
  • БСрая Π·ΠΎΠ½Π°: 30% ≀ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ≀ 70%
  • БСлая ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ: ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ > 70%

πŸ“‘ Π£Π»ΡŒΡ‚Ρ€Π°Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

  • Π˜Π·Π»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠ»ΡŒΡ‚Ρ€Π°Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ (40 ΠΊΠ“Ρ†)
  • Π˜Π·ΠΌΠ΅Ρ€ΡΠ΅Ρ‚ врСмя Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° эха
  • РассчитываСт расстояниС ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅

Π€ΠΎΡ€ΠΌΡƒΠ»Π° расчСта расстояния:

\[d = \frac{v \cdot t}{2}\]

Π³Π΄Π΅:

  • d - расстояниС Π΄ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
  • v - ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π²ΡƒΠΊΠ° (β‰ˆ 343 ΠΌ/с)
  • t - врСмя ΠΏΠΎΠ»Π΅Ρ‚Π° сигнала

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ расчСт:

\[d_{см} = \frac{t_{микросСкунды}}{58}\]

⭐ Для Π»ΡŽΠ±ΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…: Π€ΠΈΠ·ΠΈΠΊΠ° сСнсорной Ρ„ΡƒΠ·ΠΈΠΈ

ОбъСдинСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²:

Weighted fusion для Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π»ΠΈΠ½ΠΈΠΈ:

\[\text{ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ} = w_L \cdot S_L + w_R \cdot S_R\]

Π³Π΄Π΅ $w_L$ ΠΈ $w_R$ - вСса Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², $S_L$ ΠΈ $S_R$ - ΠΈΡ… показания

Π›ΠΎΠ³ΠΈΠΊΠ° принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ:

\[\text{ДСйствиС} = \begin{cases} \text{STOP} & \text{if } d < d_{критичСскоС} \\ \text{AVOID} & \text{if } d < d_{бСзопасноС} \\ \text{FOLLOW} & \text{if } \text{line detected} \\ \text{SEARCH} & \text{otherwise} \end{cases}\]

ВрСмСнная Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΡˆΡƒΠΌΠΎΠ²:

\[S_{filtered}(t) = \alpha \cdot S_{raw}(t) + (1-\alpha) \cdot S_{filtered}(t-1)\]

Π³Π΄Π΅ Ξ± β‰ˆ 0.3 (коэффициСнт сглаТивания)

πŸ”§ ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€ΠΎΠ±ΠΎΡ‚Π°

πŸ—οΈ Базовая ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€ΠΎΠ±ΠΎΡ‚Π°:

  • Шасси: ΠŸΡ€ΠΎΡ‡Π½Π°Ρ основа с крСплСниями для колСс
  • ΠœΠΎΡ‚ΠΎΡ€Ρ‹: Π”Π²Π° ΠΌΠΎΡ‚ΠΎΡ€Π° для Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄Π°
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€: Arduino ΠΈΠ»ΠΈ аналогичная ΠΏΠ»Π°Ρ‚Π°
  • Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ питания: Π‘Π°Ρ‚Π°Ρ€Π΅ΠΉΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ размСщСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

  • Π¦Π΅Π½Ρ‚Ρ€ тяТСсти максимально Π½ΠΈΠ·ΠΊΠΎ
  • Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ ΠΎΡ‚ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ
  • ΠŸΡ€ΠΎΠ²ΠΎΠ΄Π° Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Ρ‹
  • Доступ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ ΠΈ Ρ€Π°Π·ΡŠΠ΅ΠΌΠ°ΠΌ

πŸ“ Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π»ΠΈΠ½ΠΈΠΈ

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ располоТСниС:

1    [Π ΠΎΠ±ΠΎΡ‚ свСрху]
2    
3    [O]     [O]    ← КолСса
4     |       |
5  [●]         [●]   ← Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ
6     \       /
7      \     /
8       [═══]        ← ЧСрная линия

РасстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ:

\[d_{sensors} = 1.5 \times \text{ΡˆΠΈΡ€ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ}\]

Для стандартной Π»ΠΈΠ½ΠΈΠΈ 20 ΠΌΠΌ: расстояниС β‰ˆ 30 ΠΌΠΌ

πŸ“‘ Установка Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° расстояния

ΠšΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ части:

  • Высота: 5-10 см ΠΎΡ‚ ΠΏΠΎΠ»Π°
  • Π£Π³ΠΎΠ»: строго Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ
  • Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΉ
  • Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ Π½Π° 180Β°
1// ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΊ Arduino
2const int TRIG_PIN = 7;        // Π£Π»ΡŒΡ‚Ρ€Π°Π·Π²ΡƒΠΊ - trigger
3const int ECHO_PIN = 6;        // Π£Π»ΡŒΡ‚Ρ€Π°Π·Π²ΡƒΠΊ - echo
4const int LINE_LEFT_PIN = A0;  // Π›Π΅Π²Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π»ΠΈΠ½ΠΈΠΈ
5const int LINE_RIGHT_PIN = A1; // ΠŸΡ€Π°Π²Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π»ΠΈΠ½ΠΈΠΈ
6const int MOTOR_LEFT_A = 3;    // Π›Π΅Π²Ρ‹ΠΉ ΠΌΠΎΡ‚ΠΎΡ€ - Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅
7const int MOTOR_LEFT_B = 4;    // Π›Π΅Π²Ρ‹ΠΉ ΠΌΠΎΡ‚ΠΎΡ€ - Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅
8const int MOTOR_RIGHT_A = 5;   // ΠŸΡ€Π°Π²Ρ‹ΠΉ ΠΌΠΎΡ‚ΠΎΡ€ - Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅  
9const int MOTOR_RIGHT_B = 8;   // ΠŸΡ€Π°Π²Ρ‹ΠΉ ΠΌΠΎΡ‚ΠΎΡ€ - Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅

⭐ Для Π»ΡŽΠ±ΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ конструкции

АэродинамичСскиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹: Π”Π°ΠΆΠ΅ для ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π° Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

  • ΠžΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ края ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ Ρ‚ΡƒΡ€Π±ΡƒΠ»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ
  • Низкий ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ сопротивлСниС Π²ΠΎΠ·Π΄ΡƒΡ…Π°
  • Π“Π»Π°Π΄ΠΊΠΈΠ΅ повСрхности ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ Ρ‚Ρ€Π΅Π½ΠΈΠ΅

Π¦Π΅Π½Ρ‚Ρ€ масс ΠΈ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ:

\[h_{max} = \frac{b \cdot g}{2 \cdot a_{max}}\]

Π³Π΄Π΅:

  • $h_{max}$ - максимальная бСзопасная высота Ρ†Π΅Π½Ρ‚Ρ€Π° масс
  • $b$ - ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΡˆΠΈΡ€ΠΈΠ½Ρ‹ колСсной Π±Π°Π·Ρ‹
  • $a_{max}$ - максимальноС ускорСниС

ΠœΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ½Π΅Ρ€Ρ†ΠΈΠΈ для ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ΠΎΠ²:

\[I = m \cdot r_{gyration}^2\]

ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π°Ρ конструкция поворачиваСтся быстрСС!

πŸ’» ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠΌΠ½ΠΎΠ³ΠΎ повСдСния

πŸŽ›οΈ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

 1// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ систСмы
 2void setup() {
 3    Serial.begin(9600);
 4    initializeSensors();
 5    initializeMotors();
 6    calibrateSensors();
 7}
 8
 9// Π“Π»Π°Π²Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»
10void loop() {
11    updateSensors();      // Π§ΠΈΡ‚Π°Π΅ΠΌ всС Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ
12    makeDecision();       // ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅
13    executeAction();      // ВыполняСм дСйствиС
14    delay(20);           // 50 Hz update rate
15}

πŸ“Š Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²

 1// Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²
 2struct SensorData {
 3    int leftLine;         // Π›Π΅Π²Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π»ΠΈΠ½ΠΈΠΈ (0-1023)
 4    int rightLine;        // ΠŸΡ€Π°Π²Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π»ΠΈΠ½ΠΈΠΈ (0-1023)
 5    float distance;       // РасстояниС Π² см
 6    bool lineDetected;    // ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° Π»ΠΈ линия
 7    bool obstacleAhead;   // Π•ΡΡ‚ΡŒ Π»ΠΈ прСпятствиС Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ
 8};
 9
10SensorData sensors;
11
12void updateSensors() {
13    // Π§ΠΈΡ‚Π°Π΅ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ
14    sensors.leftLine = analogRead(LINE_LEFT_PIN);
15    sensors.rightLine = analogRead(LINE_RIGHT_PIN);
16    
17    // Π§ΠΈΡ‚Π°Π΅ΠΌ ΡƒΠ»ΡŒΡ‚Ρ€Π°Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ
18    sensors.distance = readUltrasonic();
19    
20    // ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ состояния
21    sensors.lineDetected = (sensors.leftLine < 300) || (sensors.rightLine < 300);
22    sensors.obstacleAhead = sensors.distance < 20.0; // 20 см бСзопасная зона
23}
24
25float readUltrasonic() {
26    digitalWrite(TRIG_PIN, LOW);
27    delayMicroseconds(2);
28    digitalWrite(TRIG_PIN, HIGH);
29    delayMicroseconds(10);
30    digitalWrite(TRIG_PIN, LOW);
31    
32    long duration = pulseIn(ECHO_PIN, HIGH);
33    return duration * 0.034 / 2; // ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π² сантимСтры
34}

🧠 Машина состояний

Бостояния Ρ€ΠΎΠ±ΠΎΡ‚Π°:

 1enum RobotState {
 2    FOLLOWING_LINE,     // Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ
 3    AVOIDING_OBSTACLE,  // ΠžΠ±Ρ…ΠΎΠ΄ прСпятствия
 4    SEARCHING_LINE,     // Поиск потСрянной Π»ΠΈΠ½ΠΈΠΈ
 5    STOPPED            // ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° (аварийная ситуация)
 6};
 7
 8RobotState currentState = FOLLOWING_LINE;
 9
10void makeDecision() {
11    switch (currentState) {
12        case FOLLOWING_LINE:
13            if (sensors.obstacleAhead) {
14                currentState = AVOIDING_OBSTACLE;
15                Serial.println("Switching to OBSTACLE AVOIDANCE");
16            } else if (!sensors.lineDetected) {
17                currentState = SEARCHING_LINE;
18                Serial.println("LINE LOST - Searching...");
19            }
20            break;
21            
22        case AVOIDING_OBSTACLE:
23            if (!sensors.obstacleAhead && sensors.lineDetected) {
24                currentState = FOLLOWING_LINE;
25                Serial.println("Obstacle cleared - Following line");
26            }
27            break;
28            
29        case SEARCHING_LINE:
30            if (sensors.lineDetected) {
31                currentState = FOLLOWING_LINE;
32                Serial.println("Line found - Following");
33            }
34            break;
35            
36        case STOPPED:
37            // ВрСбуСтся Ρ€ΡƒΡ‡Π½ΠΎΠ΅ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ
38            break;
39    }
40}

⚑ Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ дСйствий

 1void executeAction() {
 2    switch (currentState) {
 3        case FOLLOWING_LINE:
 4            followLine();
 5            break;
 6            
 7        case AVOIDING_OBSTACLE:
 8            avoidObstacle();
 9            break;
10            
11        case SEARCHING_LINE:
12            searchLine();
13            break;
14            
15        case STOPPED:
16            stopMotors();
17            break;
18    }
19}
20
21void followLine() {
22    int leftSensor = sensors.leftLine;
23    int rightSensor = sensors.rightLine;
24    
25    // PID-рСгулятор для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ слСдования
26    int error = leftSensor - rightSensor;
27    static int lastError = 0;
28    static int integral = 0;
29    
30    float Kp = 0.5;  // ΠŸΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ коэффициСнт
31    float Ki = 0.01; // Π˜Π½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ коэффициСнт  
32    float Kd = 0.1;  // Π”ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ коэффициСнт
33    
34    integral += error;
35    int derivative = error - lastError;
36    
37    int correction = Kp * error + Ki * integral + Kd * derivative;
38    
39    int baseSpeed = 150;  // Базовая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ
40    int leftSpeed = baseSpeed + correction;
41    int rightSpeed = baseSpeed - correction;
42    
43    // ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ скорости
44    leftSpeed = constrain(leftSpeed, 0, 255);
45    rightSpeed = constrain(rightSpeed, 0, 255);
46    
47    setMotorSpeeds(leftSpeed, rightSpeed);
48    lastError = error;
49}

⭐ Для Π»ΡŽΠ±ΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…: ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹

Адаптивный PID-рСгулятор:

 1class AdaptivePID {
 2private:
 3    float kp, ki, kd;
 4    float integral, lastError;
 5    float maxIntegral = 1000;
 6    
 7public:
 8    AdaptivePID(float p, float i, float d) : kp(p), ki(i), kd(d) {
 9        integral = 0;
10        lastError = 0;
11    }
12    
13    float calculate(float error, float speed) {
14        // Адаптация коэффициСнтов Π² зависимости ΠΎΡ‚ скорости
15        float adaptiveKp = kp * (1.0 + speed / 255.0);
16        float adaptiveKd = kd * (1.0 + speed / 255.0);
17        
18        integral += error;
19        integral = constrain(integral, -maxIntegral, maxIntegral);
20        
21        float derivative = error - lastError;
22        
23        float output = adaptiveKp * error + ki * integral + adaptiveKd * derivative;
24        
25        lastError = error;
26        return output;
27    }
28};

ΠŸΡ€Π΅Π΄ΠΈΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ·Π±Π΅Π³Π°Π½ΠΈΠ΅ прСпятствий:

 1float predictCollisionTime(float distance, float speed) {
 2    if (speed <= 0) return INFINITY;
 3    return distance / speed;
 4}
 5
 6void smartObstacleAvoidance() {
 7    float currentSpeed = getCurrentSpeed();
 8    float timeToCollision = predictCollisionTime(sensors.distance, currentSpeed);
 9    
10    if (timeToCollision < 2.0) {  // 2 сСкунды Π΄ΠΎ столкновСния
11        // НачинаСм ΠΌΠ°Π½Π΅Π²Ρ€ Π·Π°Ρ€Π°Π½Π΅Π΅
12        executeAvoidanceManeuver();
13    }
14}

🎯 Алгоритмы повСдСния

πŸ›£οΈ Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

 1void basicLineFollowing() {
 2    bool leftOnLine = (sensors.leftLine < 300);
 3    bool rightOnLine = (sensors.rightLine < 300);
 4    
 5    if (leftOnLine && rightOnLine) {
 6        // Оба Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Π½Π° Π»ΠΈΠ½ΠΈΠΈ - Π΅Π΄Π΅ΠΌ прямо
 7        setMotorSpeeds(150, 150);
 8    } else if (leftOnLine && !rightOnLine) {
 9        // Линия слСва - ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π²Π»Π΅Π²ΠΎ
10        setMotorSpeeds(100, 200);
11    } else if (!leftOnLine && rightOnLine) {
12        // Линия справа - ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π²ΠΏΡ€Π°Π²ΠΎ  
13        setMotorSpeeds(200, 100);
14    } else {
15        // Линия потСряна - останавливаСмся
16        setMotorSpeeds(0, 0);
17        currentState = SEARCHING_LINE;
18    }
19}

🚧 ΠžΠ±Ρ…ΠΎΠ΄ прСпятствий

Алгоритм ΠΏΡ€Π°Π²ΠΎΠΉ Ρ€ΡƒΠΊΠΈ:

 1void avoidObstacle() {
 2    static int avoidanceStep = 0;
 3    static unsigned long stepStartTime = 0;
 4    
 5    switch (avoidanceStep) {
 6        case 0: // ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ°
 7            stopMotors();
 8            delay(500);
 9            avoidanceStep = 1;
10            stepStartTime = millis();
11            break;
12            
13        case 1: // ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²Π»Π΅Π²ΠΎ Π½Π° 90Β°
14            setMotorSpeeds(-150, 150);  // ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° мСстС
15            if (millis() - stepStartTime > 800) {  // ~90Β°
16                avoidanceStep = 2;
17                stepStartTime = millis();
18            }
19            break;
20            
21        case 2: // Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΏΠ΅Ρ€Π΅Π΄
22            setMotorSpeeds(150, 150);
23            if (millis() - stepStartTime > 1000) {  // ΠŸΡ€ΠΎΠ΅Π·ΠΆΠ°Π΅ΠΌ прСпятствиС
24                avoidanceStep = 3;
25                stepStartTime = millis();
26            }
27            break;
28            
29        case 3: // ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 90Β°
30            setMotorSpeeds(150, -150);
31            if (millis() - stepStartTime > 800) {
32                avoidanceStep = 4;
33                stepStartTime = millis();
34            }
35            break;
36            
37        case 4: // Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ Π»ΠΈΠ½ΠΈΠΈ
38            setMotorSpeeds(150, 150);
39            if (sensors.lineDetected) {
40                avoidanceStep = 5;
41                stepStartTime = millis();
42            }
43            break;
44            
45        case 5: // ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ для Π²Ρ‹Ρ…ΠΎΠ΄Π° Π½Π° линию
46            setMotorSpeeds(150, -150);
47            if (millis() - stepStartTime > 800) {
48                avoidanceStep = 0;  // Бброс
49                currentState = FOLLOWING_LINE;
50            }
51            break;
52    }
53}

πŸ” Поиск потСрянной Π»ΠΈΠ½ΠΈΠΈ

Π‘ΠΏΠΈΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ поиск:

 1void searchLine() {
 2    static unsigned long searchStartTime = 0;
 3    static bool searchInitialized = false;
 4    static int searchRadius = 100;  // мс ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°
 5    static int searchDirection = 1; // 1 = ΠΏΡ€Π°Π²ΠΎ, -1 = Π»Π΅Π²ΠΎ
 6    
 7    if (!searchInitialized) {
 8        searchStartTime = millis();
 9        searchInitialized = true;
10    }
11    
12    // ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ с ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΡΡ радиусом
13    if (searchDirection > 0) {
14        setMotorSpeeds(150, -150);  // ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ
15    } else {
16        setMotorSpeeds(-150, 150);  // ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²Π»Π΅Π²ΠΎ
17    }
18    
19    if (millis() - searchStartTime > searchRadius) {
20        searchDirection *= -1;  // МСняСм Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅
21        searchRadius += 50;     // Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ радиус поиска
22        searchStartTime = millis();
23        
24        // ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ врСмя поиска
25        if (searchRadius > 2000) {
26            currentState = STOPPED;  // Линия Π±Π΅Π·Π½Π°Π΄Π΅ΠΆΠ½ΠΎ потСряна
27            Serial.println("Line search failed - STOPPING");
28        }
29    }
30    
31    // Если нашли линию
32    if (sensors.lineDetected) {
33        searchInitialized = false;
34        searchRadius = 100;  // Бброс ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
35        currentState = FOLLOWING_LINE;
36        Serial.println("Line found!");
37    }
38}

⭐ Для Π»ΡŽΠ±ΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…: МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ для Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ²

Q-Learning для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ повСдСния:

 1class QLearningRobot {
 2private:
 3    float qTable[NUM_STATES][NUM_ACTIONS];
 4    float learningRate = 0.1;
 5    float discountFactor = 0.9;
 6    float explorationRate = 0.1;
 7    
 8    enum State {
 9        ON_LINE_CLEAR = 0,
10        ON_LINE_OBSTACLE = 1,
11        OFF_LINE_CLEAR = 2,
12        OFF_LINE_OBSTACLE = 3
13    };
14    
15    enum Action {
16        MOVE_FORWARD = 0,
17        TURN_LEFT = 1,
18        TURN_RIGHT = 2,
19        REVERSE = 3
20    };
21    
22public:
23    int selectAction(int state) {
24        if (random(100) < explorationRate * 100) {
25            return random(NUM_ACTIONS);  // ИсслСдованиС
26        } else {
27            return getBestAction(state);  // ИспользованиС знаний
28        }
29    }
30    
31    void updateQ(int state, int action, float reward, int nextState) {
32        float maxQ = getMaxQ(nextState);
33        float oldQ = qTable[state][action];
34        
35        qTable[state][action] = oldQ + learningRate * 
36            (reward + discountFactor * maxQ - oldQ);
37    }
38    
39    float calculateReward() {
40        float reward = 0;
41        
42        if (sensors.lineDetected) reward += 10;  // Награда Π·Π° слСдованиС Π»ΠΈΠ½ΠΈΠΈ
43        if (sensors.obstacleAhead) reward -= 50; // Π¨Ρ‚Ρ€Π°Ρ„ Π·Π° риск столкновСния
44        if (getCurrentSpeed() > 100) reward += 1; // Награда Π·Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ
45        
46        return reward;
47    }
48};

πŸ§ͺ ВСстированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

πŸ“Š ПошаговоС тСстированиС

Π­Ρ‚Π°ΠΏ 1: ВСстированиС Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²

 1void testSensors() {
 2    Serial.println("=== SENSOR TEST ===");
 3    
 4    // ВСст Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π»ΠΈΠ½ΠΈΠΈ
 5    Serial.print("Left Line: ");
 6    Serial.print(analogRead(LINE_LEFT_PIN));
 7    Serial.print(" | Right Line: ");
 8    Serial.println(analogRead(LINE_RIGHT_PIN));
 9    
10    // ВСст ΡƒΠ»ΡŒΡ‚Ρ€Π°Π·Π²ΡƒΠΊΠ°
11    Serial.print("Distance: ");
12    Serial.print(readUltrasonic());
13    Serial.println(" cm");
14    
15    delay(500);
16}

Π­Ρ‚Π°ΠΏ 2: ВСстированиС ΠΌΠΎΡ‚ΠΎΡ€ΠΎΠ²

 1void testMotors() {
 2    Serial.println("Testing motors...");
 3    
 4    // Π’ΠΏΠ΅Ρ€Π΅Π΄
 5    setMotorSpeeds(150, 150);
 6    delay(1000);
 7    
 8    // ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²Π»Π΅Π²ΠΎ
 9    setMotorSpeeds(100, 200);
10    delay(500);
11    
12    // ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ  
13    setMotorSpeeds(200, 100);
14    delay(500);
15    
16    // Π‘Ρ‚ΠΎΠΏ
17    stopMotors();
18}

Π­Ρ‚Π°ΠΏ 3: Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ тСстированиС

 1void integrationTest() {
 2    Serial.println("Integration test starting...");
 3    
 4    // ВСст 1: Волько слСдованиС ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ (Π±Π΅Π· прСпятствий)
 5    testLineFollowing();
 6    
 7    // ВСст 2: Волько ΠΎΠ±Ρ…ΠΎΠ΄ прСпятствий (Π±Π΅Π· Π»ΠΈΠ½ΠΈΠΈ)
 8    testObstacleAvoidance();
 9    
10    // ВСст 3: ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ тСст
11    testComplexBehavior();
12}

πŸ”§ ΠšΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²ΠΊΠ° Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²

 1void calibrateSensors() {
 2    Serial.println("Calibrating sensors...");
 3    Serial.println("Place robot on WHITE surface and press button");
 4    
 5    waitForButtonPress();
 6    
 7    // ΠšΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²ΠΊΠ° Π½Π° Π±Π΅Π»ΠΎΠΌ Ρ„ΠΎΠ½Π΅
 8    int whiteLeft = 0, whiteRight = 0;
 9    for (int i = 0; i < 100; i++) {
10        whiteLeft += analogRead(LINE_LEFT_PIN);
11        whiteRight += analogRead(LINE_RIGHT_PIN);
12        delay(10);
13    }
14    whiteLeft /= 100;
15    whiteRight /= 100;
16    
17    Serial.println("Now place on BLACK line and press button");
18    waitForButtonPress();
19    
20    // ΠšΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²ΠΊΠ° Π½Π° Ρ‡Π΅Ρ€Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ
21    int blackLeft = 0, blackRight = 0;
22    for (int i = 0; i < 100; i++) {
23        blackLeft += analogRead(LINE_LEFT_PIN);
24        blackRight += analogRead(LINE_RIGHT_PIN);
25        delay(10);
26    }
27    blackLeft /= 100;
28    blackRight /= 100;
29    
30    // ВычисляСм ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния
31    int thresholdLeft = (whiteLeft + blackLeft) / 2;
32    int thresholdRight = (whiteRight + blackRight) / 2;
33    
34    Serial.print("Thresholds - Left: ");
35    Serial.print(thresholdLeft);
36    Serial.print(", Right: ");
37    Serial.println(thresholdRight);
38}

πŸ† Π‘ΠΎΡ€Π΅Π²Π½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ испытания

🎯 Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΠ΅ 1: “Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ слСдования”

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ:

  • Π ΠΎΠ±ΠΎΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ΅Ρ…Π°Ρ‚ΡŒ ΠΏΠΎ слоТной Ρ‚Ρ€Π°Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (S-ΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Ρ‹, острыС ΡƒΠ³Π»Ρ‹)
  • ΠžΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠ»Π°Π²Π½ΠΎΡΡ‚ΡŒ двиТСния
  • ВрСмя выполнСния: максимум 2 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹

БистСма Π±Π°Π»Π»ΠΎΠ²:

  • 100 Π±Π°Π»Π»ΠΎΠ² - идСальноС ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅
  • -10 Π±Π°Π»Π»ΠΎΠ² Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ срыв с Π»ΠΈΠ½ΠΈΠΈ
  • -5 Π±Π°Π»Π»ΠΎΠ² Π·Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ остановку Π±ΠΎΠ»Π΅Π΅ 3 сСкунд

🚧 Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΠ΅ 2: “ΠœΠ°ΡΡ‚Π΅Ρ€ прСпятствий”

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ:

  • На ΠΏΡƒΡ‚ΠΈ расставлСны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прСпятствия
  • Π ΠΎΠ±ΠΎΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡ… всС ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π° линию
  • ΠŸΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΈΡ Ρ€Π°Π·Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

БистСма Π±Π°Π»Π»ΠΎΠ²:

  • 50 Π±Π°Π»Π»ΠΎΠ² Π·Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠ±ΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ прСпятствиС
  • 100 бонусных Π±Π°Π»Π»ΠΎΠ² Π·Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π½Π° линию
  • -200 Π±Π°Π»Π»ΠΎΠ² Π·Π° столкновСниС

⚑ Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΠ΅ 3: “Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ”

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ:

  • ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ трасса с Π»ΠΈΠ½ΠΈΠ΅ΠΉ ΠΈ прСпятствиями
  • ВрСмя ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅!
  • Баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ качСством

Π€ΠΎΡ€ΠΌΡƒΠ»Π° ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π±Π°Π»Π»Π°: \[\text{Π‘Π°Π»Π»} = \frac{\text{Π‘Π°Π»Π»Ρ‹ Π·Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ} \times 1000}{\text{ВрСмя Π² сСкундах}}\]

πŸ… Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π½ΠΎΠΌΠΈΠ½Π°Ρ†ΠΈΠΈ

  • 🎯 “Π‘Π½Π°ΠΉΠΏΠ΅Ρ€” - самоС Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ слСдованиС ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ
  • ⚑ “БпидстСр” - самоС быстроС ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ трассы
  • 🧠 “Π˜Π½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»” - самый ΡƒΠΌΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ
  • πŸ› οΈ “Π˜Π½ΠΆΠ΅Π½Π΅Ρ€” - Π»ΡƒΡ‡ΡˆΠ°Ρ тСхничСская рСализация
  • 🎨 “Π”ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€” - самый красивый ΠΈ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ€ΠΎΠ±ΠΎΡ‚

πŸ€” РСфлСксия: Ρ‡Π΅ΠΌΡƒ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ

🎯 ВСхничСскиС Π½Π°Π²Ρ‹ΠΊΠΈ

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:

  • βœ… ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ многосСнсорных Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ²
  • βœ… ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²
  • βœ… Π£Ρ‡Π΅Ρ‚ физичСских ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π² конструкции
  • βœ… Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… мСханичСских соСдинСний

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:

  • βœ… АрхитСктура слоТных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с машиной состояний
  • βœ… ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ мноТСствСнных Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²
  • βœ… РСализация PID-рСгуляторов
  • βœ… ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ тСстированиС комплСксных систСм

🧠 ΠšΠΎΠ³Π½ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ

БистСмноС ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅:

  • βœ… ПониманиС взаимосвязСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ
  • βœ… ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΈ Ρ†Π΅Π»Π΅ΠΉ
  • βœ… Анализ компромиссов ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ
  • βœ… ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ отказоустойчивых систСм

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄:

  • βœ… Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ тСстированиС
  • βœ… Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²
  • βœ… ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
  • βœ… ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

🌟 Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅

“Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡƒΠΌΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π° - это Π½Π΅ просто соСдинСниС Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΌΠΎΡ‚ΠΎΡ€ΠΎΠ². Π­Ρ‚ΠΎ искусство создания систСмы, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² слоТном ΠΈ ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΠΌ ΠΌΠΈΡ€Π΅!”

🏠 Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅

πŸ“‹ Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ (для всСх)

1. ВСхничСский ΠΎΡ‚Ρ‡Π΅Ρ‚ Π‘ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ вашСм Ρ€ΠΎΠ±ΠΎΡ‚Π΅:

  • Π‘Ρ…Π΅ΠΌΠ° конструкции с Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ
  • ОписаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹
  • Анализ ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ слабых сторон
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ

2. Анализ повСдСния ΠžΠΏΠΈΡˆΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ваш Ρ€ΠΎΠ±ΠΎΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ситуациях:

  • Линия Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π΅Π·ΠΊΠΈΠΉ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° 90Β°
  • ΠŸΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΈΠ΅ стоит прямо Π½Π° Π»ΠΈΠ½ΠΈΠΈ
  • Линия Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ прСрываСтся

🎯 ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ (ΠΏΠΎ ТСланию)

3. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ сСнсорная систСма Π‘ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€ΠΎΠ±ΠΎΡ‚Π° с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ:

  • Π¦Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π»ΠΈΠ½ΠΈΠΉ
  • АксСлСромСтр для контроля Π½Π°ΠΊΠ»ΠΎΠ½Π°
  • Π­Π½ΠΊΠΎΠ΄Π΅Ρ€Ρ‹ колСс для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ измСрСния расстояний

4. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π˜ΡΡΠ»Π΅Π΄ΡƒΠΉΡ‚Π΅ ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ:

  • АдаптивныС ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния
  • МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
  • ΠŸΡ€Π΅Π΄ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ избСгания прСпятствий

⭐ Для ΡˆΠΊΠΎΠ»ΡŒΠ½Ρ‹Ρ… аспирантов

5. Бимуляция Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСдС Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΡƒΡŽ модСль вашСго Ρ€ΠΎΠ±ΠΎΡ‚Π°:

  • ЀизичСская симуляция двиТСния
  • ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² с ΡˆΡƒΠΌΠ°ΠΌΠΈ
  • ВСстированиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… условиях

6. Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ‚Π΅ΠΌ для ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½ΠΎΠ³ΠΎ изучСния:

  • Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² слСдования ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ
  • ВлияниС располоТСния Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ
  • Π­Π½Π΅Ρ€Π³ΠΎΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стратСгий двиТСния

πŸŽ‰ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ курса

πŸ† Π§Ρ‚ΠΎ ΠΌΡ‹ достигли Π·Π° вСсь курс

πŸ”§ ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΈ:

  • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ²
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠ³ΠΎ повСдСния
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ мноТСствСнных сСнсорных систСм
  • ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ тСстированиС слоТных систСм

🧠 ВСорСтичСскиС знания:

  • ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²
  • Алгоритмы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΈ управлСния
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сСнсорных Π΄Π°Π½Π½Ρ‹Ρ…
  • ΠžΡΠ½ΠΎΠ²Ρ‹ машинного обучСния Π² Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ΅

πŸš€ Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ΅ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅:

  • БистСмный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡
  • Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅
  • Анализ компромиссов ΠΈ оптимизация
  • Командная Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ тСхничСскими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ

🌟 ΠŸΡƒΡ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅

Π“Π΄Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ знания:

  • πŸš— АвтономныС транспортныС систСмы
  • 🏭 ΠŸΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Π°Ρ автоматизация
  • πŸš€ ΠšΠΎΡΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ исслСдования
  • πŸ₯ ΠœΠ΅Π΄ΠΈΡ†ΠΈΠ½ΡΠΊΠ°Ρ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ°
  • 🏠 Π£ΠΌΠ½Ρ‹Π΅ Π΄ΠΎΠΌΠ° ΠΈ IoT

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ:

  • Π£Π³Π»ΡƒΠ±Π»Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π°
  • ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ Π·Ρ€Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
  • ΠœΠ΅Ρ…Π°Ρ‚Ρ€ΠΎΠ½ΠΈΠΊΠ° ΠΈ точная ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠ°
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ встроСнных систСм

🎯 ЀинальноС посланиС

Π’Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈ курс мобильной Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠΈ!

БСгодня Π²Ρ‹ создали Ρ€ΠΎΠ±ΠΎΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚:

  • Π’ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΠΌΠΈΡ€ Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ
  • ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
  • ΠΠ΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΡΡ условиям
  • Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎ

Π­Ρ‚ΠΎ Π½Π΅ ΠΊΠΎΠ½Π΅Ρ†, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ вашСго ΠΏΡƒΡ‚ΠΈ Π² ΠΌΠΈΡ€Π΅ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠΈ!

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ. Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π² Π²Π°ΡˆΠΈΡ… Ρ€ΡƒΠΊΠ°Ρ…! πŸ€–βœ¨

πŸ“š РСсурсы для дальнСйшСго изучСния

πŸ”— Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ рСсурсы

Онлайн-курсы:

Книги для ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½ΠΎΠ³ΠΎ изучСния:

  • “Introduction to Autonomous Mobile Robots” - Siegwart, Nourbakhsh
  • “Probabilistic Robotics” - Thrun, Burgard, Fox
  • “Modern Robotics” - Lynch, Park

πŸ› οΈ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Бимуляторы:

  • Gazebo - ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ симуляция Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ²
  • Webots - ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ°
  • V-REP/CoppeliaSim - ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ:

  • ROS (Robot Operating System) - стандарт Π² Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ΅
  • Arduino IDE - ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ²
  • OpenCV - ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ Π·Ρ€Π΅Π½ΠΈΠ΅

πŸŽ“ ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ΡƒΠ·Ρ‹ с ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΏΠΎ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ΅:

  • ΠœΠ“Π’Π£ ΠΈΠΌΠ΅Π½ΠΈ Π‘Π°ΡƒΠΌΠ°Π½Π°
  • ИВМО (Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³)
  • МАИ (Московский Π°Π²ΠΈΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ институт)
  • МЀВИ (Π€ΠΈΠ·Ρ‚Π΅Ρ…)

ΠžΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Ρ‹ ΠΈ сорСвнования:

  • WRO (World Robot Olympiad)
  • RoboCup Junior
  • FIRST Robotics Competition
  • ΠšΠ²Π°Π½Ρ‚ΠΎΡ€ΠΈΡƒΠΌ - Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ сорСвнования

Π£Π΄Π°Ρ‡ΠΈ Π² Π²Π°ΡˆΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… робототСхничСских ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…! πŸš€πŸ€–βœ¨