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-localizer

Optional: pip install multilat-localizer[mqtt] (MQTT), multilat-localizer[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_localizer
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_localizer-0.1.0.tar.gz (33.0 kB view details)

Uploaded Source

Built Distribution

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

multilat_localizer-0.1.0-py3-none-any.whl (31.3 kB view details)

Uploaded Python 3

File details

Details for the file multilat_localizer-0.1.0.tar.gz.

File metadata

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

File hashes

Hashes for multilat_localizer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 26e41deb0107923ceaf0fb987bb352b5abffa37788ae7b834d635fd5c1323aec
MD5 b8ed4a134fa841a8c6694f2f7ab1f7f7
BLAKE2b-256 5901717eba5a16b10c9e275e594f610fd80043d45ea9062a3db01e6d25f71988

See more details on using hashes here.

File details

Details for the file multilat_localizer-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for multilat_localizer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3813511db987ff43f18a585d390ebc1ed4419aa859b94207df05983c5455d116
MD5 ba1f05860e68a9ef3f5cca4fbc6cd78c
BLAKE2b-256 35ff4c38750a318707bbf2890ddbc181485a8ffbbc10519bbe5524aca583c808

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