Observed since 20 Oct, 19:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
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.
asyncio for high-performance concurrent applications, and synchronous serial/TCP communication for simpler scripts.The SDK is available on PyPI and can be installed via pip:
pip install advanced-navigation
(Note: Requires Python 3.10+)
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.
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:
We welcome contributions to the Advanced Navigation Python SDK!
If you are developing a new feature, or addressing a bug:
pip install pytest
pytest tests/
ruff).For deeper insights into how the testing suite operates, refer to tests/README.md.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.2.2 | 25 Aug 2026 | 8 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 19:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:011ac5d884935be979803f537915342143c47aa9f126430f85eddb041d001aa9