If you have a rover on a far away planet you don't want to waste any bits sending commands. These scripts make sending routes more efficient (assuming going forward is used most).
  • C 98.6%
  • CSS 1.4%
Find a file
2026-07-16 13:19:41 +02:00
assets upload banner 2026-07-16 13:11:11 +02:00
demo.mkv demo video 2026-07-16 12:55:16 +02:00
LICENSE Initial commit 2026-06-09 14:40:24 +02:00
README.md no AI was used 2026-07-16 13:19:41 +02:00
rover drew new background and rover. 2026-07-16 12:00:25 +02:00
rover.c The server has a GUI now, just a live log of what is being sent. and connection info. 2026-06-21 14:42:19 +02:00
server drew new background and rover. 2026-07-16 12:00:25 +02:00
server.c the server GUI can scroll. the text is no longer editable. 2026-06-22 18:09:52 +02:00
server.css the server GUI can scroll. the text is no longer editable. 2026-06-22 18:09:52 +02:00

EfficientRover

If you have a rover on a far away planet you don't want to waste any bits sending commands. These scripts make sending routes more efficient (assuming going forward is used most).

Workings

The server script accepts the connection from the rover. When it receives "ping" it sends a randomly generated string of 1, 01, 001 and 000. with 50% 1 for forward, 25% 01 for backwards and 12.5% 001 and 000 for left and right. the efficiency comes from the fact that the most used (forward) is only 1 character, and lesser used actions are more. 3blue1brown explains it very well (https://youtu.be/l6DKRf-fAAM?si=0wl0j-8jQxhWdPC4&t=208). That video is also where I got the idea for this project.

DEMO

Usage

  1. start the server
  2. start the rover
  3. press the ping button to move the rover
  4. press the reset button to re-center the rover

Setup

Requirements:

sudo apt install build-essential pkg-config libgtk-3-dev   

Rompilation:

compile with gtk:

gcc `pkg-config --cflags gtk+-3.0` -o rover rover.c `pkg-config --libs gtk+-3.0` && gcc `pkg-config --cflags gtk+-3.0` server.c -o server `pkg-config --libs gtk+-3.0`

AI usage

NONE, no AI was used in this project