Skip to main content

Advanced Navigation Python SDK

Welcome to the Advanced Navigation Python SDK!

This SDK provides a comprehensive suite of tools for interfacing with Advanced Navigation Inertial Navigation Systems (INS). It simplifies the process of establishing communication over Serial, TCP, or UDP, decoding Advanced Navigation Packet Protocol (ANPP) packets, and programmatically configuring Advanced Navigation devices.

Features

  • ANPP Protocol Support: Complete implementation of the Advanced Navigation Packet Protocol (ANPP) for encoding and decoding binary data streams.
  • Asynchronous & Synchronous I/O: Supports both asyncio for high-performance concurrent applications, and synchronous serial/TCP communication for simpler scripts.
  • Device Management: Easily configure sensors, offsets, baud rates, and request state variables.
  • Cross-Platform: Works on Linux, Windows, and macOS.

Installation

The SDK is available on PyPI and can be installed via pip:

pip install advanced-navigation

(Note: Requires Python 3.10+)


Quickstart

Here is a quick example of how to connect to an Advanced Navigation device (such as Certus or Spatial) over a serial port, read the device information, and continuously listen to the system state asynchronously using the AnDevice interface:

import asyncio
from datetime import datetime, timezone
from advanced_navigation.an_devices.an_device_async import AnDevice
from advanced_navigation.anpp_packets.an_packet_3 import DeviceInformationPacket
from advanced_navigation.anpp_packets.an_packet_20 import SystemStatePacket

async def handle_state_packet(state: SystemStatePacket):
    """Callback function triggered every time a SystemStatePacket is received."""
    device_time = datetime.fromtimestamp(
        state.unix_time_seconds + (state.microseconds / 1000000), 
        tz=timezone.utc
    )
    print(f"[{device_time}] Lat: {state.latitude:.6f}, Lon: {state.longitude:.6f}, Height: {state.height:.2f}m")

async def main():
    # Initialize the device
    device = AnDevice()
    
    # Connect via Serial Port (replace with your port, e.g. COM3 or /dev/ttyUSB0)
    await device.connect_serial(port="/dev/ttyUSB0", baud_rate=115200)
    
    print("Connecting to device...")
    await device.wait_online()
    
    # Request Device Information (Packet 3)
    info = await device.request(DeviceInformationPacket)
    if info:
        print(f"Connected! Device ID {info.device_id} | Hardware v{info.hardware_revision/1000} | Software v{info.software_version/1000}")

    # Register a callback to listen to the continuous System State stream (Packet 20)
    device.register_callback(SystemStatePacket, handle_state_packet)
    
    print("Listening for state updates... (Press Ctrl+C to stop)")
    try:
        # Keep the event loop running
        await asyncio.Future()
    except asyncio.CancelledError:
        pass
    finally:
        device.close()

if __name__ == "__main__":
    asyncio.run(main())

For more comprehensive examples—including synchronous operations, TCP logging, firmware updating, and specific device configurations—check out the examples/ directory in this repository.


Product Manuals

The Advanced Navigation SDK supports all INS devices using the ANPP protocol. For further detail on specific product configurations, mounting instructions, and operational capabilities, please see the following documentation:


Contributing

We welcome contributions to the Advanced Navigation Python SDK!

If you are developing a new feature, or addressing a bug:

  1. Fork the repository and create a feature branch.
  2. Implement your changes.
  3. Run the tests locally to verify that your changes pass successfully without breaking existing logic:
    pip install pytest
    pytest tests/
    
  4. Format and lint your code (we use standard Python linting like ruff).
  5. Open a Pull Request describing your changes.

For deeper insights into how the testing suite operates, refer to tests/README.md.

Release files for advanced-navigation 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for advanced-navigation 0.2.2
File Size Uploaded
advanced_navigation-0.2.2.tar.gz 65.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for advanced-navigation 0.2.2
File Interpreter ABI Platform
advanced_navigation-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 244.4 kB

Release files / advanced_navigation-0.2.2.tar.gz

Download URL advanced_navigation-0.2.2.tar.gz
Size 65.8 kB
Tags Source
SHA-256 checksum
How to use checksums
190096935ec4f26af4cc37a637862a76987df8e8be201a9a8a20dfdbf11ac036
BLAKE2b-256 checksum
How to use checksums
aac8314a4235a35bc14333dbef2b57510e5cc984e41b75c6213f089f689500de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.

Transparency log

Release files / advanced_navigation-0.2.2-py3-none-any.whl

Download URL advanced_navigation-0.2.2-py3-none-any.whl
Size 178.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf0cf96f36b1b5eb66e6b7a2479de44379602d662ac86dccba3dac8144eeafc0
BLAKE2b-256 checksum
How to use checksums
75fc445439bc7a638a8d01e9b691df322657a1ca0e520dcc692c8a096b07c10c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.74

2 release files

0.1.73

2 release files

0.1.70

2 release files

0.1.60

2 release files

0.1.51

2 release files

0.1.50

2 release files

0.1.43

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page