Android+Arduino – Face Following RC Car

androidRCcar_01_14

To some of us, hacking an RC Car to simply follow a black line or avoid obstacles is too easy, and we’re sure [Shazin] would agree with that, since he created an RC Car that follows your face!

The first step to this project was to take control of the RC Car, but instead of hijacking the transmitter, [Shazin] decided to control the car directly. This isn’t any high-end RC Car though, so forget about PWM control. Instead, a single IC (RX-2) was found to handle both the RF Receiver and H-Bridges. After a bit of probing, the 4 control lines (forward/back and left/right) were identified and connected to an Arduino.

[Shazin] paired the Arduino with a USB Host Shield and connected it up with his Android phone through the ADB (Android Debug Bridge). He then made some modifications to the OpenCV Android Face Detection app to send commands to the Arduino based on ‘where’ the Face is detected; if the face is in the right half of the screen, turn right, if not, turn left and go forward.

This is a really interesting project with a lot of potential; we’re just hoping [Shazin] doesn’t have any evil plans for this device like strapping it to a Tank Drone that locks on to targets!

Comments

  1. Did the same kind of thing a year ago. Though instead of hacking a toy car I used a paper box and CDs for wheels. Also the Android app was written in Processing. Anyways, all my code is available on github if someone wants to give it a go themselves: https://github.com/mazvydas/Nicole

    Cheers

    • Kerimil says:

      thx but I am not a big fan of processing for android… 98% of development time is trying to figure out compiler errors

      • Kerimil says:

        …and no I am not biased at all I’ve been trying to get it up an running for the past 1.5 hour or so. I get all the time >>
        …android-sdk\tools\ant\build.xml:720: The following error occurred while executing this line:
        …android-sdk\tools\ant\build.xml:734: Compile failed; see the compiler error output for details.
        This is just a recurring nightmare and those who have used it know what I am talking about

        • Hi Kerimil,

          Depending what Processing version you got it’s most likely you would have to downgrade. If my memory doesn’t fail me, I used 2.0b7 version (the newest at the time) to compile the sketch.

          I haven’t used Processing for Android lately, so I don’t know of the current situation, but I will have to agree on the fact that the compiler might get a bit temperamental at first.

          I guess that’s the price you pay for rapid prototyping.

          • Kerimil says:

            Yeah I know I’ve been using processing for a while. I keep about 3 or 4 different versions (including 2.0b7) specifically because of this reason. Every new version their release causes backward compatibility problems… Shame really it’s awesome, but each version just causes more and more problems.

  2. Liam Jackson says:

    Do you mean ADB or ADK? The article your “ADB” links to is about ADK (Accessory Development Kit) :/

    • Kevin Darrah says:

      Yep, I meant ADB. Check out the linked project in that ADK article. They used something called microbridge, which is ADB for microcontrollers. Yes, a lot of acronyms here :)

  3. Kerimil says:

    Wanted to post a comment earlier but somehow they didn’t appear at all. Ok first of all I’ve been trying to achieve something similar for some time. Have you thought about using an app that acts as a TCP to serial through USB (host) ? There’s one called Redirector TCP_SerPort that should be able to do it – you wouldn’t need USB host shield. Also you could implement serial through USB – there are tutorials on it.

    Actually I am looking for someone who’s proficient in Eclipse and android development, because I want USB through serial added to MIT’s appinventor. Their team doesn’t seem very interested in it and I am not even beginer level when it comes to eclipse.

  4. ameyring says:

    Neat! Watching the video got me to thinking of a simple modification – if it runs into a wall (detected somehow), automatically turn it around and keep looking for a face to follow.

  5. Thanks all the comments!

  6. enthusiastic newbie says:

    sadly, this project is not open, we cant learn from this project :( hope there will be aan open source for a project like this one day :(

  7. Al B says:

    Nice work! We built a similar project. However, we used OpenCV to track a color instead and control RC vehicle autonomously. Here is the preliminary result:

    • enthusiastic newbie says:

      cool! this is OPEN SOURCE one! but why IOIO :,(

      • Al B says:

        Thanks! We chose the IOIO for 2 reasons. First, it is easy to program (Java instead of C). Second, the integration between Android and the IOIO is twice easier and faster than with Arduino or the Raspberry Pi. You can find more details here:

        http://www.socsci.uci.edu/~jkrichma/ABR/index.html#SOURCE%20FILES

        Cheers!

        • enthusiastic newbie says:

          well, i guess it is time to move into IOIO, then, cuz this project is too good to miss :)

          the thing about arduino is that when we decide to go with big motors, the hbridge is available, maybe some L293 or L298 or real power ones.

          i have this idea just yet, man. what if you make this project much simpler, like just following a ball, or move forward 1cm if it sees a green or red object. no need for complicated algorithms like PID or such. the idea is to show us newbies, “how to make android robot move after receiving signal of seeing red or green object”. i am sure there are lots of newbies can learn this fundamental of android AUTONOMOUS system. to learn and understand AUTONOMOUS in mobile platform is just like a wild imagination of non roboticist people. if you can make this simple and make an instructional video on how to install and plug this into that, etcs, this will be “super cool AUTONOMOUS robot project for even starters”. imagine even enthusiastic people with no programing bavkground can get an autonomous system they build themselves, man! and they understand the codes rather easily too, cuz they using IOIO! everything is simplified, and newbies can be “super cool in robotics” in an instant. thats like too good to even dream of for the common people. this idea sounds neat, aint it, man? :)

          cheers :)

          • Al B says:

            Hey, there is nothing wrong with building the simplest functionality first. Otherwise, it would be like eating an elephant in one bite, as opposed to many bites. Anyway, I failed to mention that there is a shield adapter that allows you to use all the Arduino Uno shields available in the market (like the hbridge shield) with the IOIO board. You can buy it here:

            http://www.richmayfield.com/store/IOIO-Shield-Adapter

        • enthusiastic newbie says:

          on the way to buy it, man :)

          will you make it simpler in algorithms, man, like even simplest. then make an instructional video on how to put everything together, plug what into what, then install what. or just make a writing about that, with a schematic, then we newbies can have AUTONOMOUS mobile system on our hands in no time. i agree with the idea od using IOIO, so we can get rid of hbridge programming and its pins; it scares us away. we beg you that, man :)

        • enthusiastic newbie says:

          it comes with a pair of IR modules, man, making it more difficult for newbies like me :(

          will u someday simplify it into something “simplest”?

  8. enthusiastic newbie says:

    well, i guess it is time to move into IOIO, then, cuz this project is too good to miss :)

    the thing about arduino is that when we decide to go with big motors, the hbridge is available, maybe some L293 or L298 or real power ones.

    i have this idea just yet, man. what if you make this project much simpler, like just following a ball, or move forward 1cm if it sees a green or red object. no need for complicated algorithms like PID or such. the idea is to show us newbies, “how to make android robot move after receiving signal of seeing red or green object”. i am sure there are lots of newbies can learn this fundamental of android AUTONOMOUS system. to learn and understand AUTONOMOUS in mobile platform is just like a wild imagination of non roboticist people. if you can make this simple and make an instructional video on how to install and plug this into that, etcs, this will be “super cool AUTONOMOUS robot project for even starters”. imagine even enthusiastic people with no programing bavkground can get an autonomous system they build themselves, man! and they understand the codes rather easily too, cuz they using IOIO! everything is simplified, and newbies can be “super cool in robotics” in an instant. thats like too good to even dream of for the common people. this idea sounds neat, aint it, man? :)

    cheers :)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s