Skip to main content

Universal MultiLateration Localization System with flexible input/output adapters

Project description

MultiLat Localizer

Universal multilateration localization with pluggable input/output adapters for distance measurements and position output.

Version: 1.0.0

Features

  • Inputs: Serial (UWB/RTK-DW1000), MQTT, UDP, File; custom adapters via with_input()
  • Outputs: MAVLink, MAVROS (ROS2), UDP, File, Console; multiple outputs at once
  • Calibration: None, Linear, Quadratic, Cubic
  • GPS: ENU → GPS via pymap3d; frequency throttling; message type (GPS / Position / Both)
  • Config: Python API only (no config files)

Installation

pip install multilat_solver

Optional: pip install multilat_solver[mqtt] (MQTT), multilat_solver[ros2] (ROS2), .[dev] (development).

Quick Start

from multilat_solver import ConfigBuilder, MultiLatLocalizerApp, CalibrationType
from multilat_solver.common_types import MessageType
from multilat_solver.output_adapters import ConsoleOutputAdapter
import logging

logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")

config = (ConfigBuilder()
    .with_localization(
        anchor_positions={1: (0, 0, 0), 2: (3, 0, 0), 3: (0, 3, 0)},
        calibration_type=CalibrationType.LINEAR,
        calibration_params=[1.0, 0.0],
    )
    .with_serial_input(port="/dev/ttyUSB0", baud=460800)
    .with_output("console", ConsoleOutputAdapter(format="human", message_type=MessageType.BOTH, frequency=10))
    .build())

app = MultiLatLocalizerApp(config)
app.run()

Documentation

Adapters

Input Description
Serial Binary protocol (UWB/RTK-DW1000)
MQTT JSON over MQTT [mqtt]
UDP JSON over UDP
File JSON file polling
Output Description
MAVLink ArduPilot/PX4
MAVROS ROS2 topics [ros2]
UDP JSON over UDP
File JSONL file
Console Human or JSON

Examples

  • examples/basic_usage.py — Serial in, console/file/MAVLink out
  • examples/multi_output.py — Multiple outputs
  • examples/mavlink_input_with_sim.py — MAVLink distances in + simulator
  • examples/uavcan_input_mavlink_output.py — Custom UAVCAN input → MAVLink out

Development

git clone https://github.com/Innopolis-UAV-Team/multilat_solver
cd multilat_solver
pip install -e ".[dev]"
pytest

Layout: src/multilat_solver/core.py, config.py, app.py, input_adapters.py, output_adapters.py, common_types.py.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multilat_solver-0.0.0.tar.gz (34.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multilat_solver-0.0.0-py3-none-any.whl (31.3 kB view details)

Uploaded Python 3

File details

Details for the file multilat_solver-0.0.0.tar.gz.

File metadata

  • Download URL: multilat_solver-0.0.0.tar.gz
  • Upload date:
  • Size: 34.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for multilat_solver-0.0.0.tar.gz
Algorithm Hash digest
SHA256 f8df5c192b2153e5533c7bc50e669f7ff98bde7fe51b0ef16d499a1e10d20a3e
MD5 f4c3d107ba8c3d57f9c1976b9162ab1e
BLAKE2b-256 b94e6bd5f24fa8e844b8f1045c103f9efe0874ef31d0957afe3a4b95ec716df8

See more details on using hashes here.

File details

Details for the file multilat_solver-0.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for multilat_solver-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91922fc2415094d342c34d94bdfeaf8d04184c9a73568be76150267db0fedfcd
MD5 8a8b1f1a816aead3420119f718aa3ae3
BLAKE2b-256 0b79d91cd8200899c7191cb0736ce46de9538927f9ee64f4c82fd1271bb8f507

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page