As you might have noticed, I haven’t posted to this blog in quite a while. But I have a great excuse: my dog ate the posts I was working on my project for the 2012 Google Science Fair! The idea behind the GSF is that you come up with a question that you then answer with an experiment, and report about. So, without further ado, my question:
To what extent is it possible to use free existing online tools to create interactive, easily accessible robotic utilities that can be controlled by users all over the world?
To prove this, I set up an experiment where people would “call” the robot, like last time, except that, this time, it wasn’t open to everyone, and I made appointments with 20 people to be able to take precise measurements of how well they did. To get good results, I rebuilt the car, and even added some new functions to it — it was now able to all the following:
Drive forwards and backwards (instead of just forwards)
Turn left and right
Grab a ball (all new)
That way, I was able to measure how well the users performed doing several tasks. For a full explanation of what I did and what the results were, check out my project page:
As planned, today (January the 18th, 2012) was the last day my Skype car was up and running. I’m really happy with how the project turned out, and I’ve had a bunch of great responses. But before we get to that: I was asked to put up some stats, so stats there shall be.
Views per day; graph provided by the goo.gl (see link below)
As of today, the robot has been driven more than 700 times, with an average connection time of about 4 minutes! It’s been used from countries all over the world, including the US, Canada, Australia, Germany, Denmark, Spain, Hong Kong, Ireland, Belgium, South Korea, Bazil, the UK, Malaysia, Puerto Rico, Taiwan, Mexico, France, Switzerland, Iceland, India, and many more. The most popular OS was Windows, followed by Mac, and the most popular browsers were Chrome and Firefox.
If that’s not enough for you, you can hit the goo.gl stats link right here for lotsa more juicy numbers: http://goo.gl/info/7LLaU#all_time
A lot of stuff has been going on around this project, so here’s a timeline with all the highlights:
1/6/2012: Took the robot offline for the night and better part of the day to solve an issue with the battery’s wire getting tangled and ripping the robot apart – went wireless.
1/13/2012: Got a YouTube PM from a tech writer for M3, Sweden’s largest gadget magazine, who asked me for HQ photos of my Skype car for their next print issue!
I also had a blast looking at what people thought of my robot, and even messaging with random people who had tried it out – one was a dad, who showing his son what Mindstorms NXT was all about (which was exactly what this project was for), and another one asked me if this was my bachelor project (it’s not), just to name two.
So yeah I hope you all liked it and expect more stuff soon – I’ve got an awesome sensor coming my way.
PS: I’m thinking about entering it into the Google Science Fair. Good idea?
Some of you might have noticed that my Skype car has been offline since last night. Why, you wonder? I was trying to solve the issue with the wire tangling around the robot all the time – first, I tried putting it on a high pole, but that just made it worse. Then I remembered an amazing Mindstorms NXT robot I once read about: Pulito, a floor cleaning robot that could look for its own power source using infrared light, and then plug itself in.
Since I do not have any equipment to read infrared light, I had to find another way for the robot to plug in. Here’s what I did:
Because the environment my robot was in was way more controllable (a square lined with cardboard boxes), I decided to use the sonar sensor, and make the robot follow the walls.
I then made a gap in one part of the wall, so the robot wouldn’t know where the corner was. That causes it to just keep on driving forwards, until it hit the wall on the other side.
This is where I got lucky: when I ordered the charger for my new battery, I got the wrong one (the one for the other kind of battery, which was hooked up to my other NXT). Having a spare one, I decided to cut it in half:
So when the car hits the wall, it’ll automatically start charging
For the programming, I added some code for the ultrasonic sensor and the touch sensors, and wrote some sequences to happen when the robot needs to start charging, and when it’s done.
In other news:
The instructions on the actual remote control page are much clearer now, too
Today was the first day my robot was online, and, as with any project, problems came up:
The wire got tangled
People didn’t know how to shut the robot off properly (which is probably why other people weren’t able to connect)
The ball caster came off
These are some changes I made:
I added a long, flexible rod to the back of the car to hold up the wire, so it’s less likely to drive over it too easily. This should also help against the caster issue, because it mostly came off because the wire was pulling it
I put some extra protection around the caster, to make it less likely to come off
Towards the bottom of the page with the arrows, you can now read about how to shut the robot down, so people won’t do it wrong anymore
In case they do, an alarm will now sound if the robot has been driving in the same direction for longer than 60 seconds.
So thanks for the feedback everybody, and I’ll keep on improving this thing further. To see the changes, go to http://www.goo.gl/7LLaU (you might need to refresh your page).
After a long wait, I’m back baby! To start the year off with a bang, here’s a Mindstorms NXT car that can be controlled using Skype – by anyone, anywhere, any-when (between today, 1/1/2012 and 1/18/2012).
If you want to get going right away, here is the link for driving this car: http://www.goo.gl/7LLaU.
I’ve been creating websites for a while now, and I was trying to think of a way to combine it with Mindstorms NXT, and this project is the result of that. The webpage is fairly simple – it’s got three arrows (one forward, two to the sides) and a start and a stop button. Clicking the start arrow will begin a Skype conversation with my computer, after which the user should share their screen; the NXT standing in front of my computer (called “Jeeves”) can then “see” the webpage the user is viewing.
That’s where the cool part kicks in – when the user clicks any one of the arrows or the stop button, the page will change to a different shade of gray. This shade of gray is then picked up by Jeeves, who turns it into a Bluetooth message for the other NXT (called “Alfred”). The car then drives in the direction the user tells it to, while remaining within a fenced off area where the webcam can see it.
So, the user can drive a LEGO Mindstorms NXT car, from the comfort of his or her home, without having to install any kind of software (provided that they have Skype).
Hardware – the Car
The car was fairly simple to build – it’s got two motors on the sides with the wheels attached directly (no gears), and a big ball caster attached at the back. It looks quite a bit like my line follower, actually, except for the fact that the caster is a lot bigger because the car needs to be able to drive over the power cable and because it’s on a carpet. Also, it’s got front bumpers so you all can’t break anything while driving it, a color sensor that turns on when the robot is in use, or has been in use the past minute, and a rechargeable battery that’s always plugged in. Some pictures:
The first one is a side view, and the second one is an upside down view.
Hardware – the Receiver
The receiver was a bit more tricky to build because it needed to be a specific height so its light sensor could “see” the right area of the user’s screen. The structure itself is fairly simple – the light sensor is on a big pole attached to the NXT, and it’s got a rechargeable battery that’s always plugged in at the bottom. Here’s a picture of it (without the battery; hence the delay):
Programming
For all of the coding in this project, I’ll provide a basic description of how it works, and then a download link in case you’re interested in trying to build this project yourself sometime. The first two pieces of code (for the car and the receiver) were made using RobotC, and the third (for the website) is in HTML. All of the code will be on Sourceforge.
Programming – the Car
There’s a small function for turning the motors’ PID control on or off at the beginning of the program to get rid of the peeping noise the motors make when the car is not moving.
In the main task, here’s what happens: the variables are created, the Bluetooth is turned on, and the timer is cleared. In the main while-loop, the last received message is stored, so the robot can later use that information( along with the timer) determine whether it’s been active the last minute and decide to turn the signal light on or off. Then, the robot reads the message last sent to it and plugs it into a switch. Depending on which message it received from the receiver (ah, the irony), it will move the motors. At the end of the while loop, there is a 50 millisecond wait to save battery power.
The receiver also starts by initializing its variables and turning on Bluetooth, after which it connects itself with the other NXT – also using Bluetooth. The program then enters its main while loop, in which there is a series of if/ else switches designed to determine what shade of gray the screen is. The if/ else switches then plug this message into the “messageToSend” variable, which is sent out afterwards. The loop ends with a 100 millisecond wait, again to preserve battery.
There isn’t really much to explain about this one, so I’ll just give you the download link. Please note that the images on the page aren’t included, so you won’t be able to view it correctly in your browser. Screenshot below.
There were quite a few tweaks I had to make to my computer, so I decided to list them here in case, again, you want to build this project yourself someday. Keep in mind that I might be missing/ forgetting some things, so if you ever have a problem just leave a comment below.
Turned off sleeping mode on both my screen and the computer itself;
Skype: in the general > video settings menu, I changed the first option (“Automatically receive video and screen sharing from…”) to “anyone”;
Skype: in the privacy > privacy settings menu, I changed everything to anyone. I also checked all the boxes;
Skype: in the calls > call settings menu, I changed “Allow calls from…” to “anyone”, and again checked all the boxes;
Skype: in the IM & SMS > IM settings menu, I changed “Allow IMs from…” to “anyone”;
I’m also keeping the Skype window open 24/7, so my background won’t confuse the light sensor.
Go through the dialog windows you get (there will be more on IE and Firefox than on Google Chrome)
Wait for my video to start (this can take up to 20 seconds)
Open the “call menu” at the top bar
Click “Share Your Screen” – it’s about 3/4th of the way down the menu
Click “Share Full Screen”
You should now be brought back to the webpage with the arrows. Once you see the car stop, use the arrows to drive it around.
To stop, hover your mouse over the little screen where you see the car, and click the red phone button
This project has successfully been tested on the following operating systems:
Windows 7
With the following browsers (newest version as of 12/31/2011):
Google Chrome (tested best)
Firefox
Internet Explorer
If you try this project on anything not mentioned above, it’d rock if you could leave a comment stating what you used below so I can add supported (and not supported) browsers and OS’s. Thanks!
Conclusion
So there you have it: a LEGO Mindstorms NXT car that you can drive using Skype. If you like this project and want to see more, subscribe to my YouTube page and this blog for the latest updates. Once this project ends, I’ll put some statistics on how many people tried this project up down here. Feel free to use anything on this page (the robots, the code, the website, etc.) non-commercially, as long as you give credit where it’s due.
Skype Car – Lots of Numbers
18 01 2012As planned, today (January the 18th, 2012) was the last day my Skype car was up and running. I’m really happy with how the project turned out, and I’ve had a bunch of great responses. But before we get to that: I was asked to put up some stats, so stats there shall be.
As of today, the robot has been driven more than 700 times, with an average connection time of about 4 minutes! It’s been used from countries all over the world, including the US, Canada, Australia, Germany, Denmark, Spain, Hong Kong, Ireland, Belgium, South Korea, Bazil, the UK, Malaysia, Puerto Rico, Taiwan, Mexico, France, Switzerland, Iceland, India, and many more. The most popular OS was Windows, followed by Mac, and the most popular browsers were Chrome and Firefox.
If that’s not enough for you, you can hit the goo.gl stats link right here for lotsa more juicy numbers: http://goo.gl/info/7LLaU#all_time
A lot of stuff has been going on around this project, so here’s a timeline with all the highlights:
I also had a blast looking at what people thought of my robot, and even messaging with random people who had tried it out – one was a dad, who showing his son what Mindstorms NXT was all about (which was exactly what this project was for), and another one asked me if this was my bachelor project (it’s not), just to name two.
So yeah I hope you all liked it and expect more stuff soon – I’ve got an awesome sensor coming my way.
PS: I’m thinking about entering it into the Google Science Fair. Good idea?
Comments : Leave a Comment »
Tags: car, comments, engadget, gadget magazine, international, LEGO, Mindstorms, mindstorms nxt, numbers, NXT, review, skype, stats, wireless, youtube
Categories : Robots, Skype Car