Skip to main content

Lunar Positioning, Navigation, and Timing (PNT) library

Project description

LuPNT

Actions Status Actions Status Actions Status Actions Status Actions Status Actions Status Actions Status Documentation Status License: MIT PyPI Release Python Versions codecov Binder Open In Collab

LuPNT is an open-source C++/Python library for Lunar Positioning, Navigation, and Timing (PNT) Research. This project is a product of the Stanford NAV Lab. If using this project in your own work please cite the following:

@inproceedings{IiyamaCasadesus2023,
  title = {LuPNT: Open-Souce Simulator for Lunar Positioning, Navigation, and Timing},
  author={Iiyama, Keidai and Casadesus Vila, Guillem and Gao, Grace},
  booktitle={Proceedings of the Institute of Navigation Gnss+ conference (ION Gnss+ 2023)},
  institution = {Stanford University},
  year = {2023},
  url = {https://github.com/Stanford-NavLab/LuPNT},
}

Features

Usage

To cleanly separate the library and subproject code, the outer CMakeList.txt only defines the library itself while the tests and other subprojects are self-contained in their own directories. During development it is usually convenient to build all subprojects at once.

Dependencies

LuPNT requires OpenMP library for multiprocessing and a data directory. The installation scripts for MacOS, Ubuntu, and Windows can be found under scripts. Note that the data directory can be place anywhere as long as its path is correctly set. Execute the scripts before building the library.

Build and run the examples

Use the following command to build and run the executable target.

cmake -S examples/cpp -B build/examples
cmake --build build/examples -j4
./build_examples/examples/<example-name> --help

Build and run test suite

Use the following commands from the project's root directory to run the test suite.

cmake -S test -B build/test
cmake --build build/test -j4
CTEST_OUTPUT_ON_FAILURE=1 cmake --build build/test --target test

# or simply call the executable:
./build/test/LuPNTTests

To collect code coverage information, run CMake with the -DENABLE_TEST_COVERAGE=1 option.

Run clang-format

Use the following commands from the project's root directory to check and fix C++ and CMake source style. This requires clang-format, cmake-format and pyyaml to be installed on the current system.

cmake -S test -B build/test

# view changes
cmake --build build/test --target format

# apply changes
cmake --build build/test --target fix-format

See Format.cmake for details. These dependencies can be easily installed using pip.

pip install clang-format==14.0.6 cmake_format==0.6.11 pyyaml

Build the documentation

The documentation is automatically built and published whenever a GitHub Release is created. To manually build documentation, call the following command.

cmake -S documentation -B build/doc
cmake --build build/doc --target GenerateDocs
# view the docs
open build/doc/doxygen/html/index.html

To build the documentation locally, you will need Doxygen, jinja2 and Pygments installed on your system.

Build everything at once

The project also includes an all directory that allows building all targets at the same time. This is useful during development, as it exposes all subprojects to your IDE and avoids redundant builds of the library.

cmake -S all -B build
cmake --build build -j4

# run tests
./build/test/LuPNTTests
# format code
cmake --build build --target fix-format
# run standalone
./build/standalone/LuPNT --help
# build docs
cmake --build build --target GenerateDocs

Additional tools

The test and standalone subprojects include the tools.cmake file which is used to import additional tools on-demand through CMake configuration arguments. The following are currently supported.

Sanitizers

Sanitizers can be enabled by configuring CMake with -DUSE_SANITIZER=<Address | Memory | MemoryWithOrigins | Undefined | Thread | Leak | 'Address;Undefined'>.

Static Analyzers

Static Analyzers can be enabled by setting -DUSE_STATIC_ANALYZER=<clang-tidy | iwyu | cppcheck>, or a combination of those in quotation marks, separated by semicolons. By default, analyzers will automatically find configuration files such as .clang-format. Additional arguments can be passed to the analyzers by setting the CLANG_TIDY_ARGS, IWYU_ARGS or CPPCHECK_ARGS variables.

Ccache

Ccache can be enabled by configuring with -DUSE_CCACHE=<ON | OFF>.

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

pylupnt-0.0.4.tar.gz (38.8 MB view details)

Uploaded Source

Built Distributions

pylupnt-0.0.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pylupnt-0.0.4-pp310-pypy310_pp73-macosx_14_0_arm64.whl (13.9 MB view details)

Uploaded PyPy macOS 14.0+ ARM64

pylupnt-0.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pylupnt-0.0.4-cp312-cp312-macosx_14_0_arm64.whl (13.9 MB view details)

Uploaded CPython 3.12 macOS 14.0+ ARM64

pylupnt-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pylupnt-0.0.4-cp311-cp311-macosx_14_0_arm64.whl (13.9 MB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

pylupnt-0.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pylupnt-0.0.4-cp310-cp310-macosx_14_0_arm64.whl (13.9 MB view details)

Uploaded CPython 3.10 macOS 14.0+ ARM64

File details

Details for the file pylupnt-0.0.4.tar.gz.

File metadata

  • Download URL: pylupnt-0.0.4.tar.gz
  • Upload date:
  • Size: 38.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pylupnt-0.0.4.tar.gz
Algorithm Hash digest
SHA256 f8ba91dc06be3200413322ac1a91e4fd4bf5bd2af4c4414c1163beffdf545325
MD5 0f1a2b2d7bcd12764d85489b22c70a81
BLAKE2b-256 ccd7264cf546be40c7a11d69bbebdfc3d52d32fe3a0f4a37135b9ec7d9174e72

See more details on using hashes here.

File details

Details for the file pylupnt-0.0.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pylupnt-0.0.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d88a4109cb3fa3ac08fce8cfbcf7a2c313af8fcbf78252d865a780b4e3d8c282
MD5 80302d73482a09f93b91ced50596424d
BLAKE2b-256 05a4a4ccd4a1591abcdd923355f25334844badcb2c1fa983220b7ac26312e40c

See more details on using hashes here.

File details

Details for the file pylupnt-0.0.4-pp310-pypy310_pp73-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pylupnt-0.0.4-pp310-pypy310_pp73-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 25e9fc0c9b2f3c443546e4db6bcb82736d73bfdf080b10c9c1dc85b327f249c9
MD5 00f50f6af115d72b47d48b978a1212e1
BLAKE2b-256 d6e3b7d4751674121fe7d980e7acf7f36b2a3c90b802a538ee7287641f589cf0

See more details on using hashes here.

File details

Details for the file pylupnt-0.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pylupnt-0.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a0b16e9a24840430e0c2ebbdeb3a025a360d398c1a378aff848c42a4d1b965e2
MD5 ac5bbc1abd1ccf1043d7eb3ecbb37867
BLAKE2b-256 a7300e6be2d977fee0106b036ede25daf3f1d8881765d670a0101a9e3ea46fbd

See more details on using hashes here.

File details

Details for the file pylupnt-0.0.4-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pylupnt-0.0.4-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 28dc1dbee18c6f983c252e48fa210152de10ee15249f783715944bc0437b88da
MD5 d2c34fbff0b1cef10aa14d9da935dba2
BLAKE2b-256 7fda5d01e13f3e2850ac939de6aaa4fc212592b62344c8b1428955733622bb5d

See more details on using hashes here.

File details

Details for the file pylupnt-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pylupnt-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 820f04755571f67e49acb50f2e0fc1cf26f730c117bb1f8ada8bac0d9c1d1e07
MD5 4b81649d72d2d9c78b139abdb20fd9bc
BLAKE2b-256 526a4ab1b89bb1d0b32f3a930165af594b97d6c2fb487604693321863a015911

See more details on using hashes here.

File details

Details for the file pylupnt-0.0.4-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pylupnt-0.0.4-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 395bccb486ac8034a8d19e2741de4602727de7eb3a5d0ab179da078b2a73dbe5
MD5 bb2ece01849861a501de61bf4882064a
BLAKE2b-256 b7c26521ecdb0b863f18cc587a9e467f19bd858fe0fc7809eaadcb2b012c09d7

See more details on using hashes here.

File details

Details for the file pylupnt-0.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pylupnt-0.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 327462b7913091f8dd42c894ab889f9e7ca39015c0c55560a3c11c4b9cedad48
MD5 2449cbd76196b78e1bc412bc4323175b
BLAKE2b-256 03f9e7e6cc063c30ed10a8f2ca16f5d05a583716c93b0d277fd15dca07f3e2c4

See more details on using hashes here.

File details

Details for the file pylupnt-0.0.4-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pylupnt-0.0.4-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d1e161c336e5f6a832c28488cfbc3d2f703775b83b7f7738fb1082fc99a48380
MD5 613a78ceafa7c51269c4a6015e61a0e9
BLAKE2b-256 d57a80636bedbb7853e87f1bd19099d2822e404875161f6e2c61927b6109536a

See more details on using hashes here.

Supported by

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