Skip to the content.

Target reached. Wall respected.

Open simulation and RL for catheter and guidewire navigation. Deformable anatomy, imaging generated from the same case, and episodes you can replay.

Reach is only half the score.

In a historical matched branch-navigation PPO run, both environments trained for 50,000 steps and were evaluated for 30 deterministic episodes. Both recorded 100% raw target reach on their native task. The safety traces are not commensurate: Lumen reported centerline penetration in simulator units and CathSim reported native contact force, so no cross-environment safety rate is claimed.

100%Lumen raw target reach
30 eval episodes
100%CathSim raw target reach
Native task
6.6×Evaluation throughput
79.7 vs 12.1 steps/s

One stack, many views.

Mechanics, sensors, observations, and episode records share one state. Swap anatomy, device, or sensor without rebuilding the pipeline.

01
Mechanics
Fixed-port guidewire and catheter actuation, deformable walls, finite-radius contact, torsion, friction, flow, clot, retrieval, and flow diversion.
02
Imaging
Fluoroscopy, luminal RGB, masks, keypoints, detector noise, dose, latency, and dropout generated from the same case.
03
Training
Gymnasium environments, vector execution, privileged state, tracked observations, and recurrent raw-image policies.
04
Evidence
Validated episodes, deterministic splits, signed benchmark evidence, replay checks, confidence intervals, and failure taxonomy.

Simulator output.

Every image below comes from the public simulator and ships with the launch package.

Lumen fluoroscopy, masks, and luminal sensor outputs
Sensor layerMultimodal
Lumen vessel, device, clot, and flow state
Physics layerState
Lumen navigation rollout in branching anatomy
NavigationPolicy rollout
Lumen matched benchmark summary
EvaluationMatched run

Install and run.

git clone https://github.com/SeldingerMed/seldinger-lumen
cd seldinger-lumen
pip install -e ".[dev]"

lumen doctor
lumen play stenotic --out lumen-run
lumen benchmark lumen-bench
lumen capture lumen-episodes

Files and results.

Read the methods, inspect the benchmark tables, and reproduce the run from the public code.