Android™ Based Robotics: Powerful, Flexible and Inexpensive Robots for Hobbyists, Educators, Students and Researchers

Android™ Based Robotics provides an inexpensive platform for robotic control, coupling the powerful capabilities of Android smartphones with off-the-shelf robotic components. Example uses include academic research in cognition and robotics, robotics competitions, classroom instruction, and personal projects.



The Android™ Based Robotics platform was originally developed by Nicolas Oros and Jeffrey Krichmar. Visit our gallery for more photos and videos.

Research Projects

Dynamic Path Planning

Aldrich Park The CARL lab is using Android based robots to study how animals navigate a dynamic environment. Emphasis is on adaptation to change and the balance between exploration and exploitation. The project spans a variety of disciplines. From the neurobiological perspective, the project will model how the hippocampus, cortical areas such as the PFC, ACC, and insula, and neuromodulation process changes in the agent's context and influence search behavior. From the computational modeling perspective, the project will also incorporate models of planning, mapping, graph exploration, and optimal foraging. The eventual goal is to synthesize these perspectives and apply them to robot navigation on a large spatial scale, for instance, in deploying robots in search and rescue missions.

Neuromodulation, Attention and Localization Using a Novel Android™ Robotic Platform

Oros and Krichmar 2012 We present a novel neural architecture based on neuromodulated attentional pathways. The neural network controlled a robot, which had to perform a reversal learning task based on GPS locations. We developed a robotic platform that leverages smartphones technology. The behavior of the robot was entirely driven by a neural network that ran on an Android phone, which handled sensor input from the phone and controlled the motor and servo of the robot. The robot managed to perform the task successfully by increasing attention to relevant locations and decreasing attention to irrelevant ones. [pdf]


UCI Rescue Robotics Ground Robot

LeCarl2.0 In Spring 2015, CARL lab designed a robot for the UCI Rescue Robotics competition, now called CARLorado. The powerful base is ideal for navigating rough outdoor terrain. Click here to learn how to assemble it.
CARLrover In addition, we designed a smaller indoor robot, the CARLrover. Click here for the manual.

Our source files contain code for Android apps to control both robots.

Source Files

We created a public organization on GitHub to regroup the source code of different Android based robotic projects, called UCI-ABR.

GitHub Android Based Robotics: UCI-ABR
Forum / Discussion Group: android-based-robotics

We invite people to add their own projects in order to share their knowledge with others and create a larger community.


    Simple Android App used to test your IOIO. Use this app to control a servo or motor (PWM output) with a slider, read and display values from an analog sensor (e.g. IR), and switch on/off the LED (digital output). Good example to see how you can create a separate class file for the IOIO thread.
    Source code: ABR_TEST_IOIO.


    App used to run UCI Rescue Robotics ground robot at the Rescue Robotics event hosted by VitalLink in 2015
    Source code: ABR_RescueRobotics.


    Control the UCI Rescue Robotics ground robot over bluetooth using joysticks.
    Source code: ABR_Controller.


    Control the UCI Rescue Robotics ground robot using two Android phones communicating through wifi. One phone controls the robot over Bluetooth connection while streaming video information to the remote phone. The remote phone issues commands for movement and camera pan/tilt.
    Source code: ABR_ClientServerRemote.


    Use your phone to control a RC car remotely over Bluetooth. App uses the accelerometer to set pwm commands in order to control the servo and motor of the car. Good example to see how you can get values from the phone sensors (accelerometer, gyroscope, compass).
    Source code: ABR_RC_car.

ABR_client (beta)

    Android App used to connect to a TCP server (ABR_server) and allow streaming of data and remote control. Start and connect Android client to the server using the IP address of the server and port number (e.g. 9000). Good example to see how you can connect and send/receive data to/from a TCP server, send data over UDP sockets, capture frames from the phone’s camera for streaming.
    ON GOING PROGRESS: this app still needs debugging, comments, optimization...
    Source code: ABR_client.

ABR_server (beta)

    QT (c++) project: Server running on PC. This server can receive connections from multiple phones and display video feedback and sensory information. It can also be used to control remotely robots.
    ON GOING PROGRESS: this program still needs debugging, comments, optimization...
    Source code: ABR_server.





For The Android Car

last updated 27 July 2015



Android Based Robotics