ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Build a rover. Test your ideas. Discover the mechanics of robotics in an interactive student lab.
EducationGitHub @sinangulecyuz-devOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
A virtual robotics lab for high-school students: build a rover, explore balance, and program its motion.
Loading the full README.
Read the full README ↗A browser-based robotics lab for high-school students. Build a differential-drive rover, predict its balance on a ramp, program it in a small pseudocode language, and compare what its sensors report with what really happened. The interface is in English, Turkish, and French.
Under the interface is a planar rigid-body model integrated at 10 kHz: DC motors with a 100 Hz PI speed loop, a Pacejka-style tire friction curve, load transfer, and flat, rough, or slippery ground. Encoders, a noisy IMU, a range sensor, and a 2D LiDAR are logged and plotted in MATLAB-style figures. A TurtleBot3 Waffle Pi preset is calibrated to ME425 lab data, with its drive parameters fitted to one robot. This is an educational model and a calibration, not a validated simulator; "What the model means" states its assumptions and limits.
Live: https://kinetic-robotics-lab.vercel.app (Vercel, see "Hosting").
This is a buildless, dependency-free static site. Install Node.js 20 or newer, open this folder in a terminal, and run:
npm run dev
Open http://127.0.0.1:5173. The server listens on IPv4 only, so localhost can fail where it resolves to IPv6 first. If port 5173 is already taken, run PORT=5174 npm run dev. There is no dependency installation step. Alternatively, serve dist/ with any HTTP static server. Entry point: dist/index.html. Modules require HTTP rather than file://.
npm test
npm run check
The first command runs 93 model, dynamics, sensor, LiDAR, filter, parser, rover-script math and variables, wind, header sky, TurtleBot3 calibration, mission, example, and translation tests. The second checks JavaScript syntax.
An optional browser smoke test drives the real page in headless Chromium. It is the only part that needs a package, so it stays out of npm test:
npm i --no-save playwright && npx playwright install chromium
npm run test:browser
It checks loading without console errors, the ramp, a drive run with plots and CSV export, a parser error, rover-script math, mission judges in Experiments 02 to 04, outdoor wind, the three languages across a reload, the ? guide, and two phone screens without sideways scrolling. Phone screens are Chromium emulation only; it does not test Firefox, Safari, or real phones.
The app is a static frontend; browser localStorage stores designs and experiments per device. There is no classroom backend in this version.
All physics functions in dist/physics.mjs use SI units; the builder displays centimeters. Center of mass sums the masses of a 1.8 kg chassis, a 0.5 kg battery, and a variable 0–3 kg payload. The structure changes size without changing chassis mass, an intentional teaching simplification. Payload height specifies its center above a 20 cm reference deck.
The two drive contacts and caster form a triangle. The tilt table rotates around the forward axis, lifting the rover's left side (+x). The gravity intersection in ramp coordinates is x_com - y_com * tan(angle) and z_com. Signed perpendicular distance to the closest triangle edge is the static margin. A binary search finds the first zero-margin positive tilt. Static contact loss triggers an illustrative falling animation; there is no contact solver, sliding, motor holding torque model, deformation, or impact simulation. Assume held wheels and ideal grip.
This is the beginning of the README. Read the rest at the original. Read the full README ↗