Let’s be honest: robotics lessons for students (and even home projects) can slip into routine. Our answer? Racing.
With the VoxControl Kit and CrowBot we built a racing mode that transforms learning into adrenaline. Place the bot on the start line, hit Start, shout “Go ahead!”, and steer with your hand using the IMU. At the finish, press Finish — your lap time is locked in. The system stores the last 10 races so you can track progress or declare the champion.
Suddenly, routine lessons turn into mini-Grand Prix events where code meets competition.
Picture this: the classroom is buzzing, kids are shouting “Go faster!”, someone’s stopwatch is ticking, and your CrowBot is sliding into the final corner. What was just another robotics exercise suddenly feels like a real race. Every cheer, every mistake, every tenth of a second counts. That’s what CrowBot Racing is about — turning code into adrenaline.
- Race against boredom — competitions shake up school or college labs and keep energy high.
- Hybrid control — voice launches, IMU steers: a vivid example of multimodal input.
- Built-in stopwatch + memory — stores 10 lap times to crown winners.
- Motivation to improve — racing pushes students and makers to refine firmware for smoother turns, sharper dynamics, and more robust control.
- On the same hardware — part of the VoxControl Kit: today racing, tomorrow new missions.
And beyond the fun, racing pushes real engineering skills. Students (and adults) start asking: how do I smooth acceleration? Can I reduce steering jitter? What’s the best algorithm for stable cornering? The race becomes a lab where code meets physics. Teams can split roles — some prepare firmware tweaks, others design better tracks — and everyone learns to test, measure, and iterate.
Use Cases- Classroom competitions: turn lessons into high-energy challenges.
- DIY racing league: build tracks at home, battle friends.
- STEM showcase: turn dull demos into crowd-pleasing competitions at fairs.
- Team preparation: collaborative work on robot setup — programming, calibration, firmware tuning.
1. Place CrowBot at the start of your improvised track.
2. Press Start to launch the stopwatch.
3. Say “Go ahead!” to set the bot moving.
4. Steer by tilting the VoxControl unit with the IMU.
5. At the finish, press Finish to stop the timer.
6. Review results — the system stores the last 10 lap times.
Note: in the ESP32-S3 configuration, we do not use offline TTS (insufficient memory). Use LEDs, tones, or an external display for race feedback.
What You’ll Need- VoxControl Kit— voice + IMU controller on ESP32-S3.
- CrowBot (or another compatible robot platform).
- Track: tape on the floor, cardboard walls, or a custom setup.
Optional: OLED/segment display for lap times.
1. Tape down a start and finish line.
2. Run a few races, record 10 times.
3. Discuss where speed is lost — acceleration, cornering, steering smoothness.
4. Adjust firmware, rerun, and chase your best lap.
Race formats to try
- Time Attack: best of 5 laps.
- Smooth Cornering: penalties for wall hits.
- Consistency Run: thesmallest spread of 5 laps wins.
- Team Challenge: some code, others drive.
The original firmware can be found here:https://github.com/Grovety/CrowBot_GRC_program/blob/main/stopwatch.ino
You can modify it to suit your needs.
- IMU sensitivity
- Movement dynamics
- Trajectory algorithms
- Start/finish reliability
- Result storage & analytics
- Noise robustness
This is where the real DIY racing world opens up! We added a RaceParams structure in the code with variables that let you tune the robot’s behavior for different racing styles.
Here are the key parameters:
struct RaceParams {
float max_speed_scale = 1.0f; // total speed multiplier
(1.0 = default )
float turn_scale = 1.0f; // multiplier for rotation
(1.0 = default )
float accel_coeff = 1.0f; // acceleration coefficient
(new variable , 1.0 = default )
};
- max_speed_scale (default: 1.0) — overall multiplier for maximum speed. Increase for fast sprints, decrease for control on technical tracks. - turn_scale (default: 1.0) — multiplier for turning aggressiveness. Higher = sharper maneuvers, lower = smoother to avoid slides. - accel_coeff (default: 1.0) — acceleration coefficient. Controls how quickly the robot ramps from 0 to max speed (use ramping for realism).
We prepared ready-made presets — sets of values for quick switching between styles. They can be activated by voice commands like “RACE FAST”:
void presetSpeedDemon () {
race . max_speed_scale = 1.4f;
race . turn_scale = 1.05 f;
race . accel_coeff = 1.5f;
}
void presetDriftKing () {
race . max_speed_scale = 1.1f;
race . turn_scale = 1.6f;
race . accel_coeff = 1.2f;
}
void presetSmoothRacer () {
race . max_speed_scale = 0.9f;
race . turn_scale = 0.9f;
race . accel_coeff = 0.8f;
}
void presetEcoMode () {
race . max_speed_scale = 0.7f;
race . turn_scale = 1.0f;
race . accel_coeff = 0.6f;
}
Details are up to you — invent your own tricks. Share your findings: we’ll listen and react.
What’s Next- Online leaderboard: broadcast lap times over Wi-Fi.
- Auto finish line: IR gate for automatic stop.
- Ghost mode: race against your best lap replay.
- Mission expansion: the same kit can run patrol, obstacle bypass, or voice-command scenarios.
Tried it? Post your fastest lap, your most chaotic crash, or firmware hacks that gave you an edge. We welcome ideas — and we’ll respond with updates.
Links
Comments