The Best Gosh-Darn Android-Based Robot Controller

The robot controller app is out! Woo Hoo! Finally, a Android-based hobbyist robot controller that works with every microprocessor. There is no corresponding software required on the robot, you can write your own code to your heart's content.

A clean, simple app that features:

  • Joystick control via pushbutton and tilt Auxiliary buttons
  • Voice Recognition and "voice commands"
  • Text to speech
  • Data can be sent to and from the robot for debugging

All that is needed is a cheap bluetooth unit (a BlueSmirf unit from SparkFun was used for testing) and any flavor of microcontroller. Arduino, Picaxe, Propeller, BS2, AVR --anything that can receive serial data can use this app. If you can send text to a LCD or a terminal, you can use this app. Baud rate from 9600 to 115,200 are supported and auto-detected.

And it is only 2 bucks, for cryin' out loud!

If you are overseas, buy now and take advantage of the weak US dollar!

Links:

Link to the App itself here.

Link to the PDF instructions are here.

 

**UPDATE**

Added some more videos. A demo of the app running on an Arduino and also a sketch running in Processing that can talk to the app.

https://www.youtube.com/watch?v=dLPhKQXPZGc

cool

the choice of android vs iphone gets harder

I dunno…

I saw the beginnings of Pat’s work and his iPad… Gunna give me a run for my money, it looks like…

Good timing. I just got my

Good timing. I just got my hands on an old Motorola Droid from my brother. The touch screen is dead, but I think I can fix it pretty easily.

Hey Chris how the Speech

Hey Chris how the Speech recognition works ?

I mean you have to record the commands first and then  assign them to real commands ?


I wish I could get android on my htc touch diamond .

Yes.

You can make up any command you want to. Each command can be a word or phrase of any length and are placed on the ‘command list". When you click the "say command’ button, it takes what you said and compares it to the list. If there is a match, the phone sends a C (67) and then the number from the list of commands. If it happens to be the first thing on the list, the robot will recieve C1 (67 1). If it is the second command on the list, C2 (67 2) will be sent.

From that point, the robot will do whatever you program it to do. Maybe the first command will be “turn on lights” --the robot would be coded so that when it gets C1, it should turn on some LED’s.

You don’t have to pre-record any of the commands, and there is no comparison between when you entered the command to the list and when you are actually using the command. The speech recognition is being done by the phone, not the app and thus, is exactly as accurate as it is when you are searching for a youtube video or entering a phone number using it.

You can have as many as 254 commands on the list and they can be of any length.

 

Your app looks great Chris

I was actually wondering about making an app for my bird box gate https://www.robotshop.com/letsmakerobots/node/27959 and hopefully have both gate data and live feed from my webcam. 
How hard was it go get started with the SDK?

What bluetooth module did

What bluetooth module did you use?

You mentioned it, but I cannot find a link :"(

Uff-da… App inventor…

I used Google’s app inventor to make this guy. App inventor is a flow-chart-style language that uses these little puzzle-peices that you clip together to program.

Was it hard? No. Actually, it was pretty simple, and easily understood. A lot of tutorials as well.

Was it a pain in the butt to go from every written language I know to constantly moving these silly puzzel-peices around? Yes.

I gotta be honest, I do not like flow-chart programming. I just don’t. I dealt with it and went with App inventor really, only because of the bluetooth connection. I tried processing and a couple others and I had nothing but bad BT connections and lost data. I tried app inventor and it worked and remained solid. And there you go.

Would I recommend it? Yeah, probably. There is no learning curve on the code, other than the fact that there are really no “loops” and everything is “event driven” but you get used to this pretty quick. The rest of the language is the same “if/else” kinda stuff that exists in all languages. I say go for it. If nothing else, it is free!

Bluetooth module

Here are the 2 that I have used and that I like.

BlueSmirf the fancy one

BlueSmirf the slightly cheaper one.

I do suggest doing some looking though. There are a ton of these bluetooth units out there and they all work pretty much the same. The one’s listed above are simply the one’s I have personally used.

excellent!

Hi Chris,

This is awesome. Just downloaded it; I’ll play with it this week :wink:

Jim

Is the code for this going

Is the code for this going to be open source?

 

Not actually asking to see the source, I’m just wondering how you are handling the whole open source but paid software dilemma :slight_smile:

Oh the software

The code was “written” using app inventor which uses these silly puzzle peices for code. Sorta flow-chart block style. Funny enough, the one way I have seen people “release” their code is with a screen grab of their puzzel peices. I can do that if you like, but I gotta tell you, there is nothing special there! Just a few buttons and a few serial sends.

Most of the rest of the code is there to prevent people from doing things they shouldn’t with the app.

Well, thank you sir!

Feel free to contact me with any thoughts/problems etc. I am here to help.

[email protected]

Free?

Has this any advantage over the free Cellbots app or the free Robots Anywhere Navcom app? 

Another, but unknown

Here’s one from Seeed for $20, though I don’t know how it may compare to the Sparkfun devices. Sparkfun has some very nice toys.

Ah yes, cellbots

I gotta be honest, my intention was not to actually make this app. I would have preferred to use something like cellbots or Amarino. The problem I ran into is that when tried these apps, they were a confusing mess. Cellbots seems to be a system that allows you to put your phone ON the robot and control via PC --but to be honest, I don’t know. After reading their website for a while, my eyes glazed over. They mention the android I/O board, and IP addresses for the phone and libraries that need to be installed and a ton of stuff that needs to be done and configured via a terminal. In the end, you have YOUR robot, but running CELLBOTS software on the phone, the arduino and the computer. I found it confusing, VERY complicated and in the end, did not allow me to tilt my phone and drive my robot. Also, as far as I can see, it is only set up to work with an Arduino. I have nothing against Cellbots, I am sure it has worked for many folks but I could not understand a single part of it.

Amarino had a similar problem. It required software to be used on BOTH the phone and the robot. When I used it, it seemed like a small collection of demo apps. I.e. “hey, read a sensor with your phone!” and I said, "Uh, huh… Yeah, I am reading a pot plugged into my arduino --what the hell am I going to do with this? --I just want a joystick!"

Maybe I should have spent more time with these guys, and “learned” them more, but I walked away frustrated and confused. I just didn’t get it.

Now, with my App, nothing is needed on your robot but a small routine to grab 2-bytes-worth of data from a serial connection. If you have existing code that you have written, my data from my app can be very easily intergrated. My app will work just as happily with an Arduino, Prop, Picaxe, BS2 etc etc etc. There is no need to take their robot software, rebuild it and try to get it to work with a different platform. There is no need to do anything my way.

The bottom line for me is that it seems all the existing phone/robot systems are just that --systems. You use Cellbots and you will forever do it the “cellbots way”. Use Amarino and do everything the way that Amarino forces you to do it. Or use the RocketBot app and make your robot do whatever you want it to do.

Tell you what (and I am really NOT being sarcastic here) try cellbots and tell me how it worked. Send me an email and I will send you a free copy of my app. Put 'em side by side --not just the app, but the whole experience (the whole system). How much time did you spend with libraries and drivers and changing phone IP addresses in python code and reading FAQ’s trying to get their software to work with your robot.

Oh, and why not free? Because I added labor to materials that created value. Cellbots and Google have more money than God and can happily give stuff away. I am broke and starting to try to make a living out of this robot stuff. That being said, I always have love for my homies here at LMR --If you want a copy, just email and it is yours.

Systems in comparision

Can’t say I’ve really tried any of them, other than to read over what has been written for them a bit. And watched a video demo or 2. I’ll have to check over Amarino, had not been aware of that one. 

What I gathered from Cellbots (which is just Cellbots guys, talented coders, not associated with Google or having deep pockets as far as I can tell) was that it was a system that could be configured to multiple different methods of control.

One was cell phone to robot through a bluetooth connection, much the same as your own set up. In this configuration, both systems appear to be somewhat similar, with the addition of using buttons like yours, a touch joystick, or yes, tilting the phone to drive the robot with the Cellbots configuration. Both require serial software on the robot, Cellbots gives example code for the Arduino and I believe the Roomba Create as well.  I see no reason why similar serial bits of code couldn’t be made (or already exist) for other micros as well.  

Another method was where one cell phone drives another on the robot through WiFi or cellular connection, and the controlling phone can receive back video from the cell on the robot. 

Still another method involves using a laptop to WiFi connect with a cell phone on the robot, again with a video feed. 

I think therein may be the difficulty in understanding the Cellbots system. They do not give you an easy A to B to C method of how to “do” these different control methods, but instead have a forum in which ot ask questions about how to do something. Kind of like here, where it is helpful to read through the back information a bit to get to a possible answer to a question before it is actually asked. 

I’ve been wanting to try a cell phone control system on a robot, so as to extend the range significantly, plus the video feed option is nice. Just not prepared to buy another cell service to try it out at this point. The bluetooth range would be somewhat limited, perhaps 100 feet at most. Wifi might stretch that distance a little bit further, but not sure how far. 

I’ll reply here for the last

I’ll reply here for the last paragraph. I had a chinese iPhone 4 knock off with Android on it (and lost it, stupid me…). I bought it for $140 and it had many extra features a regular Android phone you can get when you sign up for data plan does not have. I did not care much about those features (like TV, dual sim, quad band…) but because of the WiFi connection you actually don’t need the data plan. Well, only for GPS navigation, but you can buy a $50 map and you have everything in the phone. Of course, if you need to check out emails and social networks all the time, you need the data plan, but that was not my case. Anyway, right now I am waiting for another chinese phone to arrive in the mail, one that has better battery life.

Speaking of battery life, here are my observations, and I would like to compare them with a other people’s findings:

- when using special features like GPS, WiFi, TV, you have to have the phone plugged, it drains the battery fast

- Bluetooth seems fine, probably because of small range needed, usually people use it for headsets or hands free car sets, those don’t require more than 2-3 meters range. I have tested the range on my phone to about 10 meters, wich seems similar with a regular Sony Ericson phone

- haven’t got to the point to have a WiFi video feed from the phone, but that was in my plan and I was looking for software to do that, but I suppose the phone has to be plugged too, because besides WiFi you add camera use

 

GroG was telling me that there is a lot of buzz about having OpenCV working in Android, I suppose the next step for him will be to make MRL working on Android phone or tablet mounted directly on the robot. I mean why not, it has WiFi, camera, display, accelerometer, some phones sense the lighting conditions to adjust the screen brightness, GPS… Sure, a Chumby is cheaper than a phone, but it would be cool to see a telepresence balancing Android phone robot…