[package]
edition = "2021"
rust-version = "1.75"
name = "oxictl"
version = "0.1.1"
authors = ["COOLJAPAN OU (Team Kitasan)"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Pure Rust Real-Time Control Systems Framework"
homepage = "https://github.com/cool-japan/oxictl"
documentation = "https://docs.rs/oxictl"
readme = "README.md"
keywords = [
"control-systems",
"robotics",
"pid",
"motor-control",
"embedded",
]
categories = [
"science",
"algorithms",
"simulation",
"embedded",
"no-std",
]
license = "Apache-2.0"
repository = "https://github.com/cool-japan/oxictl"
[features]
adaptive = []
allocation = []
antiwindup = []
comm = []
data_driven = []
dds = ["protocol"]
dds-api = ["dds-ros2"]
dds-discovery = ["dds-transport"]
dds-ros2 = [
"dds-stateful",
"dds-discovery",
]
dds-stateful = ["dds-stateless"]
dds-stateless = ["dds-transport"]
dds-transport = [
"dds",
"dep:socket2",
]
default = [
"std",
"pid",
"safety",
]
disturbance = []
estimator = []
extremum = []
fdi = []
fixed_point = ["dep:fixed"]
flatness = []
fuzzy = []
geometric = []
gp = []
hybrid = []
ilc = []
imc = []
kinematics = []
koopman = []
motor = []
mpc = []
navigation = []
networked = []
neural = []
optim = []
optimal = []
passivity = []
pid = []
power = []
protocol = []
repetitive = []
safety = []
scheduler = []
sim = ["std"]
state_feedback = ["estimator"]
std = ["dep:thiserror"]
sysid = []
trajectory = []
[lib]
name = "oxictl"
path = "src/lib.rs"
[[example]]
name = "adrc_servo"
path = "examples/adrc_servo.rs"
required-features = ["state_feedback"]
[[example]]
name = "antiwindup_demo"
path = "examples/antiwindup_demo.rs"
required-features = ["antiwindup"]
[[example]]
name = "battery_simulation"
path = "examples/battery_simulation.rs"
required-features = ["sim"]
[[example]]
name = "bicycle_mpc"
path = "examples/bicycle_mpc.rs"
required-features = ["sim"]
[[example]]
name = "bode_analysis"
path = "examples/bode_analysis.rs"
required-features = ["std"]
[[example]]
name = "control_allocation_uav"
path = "examples/control_allocation_uav.rs"
required-features = ["allocation"]
[[example]]
name = "dob_motor"
path = "examples/dob_motor.rs"
required-features = ["disturbance"]
[[example]]
name = "ekf_slam_demo"
path = "examples/ekf_slam_demo.rs"
required-features = ["navigation"]
[[example]]
name = "ethercat_servo"
path = "examples/ethercat_servo.rs"
required-features = [
"protocol",
"motor",
]
[[example]]
name = "extremum_seeking"
path = "examples/extremum_seeking.rs"
required-features = ["extremum"]
[[example]]
name = "fdi_motor"
path = "examples/fdi_motor.rs"
required-features = ["fdi"]
[[example]]
name = "fixed_point_pid"
path = "examples/fixed_point_pid.rs"
required-features = [
"fixed_point",
"pid",
]
[[example]]
name = "foc_motor"
path = "examples/foc_motor.rs"
required-features = [
"motor",
"sim",
]
[[example]]
name = "fuzzy_temperature"
path = "examples/fuzzy_temperature.rs"
required-features = ["fuzzy"]
[[example]]
name = "geometric_attitude"
path = "examples/geometric_attitude.rs"
required-features = ["geometric"]
[[example]]
name = "gp_learning"
path = "examples/gp_learning.rs"
required-features = ["gp"]
[[example]]
name = "ilc_repetitive"
path = "examples/ilc_repetitive.rs"
required-features = ["ilc"]
[[example]]
name = "kalman_tracking"
path = "examples/kalman_tracking.rs"
required-features = [
"estimator",
"sim",
]
[[example]]
name = "koopman_pendulum"
path = "examples/koopman_pendulum.rs"
required-features = ["koopman"]
[[example]]
name = "lms_noise_cancel"
path = "examples/lms_noise_cancel.rs"
required-features = ["std"]
[[example]]
name = "mpc_inverted_pendulum"
path = "examples/mpc_inverted_pendulum.rs"
required-features = [
"mpc",
"state_feedback",
"sim",
]
[[example]]
name = "mppi_obstacle"
path = "examples/mppi_obstacle.rs"
required-features = ["mpc"]
[[example]]
name = "multi_sensor_fusion"
path = "examples/multi_sensor_fusion.rs"
required-features = ["estimator"]
[[example]]
name = "optimal_trajectory"
path = "examples/optimal_trajectory.rs"
required-features = ["optimal"]
[[example]]
name = "passive_control"
path = "examples/passive_control.rs"
required-features = ["passivity"]
[[example]]
name = "pid_temperature"
path = "examples/pid_temperature.rs"
required-features = [
"sim",
"pid",
"safety",
]
[[example]]
name = "pso_pid_tuning"
path = "examples/pso_pid_tuning.rs"
required-features = ["optim"]
[[example]]
name = "quantized_control"
path = "examples/quantized_control.rs"
required-features = ["comm"]
[[example]]
name = "repetitive_control"
path = "examples/repetitive_control.rs"
required-features = ["repetitive"]
[[example]]
name = "robust_mpc_pendulum"
path = "examples/robust_mpc_pendulum.rs"
required-features = ["mpc"]
[[example]]
name = "ros2_chatter"
path = "examples/ros2_chatter.rs"
required-features = ["dds-api"]
[[example]]
name = "ros2_imu_publisher"
path = "examples/ros2_imu_publisher.rs"
required-features = ["dds-api"]
[[example]]
name = "ros2_twist_subscriber"
path = "examples/ros2_twist_subscriber.rs"
required-features = ["dds-api"]
[[example]]
name = "safety_watchdog"
path = "examples/safety_watchdog.rs"
required-features = ["safety"]
[[example]]
name = "super_twisting_motor"
path = "examples/super_twisting_motor.rs"
required-features = ["state_feedback"]
[[example]]
name = "switched_controller"
path = "examples/switched_controller.rs"
required-features = ["hybrid"]
[[example]]
name = "trajectory_planning"
path = "examples/trajectory_planning.rs"
required-features = ["trajectory"]
[[example]]
name = "vrft_tuning"
path = "examples/vrft_tuning.rs"
required-features = ["data_driven"]
[[test]]
name = "dds_action_integration"
path = "tests/dds_action_integration/main.rs"
required-features = ["dds-api"]
[[test]]
name = "dds_api_integration"
path = "tests/dds_api_integration/main.rs"
required-features = ["dds-api"]
[[test]]
name = "dds_service_integration"
path = "tests/dds_service_integration/main.rs"
required-features = ["dds-api"]
[[test]]
name = "estimator_validation"
path = "tests/estimator_validation/main.rs"
[[test]]
name = "fixed_point_validation"
path = "tests/fixed_point_validation/main.rs"
required-features = [
"fixed_point",
"pid",
]
[[test]]
name = "frequency_domain_validation"
path = "tests/frequency_domain_validation/main.rs"
required-features = ["std"]
[[test]]
name = "fuzzy_validation"
path = "tests/fuzzy_validation/main.rs"
required-features = ["fuzzy"]
[[test]]
name = "integration"
path = "tests/integration/main.rs"
[[test]]
name = "integration_extended"
path = "tests/integration_extended/main.rs"
[[test]]
name = "motor_advanced_validation"
path = "tests/motor_advanced_validation/main.rs"
[[test]]
name = "motor_validation"
path = "tests/motor_validation/main.rs"
[[test]]
name = "mpc_advanced_validation"
path = "tests/mpc_advanced_validation/main.rs"
[[test]]
name = "mpc_validation"
path = "tests/mpc_validation/main.rs"
[[test]]
name = "optimal_validation"
path = "tests/optimal_validation/main.rs"
required-features = ["optimal"]
[[test]]
name = "pid_validation"
path = "tests/pid_validation/main.rs"
[[test]]
name = "property_tests"
path = "tests/property_tests/main.rs"
[[test]]
name = "safety_validation"
path = "tests/safety_validation/main.rs"
[[test]]
name = "state_feedback_validation"
path = "tests/state_feedback_validation/main.rs"
[[test]]
name = "step_response"
path = "tests/step_response.rs"
[[bench]]
name = "control_bench"
path = "benches/control_bench.rs"
harness = false
required-features = [
"pid",
"estimator",
"trajectory",
]
[[bench]]
name = "foc_bench"
path = "benches/foc_bench.rs"
harness = false
required-features = ["motor"]
[[bench]]
name = "kalman_bench"
path = "benches/kalman_bench.rs"
harness = false
required-features = ["estimator"]
[[bench]]
name = "kinematics_bench"
path = "benches/kinematics_bench.rs"
harness = false
required-features = ["kinematics"]
[[bench]]
name = "mpc_bench"
path = "benches/mpc_bench.rs"
harness = false
required-features = ["mpc"]
[[bench]]
name = "pid_bench"
path = "benches/pid_bench.rs"
harness = false
required-features = ["pid"]
[[bench]]
name = "scheduler_bench"
path = "benches/scheduler_bench.rs"
harness = false
required-features = ["scheduler"]
[[bench]]
name = "state_feedback_bench"
path = "benches/state_feedback_bench.rs"
harness = false
required-features = ["state_feedback"]
[dependencies.fixed]
version = "1.31"
optional = true
[dependencies.heapless]
version = "0.9"
[dependencies.libm]
version = "0.2"
[dependencies.num-traits]
version = "0.2"
features = ["libm"]
default-features = false
[dependencies.socket2]
version = "0.6"
features = ["all"]
optional = true
[dependencies.thiserror]
version = "2.0"
optional = true
[dev-dependencies.approx]
version = "0.5"
[dev-dependencies.criterion]
version = "0.8"
[dev-dependencies.proptest]
version = "1.11"