ใ€Pythonใ€‘Telloใฎใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’ๅ–ๅพ—ใ—ใฆใ€ใ‚ณใƒžใƒณใƒ‰ใง่‡ชๅ‹•้ฃ›่กŒ

ใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ่จ€่ชžPythonใงTelloใฎใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’ๅ–ๅพ—ใ—ใฆใ€ใ‚ณใƒžใƒณใƒ‰ใ‚’้€ไฟกใ—ใฆ่‡ชๅ‹•ๅˆถๅพกใ—ใฆ้ฃ›่กŒใ•ใ›ใ‚‹ๆ–นๆณ•ใซใคใ„ใฆๅ…ฅ้–€่€…ๅ‘ใ‘ใซใพใจใ‚ใพใ—ใŸใ€‚

Telloใฎใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’ๅ—ไฟกใ—ใฆPCๅดใง่กจ็คบ

Telloใฎใ‚ซใƒกใƒฉๆ˜ ๅƒๅ—ไฟกใซใคใ„ใฆๅญฆใถใŸใ‚ใซใ€ใพใšใฏๅ˜็ด”ใซๆ˜ ๅƒใ‚’PCๅดใงๅ—ไฟกใ—ใฆ็”ป้ข่กจ็คบใ•ใ›ใฆใฟใพใ™ใ€‚

Telloใฏใ€PCใจWi-FiใงๆŽฅ็ถšใ—ใ€ใ‚ฝใ‚ฑใƒƒใƒˆ้€šไฟก๏ผˆUDP/IP๏ผ‰ใซใ‚ˆใ‚ŠTelloใธๅ‘ฝไปค(้›ข้™ธใ€็€้™ธใ€็งปๅ‹•ใชใฉ)ใ—ใŸใ‚Šใ€Telloใ‹ใ‚‰ๆฉŸไฝ“ใฎใ‚นใƒ†ใƒผใ‚ฟใ‚นๆƒ…ๅ ฑ(ใƒใƒƒใƒ†ใƒชใƒผๆฎ‹้‡ใชใฉ)ใ‚’ๅ–ๅพ—ใงใใพใ™ใ€‚
Telloใธๅ‘ฝไปคใ‚’้€ใ‚‹ๅ ดๅˆใ€Telloใ‹ใ‚‰ๆฉŸไฝ“ใฎใ‚นใƒ†ใƒผใ‚ฟใ‚นๆƒ…ๅ ฑใ‚’ๅ–ๅพ—ใ™ใ‚‹ๅ ดๅˆใ€Telloใ‹ใ‚‰ใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’ๅ–ๅพ—ใ™ใ‚‹ๅ ดๅˆใ€ใใ‚Œใžใ‚Œไปฅไธ‹ใฎใ‚ˆใ†ใซ้€šไฟกใ‚’่กŒใ„ใพใ™ใ€‚

ๅ‹•ไฝœ ้€šไฟกๆ–นๆณ•
Telloใธๅ‘ฝไปคใ‚’้€ใ‚‹ๅ ดๅˆ TelloใฎIPใ‚ขใƒ‰ใƒฌใ‚นใƒปใƒใƒผใƒˆๅฎ›ใฆ(192.168.10.1:8889)ใซใ‚ณใƒžใƒณใƒ‰ใ‚’UDP้€šไฟกใง้€ไฟก
Telloใ‹ใ‚‰ๆฉŸไฝ“ใฎใ‚นใƒ†ใƒผใ‚ฟใ‚นๆƒ…ๅ ฑใ‚’ๅ–ๅพ—ใ™ใ‚‹ๅ ดๅˆ ๆ“ไฝœ็”จใฎPCๅฎ›ใฆ(0.0.0.0:8880)ใซUDP้€šไฟกใง้€ใ‚‰ใ‚Œใฆใใ‚‹ใฎใงUDP้€šไฟกใงๅ—ไฟก
Telloใ‹ใ‚‰ใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’ๅ–ๅพ—ใ™ใ‚‹ๅ ดๅˆ Telloใธใƒ“ใƒ‡ใ‚ชใ‚นใƒˆใƒชใƒผใƒ ๆœ‰ๅŠนๅŒ–ใฎๅ‘ฝไปค(streamon)ใ‚’้€ใ‚‹ใจใ€ๆ“ไฝœ็”จใฎPCๅฎ›ใฆ(0.0.0.0:11111)ใซUDP้€šไฟกใง้€ใ‚‰ใ‚Œใฆใใ‚‹ใฎใงUDP้€šไฟกใงๅ—ไฟก
1 Telloใฎ้›ปๆบใ‚’ๅ…ฅใ‚Œใ‚‹ใจใ€TelloใฏWi-Fi่ฆชๆฉŸ๏ผˆSSID:TELLO-ใ€‡ใ€‡๏ผ‰ใจใชใ‚‹ใฎใงใ€PCใงๆŽฅ็ถšใ—ใพใ™ใ€‚
2 PCๅดใงPythonใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’่ตทๅ‹•ใ—ใ€UDPใ‚ฝใ‚ฑใƒƒใƒˆ้€šไฟกใงใ€IPใ‚ขใƒ‰ใƒฌใ‚นใฏใ€Œ192.168.10.1ใ€ใ€ใƒใƒผใƒˆ็•ชๅทใฏใ€Œ8889ใ€ๅฎ›ใซใ€Œcommandใ€ใจใ„ใ†ใƒ†ใ‚ญใ‚นใƒˆใ‚’้€ไฟกใ™ใ‚‹ใจใ€TelloใŒใ‚ณใƒžใƒณใƒ‰ใƒขใƒผใƒ‰ใซใชใ‚Šใพใ™(ใ‚ณใƒžใƒณใƒ‰ใงๅˆถๅพกๅฏ่ƒฝใช็Šถๆ…‹ใจใชใ‚‹)ใ€‚
3 ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ใƒ†ใ‚ญใ‚นใƒˆใง้€ไฟกใ™ใ‚‹ใจใ€TelloใŒๅ‘ฝไปค(ใ‚ณใƒžใƒณใƒ‰)ใซๅพ“ใฃใฆๅ‹•ไฝœใ—ใพใ™ใ€‚ใพใŸใ€Telloใ‹ใ‚‰ใ‚นใƒ†ใƒผใ‚ฟใ‚นๆƒ…ๅ ฑใ‚„ใ‚ซใƒกใƒฉๆ˜ ๅƒ(streamonใงๆœ‰ๅŠนๅŒ–ใ—ใŸๅ ดๅˆ)ใŒ้€ใ‚‰ใ‚Œใฆใใ‚‹ใฎใงใ€ใใ‚Œใ‚‰ใ‚’ๅ–ๅพ—ใงใใพใ™ใ€‚

ไปฅไธ‹่จ˜ไบ‹ใงใฏใ€ๆฉŸไฝ“ใฎ้ ้š”ๅˆถๅพกใซใคใ„ใฆ่งฃ่ชฌใ—ใพใ—ใŸใ€‚

ใ€Pythonใ€‘Telloใ‚’SDKใƒขใƒผใƒ‰ใซใ—ใ€ใ‚ณใƒžใƒณใƒ‰ใ‚’้€ไฟกใ—ใฆ่‡ชๅ‹•้ฃ›่กŒ
ใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ่จ€่ชžPythonใงTelloใซใ‚ณใƒžใƒณใƒ‰ใ‚’้€ไฟกใ—ใฆ่‡ชๅ‹•ๅˆถๅพกใ—ใฆ้ฃ›่กŒใ•ใ›ใ‚‹ๆ–นๆณ•ใซใคใ„ใฆๅ…ฅ้–€่€…ๅ‘ใ‘ใซใพใจใ‚ใพใ—ใŸใ€‚

ไปŠๅ›žใฏใพใšTelloใ‹ใ‚‰ใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’ๅ—ไฟกใ—ใ€PCๅดใง็”ป้ขใซ่กจ็คบใ—ใฆใฟใพใ™ใ€‚
ๅ—ไฟกใ—ใŸๅ‹•็”ปใƒ‡ใƒผใ‚ฟใฎใ‚ญใƒฃใƒ—ใƒใƒฃใจ็”ป้ข่กจ็คบใซใฏOpenCVใƒขใ‚ธใƒฅใƒผใƒซใ‚’ไฝฟใ„ใพใ™ใ€‚ใ“ใ“ใงใฏใ€OpenCVใƒขใ‚ธใƒฅใƒผใƒซใฎไฝฟใ„ๆ–นใซใคใ„ใฆใฏ่ชฌๆ˜Žใ‚’ๅ‰ฒๆ„›ใ—ใพใ™ใŒใ€ไปฅไธ‹ใƒšใƒผใ‚ธใง่ฉณ็ดฐใซ่งฃ่ชฌใ—ใฆใ„ใพใ™ใฎใงใ€่‰ฏใ‹ใฃใŸใ‚‰ๅ‚่€ƒใซใ—ใฆใฟใฆใใ ใ•ใ„ใ€‚

ใ€Python/OpenCVใ€‘cv2.VideoCaptureใงๅ‹•็”ปใƒ•ใ‚กใ‚คใƒซใƒปWebใ‚ซใƒกใƒฉๆ˜ ๅƒใฎ่ชญใฟ่พผใฟใจๅ†็”Ÿ
Python็‰ˆOpenCVใงๅ‹•็”ปใƒ•ใ‚กใ‚คใƒซใƒปใ‚ซใƒกใƒฉใฎ่ชญใฟ่พผใ‚“ใง็”ป้ขใซๅ†็”Ÿใƒป่กจ็คบใ•ใ›ใ‚‹ๆ–นๆณ•ใ‚’ใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ไป˜ใใง่งฃ่ชฌใ—ใพใ™ใ€‚

ใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰ใจๅฎŸ่กŒ็ตๆžœ

Telloใ‹ใ‚‰ใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’ๅ—ไฟกใ—ใ€PCๅดใง็”ป้ขใซ่กจ็คบใ™ใ‚‹ใ‚ตใƒณใƒ—ใƒซใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใงใ™ใ€‚


ไธŠ่จ˜ใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰ใ‚’ๅฎŸ่กŒใ™ใ‚‹ใจใ€็”ป้ขใŒ่กจ็คบใ•ใ‚ŒTelloใฎใ‚ซใƒกใƒฉๆ˜ ๅƒใŒ่กจ็คบใ•ใ‚Œใพใ™ใ€‚

Telloใฎใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’ๅ—ไฟกใ—ใฆใ‚ญใƒผใƒœใƒผใƒ‰ใงๅˆถๅพก

OpenCVใƒขใ‚ธใƒฅใƒผใƒซใซใฏใ€ใ‚ญใƒผๅ…ฅๅŠ›ๆ“ไฝœใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ๆฉŸ่ƒฝใ€Œcv2.waitKey()ใ€ใŒใ‚ใ‚Šใพใ™ใ€‚
ใ“ใ‚Œใ‚’็”จใ„ใฆใ€Telloใฎใ‚ซใƒกใƒฉๆ˜ ๅƒใ‚’PCๅดใงใƒชใ‚ขใƒซใ‚ฟใ‚คใƒ ่กจ็คบใ—ใชใŒใ‚‰ใ‚ญใƒผๅ…ฅๅŠ›ใงใƒ‰ใƒญใƒผใƒณใ‚’ๆ“ไฝœใ—ใฆใฟใพใ™ใ€‚
ไปŠๅ›žใฏไปฅไธ‹ใฎไป•ๆง˜ใซใ—ใฆใฟใพใ™ใ€‚

ใ‚ญใƒผๅ…ฅๅŠ› Telloใฎๅ‹•ไฝœ
qใ‚ญใƒผ ็ต‚ไบ†
โ†‘ใ‚ญใƒผ ๅ‰้€ฒ
โ†“ใ‚ญใƒผ ๅพŒ้€ฒ
โ†ใ‚ญใƒผ ๅทฆ้€ฒ
โ†’ใ‚ญใƒผ ๅณ้€ฒ
jใ‚ญใƒผ ้›ข้™ธ
kใ‚ญใƒผ ็€้™ธ
hใ‚ญใƒผ ไธŠๆ˜‡
lใ‚ญใƒผ ไธ‹้™
uใ‚ญใƒผ ๅทฆๅ›žใ‚Šใซๅ›ž่ปข
iใ‚ญใƒผ ๅณๅ›žใ‚Šใซๅ›ž่ปข
nใ‚ญใƒผ ไฝŽ้€Ÿใƒขใƒผใƒ‰
mใ‚ญใƒผ ้ซ˜้€Ÿใƒขใƒผใƒ‰

ใพใŸใ€Telloใ‹ใ‚‰ๅ—ไฟกใ—ใŸๆฉŸไฝ“ใ‚นใƒ†ใƒผใ‚ฟใ‚นๆƒ…ๅ ฑใ‚’็”จใ„ใฆใ€็”ป้ขๅทฆไธŠใซใ€Œใ‚ญใƒผๅ…ฅๅŠ›ใงๅฎŸ่กŒไธญใฎๅ‹•ไฝœ(Cmd)ใ€ใ€Œใƒใƒƒใƒ†ใƒชใƒผๆฎ‹้‡(Battery)ใ€ใ€Œ้ฃ›่กŒๆ™‚้–“(Time)ใ€ใ€Œใ‚นใƒ†ใƒผใ‚ฟใ‚น(Status)ใ€ใ‚’่กจ็คบใ•ใ›ใพใ™ใ€‚
ใ€Œใ‚นใƒ†ใƒผใ‚ฟใ‚น(Status)ใ€ใฏใ€ๆญฃๅธธๆ™‚ใซใƒ‰ใƒญใƒผใƒณใ‚’ๆ“ไฝœใ—ใ‚ˆใ†ใจใ™ใ‚‹ใจTrueใ€็•ฐๅธธๆ™‚(ๆฉŸไฝ“ใŒๅคงใใๅ‚พใ„ใฆ็€ๅœฐใ—ใฆใ„ใ‚‹ใชใฉ)ใซใƒ‰ใƒญใƒผใƒณใ‚’ๆ“ไฝœใ—ใ‚ˆใ†ใจใ™ใ‚‹ใจFalseใจใชใ‚Šใพใ™ใ€‚

ๅฎŸ่กŒไพ‹

ๅฎŸ่กŒไพ‹ใฏไปฅไธ‹ใฎใจใŠใ‚Š(ๅ‹•็”ป)ใ€‚

ใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰

ใ‚ตใƒณใƒ—ใƒซใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใงใ™ใ€‚


ใ€Pythonร—Telloใ€‘ใƒ‰ใƒญใƒผใƒณใ‚’้ ้š”ๅˆถๅพกใƒป่‡ชๅพ‹้ฃ›่กŒใ•ใ›ใฆ้Šใถๆ–นๆณ•
Python่จ€่ชžใงใƒ‰ใƒญใƒผใƒณใ€ŒTelloใ€ใ‚’้ ้š”ๅˆถๅพกใ—ใŸใ‚Š่‡ชๅพ‹้ฃ›่กŒใ•ใ›ใฆ้Šใถๆ–นๆณ•ใซใคใ„ใฆๅ…ฅ้–€่€…ๅ‘ใ‘ใซใพใจใ‚ใพใ—ใŸใ€‚

ใ‚ณใƒกใƒณใƒˆ

  1. ogishin ใ‚ˆใ‚Š:

    ใฏใ˜ใ‚ใพใ—ใฆใ€‚ใ“ใกใ‚‰ใฎใƒšใƒผใ‚ธใ‚’ๅ‚่€ƒใซPython็’ฐๅขƒใ‚’ๆ•ดใˆใ€ใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰ใงใฎๅ‹•ไฝœใ‚’็ขบ่ชใ—ใพใ—ใŸใ€‚
    ไธ€็‚นใŠ่žใ‹ใ›ใใ ใ•ใ„ใ€‚
    ใ”ๅˆฉ็”จใƒŽใƒผใƒˆใƒ‘ใ‚ฝใ‚ณใƒณใฏใ€ŒMacใ€ใจๆ€ใ„ใพใ™ใŒใ€Windows10็’ฐๅขƒใงใ‚‚ๅ‹•ไฝœใ—ใพใ™ใŒใ‚ขใƒซใƒ•ใ‚กใƒ™ใƒƒใƒˆใ‚ญใƒผใฏๅ•้กŒใชใ„ใฎใงใ™ใŒใ€ใ‚ซใƒผใ‚ฝใƒซใ‚ญใƒผ๏ผˆไธŠไธ‹ๅทฆๅณ็Ÿขๅฐ๏ผ‰ใ‚ญใƒผใฎใฟๅๅฟœใ—ใพใ›ใ‚“ใ€‚
    ใชใซใ‹็ขบ่ชใ™ใ‚‹ๅ†…ๅฎนใชใฉใ‚ใ‚ŒใฐใŠ่žใ‹ใ›ใใ ใ•ใ„ใ€‚
    ใ‚ˆใ‚ใ—ใใŠ้ก˜ใ„ใ„ใŸใ—ใพใ™ใ€‚

    • ็ฎก็†ไบบ ใ‚ˆใ‚Š:

      ใ‚ณใƒกใƒณใƒˆใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚Windowsใงใ‚‚็Ÿขๅฐใ‚ญใƒผใ‚’ๆ‰ฑใˆใ‚‹ใ‹ใ‚ใ‹ใ‚Šใพใ›ใ‚“ใŒใ€

      key = cv2.waitKey(1)
      print(key)

      ใชใฉใงใ€็Ÿขๅฐใ‚ญใƒผใ‚’ๅ…ฅๅŠ›ใ—ใŸใจใใซใ€ใฉใฎใ‚ˆใ†ใชๅ€คใŒkeyใซๆ ผ็ดใ•ใ‚Œใฆใ„ใ‚‹ใ‹็ขบ่ชใ•ใ‚Œใฆใฟใ‚‹ใฎใฏใฉใ†ใงใ—ใ‚‡ใ†ใ‹ใ€‚

  2. ใƒŸใƒณใƒˆ ใ‚ˆใ‚Š:

    ใ‚ญใƒผใƒœใƒผใƒ‰ใงๅˆถๅพกใ—ใชใŒใ‚‰OpenCVใ‚’ไฝฟใ„้ก”่ช่ญ˜ใจใ‹ๅ‡บๆฅใพใ™ใ‹๏ผŸๆ˜ฏ้žใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’ไฝœใฃใฆๆฌฒใ—ใ„ใงใ™ใ€‚