A Real Mobile Robotics Platform
The Linux PC Robot is not a toy and not a demo — it is a genuine mobile robotics development platform. It drives, navigates, responds to commands, and runs real software on a real operating system. The goal from the beginning has been to create something that can do real mobile robotics work at a price a hobbyist can afford.
Differential Drive Locomotion
The robot uses a differential drive configuration: two independently powered drive wheels, one on each side, with a passive rear caster for balance. Steering is achieved entirely by varying the relative speed and direction of the two motors — no steering servo, no Ackermann geometry, no turning radius constraint.
- Both wheels forward at equal speed → straight ahead
- Left wheel faster than right → turn right
- Right wheel faster than left → turn left
- Wheels spinning in opposite directions → pivot in place
Each motor is driven by the PID control loop, which continuously adjusts power output to keep each wheel turning at the commanded speed regardless of load, friction, or battery voltage variation.
Closed-Loop Motor Control
Motor velocity is measured by repurposed PS/2 mouse encoders coupled directly to each motor shaft. The PID loop runs continuously, reading encoder ticks and adjusting the motor amplifier drive signal dozens of times per second. This means:
- The robot holds a commanded speed even going up a ramp or through carpet.
- Both wheels track their targets independently, so the robot drives in a straight line without constant correction from a higher-level planner.
- Odometry (estimated position from wheel counts) is accurate enough for short indoor navigation tasks.
Network Remote Control
The robot accepts drive commands over a standard TCP/IP network connection via Ethernet. A companion application called joysender runs on a separate workstation and streams joystick or gamepad input to the robot in real time. The robot's control daemon receives these commands and translates them into left/right motor velocity targets for the PID loop.
Because the protocol is simple TCP, any program that can open a socket can control the robot — including scripts, other robots, or autonomous planners running on a separate machine.
Message-Based Control Interface
The robot's internal architecture uses a message-passing interface. Control commands — whether from the networked joystick, a script, or an autonomous planner — are sent as messages to the motor control process. This decoupling means:
- The robot program does not need to be recompiled to change its behaviour.
- Multiple control sources can be switched at runtime.
- Planning and sensing can run in separate processes, on the robot or on a remote machine.
A shared-memory segment also exposes robot state (encoder positions, motor power, timing statistics) to any process on the robot, enabling real-time monitoring without modifying the control program.
Script Execution
Pre-programmed motion scripts can command the robot to follow a path, execute a sequence of turns, or run a timed demo without any human operator. Scripts are plain text files interpreted by the robot control daemon — no compilation required.
Presentations and Demonstrations
The Linux PC Robot has been demonstrated publicly at:
- IEEE conferences
- USENIX events
- Elementary school science demonstrations (1st grade class, Milton, Massachusetts)
At each event the robot drove autonomously or was remotely controlled via joystick over a laptop on the same local network — no special hardware, no proprietary software, just Linux.
What It Is Not
The LPCR is an indoor, medium-sized wheeled robot. It is not:
- A small robot — it is large enough to carry real equipment.
- A Roomba or consumer device — it requires assembly and tuning.
- An outdoor or all-terrain robot — the chassis is designed for smooth indoor surfaces.
- A finished product — it is a platform for experimentation and learning.
See Big Robot or Little Robot? for more on this distinction.