Перейти к содержанию

Материалы для мастер-класса по дронам

Установка vbox ubuntu

  1. Vbox 7.2.6 Downloads – Oracle VirtualBox
  2. Ubuntu 24.04.4 LTS, официальный Download Ubuntu Desktop | Ubuntu
  3. Установка по инструкции How to run an Ubuntu Desktop virtual machine using VirtualBox 7 | Ubuntu
  4. Идёт в автоматическом режиме, указал root/root имя пользователя и пароль. Увеличил оперативку до 4096, процессоров до 4, размер жесткого диска 30 гб. Включил установку дополнений гостевой ОС
  5. После установки пользователь и пароль drone/root
  6. Установка пакетов
    sudo apt install python3 python3-pip
    pip3 --version
    
  7. pycharm

    sudo apt install libfuse2
    

    Download: https://github.com/JetBrains/intellij-community/releases/tag/pycharm%2F2025.3.2.1
    tar.gz

  8. qgc 5.08.64 https://docs.qgroundcontrol.com/master/en/qgc-user-guide/getting_started/download_and_install.html#ubuntu

    sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
    sudo apt install libfuse2 -y
    sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -y
    

    Скачал AppImage, chmod+x

  9. SITL. Скачать, потом

    https://github.com/ArduPilot/ardupilot.git
    Tools/environment_install/install-prereqs-ubuntu.sh -y
    

    Уже всё ставит и мавлинк и мавпрокси

So the commands I tried were,  
# 1. Activate virtualenv

source ~/venv-ardupilot/bin/activate

# 2. Navigate to ArduPilot repo

cd ~/ardupilot

# 3. Get the correct version

git fetch --all

git checkout Copter-4.6.3

# 4. Pull in all submodules

git submodule update --init --recursive

# 5. Install Python deps (optional but typical)

# pip install -r requirements.txt

# 6. Rebuild

./waf configure --board sitl

./waf copter

# 7. Launch

cd ArduCopter

sim_vehicle.py -v ArduCopter -f quad --console --map

Установка под Windows

Установка Mission Planner

PC Win11.
Release Mission Planner 1.3.83 · ArduPilot/MissionPlanner

Скачиваем, извлекаем так, чтобы было:
C:\drone\MissionPlanner\version.txt
Проверяем номер версии: 1.3.9384.38258
Создаём ярлык, для удобства:

Запускаем, проверяем, что работает и номер версии в шапке

Ручная установка SITL

  1. Копируем каталог по ссылке ... TODO
  2. Распаковываем в C:\drone\sitl\
  3. Проверяем запуск:
    C:\drone\sitl>ArduCopter.exe --help
    Options:
            --help|-h                display this help information
            --wipe|-w                wipe eeprom
            --unhide-groups|-u       parameter enumeration ignores AP_PARAM_FLAG_ENABLE
            --speedup|-s SPEEDUP     set simulation speedup
            --rate|-r RATE           set SITL framerate
            --console|-C             use console instead of TCP ports
            --instance|-I N          set instance of SITL (adds 10*instance to all port numbers)
            --synthetic-clock|-S     set synthetic clock mode
            --home|-O HOME           set start location (lat,lng,alt,yaw) or location name
    ...
    

    Из исходников берем ardupilot-Copter-4.6.3\Tools\autotest\default_params\

Запуск:
C:\drone\sitl>ArduCopter.exe --model copter --speedup 1 --slave 0 --defaults default_params/copter.parm --sim-address=127.0.0.1 -I0
Результат:

Setting SIM_SPEEDUP=1.000000
Suggested EK3_DRAG_BCOEF_* = 17.209, EK3_DRAG_MCOEF = 0.209
Starting sketch 'ArduCopter'
Starting SITL input
Using Irlock at port : 9005
bind port 5760 for SERIAL0
SERIAL0 on TCP port 5760
Waiting for connection ....

Проверка соединения SITL-MissionPlanner

В MissionPlanner подключаемся. Указываем порт TCP, номер по-умолчанию 5760.

В MissionPlanner результат подключения:

Проверяем команды.
Ждём готовности:

Выдаём ARM:

После появления ARMED надо быстро выбрать take off в контекстном меню.

Может, надо дополнительно поставить Guided-режим.
Проверяем, что взлетели:

Правой кнопкой в месте экрана и выбираем "Лететь сюда":

Садимся домой. Для этого выбираем режим RTL. Он прилетает на место, садится и переходит в режим DISARMED.

Установка пакета: pip install pymavlink
Запускаем стандартный батник sitl.

Тестовый скрипт, можно построчно, подключаемся так же, как и GCS

from pymavlink import mavutil

mav = mavutil.mavlink_connection('tcp:127.0.0.1:5760')
mav.wait_heartbeat()
print(f"Heartbeat from system (system {mav.target_system} component {mav.target_component})")

Результат подключения:

mavproxy

pip install mavproxy
Запуск с возможностью подключения наземной станции Mission Planner:

mavproxy.py --master=tcp:127.0.0.1:5760 --out=udp:127.0.0.1:14550 --out=udp:127.0.0.1:14551

Порядок запуска:
1. SITL
2. Proxy
3. MissionPlanner (автоматом подключается)
4. Python скрипт - udp:127.0.0.1:14550
Прослеживаем команды и состояния

from pymavlink import mavutil

mav = mavutil.mavlink_connection('udp:127.0.0.1:14550')
mav.wait_heartbeat()
print(f"Heartbeat from system (system {mav.target_system} component {mav.target_component})")

Считываем сообщения в канале:

>python scripts\print_all_messages.py
Heartbeat from system (system 1 component 0)
{'mavpackettype': 'AHRS', 'omegaIx': -0.0018503174651414156, 'omegaIy': -0.0018894965760409832, 'omegaIz': -0.002428414998576045, 'accel_weight': 0.0, 'renorm_val': 0.0, 'error_rp': 0.0023577536921948195, 'error_yaw': 0.001460870960727334}
{'mavpackettype': 'AHRS2', 'roll': -0.0015929507790133357, 'pitch': -0.0018164949724450707, 'yaw': -0.11898527294397354, 'altitude': 584.0899658203125, 'lat': -353632621, 'lng': 1491652374}
{'mavpackettype': 'ATTITUDE', 'time_boot_ms': 486149, 'roll': -0.0010556308552622795, 'pitch': -0.001273558591492474, 'yaw': -0.14075033366680145, 'rollspeed': -0.0002452039625495672, 'pitchspeed': -0.00028527574613690376, 'yawspeed': -0.0008685493376106024}
{'mavpackettype': 'GLOBAL_POSITION_INT', 'time_boot_ms': 486149, 'lat': -353632620, 'lon': 1491652373, 'alt': 584080, 'relative_alt': -5, 'vx': 1, 'vy': -1, 'vz': 0, 'hdg': 35194}
{'mavpackettype': 'VFR_HUD', 'airspeed': 0.02374367043375969, 'groundspeed': 0.02374294400215149, 'heading': 351, 'throttle': 0, 'alt': 584.0800170898438, 'climb': 0.00018553633708506823}
...

Описания команд:
Pymavlink · GitBook

Запуск виртуальной машины

На примере windows

Downloads – Oracle VirtualBox

Установка всего по-дефолту. Потом запускаем

Выбор ova, потом:

После импорта запускаем

Пароль root
Проверяем запуск SITL+MavProxy, иконка AP слева:

Разработка

Pycharm и виртуальное окружение

Community-версия:
Releases · JetBrains/intellij-community

Настройка виртуального окружения

from pymavlink import mavutil  

mav = mavutil.mavlink_connection('udp:localhost:14550')  
mav.wait_heartbeat()  
print(f"Heartbeat from system (system {mav.target_system} component {mav.target_component})")
add_circle2026-02-18update2026-02-18