8000 GitHub - Hellsingoff/DJITelloPy: DJI Tello drone python interface using the official Tello SDK. Feel free to contribute!
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Hellsingoff/DJITelloPy

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DJITelloPy

DJITelloPy - Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Python 3.5 ΠΈ Π²Ρ‹ΡˆΠ΅, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, доступныС Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Tello SDK ΠΈ Tello EDU SDK. НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ становятся Π±ΠΎΠ»Π΅Π΅ понятными послС изучСния инструкции ΠΏΠΎ Mission Pad.


Tello

Tello - класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ.


ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Tello

  • __init__(host=TELLO_IP, retry_count=RETRY_COUNT) - инициализация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Tello.
  • connect() - ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΠΎΠ½Ρƒ.
  • connect_to_wifi(ssid, password) - ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Wi-Fi. (Волько Tello EDU)
  • curve_xyz_speed(x1, y1, z1, x2, y2, z2, speed) - ΠΏΠΎΠ»Ρ‘Ρ‚ ΠΏΠΎ Π΄ΡƒΠ³Π΅.
  • curve_xyz_speed_mid(x1, y1, z1, x2, y2, z2, speed, mid) - ΠΏΠΎΠ»Π΅Ρ‚ ΠΏΠΎ Π΄ΡƒΠ³Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad. (Волько Tello EDU)
  • disable_mission_pads() - ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ поиск Mission Pad. (Волько Tello EDU)
  • emergency() - экстрСнная остановка Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • enable_mission_pads() - Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ поиск Mission Pad. (Волько Tello EDU)
  • end() - Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Ρ€ΠΎΠ½ΠΎΠΌ.
  • flip(direction) - ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ.
  • flip_back() - ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π½Π°Π·Π°Π΄.
  • flip_forward() - ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΠ΅Ρ€Π΅Π΄.
  • flip_left() - ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²Π»Π΅Π²ΠΎ.
  • flip_right() - ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΡ€Π°Π²ΠΎ.
  • get_acceleration_x() - показания аксСлСромСтра ΠΏΠΎ X.
  • get_acceleration_y() - показания аксСлСромСтра ΠΏΠΎ Y.
  • get_acceleration_z() - показания аксСлСромСтра ΠΏΠΎ Z.
  • get_barometer() - показания Π°Π»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚Ρ€Π°.
  • get_battery() - ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ заряда аккумулятора.
  • get_current_state() - ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ всСх Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Ρ€ΠΎΠ½Π°.
  • get_distance_tof() - дистанция Π΄ΠΎ прСпятствия снизу.
  • get_flight_time() - врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΡ‚ΠΎΡ€ΠΎΠ².
  • get_frame_read() - доступ ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€Π΅.
  • get_height() - высота ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΉ оси.
  • get_highest_temperature() - Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠ°Ρ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°.
  • get_lowest_temperature() - самая низкая Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°.
  • get_mission_pad_distance_x() - расстояниС Π΄ΠΎ Mission Pad ΠΏΠΎ X. (Волько Tello EDU)
  • get_mission_pad_distance_y() - расстояниС Π΄ΠΎ Mission Pad ΠΏΠΎ Y. (Волько Tello EDU)
  • get_mission_pad_distance_z() - расстояниС Π΄ΠΎ Mission Pad ΠΏΠΎ Z. (Волько Tello EDU)
  • get_mission_pad_id() - ID ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Mission Pad. (Волько Tello EDU)
  • get_pitch() - ΡƒΠ³ΠΎΠ» Π½Π°ΠΊΠ»ΠΎΠ½Π° ΠΏΠΎ X.
  • get_roll() - ΡƒΠ³ΠΎΠ» Π½Π°ΠΊΠ»ΠΎΠ½Π° ΠΏΠΎ Y.
  • get_speed_x() - ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ X.
  • get_speed_y() - ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ Y.
  • get_speed_z() - ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ Z.
  • get_state_field(key) - ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Ρ€ΠΎΠ½Π°.
  • get_temperature() - срСдняя Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° Π΄Ρ€ΠΎΠ½Π°.
  • get_udp_video_address() - ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ UDP адрСс Π²ΠΈΠ΄Π΅ΠΎ. (Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ)
  • get_video_capture() - ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ VideoCapture. (Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ)
  • get_yaw() - ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Z.
  • go_xyz_speed(x, y, z, speed) - ΠΏΠΎΠ»Π΅Ρ‚ Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹.
  • go_xyz_speed_mid(x, y, z, speed, mid) - ΠΏΠΎΠ»Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad. (Волько Tello EDU)
  • go_xyz_speed_yaw_mid(x, y, z, speed, yaw, mid1, mid2) - ΠΏΠΎΠ»Π΅Ρ‚ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Mission Pad Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ³ΠΎΠ».
  • land() - ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅.
  • move(direction, x) - ΠΏΠΎΠ»Π΅Ρ‚ ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ.
  • move_back(x) - ΠΏΠΎΠ»Π΅Ρ‚ Π½Π°Π·Π°Π΄.
  • move_down(x) - ΠΏΠΎΠ»Π΅Ρ‚ Π²Π½ΠΈΠ·.
  • move_forward(x) - ΠΏΠΎΠ»Π΅Ρ‚ Π²ΠΏΠ΅Ρ€Π΅Π΄.
  • move_left(x) - ΠΏΠΎΠ»Π΅Ρ‚ Π²Π»Π΅Π²ΠΎ.
  • move_right(x) - ΠΏΠΎΠ»Π΅Ρ‚ Π²ΠΏΡ€Π°Π²ΠΎ.
  • move_up(x) - ΠΏΠΎΠ»Π΅Ρ‚ Π²Π²Π΅Ρ€Ρ….
  • parse_state(state) - статичСский ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. (Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ)
  • query_attitude() - ΡƒΠ³Π»Ρ‹ Π½Π°ΠΊΠ»ΠΎΠ½Π°.
  • query_barometer() - показания Π°Π»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚Ρ€Π°.
  • query_battery() - ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ заряда аккумулятора.
  • query_distance_tof() - дистанция Π΄ΠΎ прСпятствия снизу.
  • query_flight_time() - врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΡ‚ΠΎΡ€ΠΎΠ².
  • query_height() - высота ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΉ оси.
  • query_sdk_version() - вСрсия ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ SDK. (Волько Tello EDU)
  • query_serial_number() - сСрийный Π½ΠΎΠΌΠ΅Ρ€ Π΄Ρ€ΠΎΠ½Π°. (Волько Tello EDU)
  • query_speed() - тСкущая настройка скорости.
  • query_temperature() - Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° Π΄Ρ€ΠΎΠ½Π°.
  • query_wifi_signal_noise_ratio() - ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ° сигнала.
  • rotate_clockwise(x) - ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΏΠΎ часовой стрСлкС.
  • rotate_counter_clockwise(x) - ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² часовой стрСлки.
  • rotate_mid(yaw=0) - ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad. (Волько Tello EDU)
  • send_command_with_return(command, timeout=RESPONSE_TIMEOUT) - ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚.
  • send_command_without_return(command) - ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ Π½Π΅ ΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚.
  • send_control_command(command, timeout=RESPONSE_TIMEOUT) - ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ управлСния Π΄Ρ€ΠΎΠ½ΠΎΠΌ. (Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ)
  • send_rc_control(y, x, z, yaw_z) - прямоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Π΅Ρ‚Π°.
  • send_read_command(command) - запрос Π΄Π°Π½Π½Ρ‹Ρ… Π΄Ρ€ΠΎΠ½Π°. (Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ)
  • set_mission_pad_detection_direction(x) - Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ поиска Mission Pad. (Волько Tello EDU)
  • set_speed(x) - настройка скорости ΠΏΠΎΠ»Π΅Ρ‚Π°.
  • set_wifi_credentials(ssid, password) - настройка Ρ‚ΠΎΡ‡ΠΊΠΈ доступа Wi-Fi.
  • stop() - остановка Π΄Ρ€ΠΎΠ½Π°.
  • streamoff() - Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ стрим Π²ΠΈΠ΄Π΅ΠΎ.
  • streamon() - Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ стрим Π²ΠΈΠ΄Π΅ΠΎ.
  • takeoff() - Π²Π·Π»Π΅Ρ‚.
  • udp_response_receiver() - ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π°. (Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ)
  • udp_state_receiver() - ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Ρ€ΠΎΠ½Π°. (Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ)

__init__(host=TELLO_IP, retry_count=RETRY_COUNT)

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Tello.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ инициализация Π½Π΅ Ρ‚Ρ€ΡƒΠ΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΡ€ΠΈ этом IP Π΄Ρ€ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартный - 192.168.10.1, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ Π΄Ρ€ΠΎΠ½Ρƒ ΠΏΠΎ Wi-Fi.

Если Π΄Ρ€ΠΎΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ локальной сСти - ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ IP Π΄Ρ€ΠΎΠ½Π°.

Π’Π°ΠΊ ΠΆΠ΅ принимаСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Ρ†Π΅Π»ΠΎΠ΅ число, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ количСство ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ RETRY_COUNT.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone1 = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone2 = Tello('192.168.1.220') # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.220

drone3 = Tello('192.168.1.245', 2) # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.245, количСство ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ - 2

connect()

Π’Ρ…ΠΎΠ΄ Π² Ρ€Π΅ΠΆΠΈΠΌ управлСния ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

connect_to_wifi(ssid, password)

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ½Π° ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ локальной сСти ΠΏΠΎ Wi-Fi.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Tello EDU.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - имя сСти (строка), Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Π΅Ρ‘ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ (строка).

Имя сСти ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².

ПослС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄Ρ€ΠΎΠ½ пСрСзагрузится ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ сСти.

Для сброса настроСк Wi-Fi Π½Π°Π΄ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΠΎΠ½ ΠΈ ΠΏΡΡ‚ΡŒ сСкунд Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ питания (Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ).

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1, ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΊ создаваСмой Π΄Ρ€ΠΎΠ½ΠΎΠΌ Ρ‚ΠΎΡ‡ΠΊΠ΅ доступа.

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΠΎΠ½Ρƒ

drone.connect_to_wifi('example', 'pass') # Π΄Ρ€ΠΎΠ½ пСрСзагрузится ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ΅ example с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ pass

curve_xyz_speed(x1, y1, z1, x2, y2, z2, speed)

ΠŸΠΎΠ»Ρ‘Ρ‚ ΠΏΠΎ Π΄ΡƒΠ³Π΅ (части окруТности).

Π›Π΅Ρ‚ΠΈΡ‚ Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x2 y2 z2 Ρ‡Π΅Ρ€Π΅Π· x1 y1 z1 со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ speed сантимСтров Π² сСкунду.

ОбС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² сантимСтрах ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ полоТСния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΠΎΠ½ считаСтся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹Ρ… осСй (0 0 0).

Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ оси X - Π²ΠΏΠ΅Ρ€Π΅Π΄. По оси Y - Π²Π»Π΅Π²ΠΎ. По оси Z - Π²Π²Π΅Ρ€Ρ….

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x2 y2 z2, x1 y1 z1 ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ располоТСниС Π΄Ρ€ΠΎΠ½Π° (ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ 0 0 0) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° окруТности радиусом 0.5-10 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Если Ρ‚Π°ΠΊΡƒΡŽ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΠ»ΠΈ Π΅Ρ‘ радиус Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² допустимыС значСния - Π΄Ρ€ΠΎΠ½ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ сообщСниС ΠΎΠ± ошибкС ΠΈ призСмлится.

АргумСнт Π”Π°Π½Π½Ρ‹Π΅ ДопустимыС значСния
x1 int (сантимСтры) -500 - 500
y1 int (сантимСтры) -500 - 500
z1 int (сантимСтры) -500 - 500
x2 int (сантимСтры) -500 - 500
y2 int (сантимСтры) -500 - 500
z2 int (сантимСтры) -500 - 500
speed int (сантимСтры Π² сСкунду) 10 - 60
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.curve_xyz_speed(100, 100, 0, 200, 0, 0, 60) # ΠΏΠΎΠ»Ρ‘Ρ‚ ΠΏΠΎ полуокруТности

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

Визуализация ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹ΡˆΠ΅:

curve_flight


curve_xyz_speed_mid(x1, y1, z1, x2, y2, z2, speed, mid)

ΠŸΠΎΠ»Ρ‘Ρ‚ ΠΏΠΎ Π΄ΡƒΠ³Π΅ (части окруТности) ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission pad (ΠΊΠΎΠ²Ρ€ΠΈΠΊΠ°).

ΠŸΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Mission Pad, Π½ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ пСрСдвиТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

НСобходимо Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ поиск Mission Pad с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ enable_mission_pads(), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Mission Pad находился Π² области видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°.

Если ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ²Ρ€ΠΈΠΊ mid, Π»Π΅Ρ‚ΠΈΡ‚ Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x2 y2 z2 Ρ‡Π΅Ρ€Π΅Π· x1 y1 z1 со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ speed сантимСтров Π² сСкунду, ΠΈΠ½Π°Ρ‡Π΅ - Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ призСмляСтся.

ОбС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² сантимСтрах ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ полоТСния Mission Pad, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Mission Pad считаСтся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹Ρ… осСй (0 0 0).

Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ оси X - Π²ΠΏΠ΅Ρ€Π΅Π΄ (ΠΊΡƒΠ΄Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°ΠΊΠ΅Ρ‚Π°). По оси Y - Π²Π»Π΅Π²ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹. По оси Z - Π²Π²Π΅Ρ€Ρ… ΠΎΡ‚ Mission Pad.

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x2 y2 z2, x1 y1 z1 ΠΈ Mission Pad (ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ 0 0 0) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° окруТности радиусом 0.5-10 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Если Ρ‚Π°ΠΊΡƒΡŽ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΠ»ΠΈ Π΅Ρ‘ радиус Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² допустимыС значСния - Π΄Ρ€ΠΎΠ½ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ сообщСниС ΠΎΠ± ошибкС ΠΈ призСмлится.

АргумСнт Π”Π°Π½Π½Ρ‹Π΅ ДопустимыС значСния
x1 int (сантимСтры) -500 - 500
y1 int (сантимСтры) -500 - 500
z1 int (сантимСтры) -500 - 500
x2 int (сантимСтры) -500 - 500
y2 int (сантимСтры) -500 - 500
z2 int (сантимСтры) -500 - 500
speed int (сантимСтры Π² сСкунду) 10 - 60
mid int (Mission Pad ID) 1 - 8
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.curve_xyz_speed_mid(100, 100, 0, 200, 0, 0, 60, 1) # ΠΏΠΎΠ»Ρ‘Ρ‚ ΠΏΠΎ полуокруТности, Ссли Π½Π°ΠΉΠ΄Π΅Π½ MP1

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

Визуализация ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹ΡˆΠ΅:

curve_flight


disable_mission_pads()

ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Mission Pad.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.enable_mission_pads() # Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ опрСдСлСния MP

drone.disable_mission_pads() # ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ опрСдСлСния MP

drone.end() # удаляСт drone

emergency()

ЭкстрСнная остановка ΠΌΠΎΡ‚ΠΎΡ€ΠΎΠ².

ИспользовР10000 °Ρ‚ΡŒ остороТно, Π²ΠΎ врСмя ΠΏΠΎΠ»Ρ‘Ρ‚Π° это Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ падСнию Π΄Ρ€ΠΎΠ½Π°.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.emergency() # экстрСнная остановка ΠΌΠΎΡ‚ΠΎΡ€ΠΎΠ²

drone.end() # удаляСт drone

enable_mission_pads()

Активация поиска Mission Pad.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.enable_mission_pads() # Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ опрСдСлСния MP

drone.disable_mission_pads() # ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ опрСдСлСния MP

drone.end() # удаляСт drone

end()

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Ρ€ΠΎΠ½ΠΎΠΌ.

Если Π΄Ρ€ΠΎΠ½ Π² Π²ΠΎΠ·Π΄ΡƒΡ…Π΅ - ΠΎΠ½ призСмляСтся. Π’Π°ΠΊ ΠΆΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ стрим Π²ΠΈΠ΄Π΅ΠΎ.

УдаляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Ρ€ΠΎΠ½Π° ΠΈΠ· памяти.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅, удаляСт drone

flip(direction)

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ.

ΠšΡƒΠ²Ρ‹Ρ€ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ зарядС аккумулятора Π½ΠΈΠΆΠ΅ 50%.

ВрСбуСтся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡƒΠ²Ρ‹Ρ€ΠΊΠ° (строка).

АргумСнт ДСйствиС
'f' ΠšΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΠ΅Ρ€Π΅Π΄
'b' ΠšΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π½Π°Π·Π°Π΄
'l' ΠšΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²Π»Π΅Π²ΠΎ
'r' ΠšΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΡ€Π°Π²ΠΎ
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.flip('l') # ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²Π»Π΅Π²ΠΎ

drone.flip('r') # ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΡ€Π°Π²ΠΎ

drone.flip('f') # ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΠ΅Ρ€Π΅Π΄

drone.flip('b') # ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π½Π°Π·Π°Π΄

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

flip_back()

ΠšΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π½Π°Π·Π°Π΄.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.flip_back() # ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π½Π°Π·Π°Π΄

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

flip_forward()

ΠšΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΠ΅Ρ€Π΅Π΄.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.flip_forward() # ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΠ΅Ρ€Π΅Π΄

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

flip_left()

ΠšΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²Π»Π΅Π²ΠΎ.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.flip_left() # ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²Π»Π΅Π²ΠΎ

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

flip_right()

ΠšΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΡ€Π°Π²ΠΎ.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.flip_right() # ΠΊΡƒΠ²Ρ‹Ρ€ΠΎΠΊ Π²ΠΏΡ€Π°Π²ΠΎ

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

get_acceleration_x()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ показания аксСлСромСтра ΠΏΠΎ оси X.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ float.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

print(drone.get_acceleration_x()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ускорСния ΠΏΠΎ X

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

get_acceleration_y()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ показания аксСлСромСтра ΠΏΠΎ оси Y.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ float.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

print(drone.get_acceleration_y()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ускорСния ΠΏΠΎ Y

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

get_acceleration_z()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ показания аксСлСромСтра ΠΏΠΎ оси Z.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ float.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

print(drone.get_acceleration_z()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ускорСния ΠΏΠΎ Z

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

get_barometer()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π΄Ρ€ΠΎΠ½Π° показания встроСнного Π°Π»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚Ρ€Π°.

Показания Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ float - Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ высоту Π² сантимСтрах.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_barometer()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ показания Π°Π»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚Ρ€Π°

drone.end() # удаляСт drone

get_battery()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ заряда аккумулятора.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ² (0 - 100).

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_battery()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ заряда аккумулятора

drone.end() # удаляСт drone

get_current_state()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ всС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π΄Ρ€ΠΎΠ½Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ:

ΠšΠ»ΡŽΡ‡ Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
pitch int (градусы) Наклон ΠΏΠΎ X
roll int (градусы) Наклон ΠΏΠΎ Y
yaw int (градусы) ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΏΠΎ Z
vgx int (см/с) Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ X
vgy int (см/с) Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ Y
vgz int (см/с) Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ Z
templ int (Β°C) Бамая низкая, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° Π΄Ρ€ΠΎΠ½Π°
temph int (Β°C) Бамая высокая, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° Π΄Ρ€ΠΎΠ½Π°
tof int (сантимСтры) ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° расстояния Π΄ΠΎ прСпятствия снизу
h int (сантимСтры) Высота ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΉ оси
bat int (ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Ρ‹) Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заряда аккумулятора
baro float (сантимСтры) Показания Π°Π»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚Ρ€Π°
time int (сСкунды) ВрСмя ΠΏΠΎΠ»Ρ‘Ρ‚Π° с послСднСго Π²Π·Π»Ρ‘Ρ‚Π°
agx float Π”Π°Π½Π½Ρ‹Π΅ аксСлСромСтра ΠΏΠΎ оси X
agy float Π”Π°Π½Π½Ρ‹Π΅ аксСлСромСтра ΠΏΠΎ оси Y
agz float Π”Π°Π½Π½Ρ‹Π΅ аксСлСромСтра ΠΏΠΎ оси Z
mid int (Π½ΠΎΠΌΠ΅Ρ€) ID Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Mission Pad.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
x int (сантимСтры) РасстояниС Π΄ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Mission Pad ΠΏΠΎ оси X ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΠΎΠ½Π°.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
y int (сантимСтры) РасстояниС Π΄ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Mission Pad ΠΏΠΎ оси Y ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΠΎΠ½Π°.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
z int (сантимСтры) РасстояниС Π΄ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Mission Pad ΠΏΠΎ оси Z ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΠΎΠ½Π°.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
mpry str (особый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚) Π£Π³Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Mission Pad ΠΈ Π΄Ρ€ΠΎΠ½ΠΎΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ 'x,y,z'.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_current_state()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ вСсь ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² "сыром" Π²ΠΈΠ΄Π΅

# Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ вСсь ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ построчно:
state = drone.get_current_state()
for key in state:
    print(f'{key}: {state[key]}')

# Π²Ρ‹Π²ΠΎΠ΄ значСния поля 'mpry'
print(drone.get_current_state()['mpry'])

drone.end() # удаляСт drone

get_distance_tof()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π΄Ρ€ΠΎΠ½Π° расстояниС Π΄ΠΎ прСпятствия снизу.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

print(drone.get_distance_tof()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ расстояниС Π΄ΠΎ прСпятствия снизу

drone.end() # удаляСт drone

get_flight_time()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π΄Ρ€ΠΎΠ½Π° врСмя ΠΏΠΎΠ»Ρ‘Ρ‚Π° Π² сСкундах с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго Π²Π·Π»Ρ‘Ρ‚Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_flight_time()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ врСмя ΠΏΠΎΠ»Π΅Ρ‚Π°

drone.end() # удаляСт drone

get_frame_read()

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ BackgroundFrameRead для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΊΠ°ΠΌΠ΅Ρ€Π΅ Π΄Ρ€ΠΎΠ½Π°.

Доступ ΠΊ стриму ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Π΄Ρ€ΠΎΠ½Ρƒ, Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ локальной сСти ΠΏΠΎ Wi-Fi Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ адрСсу Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Ρ€ΠΎΠ½Π°.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ стрим ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ streamon()

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² дальнСйшСм ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ BackgroundFrameRead.

import cv2 # ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.streamon() # активация стрима ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹

drone_camera = drone.get_frame_read() # ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ доступа ΠΊ ΠΊΠ°ΠΌΠ΅Ρ€Π΅

cv2.imwrite("picture.png", drone_camera.frame) # ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ» picture.png

drone.streamoff() # ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ стрима

drone.end() # удаляСт drone

get_height()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ высоту Π΄Ρ€ΠΎΠ½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ оси ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² сантимСтрах.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

print(drone.get_height()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ высоту Π΄Ρ€ΠΎΠ½Π°

drone.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅, удаляСт drone

get_highest_temperature()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΡƒΡŽ, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ Π΄Ρ€ΠΎΠ½Π° Π² Β°C.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_highest_temperature()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΡƒΡŽ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ Π΄Ρ€ΠΎΠ½Π°

drone.end() # удаляСт drone

get_lowest_temperature()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ Π΄Ρ€ΠΎΠ½Π° Π² Β°C.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_lowest_temperature()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ Π΄Ρ€ΠΎΠ½Π°

drone.end() # удаляСт drone

get_mission_pad_distance_x()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ ΠΏΠΎ оси X Π΄ΠΎ Mission Pad Π² сантимСтрах.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

НСобходимо Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ поиск Mission Pad с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ enable_mission_pads(), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Mission Pad находился Π² области видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_mission_pad_distance_x()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ расстояниС Π΄ΠΎ MP ΠΏΠΎ оси X

drone.end() # удаляСт drone

get_mission_pad_distance_y()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ ΠΏΠΎ оси Y Π΄ΠΎ Mission Pad Π² сантимСтрах.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

НСобходимо Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ поиск Mission Pad с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ enable_mission_pads(), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Mission Pad находился Π² области видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_mission_pad_distance_y()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ расстояниС Π΄ΠΎ MP ΠΏΠΎ оси Y

drone.end() # удаляСт drone

get_mission_pad_distance_z()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ ΠΏΠΎ оси Z Π΄ΠΎ Mission Pad Π² сантимСтрах.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

НСобходимо Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ поиск Mission Pad с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ enable_mission_pads(), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Mission Pad находился Π² области видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy impo
10000
rt Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_mission_pad_distance_z()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ расстояниС Π΄ΠΎ MP ΠΏΠΎ оси Z

drone.end() # удаляСт drone

get_mission_pad_id()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ID ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ Π΄Ρ€ΠΎΠ½Π° Mission Pad.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

НСобходимо Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ поиск Mission Pad с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ enable_mission_pads(), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Mission Pad находился Π² области видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

Если Mission Pad Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_mission_pad_id()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Mission Pad ID

drone.end() # удаляСт drone

get_pitch()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π½Π°ΠΊΠ»ΠΎΠ½ Π΄Ρ€ΠΎΠ½Π° ΠΏΠΎ оси X Π² градусах.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_pitch()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΠ³ΠΎΠ»

drone.end() # удаляСт drone

get_roll()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π½Π°ΠΊΠ»ΠΎΠ½ Π΄Ρ€ΠΎΠ½Π° ΠΏΠΎ оси Y Π² градусах.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_roll()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΠ³ΠΎΠ»

drone.end() # удаляСт drone

get_speed_x()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ оси X Π² сантимСтрах Π² сСкунду.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_speed_x()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ оси X

drone.end() # удаляСт drone

get_speed_y()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ оси Y Π² сантимСтрах Π² сСкунду.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_speed_y()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ оси Y

drone.end() # удаляСт drone

get_speed_z()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ оси Z Π² сантимСтрах Π² сСкунду.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_speed_z()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ оси Z

drone.end() # удаляСт drone

get_state_field(key)

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π΄Ρ€ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ поля.

АргумСнт - имя поля (строка).

ΠšΠ»ΡŽΡ‡ Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
pitch int (градусы) Наклон ΠΏΠΎ X
roll int (градусы) Наклон ΠΏΠΎ Y
yaw int (градусы) ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΏΠΎ Z
vgx int (см/с) Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ X
vgy int (см/с) Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ Y
vgz int (см/с) Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎ Z
templ int (Β°C) Бамая низкая, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° Π΄Ρ€ΠΎΠ½Π°
temph int (Β°C) Бамая высокая, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° Π΄Ρ€ΠΎΠ½Π°
tof int (сантимСтры) ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° расстояния Π΄ΠΎ прСпятствия снизу
h int (сантимСтры) Высота ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΉ оси
bat int (ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Ρ‹) Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заряда аккумулятора
baro float (сантимСтры) Показания Π°Π»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚Ρ€Π°
time int (сСкунды) ВрСмя ΠΏΠΎΠ»Ρ‘Ρ‚Π° с послСднСго Π²Π·Π»Ρ‘Ρ‚Π°
agx float Π”Π°Π½Π½Ρ‹Π΅ аксСлСромСтра ΠΏΠΎ оси X
agy float Π”Π°Π½Π½Ρ‹Π΅ аксСлСромСтра ΠΏΠΎ оси Y
agz float Π”Π°Π½Π½Ρ‹Π΅ аксСлСромСтра ΠΏΠΎ оси Z
mid int (Π½ΠΎΠΌΠ΅Ρ€) ID Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Mission Pad.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
x int (сантимСтры) РасстояниС Π΄ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Mission Pad ΠΏΠΎ оси X ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΠΎΠ½Π°.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
y int (сантимСтры) РасстояниС Π΄ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Mission Pad ΠΏΠΎ оси Y ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΠΎΠ½Π°.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
z int (сантимСтры) РасстояниС Π΄ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Mission Pad ΠΏΠΎ оси Z ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΠΎΠ½Π°.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
mpry str (особый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚) Π£Π³Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Mission Pad ΠΈ Π΄Ρ€ΠΎΠ½ΠΎΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ 'x,y,z'.
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_state_field('mpry')) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля 'mpry'

drone.end() # удаляСт drone

get_temperature()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π΄Ρ€ΠΎΠ½Π° Π΅Π³ΠΎ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ Π² Β°C.

ЀактичСски являСтся срСдним ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ float.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_temperature()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ

drone.end() # удаляСт drone

get_udp_video_address()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π΄Ρ€ΠΎΠ½Π° UDP адрСс Π²ΠΈΠ΄Π΅ΠΎ.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, ΠΎΠ½ Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ str.


get_video_capture()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π΄Ρ€ΠΎΠ½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ VideoCapture.

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго ΠΎΠ½ Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ VideoCapture.


get_yaw()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° Π΄Ρ€ΠΎΠ½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ оси Z Π² градусах.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.get_yaw()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΠ³ΠΎΠ»

drone.end() # удаляСт drone

go_xyz_speed(x, y, z, speed)

ΠŸΠΎΠ»Ρ‘Ρ‚ Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x y z со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ speed сантимСтров Π² сСкунду.

Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (0 0 0) бСрСтся Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ мСстополоТСниС Π΄Ρ€ΠΎΠ½Π°.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ x y z Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 20, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π»Π΅Ρ‚Π΅Ρ‚ΡŒ Π½Π° ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ДопустимыС значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

АргумСнт Π”Π°Π½Π½Ρ‹Π΅ ДопустимыС значСния
x int (сантимСтры) -500 - 500
y int (сантимСтры) -500 - 500
z int (сантимСтры) -500 - 500
speed int (сантимСтры Π² сСкунду) 10 - 100
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.go_xyz_speed(100, 0, 0, 100) # ΠΏΠΎΠ»Ρ‘Ρ‚ Π½Π° ΠΌΠ΅Ρ‚Ρ€ Π²ΠΏΠ΅Ρ€Π΅Π΄ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 100 см/с

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

go_xyz_speed_mid(x, y, z, speed, mid)

ΠŸΠΎΠ»Ρ‘Ρ‚ Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x y z ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad mid со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ speed сантимСтров Π² сСкунду.

ΠŸΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Mission Pad, Π½ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ пСрСдвиТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (0 0 0) бСрСтся Mission Pad.

Если Mission Pad с ID mid Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ - Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ призСмляСтся.

НСобходимо Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ поиск Mission Pad с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ enable_mission_pads(), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Mission Pad находился Π² области видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ x y z Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 20, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π»Π΅Ρ‚Π΅Ρ‚ΡŒ Π½Π° ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ДопустимыС значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

АргумСнт Π”Π°Π½Π½Ρ‹Π΅ ДопустимыС значСния
x int (сантимСтры) -500 - 500
y int (сантимСтры) -500 - 500
z int (сантимСтры) -500 - 500
speed int (сантимСтры Π² сСкунду) 10 - 100
mid int (Mission Pad ID) 1 - 8
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.go_xyz_speed(100, 0, 0, 100, 1) # ΠΏΠΎΠ»Ρ‘Ρ‚ Π½Π° ΠΌΠ΅Ρ‚Ρ€ Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ MP1 со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 100 см/с

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

go_xyz_speed_yaw_mid(x, y, z, speed, yaw, mid1, mid2)

ΠŸΠΎΠ»Ρ‘Ρ‚ Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x y z ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad mid1 со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ speed сантимСтров Π² сСкунду. Π’ Ρ‚ΠΎΡ‡ΠΊΠ΅ x y z производится поиск Mission Pad mid2 ΠΈ Π΄Ρ€ΠΎΠ½ поворачиваСтся Π½Π° ΡƒΠ³ΠΎΠ» yaw ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ направлСния mid2.

ΠŸΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Mission Pad, Π½ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ пСрСдвиТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (0 0 0) бСрСтся Mission Pad mid1.

Если Mission Pad с ID mid1 Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ - Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ призСмляСтся.

Если Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ x y z Mission Pad с ID mid2 Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ - Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ призСмляСтся.

ΠΠ΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ слишком Π±Π»ΠΈΠ·ΠΊΠΎΠ΅ располоТСниС Π΄Π²ΡƒΡ… Mission Pad (ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°).

НСобходимо Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ поиск Mission Pad с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ enable_mission_pads(), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Mission Pad находился Π² области видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ x y z Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 20, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π»Π΅Ρ‚Π΅Ρ‚ΡŒ Π½Π° ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ДопустимыС значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

АргумСнт Π”Π°Π½Π½Ρ‹Π΅ ДопустимыС значСния
x int (сантимСтры) -500 - 500
y int (сантимСтры) -500 - 500
z int (сантимСтры) -500 - 500
speed int (сантимСтры Π² сСкунду) 10 - 100
yaw int (градусы) -360 - 360
mid1 int (Mission Pad ID) 1 - 8
mid2 int (Mission Pad ID) 1 - 8
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

# ΠΏΠΎΠ»Ρ‘Ρ‚ ΠΎΡ‚ MP1 Π½Π° ΠΌΠ΅Ρ‚Ρ€ Π²ΠΏΠ΅Ρ€Π΅Π΄ (ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹ Π½Π° ΠΊΠΎΠ²Ρ€ΠΈΠΊΠ΅) со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 100 см/с
# послС производится поиск MP2 ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Ρ€ΠΎΠ½Π° ΠΈ Ρ€Π°ΠΊΠ΅Ρ‚ΠΎΠΉ Π½Π° MP2 составила 0 градусов
drone.go_xyz_speed(100, 0, 0, 100, 0, 1, 2)

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

land()

ΠŸΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ½Π°.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

move(direction, x)

ΠŸΠΎΠ»Ρ‘Ρ‚ Π΄Ρ€ΠΎΠ½Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹ΠΌ осям - Π²ΠΏΠ΅Ρ€Π΅Π΄/Π½Π°Π·Π°Π΄ (ось X), Π²Π»Π΅Π²ΠΎ/Π²ΠΏΡ€Π°Π²ΠΎ (ось Y), Π²Π²Π΅Ρ€Ρ…/Π²Π½ΠΈΠ· (ось Z).

ВрСбуСтся Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° - Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ (str) ΠΈ расстояниС Π² сантимСтрах (int).

РасстояниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 20 сантимСтров, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ»Ρ‘Ρ‚Π° Π½Π° ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ Π΄ΠΈΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ДопустимыС значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

АргумСнт Π”Π°Π½Π½Ρ‹Π΅ ДопустимыС значСния
direction str (Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅) 'forward', 'back', 'left', 'right', 'up', 'down'
x int (сантимСтры) 20 - 500

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² направлСния:

АргумСнт НаправлСниС
'forward' ΠŸΠΎΠ»Π΅Ρ‚ Π²ΠΏΠ΅Ρ€Π΅Π΄
'back' ΠŸΠΎΠ»Π΅Ρ‚ Π½Π°Π·Π°Π΄
'left' ΠŸΠΎΠ»Π΅Ρ‚ Π²Π»Π΅Π²ΠΎ
'right' ΠŸΠΎΠ»Π΅Ρ‚ Π²ΠΏΡ€Π°Π²ΠΎ
'up' ΠŸΠΎΠ»Π΅Ρ‚ Π²Π²Π΅Ρ€Ρ…
'down' ΠŸΠΎΠ»Π΅Ρ‚ Π²Π½ΠΈΠ·
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.move('forward', 50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²ΠΏΠ΅Ρ€Π΅Π΄ Π½Π° 50 сантимСтров

drone.move('back', 50) # ΠΏΠΎΠ»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π½Π° 50 сантимСтров

drone.move('left', 50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²Π»Π΅Π²ΠΎ Π½Π° 50 сантимСтров

drone.move('right', 50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 50 сантимСтров

drone.move('up', 50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²Π²Π΅Ρ€Ρ… Π½Π° 50 сантимСтров

drone.move('down', 50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²Π½ΠΈΠ· Π½Π° 50 сантимСтров

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

move_back(x)

ΠŸΠΎΠ»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π½Π° x сантимСтров.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 20 Π΄ΠΎ 500.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.move_back(50) # ΠΏΠΎΠ»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π½Π° 50 сантимСтров

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

move_down(x)

ΠŸΠΎΠ»Π΅Ρ‚ Π²Π½ΠΈΠ· Π½Π° x сантимСтров.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 20 Π΄ΠΎ 500.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.move_down(50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²Π½ΠΈΠ· Π½Π° 50 сантимСтров

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

move_forward(x)

ΠŸΠΎΠ»Π΅Ρ‚ Π²ΠΏΠ΅Ρ€Π΅Π΄ Π½Π° x сантимСтров.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 20 Π΄ΠΎ 500.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.move_forward(50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²ΠΏΠ΅Ρ€Π΅Π΄ Π½Π° 50 сантимСтров

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

move_left(x)

ΠŸΠΎΠ»Π΅Ρ‚ Π²Π»Π΅Π²ΠΎ Π½Π° x сантимСтров.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 20 Π΄ΠΎ 500.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.move_left(50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²Π»Π΅Π²ΠΎ Π½Π° 50 сантимСтров

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

move_right(x)

ΠŸΠΎΠ»Π΅Ρ‚ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° x сантимСтров.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 20 Π΄ΠΎ 500.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ
10000


drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.move_right(50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 50 сантимСтров

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

move_up(x)

ΠŸΠΎΠ»Π΅Ρ‚ Π²Π²Π΅Ρ€Ρ… Π½Π° x сантимСтров.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 20 Π΄ΠΎ 500.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

drone.move_up(50) # ΠΏΠΎΠ»Π΅Ρ‚ Π²Π²Π΅Ρ€Ρ… Π½Π° 50 сантимСтров

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

parse_state(state)

БтатичСский Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π°. Он Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - строку с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² особом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ.


query_attitude()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π΅Π³ΠΎ Π½Π°ΠΊΠ»ΠΎΠ½Π΅ ΠΏΠΎ осям X/Y ΠΈ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ оси Z.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ запросы get_pitch(), get_roll() ΠΈ get_yaw(), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ:

ΠšΠ»ΡŽΡ‡ Π”Π°Π½Π½Ρ‹Π΅ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
'pitch' int (градус) Наклон ΠΏΠΎ оси X
'roll' int (градус) Наклон ΠΏΠΎ оси Y
'yaw' int (градус) ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ оси Z
from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.query_attitude()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ вСсь ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² "сыром" Π²ΠΈΠ΄Π΅

# Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ вСсь ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ построчно:
attitude = drone.query_attitude()
for key in attitude:
    print(f'{key}: {attitude[key]}')

# Π²Ρ‹Π²ΠΎΠ΄ Π½Π°ΠΊΠ»ΠΎΠ½Π° ΠΏΠΎ оси X (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ get_pitch(), Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅)
print(drone.query_attitude()['pitch'])

drone.end() # удаляСт drone

query_barometer()

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π΄Ρ€ΠΎΠ½Π° показания встроСнного Π°Π»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚Ρ€Π°.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ запроса get_barometer(), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Показания Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ float - Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ высоту Π² сантимСтрах.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.query_barometer()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ показания Π°Π»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚Ρ€Π°

drone.end() # удаляСт drone

query_battery()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ заряда аккумулятора Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ….

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ запроса get_battery(), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.query_battery()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ заряд аккумулятора

drone.end() # удаляСт drone

query_distance_tof()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° расстояниС Π΄ΠΎ прСпятствия снизу Π² сантимСтрах.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ запроса get_distance_tof(), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

print(drone.query_distance_tof()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ расстояниС Π΄ΠΎ прСпятствия снизу

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

query_flight_time()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° врСмя с Π½Π°Ρ‡Π°Π»Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Ρ‚Π° Π² сСкундах.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ запроса get_flight_time(), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

print(drone.query_flight_time()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ врСмя ΠΏΠΎΠ»Π΅Ρ‚Π°

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

query_height()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° высоту ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΉ оси Π² сантимСтрах.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ запроса get_height(), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

print(drone.query_height()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ высоту

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

query_sdk_version()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Tello EDU.

SDK 2.0 прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»:

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ str.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.query_sdk_version()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π²Π΅Ρ€ΡΠΈΡŽ SDK

drone.end() # удаляСт drone

query_serial_number()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° Π΅Π³ΠΎ сСрийный Π½ΠΎΠΌΠ΅Ρ€.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Tello EDU.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ str.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.query_serial_number()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сСрийный Π½ΠΎΠΌΠ΅Ρ€

drone.end() # удаляСт drone

query_speed()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ настройки скорости.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.query_speed()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ скорости

drone.end() # удаляСт drone

query_temperature()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° Π΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ Π² особом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ 'min~maxC'.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ схоТСго ΠΌΠ΅Ρ‚ΠΎΠ΄Π° get_temperature().

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ str.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.query_temperature()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Ρ‚Π΅ΠΌΡ€ΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ Π΄Ρ€ΠΎΠ½Π°

drone.end() # удаляСт drone

query_wifi_signal_noise_ratio()

Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π΄Ρ€ΠΎΠ½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠΌΠ΅Ρ… Wi-Fi соСдинСния.

НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Ρ€ΠΎΠ½Π° ΠΊ локальной сСти ΠΏΠΎ Wi-Fi.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

print(drone.query_wifi_signal_noise_ratio()) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ качСство ΠΏΡ€ΠΈΠ΅ΠΌΠ°

drone.end() # удаляСт drone

rotate_clockwise(x)

ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π° ΠΏΠΎ часовой стрСлкС Π½Π° ΡƒΠ³ΠΎΠ» x.

АргумСнт - int.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

drone.rotate_clockwise(90) # ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° 90 градусов ΠΏΠΎ часовой стрСлкС

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

rotate_counter_clockwise(x)

ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ² часовой стрСлки Π½Π° ΡƒΠ³ΠΎΠ» x.

АргумСнт - int

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

drone.rotate_counter_clockwise(90) # ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° 90 градусов ΠΏΡ€ΠΎΡ‚ΠΈΠ² часовой стрСлки

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

rotate_mid(yaw=0)

ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - ΡƒΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΠΎΠ½ΠΎΠΌ ΠΈ Mission Pad (int).

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡƒΠ³ΠΎΠ» Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

drone.rotate_mid(90) # ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° 90 градусов ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

send_command_with_return(command, timeout=RESPONSE_TIMEOUT)

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ½ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· SDK с ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π°.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ - строка с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ - врСмя оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° Π² сСкундах (int).

КаТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° SDK Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅.

ΠžΠ±Ρ‰ΠΈΠ΅ для Ryze (SDK 1.3) ΠΈ EDU (SDK 2.0) ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Команда Π² SDK ДопустимыС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠœΠ΅Ρ‚ΠΎΠ΄ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅
acceleration? query_attitude()
attitude? query_attitude()
back x x: int 20-500 move_back(x)
baro? query_barometer()
battery? query_battery()
ccw x x: int rotate_counter_clockwise(x)
command connect()
curve x1 y1 z1 x2 y2 z2 speed x1: int -500 - 500
y1: int -500 -500
z1: int -500 - 500
x2: int -500 - 500
y2: int -500 -500
z2: int -500 - 500
speed: int 10 - 60
ΠœΠΎΠ΄ΡƒΠ»ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x1/y1/z1 ΠΈ x2/y2/z2 Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС 20.
Π’ΠΎΡ‡ΠΊΠΈ 0 0 0, x1 y1 z1 ΠΈ x2 y2 z2 Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ окруТности радиусом ΠΎΡ‚ 0.5 Π΄ΠΎ 10 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².
curve_xyz_speed(x1, y1, z1, x2, y2, z2, speed)
cw x x: int rotate_clockwise(x)
down x x: int 20-500 move_down(x)
emergency emergency()
flip x 'f', 'b', 'l', 'r' flip(x)
forward x x: int 20-500 move_forward(x)
go x y z speed
x: -500 - 500
y: -500 -500
z: -500 - 500
speed: 10 - 100
ΠœΠΎΠ΄ΡƒΠ»ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x/y/z Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС 20.
go_xyz_speed(x, y, z, speed)
height? query_height()
land land()
left x x: int 20-500 move_left(x)
rc y x z d y: -100 - 100
x: -100 - 100
z: -100 - 100
d: -100 - 100
send_rc_control(y, x, z, yaw_z)
right x x: int 20-500 move_right(x)
speed x x: 10 - 100 set_speed(x)
speed? query_speed()
streamoff streamoff()
streamon streamon()
takeoff takeoff()
temp? query_temperature()
time? query_flight_time()
tof? query_distance_tof()
up x x: int 20-500 move_up(x)
wifi ssid pass ssid: str
pass: str
set_wifi_credentials(ssid, password)
wifi? query_wifi_signal_noise_ratio()

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π² SDK 2.0 (Tello EDU):

Команда Π² SDK ДопустимыС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠœΠ΅Ρ‚ΠΎΠ΄ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅
ap ssid pass ssid: str
pass: str
connect_to_wifi(ssid, password)
curve x1 y1 z1 x2 y2 z2 speed mid x1: int -500 - 500
y1: int -500 -500
z1: int -500 - 500
x2: int -500 - 500
y2: int -500 -500
z2: int -500 - 500
speed: int 10 - 60
mid: int 1 - 8
ΠœΠΎΠ΄ΡƒΠ»ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x1/y1/z1 ΠΈ x2/y2/z2 Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС 20.
Π’ΠΎΡ‡ΠΊΠΈ 0 0 0, x1 y1 z1 ΠΈ x2 y2 z2 Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ окруТности радиусом ΠΎΡ‚ 0.5 Π΄ΠΎ 10 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².
curve_xyz_speed_mid(x1, y1, z1, x2, y2, z2, speed, mid)
go x y z speed mid
x: int -500 - 500
y: int -500 -500
z: int -500 - 500
speed: int 10 - 100
mid: int 1 - 8
ΠœΠΎΠ΄ΡƒΠ»ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x/y/z Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС 20.
go_xyz_speed_mid(x, y, z, speed, mid)
jump x y z speed yaw mid1 mid2
x: int -500 - 500
y: int -500 -500
z: int -500 - 500
speed: int 10 - 100
mid1: int 1 - 8
mid2: int 1 - 8
ΠœΠΎΠ΄ΡƒΠ»ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x/y/z Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС 20.
go_xyz_speed_yaw_mid(x, y, z, speed, yaw, mid1, mid2)
mdirection x x: 0, 1, 2 set_mission_pad_detection_direction(x)
moff disable_mission_pads()
mon enable_mission_pads()
sdk? query_sdk_version()
sn? query_serial_number()
stop stop()

ВрСмя оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ хранится Π² ΠΏΠΎΠ»Π΅ RESPONSE_TIMEOUT.

Π’ случаС отсутствия ΠΎΡ‚Π²Π΅Ρ‚Π° выполняСтся RETRY_COUNT ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ str ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΈ False ΠΏΡ€ΠΈ ошибкС.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

from time import sleep # ΠΈΠΌΠΏΠΎΡ€Ρ‚ сна ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

# контСкстным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» commands.txt, ΡƒΠΊΠ°Π·Π°Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ
# Ρ„Π°ΠΉΠ» построчно Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:
# command
# takeoff
# sleep 5
# forward 100
with open('commands.txt', encoding='utf-8-sig') as file:

    text = file.read() # сохраняСм всС содСрТимоС Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ

    text = text.split('\n') # Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ тСкст Π½Π° массив строк ΠΏΠΎ символу пСрСноса

    drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΠΎΠ½Ρƒ

    for command in text: # для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌ массивС

        command = command.strip() # удаляСм ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ слСва ΠΈ справа

        if command[:5] == 'sleep': # Ссли ΠΊΠΎΠΌΠ°Π½Π΄Π° начинаСтся со слова sleep

            sleep(int(command[6:])) # ΡΠΏΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ число сСкунд

        elif command not in ('', '\n'): # ΠΈΠ½Π°Ρ‡Π΅, Ссли строка Π½Π΅ пустая

            drone.send_command_with_return(command) # отправляСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π΄Ρ€ΠΎΠ½Ρƒ со стандартной Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ

# Π”Ρ€ΠΎΠ½ Π²Π·Π»Π΅Ρ‚ΠΈΡ‚, уснСт Π½Π° 5 сСкунд, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ»Π΅Ρ‚ΠΈΡ‚ ΠΌΠ΅Ρ‚Ρ€ Π²ΠΏΠ΅Ρ€Π΅Π΄, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅

drone.end() # удаляСт drone

Π‘Ρ‚ΠΎΠΈΡ‚ ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ трСбуСтся Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

from time import sleep # ΠΈΠΌΠΏΠΎΡ€Ρ‚ сна ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

# НиТС ΠΌΡ‹ отправляСм Π΄Ρ€ΠΎΠ½ Π½Π° 5 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²ΠΏΠ΅Ρ€Π΅Π΄ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 10 см/с, это Π·Π°ΠΉΠΌΠ΅Ρ‚ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 50 сСкунд
# ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ нСстандартноС врСмя оТидания - 60 сСкунд
drone.send_command_with_return('go 500 0 50 10', 60)

drone.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅, удаляСт drone

send_command_without_return(command)

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ½ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· SDK Π±Π΅Π· оТидания ΠΎΡ‚Π²Π΅Ρ‚Π°.

АргумСнт - строка с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ· SDK, список ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² описании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° send_command_with_return(command, timeout=RESPONSE_TIMEOUT).

Π­Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· нСобходимости.


send_control_command(command, timeout=RESPONSE_TIMEOUT)

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ½ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· SDK с ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π°.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ - строка с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ - врСмя оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° Π² сСкундах (int).

Π­Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· нСобходимости.


send_rc_control(y, x, z, yaw_z)

ΠŸΡ€ΡΠΌΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅Ρ‚ΠΎΠΌ Π±Π΅Π· ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ косвСнно ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Π²ΠΈΠ½Ρ‚ΠΎΠ².

НулСвыС значСния ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΠΎΠ½Ρƒ Π·Π°Π²ΠΈΡΠ½ΡƒΡ‚ΡŒ Π½Π° мСстС.

АргумСнт y управляСт Π½Π°ΠΊΠ»ΠΎΠ½ΠΎΠΌ Π²Π»Π΅Π²ΠΎ-Π²ΠΏΡ€Π°Π²ΠΎ, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ x управляСт Π½Π°ΠΊΠ»ΠΎΠ½ΠΎΠΌ Π²ΠΏΠ΅Ρ€Π΅Π΄-Π½Π°Π·Π°Π΄, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ z упправляСт высотой ΠΏΠΎΠ»Π΅Ρ‚Π°, Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ z_yaw управляСт Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π² Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ плоскости. Π§Π΅ΠΌ большС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° - Ρ‚Π΅ΠΌ сильнСС Π½Π°ΠΊΠ»ΠΎΠ½ Π² ΠΎΠ΄Π½Ρƒ сторону, Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ - Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ сторону.

АргумСнт Π”Π°Π½Π½Ρ‹Π΅ ДопустимыС значСния
y int -100 - 100
x int -100 - 100
z int -100 - 100
yaw_z int -100 - 100

Команда отправляСтся ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ TIME_BTW_RC_CONTROL_COMMANDS сСкунд.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

from time import time # ΠΈΠΌΠΏΠΎΡ€Ρ‚ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ получСния глобального Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Ρ‘Ρ‚

start = time() # Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ врСмя Π½Π°Ρ‡Π°Π»Π° выполнСния Ρ†ΠΈΠΊΠ»Π°

while time() - start < 3: # Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 3 сСкунд послС Π½Π°Ρ‡Π°Π»Π°

    drone.send_rc_control(0, 100, 0, 0) # Π»Π΅Ρ‚Π΅Ρ‚ΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°ΠΊΠ»ΠΎΠ½ΠΎΠΌ

drone.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅, удаляСт drone

send_read_command(command)

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ½ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· SDK с ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π°.

АргумСнт - строка с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

Π­Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ½ Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.


set_mission_pad_detection_direction(x)

Настройка направлСния поиска Mission Pad.

ΠŸΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Mission Pad, Π½ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ пСрСдвиТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Mission Pad, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ.

Команда поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

НСобходимо Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ поиск Mission Pad с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ enable_mission_pads(), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Mission Pad находился Π² области видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°.

АргумСнт yΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ для поиска:

АргумСнт Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
0 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ниТняя ΠΊΠ°ΠΌΠ΅Ρ€Π°, частота опроса 20 Hz.
1 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрСдняя ΠΊΠ°ΠΌΠ΅Ρ€Π°, частота опроса 20 Hz.
2 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Π΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, частота опроса 10 Hz.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ поиск Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ниТнюю ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ.

ΠŸΡ€ΠΈ пСрСзапускС настройка сбрасываСтся.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.enable_mission_pads() # активация опрСдСлСния MP

drone.set_mission_pad_detection_direction(0) # ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ниТнюю ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ

drone.end() # удаляСт drone

set_speed(x)

Настройка скорости ΠΏΠΎΠ»Π΅Ρ‚Π° Π΄Ρ€ΠΎΠ½Π° Π² сантимСтрах Π² сСкунду ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ максимальна. ПослС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сбрасываСтся.

АргумСнт - Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 10 Π΄ΠΎ 100.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

drone.set_speed(50) # устанавливаСм ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ 50 см/с

drone.move_forward(100) # ΠΏΠΎΠ»Π΅Ρ‚ Π½Π° установлСнной скорости

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

set_wifi_credentials(ssid, password)

ИзмСнСниС ΠΈΠΌΠ΅Π½ΠΈ ΠΈ пароля создаваСмой Π΄Ρ€ΠΎΠ½ΠΎΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ доступа Wi-Fi.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - имя сСти (строка), Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Π΅Ρ‘ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ (строка).

Имя сСти ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².

ПослС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄Ρ€ΠΎΠ½ пСрСзагрузится.

Для сброса настроСк Wi-Fi Π½Π°Π΄ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΠΎΠ½ ΠΈ ΠΏΡΡ‚ΡŒ сСкунд Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ питания (Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ).

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1, ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΊ создаваСмой Π΄Ρ€ΠΎΠ½ΠΎΠΌ Ρ‚ΠΎΡ‡ΠΊΠ΅ доступа.

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΠΎΠ½Ρƒ

drone.set_wifi_credentials('example', 'pass') # Π΄Ρ€ΠΎΠ½ пСрСзагрузится ΠΈ создаст Ρ‚ΠΎΡ‡ΠΊΡƒ example с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ pass

stop()

ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Π΄Ρ€ΠΎΠ½ Π½Π° мСстС.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Tello EDU.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

drone.send_rc_control(0, 100, 0, 0) # Π½Π°ΠΊΠ»ΠΎΠ½ Π²ΠΏΠ΅Ρ€Π΅Π΄

drone.stop() # остановка Π½Π° мСстС (ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ иннСрция)

drone.end() # удаляСт drone

streamoff()

ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ прямой доступ ΠΊ ΠΊΠ°ΠΌΠ΅Ρ€Π΅ Π΄Ρ€ΠΎΠ½Π°.

import cv2 # ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.streamon() # активация стрима ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹

drone_camera = drone.get_frame_read() # ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ доступа ΠΊ ΠΊΠ°ΠΌΠ΅Ρ€Π΅

cv2.imwrite("picture.png", drone_camera.frame) # ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ» picture.png

drone.streamoff() # ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ стрима

drone.end() # удаляСт drone

streamon()

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ прямой доступ ΠΊ ΠΊΠ°ΠΌΠ΅Ρ€Π΅ Π΄Ρ€ΠΎΠ½Π°.

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² дальнСйшСм ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹.

import cv2 # ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.streamon() # активация стрима ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹

drone_camera = drone.get_frame_read() # ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ доступа ΠΊ ΠΊΠ°ΠΌΠ΅Ρ€Π΅

cv2.imwrite("picture.png", drone_camera.frame) # ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ» picture.png

drone.streamoff() # ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ стрима

drone.end() # удаляСт drone

takeoff()

АвтоматичСский Π²Π·Π»Ρ‘Ρ‚ ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ½Π°.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone = Tello() # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.10.1

drone.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

drone.takeoff() # Π²Π·Π»Π΅Ρ‚

drone.land() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅

drone.end() # удаляСт drone

udp_response_receiver()

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ для получСния ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π° ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π­Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ½ Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.


udp_state_receiver()

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ для получСния ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии.

Π­Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ½ Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.


Поля класса Tello

Имя поля Π”Π°Π½Π½Ρ‹Π΅ НазначСниС
address tuple IP ΠΈ ΠΏΠΎΡ€Ρ‚ Π΄Ρ€ΠΎΠ½Π°
background_frame_read BackgroundFrameRead Π—Π°Ρ…Π²Π°Ρ‚ Π²ΠΈΠ΄Π΅ΠΎ
cap VideoCapture Π‘Ρ‚Ρ€ΠΈΠΌ Π²ΠΈΠ΄Π΅ΠΎ
CONTROL_UDP_PORT int ΠŸΠΎΡ€Ρ‚ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ получСния ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²
FORMATTER
HANDLER
LOGGER
БистСма логирования
is_flying boolean Бтатус ΠΏΠΎΠ»Π΅Ρ‚Π°
last_rc_control_timestamp float ВрСмя получСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ RC ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
last_received_command_timestamp float ВрСмя получСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
RESPONSE_TIMEOUT int/float ВрСмя оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π°
RETRY_COUNT int ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ
state_field_converters dict Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ для парсинга Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ состоянии Π΄Ρ€ΠΎΠ½Π°
STATE_UDP_PORT int ΠŸΠΎΡ€Ρ‚ для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π°
stream_on boolean Бтатус стрима Π²ΠΈΠ΄Π΅ΠΎ
TELLO_IP str IP Π΄Ρ€ΠΎΠ½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
TIME_BTW_COMMANDS int/float МинимальноС врСмя оТидания ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ
TIME_BTW_RC_CONTROL_COMMANDS int/float МинимальноС врСмя оТидания ΠΌΠ΅ΠΆΠ΄Ρƒ RC ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ
VS_UDP_IP str IP Π²ΠΈΠ΄Π΅ΠΎ стрима
VS_UDP_PORT int ΠŸΠΎΡ€Ρ‚ Π²ΠΈΠ΄Π΅ΠΎ стрима

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹


ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· тСкстового Ρ„Π°ΠΉΠ»Π°

ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ практичСски Π±Π΅Π· примСнСния Python. Достаточно ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для чтСния ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ· тСкстового Ρ„Π°ΠΉΠ»Π°:

commands.py

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅ для Π΄Ρ€ΠΎΠ½Π° Π² тСкстовом Ρ„Π°ΠΉΠ»Π΅ commands.txt, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ помСстим Π² Ρ‚Ρƒ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΡƒ. (Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΡƒΠΊΠ°Π·Π°Π½Π° UTF-8)

commands.txt

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, описаны Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ‚ΡƒΡ‚: send_command_with_return()

А Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сна ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ sleep.

Π’Π°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнный Π°Π½Π°Π»ΠΎΠ³ Scratch, Π½ΠΎ придСтся ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ большС Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΈ чтСния Ρ„Π°ΠΉΠ»Π° (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ - ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ сон Π² Ρ„Π°ΠΉΠ»Π΅ commands.py).

Для запуска Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку, ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ commands.py ΠΈ commands.txt с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ cd, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» commands.py с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ py, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΊΠ°ΠΊ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅:

cmdpy


TelloSwarm

TelloSwarm - класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ нСсколькими Π΄Ρ€ΠΎΠ½Π°ΠΌΠΈ, ΠΏΡƒΡ‚Π΅ΠΌ объСдинСния ΠΈΡ… Π² "Ρ€ΠΎΠΉ".


ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса TelloSwarm

  • __getattr__(attr) - ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ Ρ€ΠΎΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Tello.
  • __init__(list) - инициализация роя.
  • __iter__() - ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ роя.
  • __len__() - Ρ€Π°Π·ΠΌΠ΅Ρ€ роя.
  • fromFile(path) - Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ IP ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.
  • fromIps(ips) - созданиС роя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ массива IP адрСсов.
  • parallel(func) - ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€ΠΎΠ΅ΠΌ.
  • sequential(func) - ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€ΠΎΠ΅ΠΌ.
  • sync(timeout=None) - синхронизация ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.

__getattr__(attr)

ΠœΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Ρ€ΠΎΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Tello.

Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом написано Ρ‚ΡƒΡ‚.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

swarm.connect() # для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Ρ€ΠΎΠ½Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ вызываСтся connect() ΠΈΠ· класса Tello

__init__(list)

ΠŸΡ€ΡΠΌΠ°Ρ инициализация роя, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Tello.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

drone1 = Tello('192.168.1.220') # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.220

drone2 = Tello('192.168.1.245') # Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.245

swarm = TelloSwarm([drone1, drone2]) # созданиС роя ΠΈΠ· Π΄Π²ΡƒΡ… Π΄Ρ€ΠΎΠ½ΠΎΠ² Π²Ρ‹ΡˆΠ΅

Π­Ρ‚ΠΎ допустимый ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ роя, Π½ΠΎ, скорСС всСго, ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ fromFile(path) ΠΈΠ»ΠΈ fromIps(ips).


__iter__()

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π΄Ρ€ΠΎΠ½ΠΎΠ² Π² Ρ€ΠΎΠ΅.

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€ΠΎΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ for.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

for tello in swarm: # для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Ρ€ΠΎΠ½Π° Π² Ρ€ΠΎΠ΅

    print(tello.get_battery()) # вывСсти ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ заряда аккумулятора

__len__()

ΠœΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠ·Π½Π°Ρ‚ΡŒ число Π΄Ρ€ΠΎΠ½ΠΎΠ² Π² Ρ€ΠΎΠ΅.

from djitellopy import Tello # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния ΠΎΠ΄Π½ΠΈΠΌ Π΄Ρ€ΠΎΠ½ΠΎΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

swarm = TelloSwarm([drone1, drone2]) # созданиС роя ΠΈΠ· Π΄Π²ΡƒΡ… Π΄Ρ€ΠΎΠ½ΠΎΠ² Π²Ρ‹ΡˆΠ΅

print(len(swarm)) # Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ 2

fromFile(path)

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ для чтСния IP адрСсов ΠΈΠ· Ρ„Π°ΠΉΠ»Π° построчно.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - строку с ΠΏΡƒΡ‚Π΅ΠΌ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ.

ΠŸΡ€ΠΈ создании Ρ„Π°ΠΉΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ UTF-8.

Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ fromIps(ips) ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ построчным Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π° массив строк.

from djitellopy import TelloSwarm # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния Ρ€ΠΎΠ΅ΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP Ρ„Π°ΠΉΠ»ΠΎΠΌ
swarm = TelloSwarm.fromFile('ip.txt'))
# Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ список IP адрСсов построчно

fromIps(ips)

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ для создания роя ΠΈΠ· списка IP адрСсов.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - массив строк с IP адрСсами.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ TelloSwarm.

from djitellopy import TelloSwarm # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния Ρ€ΠΎΠ΅ΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

parallel(func)

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ func.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Ρ€ΠΎΠ½Π° создаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. УказываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· скобок ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π­Ρ‚Π° функция ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° - индСкс Π΄Ρ€ΠΎΠ½Π° Π² массивС роя (int) ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Ρ€ΠΎΠ½Π° (Tello).

from djitellopy import TelloSwarm # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния Ρ€ΠΎΠ΅ΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

# объявляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния
def drones_logic(i, tello):
    if i % 2:
        tello.move_left(30 + 30*i)
    else:
        tello.move_right(30 + 30*i)

swarm.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎ всСму Ρ€ΠΎΡŽ

swarm.takeoff() # Π²Π·Π»Π΅Ρ‚ Π²Π΅Π³ΠΎ роя

swarm.parallel(drones_logic) # выполняСм ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ

# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.245 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 0 - Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 0*30 = 30 см Π²ΠΏΡ€Π°Π²ΠΎ
# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.220 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 1 - Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 1*30 = 60 см Π²Π»Π΅Π²ΠΎ
# Π΄Ρ€ΠΎΠ½Ρ‹ Π½Π°Ρ‡Π½ΡƒΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ, ΠΈΠ·-Π·Π° Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² Π΄Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, прилСтят Π² Ρ€Π°Π·Π½ΠΎΠ΅ врСмя
# сколько Π±Ρ‹ Π½ΠΈ Π±Ρ‹Π»ΠΎ Π΄Ρ€ΠΎΠ½ΠΎΠ² Π² Ρ€ΠΎΠ΅ - Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ лСтят Π² Ρ€Π°Π·Π½Ρ‹Π΅ стороны, Π° расстояниС зависит ΠΎΡ‚ индСкса

swarm.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° роя

Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ lambda Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ вмСсто стандартной:

from djitellopy import TelloSwarm # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния Ρ€ΠΎΠ΅ΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

swarm.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎ всСму Ρ€ΠΎΡŽ

swarm.takeoff() # Π²Π·Π»Π΅Ρ‚ Π²Π΅Π³ΠΎ роя

swarm.parallel(lambda i, tello: tello.move_left(30 + 30*i) if i % 2 else tello.move_right(30 + 30*i)) # выполняСм lambda Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ

# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.245 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 0 - Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 0*30 = 30 см Π²ΠΏΡ€Π°Π²ΠΎ
# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.220 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 1 - Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 1*30 = 60 см Π²Π»Π΅Π²ΠΎ
# Π΄Ρ€ΠΎΠ½Ρ‹ Π½Π°Ρ‡Π½ΡƒΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ, ΠΈΠ·-Π·Π° Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² Π΄Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, прилСтят Π² Ρ€Π°Π·Π½ΠΎΠ΅ врСмя
# сколько Π±Ρ‹ Π½ΠΈ Π±Ρ‹Π»ΠΎ Π΄Ρ€ΠΎΠ½ΠΎΠ² Π² Ρ€ΠΎΠ΅ - Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ лСтят Π² Ρ€Π°Π·Π½Ρ‹Π΅ стороны, Π° расстояниС зависит ΠΎΡ‚ индСкса

swarm.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° роя

sequential(func)

ΠŸΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ func.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π΄Ρ€ΠΎΠ½ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. УказываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· скобок ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π­Ρ‚Π° функция ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° - индСкс Π΄Ρ€ΠΎΠ½Π° Π² массивС роя (int) ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Ρ€ΠΎΠ½Π° (Tello).

from djitellopy import TelloSwarm # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния Ρ€ΠΎΠ΅ΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

# объявляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния
def drones_logic(i, tello):
    if i % 2:
        tello.move_left(30 + 30*i)
    else:
        tello.move_right(30 + 30*i)

swarm.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎ всСму Ρ€ΠΎΡŽ

swarm.takeoff() # Π²Π·Π»Π΅Ρ‚ Π²Π΅Π³ΠΎ роя

swarm.sequental(drones_logic) # выполняСм ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ

# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.245 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 0 - Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 0*30 = 30 см Π²ΠΏΡ€Π°Π²ΠΎ
# послС получСния ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄Ρ€ΠΎΠ½Π° ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘Ρ‚ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄Ρ€ΠΎΠ½Ρƒ
# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.220 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 1 - Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 1*30 = 60 см Π²Π»Π΅Π²ΠΎ
# сколько Π±Ρ‹ Π½ΠΈ Π±Ρ‹Π»ΠΎ Π΄Ρ€ΠΎΠ½ΠΎΠ² Π² Ρ€ΠΎΠ΅ - Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ лСтят Π² Ρ€Π°Π·Π½Ρ‹Π΅ стороны, Π° расстояниС зависит ΠΎΡ‚ индСкса

swarm.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° роя

Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ lambda Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ вмСсто стандартной:

from djitellopy import TelloSwarm # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния Ρ€ΠΎΠ΅ΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

swarm.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎ всСму Ρ€ΠΎΡŽ

swarm.takeoff() # Π²Π·Π»Π΅Ρ‚ Π²Π΅Π³ΠΎ роя

swarm.sequental(lambda i, tello: tello.move_left(30 + 30*i) if i % 2 else tello.move_right(30 + 30*i)) # выполняСм lambda Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ

# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.245 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 0 - Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 0*30 = 30 см Π²ΠΏΡ€Π°Π²ΠΎ
# послС получСния ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄Ρ€ΠΎΠ½Π° ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘Ρ‚ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄Ρ€ΠΎΠ½Ρƒ
# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.220 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 1 - Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 1*30 = 60 см Π²Π»Π΅Π²ΠΎ
# сколько Π±Ρ‹ Π½ΠΈ Π±Ρ‹Π»ΠΎ Π΄Ρ€ΠΎΠ½ΠΎΠ² Π² Ρ€ΠΎΠ΅ - Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ лСтят Π² Ρ€Π°Π·Π½Ρ‹Π΅ стороны, Π° расстояниС зависит ΠΎΡ‚ индСкса

swarm.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° роя

sync(timeout=None)

ΠœΠ΅Ρ‚ΠΎΠ΄ синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ€ΠΎΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - максимальноС врСмя оТидания Π² сСкундах.

from djitellopy import TelloSwarm # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния Ρ€ΠΎΠ΅ΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

# объявляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния
def drones_logic(i, tello):
    for _ in range(3):
        tello.move_forward(30 + 30*i)
        swarm.sync()

swarm.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎ всСму Ρ€ΠΎΡŽ

swarm.takeoff() # Π²Π·Π»Π΅Ρ‚ Π²Π΅Π³ΠΎ роя

swarm.parallel(drones_logic) # выполняСм ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ

# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.245 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 0, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‚Ρ€ΠΈΠΆΠ΄Ρ‹ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 0*30 = 30 см Π²ΠΏΠ΅Ρ€Π΅Π΄
# Π΄Ρ€ΠΎΠ½ ΠΏΠΎ адрСсу 192.168.1.220 ΠΈΠΌΠ΅Π΅Ρ‚ Π² массивС роя индСкс 1, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‚Ρ€ΠΈΠΆΠ΄Ρ‹ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° 30 + 1*30 = 60 см Π²ΠΏΠ΅Ρ€Π΅Π΄
# Π΄Ρ€ΠΎΠ½Ρ‹ Π½Π°Ρ‡Π½ΡƒΡ‚ ΠΏΠΎΠ»Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ, ΠΈΠ·-Π·Π° Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² Π΄Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, каТдая ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ выполнСния
# Π½ΠΎ синхронизация Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ заставит Π΄Ρ€ΠΎΠ½, Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ²ΡˆΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ΡΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈ послСднюю ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΎΠ½ΠΈ Π½Π°Ρ‡Π½ΡƒΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ

swarm.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° роя

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ TelloSwarm ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Tello

К Ρ€ΠΎΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Tello, Π½ΠΎ Π½Π΅ всС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ°ΠΊ оТидаСтся:

Π’ΠΈΠΏ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ЀактичСский Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
Команда контроля Π΄Ρ€ΠΎΠ½Π°
НапримСр:
move_forward(x)
enable_mission_pads()
end()
ВсС Π΄Ρ€ΠΎΠ½Ρ‹ выполнят ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ВсС Π΄Ρ€ΠΎΠ½Ρ‹ выполнят ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ
Команда быстрого получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· словаря с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π΄Ρ€ΠΎΠ½Π°
НапримСр:
get_battery()
get_distance_tof()
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ всСх Π΄Ρ€ΠΎΠ½ΠΎΠ² ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ None
Запрос получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ Π΄Ρ€ΠΎΠ½Π°
НапримСр:
query_battery()
query_distance_tof()
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ всСх Π΄Ρ€ΠΎΠ½ΠΎΠ² ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ None, Π½ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π»ΠΎΠ³Π΅

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ, достаточно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄-ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ __iter__():

from djitellopy import TelloSwarm # ΠΈΠΌΠΏΠΎΡ€Ρ‚ класса управлСния Ρ€ΠΎΠ΅ΠΌ

# инициализация роя, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° IP массивом
swarm = TelloSwarm.fromIps([
    "192.168.1.245",
    "192.168.1.220"
])

swarm.connect() # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎ всСму Ρ€ΠΎΡŽ

for drone in swarm: # для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Ρ€ΠΎΠ½Π° Π² Ρ€ΠΎΠ΅

    print(drone.get_battery()) # вывСсти заряд аккумулятора

swarm.end() # ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° роя

Поля класса TelloSwarm

Имя поля Π”Π°Π½Π½Ρ‹Π΅ НазначСниС
barrier
funcBarrier
Barrier ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² роя
funcQueues Queue ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ для выполнСния
tellos list[Tello] Массив всСх Π΄Ρ€ΠΎΠ½ΠΎΠ² Π² Ρ€ΠΎΠ΅
threads list[Thread] Массив ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния

Авторы


ЛицСнзия

Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Для Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ LICENSE.txt.


DJI Tello

ОбС ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Ρ€ΠΎΠ½ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ схоТиС характСристики - систСму позиционирования, ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ Π½Π° 5 мСгапиксСлСй, 13 ΠΌΠΈΠ½ΡƒΡ‚ ΠΏΠΎΠ»Π΅Ρ‚Π° ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ заряда, ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ состояния, Π·Π°Ρ‰ΠΈΡ‚Ρƒ Π²ΠΎΠΊΡ€ΡƒΠ³ лопастСй.


ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΡ

  • Π”Ρ€ΠΎΠ½
  • Аккумулятор
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ
  • MicroUSB для зарядки
  • ЗапасныС лопасти
  • ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ Mission Pads (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Tello EDU)

Π’ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ Π½Π΅ поставляСтся Π±Π»ΠΎΠΊ зарядного устройства. Аккумулятор ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠΊ Π΄ΠΎ 1А ΠΏΡ€ΠΈ напряТСнии 5Π’. РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ Π½Π° 5Π’ с силой Ρ‚ΠΎΠΊΠ° Π½Π΅ Π½ΠΈΠΆΠ΅ 1,5А (большС - ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ Ρ‚ΠΎΠΊ допустимым ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ). Зарядка ΠΎΡ‚ USB ΠΏΠΎΡ€Ρ‚Π° ПК ΠΈΠΌΠ΅Π΅Ρ‚ слишком ΠΌΠ°Π»Ρ‹ΠΉ Ρ‚ΠΎΠΊ ΠΈ Π½Π΅ рСкомСндуСтся.


Π’Π΅Ρ…Π½ΠΈΠΊΠ° бСзопасности ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° эксплуатации

  • ЗапрСщаСтся Π»Π΅Ρ‚Π°Ρ‚ΡŒ слишком Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ людям ΠΈ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ
  • ЗапрСщаСтся Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ Π΄Ρ€ΠΎΠ½ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ остановки ΠΌΠΎΡ‚ΠΎΡ€ΠΎΠ²
  • ЗапрСщаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΠΎΠ½ Π½Π° ΡƒΠ»ΠΈΡ†Π΅ Π² Π²Π΅Ρ‚Ρ€ΡΠ½ΡƒΡŽ ΠΈΠ»ΠΈ Π²Π»Π°ΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ³ΠΎΠ΄Ρƒ
  • ЗапрСщаСтся Π·Π°Ρ€ΡΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΠΎΠ½ сразу послС Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ использования - это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ критичСскому ΠΏΠ΅Ρ€Π΅Π³Ρ€Π΅Π²Ρƒ аккумулятора
  • Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΠΎΠ½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ°Ρ…, Π³Π΄Π΅ Π²Ρ‹ смоТСтС ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ столкновСний с прСпятствиями, людьми ΠΈΠ»ΠΈ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΌΠΈ
  • ЗапрСщаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΠΎΠ½ Π½Π° мСстности с Ρ€Π΅Π·ΠΊΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠ°Π΄ΠΎΠΌ высоты (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π»Π΅Ρ‚Π°Ρ‚ΡŒ ΠΈΠΌ Π² ΠΎΠΊΠ½ΠΎ здания) - это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сбою систСмы позиционирования
  • ЗапрСщаСтся Π»Π΅Ρ‚Π°Ρ‚ΡŒ рядом с линиями элСктропСрСдач ΠΈ источниками огня
  • ΠŸΠ΅Ρ€Π΅Π΄ запуском Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ лопасти, Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹Π΅ элСмСнты ΠΈ аккумулятор Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Ρ‹
  • Допустимый Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ использования Π΄Ρ€ΠΎΠ½Π° - ΠΎΡ‚ 0 Π΄ΠΎ 40 градусов ЦСльсия
  • Π’ΠΎ врСмя ΠΏΠΎΠ»Π΅Ρ‚Π° нСдопустимо Ρ‚Π΅Ρ€ΡΡ‚ΡŒ Π΄Ρ€ΠΎΠ½ ΠΈΠ· поля зрСния

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅

НСобходимо Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΠΎΠ½ ΠΈ аккумулятор Π² Ρ€Π°ΠΌΠΊΠ°Ρ… допустимого Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈΡ… использования - ΠΎΡ‚ 0 Π΄ΠΎ 40 градусов.

Для Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ слуТбы аккумулятора ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΠΉΡ‚Π΅ Π΅Π³ΠΎ послС окончания использования Π΄Ρ€ΠΎΠ½Π°.

Если Π΄Ρ€ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя - аккумулятор Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€ΡΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎ 65%.

НС оставляйтС Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ разряТСнный аккумулятор, это быстро ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΅Π³ΠΎ Смкости.


Mission Pad

Π’ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ Tello EDU ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠ²Ρ€ΠΈΠΊΠΈ с ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ для ΠΈΡ… распознавания, "Mission Pad".

SDK Tello EDU Π±Ρ‹Π» Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ Π² Ρ‚ΠΎΠΌ числС ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этими ΠΊΠΎΠ²Ρ€ΠΈΠΊΠ°ΠΌΠΈ.

MP

На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ²Ρ€ΠΈΠΊΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹:

  • ID, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠ²Ρ€ΠΈΠΊΠ° стилистичСски сформирован ΠΈΠ· Π·Π²Π΅Π·Π΄. ВсСго ΠΈΡ… 8 - ΠΏΠΎ 1 Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сторону ΠΊΠΎΠ²Ρ€ΠΈΠΊΠΎΠ².
  • ΠΏΠ»Π°Π½Π΅Ρ‚Ρ‹, ΠΈΡ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ID, располоТСниС позволяСт Π΄Ρ€ΠΎΠ½Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠΎΠ²Ρ€ΠΈΠΊΠΈ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ ΠΈΡ… Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°
  • Ρ€Π°ΠΊΠ΅Ρ‚Π°, ΠΎΠ½Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΡƒΠ΄Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹Π΅ оси Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ²Ρ€ΠΈΠΊΠ°:

MPxyz

Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ распознавания ΠΊΠΎΠ²Ρ€ΠΈΠΊΠ° Π΄Ρ€ΠΎΠ½ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡŽΡΡ‚ΠΈ нСсколько условий:

  • Ровная ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ. ΠšΠΎΠ²Ρ€ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Ρƒ плоскости. НСбольшоС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сниТСнию точности опрСдСлСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊΠΎΠ²Ρ€ΠΈΠΊΠ° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΠΎΠ½Π°, Π° критичСскоС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ нСвозмоТности распознавания. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ - ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ располоТСнного Mission Pad ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ)
  • Π£ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ свСта. ΠŸΠΎΠ½ΠΈΠΆΠ΅Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ свСта Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠ΅Π½Π΅Π΅ эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π° ΠΈ появляСтся Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ²Ρ€ΠΈΠΊ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ распознан. Π§Π΅ΠΌ Ρ‚Π΅ΠΌΠ½Π΅Π΅, Ρ‚Π΅ΠΌ Π½ΠΈΠΆΠ΅ шанс распознавания. Но ΠΈ слишком яркий свСт (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, прямоС ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ солнца Π² солнСчный дСнь) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ…Ρƒ - "Π·Π°ΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒ" ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ² ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ свСта ΠΎΡ‚ повСрхности.
  • Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ распознавания стоит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ, Ρ†Π²Π΅Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ контрастно сильно отличаСтся ΠΎΡ‚ Mission Pad Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» ΠΎΡ‚Ρ‡Π΅Ρ‚Π»ΠΈΠ²ΠΎ Π²ΠΈΠ΄Π΅Π½ ΠΈ Π½Π΅ сливался с ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
  • НуТно ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠ±Π·ΠΎΡ€Π° ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π΄Ρ€ΠΎΠ½Π°:

MParea

Π§Π΅ΠΌ большС высота, Ρ‚Π΅ΠΌ ΡˆΠΈΡ€Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости. Однако, Π½Π° высотС Π±ΠΎΠ»Π΅Π΅ 120 см Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ошибки опрСдСлСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, Π° Π½Π° высотС Π±ΠΎΠ»Π΅Π΅ 150 см ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ становится нСпостоянным ΠΈ ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ΡΡ с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ высоты Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ нСвозмоТности ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ²Ρ€ΠΈΠΊ Π½Π° 180 см. На слишком Π½ΠΈΠ·ΠΊΠΎΠΉ высотС ΠΊΠΎΠ²Ρ€ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ физичСски Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹. ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ высота для опрСдСлСния - 35-115 см.

Π’Π°ΠΊ ΠΆΠ΅, Π² ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… цСлях, Π½Π΅ рСкомСндуСтся Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ нСсколько Mission Pad слишком Π±Π»ΠΈΠ·ΠΊΠΎ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ. Π›ΡƒΡ‡ΡˆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Π΄Ρ€ΠΎΠ½Π° ΠΏΠΎΠΏΠ°Π΄Π°Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ²Ρ€ΠΈΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ для ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ понимания ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‚.Π΅. ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ ΠΌΠ΅Ρ‚Ρ€Π°.


Установка Python ΠΈ DJITelloPy

Для программирования Π΄Ρ€ΠΎΠ½ΠΎΠ² достаточно ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ установлСнный Python, всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Но, для простоты, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ DJITelloPy.

  1. НСобходимо ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ послСдний Python 3.x для своСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта:

pydown

  1. ΠŸΡ€ΠΈ установкС ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Π° ΠΏΡƒΠ½ΠΊΡ‚Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΎΠΊΠ½Π° ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Install Now.

pyinstall

  1. ПослС установки Python Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ DJITelloPy. Для этого Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ:

py -m pip install https://github.com/Hellsingoff/DJITelloPy/archive/master.zip

cmd

Об ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ установки Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ сообщСниС "Successfully installed".

success

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ ПК ΡƒΠΆΠ΅ имССтся иная вСрсия Python - pip ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² Π΅Ρ‘ Π΄ΠΈΡ€Ρ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ.

ВсС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ имССтся Π½Π° ПК, остаСтся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ срСду для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄).

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ любой Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, зависит ΠΎΡ‚ Ρ†Π΅Π»Π΅ΠΉ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ. ВсС ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы.

ΠŸΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Π°Ρ IDE, такая ΠΊΠ°ΠΊ PyCharm, Π΄Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² написании ΠΊΠΎΠ΄Π° - подсвСтка ошибок синтаксиса, подсказки, Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Она максимально упростит ΠΈ ускорит написаниС ΠΊΠΎΠ΄Π°, Π½ΠΎ это Π½Π΅ всСгда Ρ…ΠΎΡ€ΠΎΡˆΠΎ - Π²ΠΎ врСмя ΡƒΡ‡Ρ‘Π±Ρ‹ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ - ΠΊΠΎΠ³Π΄Π° IDE подсвСчиваСт ошибки синтаксиса Π·Π° этим Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ самому. Когда IDE ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ - Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ названия ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’Π°ΠΊ ΠΆΠ΅ PyCharm Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ достаточно ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ПК. НовыС вСрсии Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π² ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ порядкС 64 Π±ΠΈΡ‚Π½ΡƒΡŽ ОБ.

Если Π²Ρ‹Π±ΠΎΡ€ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ PyCharm - Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ бСсплатная вСрсия Community доступна Π½Π° сайтС Π΅Ρ‘ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² JetBrains.

pycharmdown

ΠŸΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (File - New Project) Π½ΡƒΠΆΠ½ΠΎ ввСсти имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Π²Π΅Ρ€ΡΠΈΡŽ Python ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ Inherit global site-packages (ΠΈΠ½Π°Ρ‡Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ djitellopy ΠΈ автоматичСски Π±ΡƒΠ΄Π΅Ρ‚ установлСна Π±ΠΎΠ»Π΅Π΅ старая вСрсия ΠΈΠ· рСпозитория PyPI, Π° ΠΎΠ½Π° Π½Π΅ всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚).

pycharmproj

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ .py Ρ„Π°ΠΉΠ» (File - New - Python File) ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ произволится Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ ctrl+shift+F10 ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ экрана.

Полная ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ IDE - Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅. Он Π½Π΅ даст Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈ подсказок, Π·Π°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° любом, Π΄Π°ΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ слабом ПК. И Π³Π»Π°Π²Π½ΠΎΠ΅ - Π½Π΅ Ρ€Π°Π·ΠΎΠ²ΡŒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ зависимости ΠΎΡ‚ "ΠΏΠΎΠΌΠΎΡ‰ΠΈ IDE", Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ сдачС Π•Π“Π­ ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ - Ρ‚Π°ΠΌ ΠΊΠΎΠ΄ придётся ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€ΡƒΡ‡ΠΊΠΎΠΉ Π½Π° листочкС ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΡ‚ΠΊΡƒΠ΄Π°.

ΠŸΡ€ΠΎΡΡ‚ΠΎ создайтС тСкстовый .txt Ρ„Π°ΠΉΠ», вмСсто стандартного Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ .py, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ΠΎΠΌ ΠΈ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ сохранСнии ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° UTF-8. Запуск Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ производится ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π‘Π½Π°Ρ‡Π°Π»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cd Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ, Π³Π΄Π΅ сохранСн Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ΄ΠΎΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ py:

cmdpy

Но ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈ ΠΈΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Visual Studio Code с Π°Π΄Π΄ΠΎΠ½ΠΎΠΌ Python ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ Notepad++. На этом список Π½Π΅ ограничиваСтся.

ВсС пСрСчислСнноС Π²Ρ‹ΡˆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ бСсплатно ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с сайтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ПО.


ОбъСдинСниС Π² Ρ€ΠΎΠΉ

ЕдинствСнный простой, Π½ΠΎ Π½Π΅ СдинствСнный ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ, способ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько Π΄Ρ€ΠΎΠ½ΠΎΠ² Π² Ρ€ΠΎΠΉ - ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ нСсколько Tello EDU ΠΊ ΠΎΠ΄Π½ΠΎΠΉ локальной сСти ΠΏΠΎ Wi-Fi с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ connect_to_wifi(ssid, password) ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ IP ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ. РСкомСндуСтся Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ статичСскиС IP адрСса Π·Π° ΠΌΠ°ΠΊ адрСсами Π΄Ρ€ΠΎΠ½ΠΎΠ² Π² настройках Wi-Fi Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ постоянными.

Для Ryze этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.

About

DJI Tello drone python interface using the official Tello SDK. Feel free to contribute!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%
0