LoCoRo Overview

LoCoRo stands for low cost robot. The target is a robot costing less than $100 (USD). At this entry level target, the user has a basic drivable robot with a minimum sensor solution to enable both user controlled teleop and autonomous operations. This assumes all electronics are purchased new. For builders with existing resources - such as an existing Raspberry Pi 3, RC servos, or other items listed on the electronics page, the initial cost would be less.

The LoCoRo is meant to satisfy the needs of educators interested in teaching robotics or to teach all four STEM disciplines together. Building and coding a small robot brings together mechanics, electronics, science principles, mathematics, and software coding. The LoCoRo is more than just a teaching robot. It is also well suited for grassroots competition and hobbyists.

Every part of the LoCoRo project is open source. The LoCoRo documentation, 3D printable parts, and sample code are maintained in a GitLab project. Anyone is free to download the material. Users are encouraged to make changes and additions. These may be submitted back to the master copy for others to share.

The starting point is to build a LoCoRo capable of 'teleop' - aka a robot that navigates as driven by an operator. The basic LoCoRo has all the capabilities needed for game challenges with other teleop robots. It also is capable of performing programmed drive operations.

The basic LoCoRo is the platform for more complex tasks. Adding more servos enables a LoCoRo to perform tasks under the control of a driver. A few possible tasks include developing a gripper arm, a winch, a scoop, or a ball launcher. Adding sensors provides the input to enable rich autonomous operations. A few possible operations include navigating a room, following a line, driving between lines (as if on a road), identifying light signals and performing operations. Because LoCoRo uses ROS, many of the autonomous operations are supported by existing software. ROS already has software for mapping a room, processing camera vision, and navigating unknown spaces.

The LoCoRo system architecture:
Raspberry Pi

At the core of the LoCoRo is a Raspberry Pi 3 which handles all onboard computation, the motor controller interface, and sensor input. For most applications, the Raspberry Pi has ample CPU and GPU capacity to perform all processing onboard. For advanced robots, ROS enables multiple computer configurations. Additional computers may be added directly to the LoCoRo or be remote to the robot and interface using the network. The RPi3 has both Ethernet and built-in Wi-Fi. The raspberry Pi also has a range of interface options including GPIO pins, serial protocol, I2C bus, Bluetooth, and USB ports.


ROS - the robot operating system - provides a rich system architecture for developing robots. ROS supports multiple programming languages. The LoCoRo implements its drive controller in C++. The project's sample code is written in Python. Most development can be done in Python and it is the recommended language for the teleop robot and for basic through intermediate autonomous development. The LoCoRo project repository provides a starter package for adding new capabilities. ROS provides existing functionality for add robot vision, room mapping, and more.

PWM Motors

LoCoRo uses an I2C PWM control board for all motor functions. PWM stands for pulse width modulation and is a standard method of controlling RC servos. It can also control more powerful DC motors through an ESC (electronic speed controller). This simplifies both locomotion and adding motor driven capabilities such as a gripper arm, ball shooter, or winch. LoCoRo uses the ros_i2cpwmboard package to abstract all motor operations to position commands or speed commands. A basic LoCoRo uses two or more continuous rotation RC servos as drive motors.

Mobile Webapp

LoCoRo uses the touchcontrolsjs library in conjunction with roslibjs and the ros_bridge suite to provide a customizable mobile web application suitable for any smartphone or tablet. The interface library provides any combination of joysticks, horizontal & vertical sliders, and round / square / arrow buttons. Controls can be customized with color, location, size, and behaviors such as auto-centering. LoCoRo provides an example of a gamepad styled interface. Optionally, a physical joystick may be connected to a laptop and interfaced to LoCoRo over the network.

Two important points to make from the outset:

  1. The LoCoRo project uses Ubuntu Linux on a Raspberry Pi. This documentation assumes a basic level of Linux knowledge. The documentation will make reference to several common Linux commands and tools. If at anytime, while following this documentation, there is an unfamiliar command or operation, it is recommended to pause and search the internet to learn the necessary information to proceed.
  2. The LoCoRo project uses ROS, the robot operating system. This has a greater learning curve than some other options. The sample code attempts to flatten that curve, but only somewhat. ROS is not necessarily harder to learn than any other structured computer system but the goal of highlighting it early in this documentation is to make the prospective reader / builder aware that ROS is a fundamental part of LoCoRo project. Where possible, this documentation will provide links to ROS documentation and tutorials as supplemental education. For those considering an education specialty in robotics or a potentially career, the fact that LoCoRo uses ROS provides a significant head start over those who have used other software systems. For those whose primary interested in LoCoRo is for hobby or grassroots completion, the LoCoRo sample code attempts to provide enough framework to get started without an ROS background.

© 2017 Bradan Lane Studios | all rights reserved