A 2D corridor MDP comparing line-of-sight vs non-line-of-sight vision for robot navigation around a moving human. The robot plans a path through an L-shaped corridor; when it senses the human (directly via LOS or indirectly via NLOS multi-bounce off corridor walls), it switches to a human-aware policy and freezes if it would collide.
Final project for MIT 16.460.
flatland_nlos/
vision.py LOS / NLOS visibility module
mdp.py Corridor MDP, value iteration, simulation
render.py Animated GIF rendering
simulate.py Run a single simulation, save a GIF
benchmarks/ Benchmarking suite
outputs/ Generated GIFs, CSVs, and plots
conda env create -n flatland-nlos python=3.11 numpy matplotlib pandas pillow
conda activate flatland-nlos
# Single simulation → GIF
python simulate.py --vision NLOS --nlos-max 4.0 --human-radius 4.0
# Completion-time sweep → CSV + SVG
python benchmarks/run.py