[package]
edition = "2024"
name = "apex-solver"
version = "1.0.0"
authors = ["Amin Abouee <amin.abouee@gmail.com>"]
build = false
exclude = [
"data/*",
"data_bk/*",
"doc/*.md",
"!doc/CHANGELOG.md",
"profiles/*",
"output/*",
".github/*",
".claude/*",
".rust_rules.mdc",
"CLAUDE.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A high-performance Rust library for nonlinear least squares optimization with Lie group support, designed for SLAM, bundle adjustment, and pose graph optimization"
homepage = "https://github.com/amin-abouee/apex-solver"
documentation = "https://docs.rs/apex-solver"
readme = "README.md"
keywords = [
"optimization",
"slam",
"computer-vision",
"robotics",
"nonlinear",
]
categories = [
"algorithms",
"science",
"mathematics",
]
license = "Apache-2.0"
repository = "https://github.com/amin-abouee/apex-solver"
[features]
default = []
visualization = ["dep:rerun"]
[lib]
name = "apex_solver"
path = "src/lib.rs"
[[bin]]
name = "bundle_adjustment"
path = "bin/bundle_adjustment.rs"
[[bin]]
name = "pose_graph_g2o"
path = "bin/pose_graph_g2o.rs"
[[example]]
name = "compare_optimizers"
path = "examples/compare_optimizers.rs"
[[example]]
name = "covariance_estimation"
path = "examples/covariance_estimation.rs"
[[example]]
name = "load_graph_file"
path = "examples/load_graph_file.rs"
[[example]]
name = "loss_function_comparison"
path = "examples/loss_function_comparison.rs"
[[example]]
name = "profile_datasets"
path = "examples/profile_datasets.rs"
[[example]]
name = "profile_linalg"
path = "examples/profile_linalg.rs"
[[example]]
name = "visualize_graph_file"
path = "examples/visualize_graph_file.rs"
required-features = ["visualization"]
[[example]]
name = "visualize_optimization"
path = "examples/visualize_optimization.rs"
required-features = ["visualization"]
[[test]]
name = "camera_double_sphere_integration"
path = "tests/camera_double_sphere_integration.rs"
[[test]]
name = "camera_eucm_integration"
path = "tests/camera_eucm_integration.rs"
[[test]]
name = "camera_fov_integration"
path = "tests/camera_fov_integration.rs"
[[test]]
name = "camera_kannala_brandt_integration"
path = "tests/camera_kannala_brandt_integration.rs"
[[test]]
name = "camera_pinhole_integration"
path = "tests/camera_pinhole_integration.rs"
[[test]]
name = "camera_radtan_integration"
path = "tests/camera_radtan_integration.rs"
[[test]]
name = "camera_test_utils"
path = "tests/camera_test_utils.rs"
[[test]]
name = "camera_ucm_integration"
path = "tests/camera_ucm_integration.rs"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[bench]]
name = "bundle_adjustment_benchmark"
path = "benches/bundle_adjustment_benchmark.rs"
harness = false
[[bench]]
name = "odometry_pose_benchmark"
path = "benches/odometry_pose_benchmark.rs"
harness = false
[dependencies.chrono]
version = "0.4"
[dependencies.clap]
version = "4.5"
features = ["derive"]
[dependencies.colored]
version = "2.1"
[dependencies.faer]
version = "0.22"
features = ["sparse"]
[dependencies.memmap2]
version = "0.9"
[dependencies.nalgebra]
version = "0.33"
features = ["convert-glam029"]
[dependencies.num_cpus]
version = "1.16"
[dependencies.rand]
version = "0.9.2"
[dependencies.rayon]
version = "1.11"
[dependencies.rerun]
version = "0.26.2"
features = ["sdk"]
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.thiserror]
version = "2.0.17"
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
]
[dev-dependencies.criterion]
version = "0.6.0"
[dev-dependencies.csv]
version = "1.4"
[dev-dependencies.factrs]
version = "0.2.0"
[dev-dependencies.serde]
version = "1.0"
features = ["derive"]
[dev-dependencies.tempfile]
version = "3.23"
[dev-dependencies.tiny-solver]
version = "0.17"
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
]
[lints.clippy]
expect_used = "deny"
unwrap_used = "deny"
[profile.dev]
debug = 1
split-debuginfo = "unpacked"
[profile.profiling]
debug = 2
inherits = "release"
[profile.test]
debug = 1
split-debuginfo = "unpacked"