The Android Car is a DIY open project where was included an Android smartphone, an R/C wheeled robot platforms, several sensors, a set of free software plus many more free libraries for test, to control the wheeled robot remotely over Bluetooth, streaming the data, the application server that runs on a PC, and the main application that runs on the Android Car.
This project aimed to fill the gap between robotic kits without abilities to work outdoors on uneven terrain, or when the options for sensors and onboard computers are limited. The Lego Mindstorms EV3 kit is a good example of a powerful kit with limitless options to build different types of robots, but with limits in the number of sensors and processing capabilities, as well as limited abilities to work on uneven terrain. Another example could be a platform such as the 4WD Outdoor Mobile Platform designed to work on different types of terrain, but with expensive cost for additional equipment such as cameras, sensors, or on-board computers.
The main different between the Android Car and above examples, is that the smartphone brained robot has a modular platform able to work on almost any terrain. Other advantages are the size of the robot, which can be kept in normal limits since the brain of the robot is a palm-sized smartphone with many features and an affordable price. A smartphone integrate a powerful processor, memory, sensors, and a battery, which is much more than you need to build an autonomous robot.
Using a simple smartphone to stream data and control the robot is an opportunity to focus on fundamental research and the problems occurred, while the time spent to embed different technologies to replace the smartphone functions is now very small.
With a modular platform and flexible enough to support a wide range of sensors that can be incorporated and relocated very easily, you can use the same robot for different applications of indoor and outdoor terrains.
The entire prototype is based on three main components:
- a simple Android smartphone able to be used as onboard computer and several sensing information;
- an electronic board such as IOIO or Arduino ADK able to interact with robot parts such as motors, other sensors than the smartphone, or servos;
- a platform such as R/C vehicle, or other inexpensive robotic base with abilities to run on several rough terrain;
Why to use a smartphone?
You have many options for a robot brain including here an 8051 microcontroller, and continues with Arduino and then jump to a Raspberry Pi. But all of these robotic brains must be equipped with memory, sensors, batteries, communication boards, and many more functions to be closed by the functionality of a smartphone.
A mobile device like a smartphone provide hardware and software resources including sensing capabilities, communication options, a smart device is able to run several applications and has intuitive programming applications. Using a laptop computer you can communicate with the robot through wireless application installed on the smartphone, while streaming video/images or receiving a huge amount of information it becomes a simple task.
Regarding the specifications of a smart device, there is a remarkable list with powerful processors with two/four/.. cores, graphical processing units, high definition video cameras, high definition microphones, a set of sensors (such as GPS, accelerometer), a long life battery, a wide range of communication options (3G, 4G, Bluetooth, Wi-Fi), run modern operating systems (Android, Windows, iOS), and you can build an application in minutes using an intuitive Software Development Kit (SDK).
Probably this list can be expanded with more functionalities that can be used in robotic applications, but in this article all of these specifications are used to build a flexible and modular platform able for advanced applications in the research field, to learn how to build a wheeled robot, or by hobby to play with robots.
Types of applications
The list with applications where such a robot can be used is endless and depend on the area of use. But when the engineers design this platform, they have in mind a short list where was included an autonomous robot able to run artificial intelligence applications such as recognition, tracking, avoiding, as well as follow a specified object (an example and source code can be found here), and a more complex robot able to learn based on associations and in the same time to update these associations with new information.
Android phone robot
How the smartphone is plugged into the robot?
Now we enter into the area where simple electronic skills have to be applied in order to integrate the smartphone with the robotic platform. Here you have to work with a microcontroller board based such as IOIO or Arduino ADK, and with a wide range of sensors, motors and other components depending on your project.
A microcontroller board based serves as communication bridges between the Android phone and external devices. The board has a USB host interface to connect with Android based phone, a set of digital and analog I/O pins to embed components, and other buttons and additional functionalities to extend the range of usage.
Microcontroller boards:
Software Resources
The Android is an open source Linux-based operating system with support to develop applications in Java by using the SDK, or in its native C/C++ programming language using the native development kit (NDK). If you use the C/C++ programming language, you are able to use several libraries that can make your job easier.
The most accessible IDE during development is the Eclipse IDE together with the Android Development Tools (ADT) plug-in. The development kit opens the Android mobile device with an entire list of functionalities such as sensors, data storage, multimedia, networking, and the list can continue.
This combination between a smartphone and a robot starts a new phase in the robotics by using the cloud based robotics applications using a simple connection to the Internet.
With a suite of software like OpenCV and ROS, the Android based robot becomes a truly technological bomb that can explode in abilities such as human-like vision, artificial intelligence, and several other complex applications.
In our example, the Samsung Galaxy S III application is able to handle multiple threads and different sensors with a minimal delay and in different conditions.
Hardware Resources
In our example is used the Hobby People Vertex 4WD 1/10 R/C truck, which is an affordable and fast platform with an ideal hydraulic suspension system designed to minimize the impact of vibrations on video camera when driving outdoors. Also, the platform hosts on a perforated sheet of steel the phone holder, the IOIO board, sensors and actuators. This hosting system offers the possibility to add or remove easily the components such as the sensors.
The vehicle has the role to host the Android device, sensors, motors, batteries, and many more components, while the cost of the project is relatively cheap and in concordance with the budget.
From the same category – you can use what you want and what you have – you can use an older less expensive phone that can provide a number of sensory inputs such as accelerometer, digital compass, GPS, proximity sensor, ambient light sensor, push button, digital camera, and many more opportunities for connections.
Another main component in this example is the IOIO board, which is fully controllable through Java API and engineered to link the mobile phone to the motors and servos of the vehicle, read values from digital and analog sensors, and provides connectivity via Bluetooth or USB with the Android device.
Again, you can use your favorite microcontroller board to interface the Android device with the robot parts.
Even the Android mobile phone provides a wide range of sensors, you can add additional sensors such as infrared, sonar, whiskers and bumpers, speed sensors, or gas sensors. The list of additional parts is not finished only with sensors. Beside the sensors, you can add actuators, a robotic arm or gripper, or any component that can be interfaced with the IOIO board or any other similar microcontroller board.
The list with main components and the source files:
- R/C car from Hobby people (you can use also Race Buggy Kit, EP RTR Off Road Truck, or EPX PRO);
- IOIO for Android (you can use also Arduino MEGA ADK R3 for Android);
- Type 304 Stainless Steel Perforated Sheets (you can use also 304 Stainless Steel Perforated Sheet);
- Lynx B – Pan and Tilt Kit;
- Source code;
I have good reasons to dissect this robotic prototype, and these are related to the professional way of implementation, resources, and documentation available to build this project or a similar project based on your need.