Autonomous Robot Control System

Language Start


Autonomous Robot Control System (arcs) is a robot and control system that interfaces with a scanning LIDAR sensor.

The Build

ARCS Robot

This robot was built and wired with a similar architecture to FRC robots. At the center of the robot is a Raspberry Pi 3. It communicates with a dlink router acting as an access point. Each side is independently controlled as a tank drive train, and it is powered by a 12V lead-acid battery.


Arcs robots are controlled with the arcs-dash program. The dashboard has a ncurses interface that sends controls from a Linux joydev device, which is the interface to the Xbox controller. It sends the controller input, and other control data, to the robot (remote) in a UDP stream.

ARCS Dashboard

LIDAR Viewer

Displaying the LIDAR data is handled by the arcs-viewer program. The viewer program displays each scan as a point on a 2D plane. It is written in C++ to make use of the OpenGL GLFW3 library. The viewer uses random sample consensus (RANSAC) algorithm to find lines within the world; these lines can later be used for more specific tasks.


The remote is the part of the program that runs on the robot itself. It handles multiple tasks on different threads (which is why a multi-core CPU was needed). It receives the UDP stream from the dashboard and then uses WiringPi to send pulse width modulation (PWM) signals to the motor controller. It also receives the serial output from the LIDAR and, if enabled, stores the most recent full scan and sends it to the viewer.