Desktop mission planner for Autonomous Mobile Robots (AMRs). Loads lidar/SLAM-generated maps, lets you place waypoints interactively, and computes smooth any-angle paths using Theta*. Built for factory floor navigation.
- Theta path planning*: Any-angle pathfinding — shorter, smoother paths than grid-locked A*
- Lidar map processing: Otsu thresholding + morphological cleanup on noisy JPEG inputs
- Factory interior detection: Flood-fill exterior masking keeps paths inside walls
- Bezier smoothing: Corner smoothing with edge classification (Straight / Bezier / Pivot)
- Robot simulation: Animate the planned mission with configurable speed
- DXF import: Convert AutoCAD floor plans to raster maps
- Metric export: Path coordinates in both pixel and real-world units
- Python: 3.8+
- GUI: Tkinter
- Image processing: OpenCV, Pillow
- Path planning: Custom Theta* implementation
- CAD import: ezdxf
amr_planner/
├── config.py # Pipeline config and state
├── models.py # Position, Pose, Location, Edge
├── enums.py # Pipeline stages, edge types
├── converters/
│ ├── dxf_converter.py # DXF -> raster
│ └── image_cleaner.py # JPEG noise removal, Otsu threshold
├── planning/
│ ├── path_planner.py # Theta*, occupancy grid, safety inflation
│ └── waypoint_manager.py
├── simulation/
│ └── simulator.py # Robot animation
└── ui/
├── gui.py # Main Tkinter app
└── waypoint_placer.py # Interactive waypoint placement
Raw Lidar JPEG -> Gaussian Blur -> Otsu Threshold -> Morphological Cleanup -> Exterior Masking -> Binary Occupancy Grid
git clone https://github.com/shrirag10/Gridwalk.git
cd Gridwalk
pip install -r requirements.txt
python3 main.py- File -> Open Image — load a lidar map (
.jpg,.png) or DXF floor plan - Click on the map to place waypoints
- Plan Mission — runs Theta* and renders the smoothed path
- Simulate — animates the robot traversing the route
numpy>=1.21.0
opencv-python>=4.5.0
matplotlib>=3.4.0
Pillow>=8.3.0
ezdxf>=0.17.0
MIT