Robot Simulator is a minimal browser based robotics simulator built with Python and PyScript. It is designed for providing a lightweight, easy to use robotics simulator for experimenting with robotics concepts or for beginners learning without having to deal with the complexities of ROS, Linux, dependencies, environments and all the other issues which make working with other robotics simulators challenging and slow.
- Runs entirely in browser: Powered by PyScript, no need for any installations or setup.
- Simple simulation environment: Includes a 2D renderer, ....
- Existing programs:
- Automated Snake-like game - Demonstrates movement basics and control loop.
- A* Maze Solver – Randomly generates a maze and uses A* to find a path to follow to the exit.
- Markov Localisation - Still in progress.
Expand the simulator to be a tool for beginners in robotics by:
- Integrating IDE inside the browser for writing and executing programs side by side.
- Adding log outputs and allowing for step through debugging.
- Adding visualisations to enhance understanding of how common robotics algorithms work.
Improve the simulator for easy and fast exploration of robotics concepts and prototyping of algorithms/systems such as:
- Localisation
- Mapping and SLAM
- Sensor and noise models
- Multi-robot systems
- Autonomous planning/decision making
├── index.html - HTML for the browser page
├── main.py - Entry point
├── models
│ ├── gamestate.py - Keeps track of all the objects and entities in the simulator.
│ ├── Object.py - Parent class for all objects.
│ ├── turtle.py - The turtle(robot) and it's functions.
│ └── Wall.py
├── programs
│ ├── AStarNavigation.py - Generates a random maze then navigates through to the exit.
│ ├── program.py - Abstract class for all programs to implement.
│ └── snake.py - Food randomly spawns and the robot moves to "eat" it.
├── pyscript.toml - Config file for pyscript.
├── README.md
├── rendering
│ └── renderer.py - 2D renderer.
├── turtlesim.py - Main controller for the simulator.
└── utils
├── geometry.py - Common geometry methods: coordinate translations, euclidean distance, collision detection.
└── input.py - Input handler for all input (keyboard and browser inputs).