Catalog PyPI
Back to packageRELEASE DETAILS

1.1.0

PyPI

agrotechsimapi

Python API and calibrated autonomous flight control for AgroTechSim

agrotechsimdronepidroboticssimulator
Published5 Oct 2026
Direct dependencies28
Transitive dependenciesNot calculated

README

Version 1.1.0 documentation

AgroTechSim API

AgroTechSim API Русский | English


Русский

🚀 Описание

AgroTechSim API — это Python-библиотека для работы с симулятором AgroTechSim, предназначенная для получения телеметрии с дронов, обработки сенсорных данных и реализации систем автономного управления. Библиотека предоставляет как низкоуровневый доступ к сырым данным сенсоров, так и высокоуровневые абстракции для упрощённого управления дроном.

Модуль позволяет разработчикам создавать сложные алгоритмы компьютерного зрения, навигации и управления без необходимости работы с реальным оборудованием, используя полнофункциональный симулятор дронов.

📊 Совместимость

КомпонентВерсияСтатус
AgroTechSim API1.0.1-v1.0.2✅ Compatible with AgroTechSim 1.0.3
AgroTechSim API1.0.3✅ Compatible with AgroTechSim 1.0.4-1.0.5
Python3.10✅ Recommended
InavMSPApi1.1.0✅ Dependency

⚡ Установка

Вариант 1: Установка из PyPi (рекомендуется)

pip install agrotechsimapi

Этот способ автоматически установит все зависимости, включая inavmspapi требуемой версии.

Вариант 2: Установка из исходников

  1. Клонируйте репозиторий:
git clone https://github.com/AgroTechAvia/TechSimApi.git
cd TechSimApi
  1. Запустите скрипт установки:
python setup_by_source.py

Скрипт автоматически установит все зависимости и настроит окружение.

Вариант 3: Ручная установка (для разработчиков)

# 1. Создайте виртуальное окружение
python -m venv .venv

# 2. Активируйте окружение
# Windows:
.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate

# 3. Установите inavmspapi
git clone https://github.com/AgroTechAvia/InavMSPApi.git
cd InavMSPApi
git checkout v1.1.0
pip install .

# 4. Установите agrotechsimapi
cd ..
git clone https://github.com/AgroTechAvia/TechSimApi.git
cd TechSimApi
pip install .

🎯 Функционал

Низкоуровневый API (SimClient)

  • 📷 Камеры: Получение цветных, тепловизионных, глубинных и спектральных изображений
  • 📡 Лидар: 360° сканирование окружения с настраиваемыми параметрами
  • 🎯 Радар: Обнаружение ближайших объектов с угловыми координатами
  • 📏 Дальномер: Точечное измерение расстояния
  • 💡 LED управление: Контроль подсветки дрона
  • 📊 Кинематика: Получение позиции, ориентации и скорости дрона

Высокоуровневый API (HighLevelSimClient)

  • 🚁 Управление полётом: Взлёт, посадка, удержание высоты
  • 🧭 Навигация: Движение к координатам в разных системах отсчёта
  • 🎯 Стабилизация: PID-регуляторы для автоматического удержания позиции
  • 👁️ Обработка изображений: Детектирование ArUco маркеров и blob-объектов
  • 🔄 Одометрия: Отслеживание перемещения относительно начальной точки
  • Обновление автономного полета: Пакет содержит именованные PID-профили и встроенный калибратор. Готовые пресеты edu-ext, edu-constructor и edu можно выбрать при создании клиента; отдельные регуляторы по-прежнему можно переопределять вручную.

📁 Примеры использования

В репозитории представлены готовые примеры:

examples_low_level/ - Низкоуровневые примеры

examples_high_level/ - Высокоуровневые примеры

🚀 Быстрый старт

from agrotechsimapi import SimClient, CaptureType
import cv2

# Подключение к симулятору
client = SimClient(address="127.0.0.1", port=8080)

# Получение изображения с камеры
image = client.get_camera_capture(camera_id=0, type=CaptureType.color)

# Отображение изображения
cv2.imshow("Drone Camera", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

🎛️ Калибровка автономного полёта

По умолчанию HighLevelSimClient использует встроенный профиль edu-ext. Профиль можно выбрать по имени:

from agrotechsimapi import HighLevelSimClient

client = HighLevelSimClient(calibration="edu")

Посмотреть доступные профили и создать конфигурацию новой калибровки:

python -m agrotechsimapi calibrations list
python -m agrotechsimapi calibrations init-config --output calibration.json

Сначала рекомендуется проверить план без подключения к симулятору, а затем запустить полёт с --fly:

python -m agrotechsimapi calibrate --name my_drone --config calibration.json
python -m agrotechsimapi calibrate --name my_drone --config calibration.json --fly

Калибратор последовательно настраивает высоту, yaw, ускорение XY, скорость XY и положение XY. Посмотреть текущий запуск или готовый профиль можно в автономном HTML-отчёте:

python -m agrotechsimapi plot --current --last 8 --open
python -m agrotechsimapi plot --calibration my_drone --open

Профили можно переносить между окружениями:

python -m agrotechsimapi calibrations export my_drone --output my_drone.json
python -m agrotechsimapi calibrations import my_drone.json --name imported_drone

Подробности находятся в практической инструкции и техническом описании.

🧪 Тестирование работоспособности

Для проверки корректной работы модуля с симулятором используйте интеграционные тесты. Файл test_sim_client_real.py содержит тесты, которые проверяют подключение к симулятору и работу всех основных функций.

📋 Предварительные требования:

  1. Запущенный симулятор AgroTechSim
  2. Дрон появился в симуляторе
  3. Установлен Python 3.10+ и необходимые зависимости

🚀 Запуск тестов:

# Перейдите в директорию проекта
cd TechSimApi

# Запустите тесты с симулятором
pytest test/test_sim_client_real.py --with-simulator -v

📊 Что проверяют тесты:

Тест test_sim_client_real.py последовательно проверяет:

  1. ✅ Подключение к симулятору - проверка соединения
  2. ✅ Получение изображений с камер - цветная, тепловизионная, глубинная камеры
  3. ✅ Кинематические данные - позиция и ориентация дрона
  4. ✅ Данные дальномера - измерение расстояния
  5. ✅ Сканирование лидаром - 360° сканирование окружения
  6. ✅ Радар - обнаружение ближайших объектов
  7. ✅ Управление LED - включение/выключение подсветки
  8. ✅ Обработка изображений - добавление шума и артефактов
  9. ✅ Несколько камер - работа с разными ID камер
  10. ✅ Обработка ошибок - корректная реакция на невалидные параметры
  11. ✅ Производительность - время отклика основных функций

⚠️ Важные замечания по тестированию:

  • Симулятор должен быть запущен перед запуском тестов
  • Тесты могут пропускаться, если определенный сенсор не доступен в текущей конфигурации симулятора
  • Первые измерения лидара и радара могут быть некорректными (особенность симулятора)
  • Для ручной проверки можно использовать скрипт:

🔧 Пример вывода успешного тестирования:

============================================================
Running SimClient Integration Tests with Real Simulator
============================================================

test_connection: ✓ PASSED
test_get_camera_capture: ✓ PASSED
test_get_kinematics_data: ✓ PASSED
test_get_range_data: ✓ PASSED
test_get_laser_scan: ✓ PASSED
test_get_radar_point: ⚠ SKIPPED (Radar not available)
test_led_control: ✓ PASSED
test_image_processing_methods: ✓ PASSED
test_multiple_camera_ids: ✓ PASSED
test_call_event_action: ✓ PASSED
test_error_handling: ✓ PASSED
test_performance: ✓ PASSED

✅ Все основные функции работают корректно!

🐛 Если тесты не проходят:

  1. Проверьте подключение к симулятору:
from agrotechsimapi import SimClient
client = SimClient()
print(f"Connected: {client.is_connected()}")
  1. Убедитесь, что порт 8080 открыт:
# Linux/Mac
nc -z localhost 8080
# Windows
Test-NetConnection -ComputerName localhost -Port 8080
  1. Проверьте, что дрон заспавнен в симуляторе

Тестирование позволяет убедиться, что все компоненты модуля работают корректно с текущей версией симулятора.


English

🚀 Description

AgroTechSim API is a Python library for working with the AgroTechSim simulator, designed for obtaining drone telemetry, processing sensor data, and implementing autonomous control systems. The library provides both low-level access to raw sensor data and high-level abstractions for simplified drone control.

The module enables developers to create complex computer vision, navigation, and control algorithms without the need for real hardware, using a full-featured drone simulator.

📊 Compatibility

ComponentVersionStatus
AgroTechSim API1.0.1-v1.0.2✅ Works with AgroTechSim 1.0.3
AgroTechSim API1.0.3✅ Works with AgroTechSim 1.0.4-1.0.5
Python3.10✅ Recommended
InavMSPApi1.1.0✅ Dependency

⚡ Installation

pip install agrotechsimapi

This method will automatically install all dependencies, including the required version of inavmspapi.

Option 2: Install from source

  1. Clone the repository:
git https://github.com/AgroTechAvia/TechSimApi.git
cd TechSimApi
  1. Run the installation script:
python setup_by_source.py

The script will automatically install all dependencies and set up the environment.

Option 3: Manual installation (for developers)

# 1. Create a virtual environment
python -m venv .venv

# 2. Activate the environment
# Windows:
.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate

# 3. Install inavmspapi
git clone https://github.com/AgroTechAvia/InavMSPApi.git
cd InavMSPApi
git checkout v1.1.0
pip install .

# 4. Install agrotechsimapi
cd ..
git clone https://github.com/AgroTechAvia/TechSimApi.git
cd TechSimApi
pip install .

🎯 Features

Low-Level API (SimClient)

  • 📷 Cameras: Capture color, thermal, depth, and spectral images
  • 📡 Lidar: 360° environment scanning with configurable parameters
  • 🎯 Radar: Nearest object detection with angular coordinates
  • 📏 Rangefinder: Point distance measurement
  • 💡 LED Control: Drone lighting control
  • 📊 Kinematics: Get drone position, orientation, and velocity

High-Level API (HighLevelSimClient)

  • 🚁 Flight Control: Takeoff, landing, altitude hold
  • 🧭 Navigation: Movement to coordinates in different reference frames
  • 🎯 Stabilization: PID controllers for automatic position hold
  • 👁️ Image Processing: ArUco marker and blob object detection
  • 🔄 Odometry: Track movement relative to starting point
  • Autonomous flight update: The package provides named PID profiles and a built-in calibration workflow. Select edu-ext, edu-constructor, or edu when creating the client; individual controllers can still be overridden manually.

📁 Usage Examples

The repository includes ready-to-use examples:

examples_low_level/ - Low-level examples

examples_high_level/ - High-level examples

🚀 Quick Start

from agrotechsimapi import SimClient, CaptureType
import cv2

# Connect to simulator
client = SimClient(address="127.0.0.1", port=8080)

# Get camera image
image = client.get_camera_capture(camera_id=0, type=CaptureType.color)

# Display image
cv2.imshow("Drone Camera", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

🎛️ Autonomous Flight Calibration

HighLevelSimClient uses the bundled edu-ext profile by default. Select a different profile by name:

from agrotechsimapi import HighLevelSimClient

client = HighLevelSimClient(calibration="edu")

List available profiles and create an editable calibration configuration:

python -m agrotechsimapi calibrations list
python -m agrotechsimapi calibrations init-config --output calibration.json

Preview the plan first, then add --fly to connect to the simulator:

python -m agrotechsimapi calibrate --name my_drone --config calibration.json
python -m agrotechsimapi calibrate --name my_drone --config calibration.json --fly

The workflow tunes altitude, yaw, XY acceleration, XY velocity and XY position in sequence. Generate a one-time HTML snapshot of the active run or a completed profile with:

python -m agrotechsimapi plot --current --last 8 --open
python -m agrotechsimapi plot --calibration my_drone --lang en --open

Export and import profiles between environments or computers:

python -m agrotechsimapi calibrations export my_drone --output my_drone.json
python -m agrotechsimapi calibrations import my_drone.json --name imported_drone

See the practical calibration guide and the technical reference for details.

🧪 Functionality Testing

To verify that the module works correctly with the simulator, use the integration tests. The test_sim_client_real.py file contains tests that check the connection to the simulator and the operation of all main functions.

📋 Prerequisites:

  1. Running AgroTechSim simulator on localhost:8080
  2. Drone spawned in the simulator
  3. Python 3.10+ installed with necessary dependencies

🚀 Running tests:

# Go to the project directory
cd TechSimApi

# Run tests with simulator
pytest tests/test_sim_client_real.py --with-simulator -v

📊 What the tests check:

The test_sim_client_real.py test sequentially verifies:

  1. ✅ Connection to simulator - connection check
  2. ✅ Camera image capture - color, thermal, depth cameras
  3. ✅ Kinematic data - drone position and orientation
  4. ✅ Rangefinder data - distance measurement
  5. ✅ Lidar scanning - 360° environment scanning
  6. ✅ Radar - nearest object detection
  7. ✅ LED control - turning lights on/off
  8. ✅ Image processing - adding noise and artifacts
  9. ✅ Multiple cameras - working with different camera IDs
  10. ✅ Error handling - correct response to invalid parameters
  11. ✅ Performance - response time of main functions

⚠️ Important testing notes:

  • Simulator must be running before starting tests
  • Tests may be skipped if a particular sensor is not available in the current simulator configuration
  • First lidar and radar measurements may be incorrect (simulator feature)
  • For manual checking you can use the script:

🔧 Example of successful test output:

============================================================
Running SimClient Integration Tests with Real Simulator
============================================================

test_connection: ✓ PASSED
test_get_camera_capture: ✓ PASSED
test_get_kinematics_data: ✓ PASSED
test_get_range_data: ✓ PASSED
test_get_laser_scan: ✓ PASSED
test_get_radar_point: ⚠ SKIPPED (Radar not available)
test_led_control: ✓ PASSED
test_image_processing_methods: ✓ PASSED
test_multiple_camera_ids: ✓ PASSED
test_call_event_action: ✓ PASSED
test_error_handling: ✓ PASSED
test_performance: ✓ PASSED

✅ All main functions work correctly!

🐛 If tests fail:

  1. Check connection to simulator:
from agrotechsimapi import SimClient
client = SimClient()
print(f"Connected: {client.is_connected()}")
  1. Make sure port 8080 is open:
# Linux/Mac
nc -z localhost 8080
# Windows
Test-NetConnection -ComputerName localhost -Port 8080
  1. Verify that drone is spawned in simulator

Testing allows you to ensure that all module components work correctly with the current simulator version.


Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 28

Native requirements
28 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
backports.ssl-match-hostname
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
backports.ssl-match-hostnameruntime
contourpy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
contourpyruntime
cycler
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
cyclerruntime
fonttools
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
fonttoolsruntime
Flask
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
Flask<4,>=3.0runtime
future
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
futureruntime
grpcio
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
grpcioruntime
grpcio-tools
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
grpcio-toolsruntime
iso8601
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
iso8601runtime
kiwisolver
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
kiwisolverruntime
matplotlib
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
matplotlibruntime
msgpack-python
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
msgpack-pythonruntime
msgpack-rpc-python
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
msgpack-rpc-pythonruntime
numpy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
numpyruntime
opencv-contrib-python
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
opencv-contrib-pythonruntime
opencv-python
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
opencv-pythonruntime
packaging
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
packagingruntime
pillow
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pillowruntime
protobuf
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
protobufruntime
pynput
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pynputruntime
pyparsing
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pyparsingruntime
python-dateutil
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
python-dateutilruntime
PyYAML
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
PyYAMLruntime
pyserial
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pyserialruntime
six
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
sixruntime
tornado
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
tornadoruntime
transforms3d
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
transforms3druntime
inavmspapi
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
inavmspapiruntime

Distribution files

2 collected
agrotechsimapi-1.1.0-py3-none-any.whl

bdist_wheel · 2,804.85 KB · Python py3

Source file
agrotechsimapi-1.1.0.tar.gz

sdist · 2,780.43 KB · Python source

Source file

Repository

PENDING
agrotechavia/techsimapi

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 09:27 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:52b02e09cd5016a47b7237e81a3eaee7e996509db2b2272b99f40312ffa7607c

Other collected versions

View all collected versions →