Friday, December 28, 2007

HummBot: basic object avoidance

Here is a new video of the HummBot. As you can see in the video, I unmounted the IR sensors from the servos and moved them to the front and back bumpers of the HummBot. This way they can be used as short distance (25 cm) object detectors.
I have ordered ultrasonic sensors (at Sparkfun.com) for longer range object detection. These will be mounted on the servos to scan a wide area (1-2 meters) in front of the HummBot.

Another thing that needs attention is speed control. First I want to buy/build an encoder to measure the travelled distance. This is highly needed since the ESC is very inaccurate, resulting in unpredictable distances.I am still thinking about the correct mounting place for an encoder. Suggestions are welcome!
Next to that I am considering to replace the motor with a high torque motor which will make it easier to drive at slow speeds. Currently this is very difficult since there is a subtle balance between driving slow and stalling the motor.

Sunday, December 23, 2007

HummBot Platform

This weekend I did some work on the HummBot platform. Basically the platform consists of two layers: the bottom layer which contains the steering servo, the ESC and the battery pack and the upper layer which provides space for the Arduino, the breadboard and two servo controlled IR sensors.
Being assembled it looks like this:









The servo controlled IR sensor are just at the right height such that they can 'look out of the window' of the HummBot. This is what it looks like with the body:









I'm currently finished the code that will control the servos and sensors such that HummBot can start avoiding obstacles!

Friday, December 21, 2007

HummBot changes direction

Because the previous HummBot video was very dark, I've made another video in day light. Also the HummBot can change direction now since the Arduino controls the steering servo of the HummBot!
As you can see in the video, the HummBot clearly needs some sensors to prevent it from hitting obstacles :-)
Don't hesitate to give me some feedback. I'm very interested in hearing your opinion and improvement ideas!



This is the microcontroller code that I used for this video:

   1: int ledPin = 13;
   2:  
   3: int servoPin = 4;
   4: int rightPulse = 1900;
   5: int neutralPulse = 1500;
   6: int leftPulse = 1100;
   7: int servoPulse = neutralPulse;
   8:  
   9: int escPin = 2; // Control pin for the ESC
  10: int forwardPulse = 1565;
  11: int previousDirection = neutralPulse;
  12: int backwardPulse = 1420;
  13: int escPulse = neutralPulse;
  14:  
  15: long lastPulse = 0; // the time in milliseconds of the last pulse
  16: int refreshTime = 20; // the time needed in between pulses
  17:  
  18: int waitTime = 2000;
  19: long lastChange = 0;
  20:  
  21: void setup() {
  22: pinMode(escPin, OUTPUT);
  23: pinMode(servoPin, OUTPUT);
  24: servoPulse = neutralPulse;
  25: escPulse = neutralPulse;
  26: pinMode(ledPin, OUTPUT);
  27: Serial.begin(9600);
  28: }
  29:  
  30: void loop() {
  31:  
  32: if (millis() - lastChange >= waitTime) {
  33: // Important: to callibrate the ESC, start with a neutralPulse of 2 sec.
  34: // Drive backwards, forwards, backwards, forwards, ...
  35: if (escPulse == neutralPulse) {
  36: if (previousDirection == forwardPulse) {
  37: escPulse = backwardPulse;
  38: } else {
  39: escPulse = forwardPulse;
  40: }
  41: if (servoPulse == neutralPulse || servoPulse == rightPulse) {
  42: servoPulse = leftPulse;
  43: } else {
  44: servoPulse = rightPulse;
  45: }
  46: waitTime = 2000;
  47: } else if (escPulse == backwardPulse) {
  48: escPulse = neutralPulse;
  49: previousDirection = backwardPulse;
  50: waitTime = 1000;
  51: } else if (escPulse == forwardPulse) {
  52: escPulse = neutralPulse;
  53: previousDirection = forwardPulse;
  54: waitTime = 1000;
  55: }
  56: // Debugging:
  57: if (Serial.available() > 0) {
  58: Serial.print(escPulse, DEC);
  59: Serial.print(" ");
  60: }
  61: lastChange = millis();
  62: }
  63:  
  64: // send pulses at 50Hz:
  65: if (millis() - lastPulse >= refreshTime) {
  66: digitalWrite(escPin, HIGH);
  67: delayMicroseconds(escPulse);
  68: digitalWrite(escPin, LOW);
  69: digitalWrite(servoPin, HIGH);
  70: delayMicroseconds(servoPulse);
  71: digitalWrite(servoPin, LOW);
  72: lastPulse = millis(); // save the time of the last pulse
  73: }
  74: }


Thursday, December 20, 2007

First HummBot video

It's a little dark, but here is the first small video of the driving HummBot!

Wednesday, December 19, 2007

HummBot drives!

Thanks to a lot of help from the people at the Society of Robots and Arduino forums I have completed the second phase of the HummBot project. HummBot is now able to drive autonomously, controlled by the Arduino processor.
I used the following components:
  • Arduino controller,
  • a Graupner electronics speed controller (ESC),
  • a breadboard,
  • a 7.2V battery pack.
I took some time to figure out how to control the ESC. Basically the ESC can be controlled just like a servo by sending 50Hz pulses. By varying the width of the pulses the motor runs forwards and backwards at varying speeds. Thanks to a tip I found out that to make this work I first had to initialize the ESC by sending neutral, maximum and minimum pulses.

In this first setup the HummBot drives forward for 2 seconds, then backwards for 2 seconds, then forwards again, and so on...
Here is a first picture, I will make a video shortly.



The next step will be to create a proper platform in the HummBot chassis to attach the Arduino and breadboard to. After that I will of course combine the servo, IR sensor and motor control to let the HummBot drive around some more!

Saturday, December 15, 2007

My first HummBot circuit

Today I started my first preparations for the HummBot electronics. I have created a circuit using the following components:
  • Arduino controller
  • one Hitec Servo
  • two Sharp IR sensors
  • a breadboard
  • a 7.2V battery pack
Using these components I constructed the following circuit:



The IR sensors are connected to the 5V, Gnd and one of the analog pins.
The Servo is connected to the Vin (7.2V), Gnd and one of the digital pins.
I created a program that checks both sensor values, and if the right sensor detects something the servo is turned right and if the left sensor detects something the servo is turned left.
Very basic, but nice to start with!

Wednesday, December 12, 2007

Arduino has arrived!

Today my new microcontroller and IR sensors have arrived! I ordered these 9 days ago at Robotshop.ca.



The microcontroller is the Arduino Diecimila and the IR sensors are Sharp GP2D15 sensors. I plan to use the Arduino and IR sensors for my new HummBot project. The Sharp IR sensors will be used as proximity detectors. Their default range is 24 cm, but they can be configured to a range between 10 and 80 cm.
The Arduino has a nice small size, so it will perfectly fit in my HummBot car. I plan to power it by a 7.2V accu pack that also powers the DC motor of the HummBot. This weekend I will start the first prototyping. To be continued!

Sunday, December 9, 2007

Society of Robots



Today I ran into one of the best robotics forums I have seen so far: Society of Robots.
The forum is visited by a large group of active robot enthousiasts from all around the world. The site also provides a large list of very interesting robotics tutorials. Check it out for yourself!

H1ghlander, the 'real' hummer robot!



In 2005 Carnegie Mellon University reached third place in the DARPA challenge with their h1ghlander robot. The h1ghlander is based on a 1999 Hummer H1, and thus provides a perfect example for my HummBot project!

Saturday, December 8, 2007

HummBot, start your engine!

The last days I have been reading a lot about the DARPA challenge with all the spectacular robotic cars. See also one of my previous posts. This inspired me to start a new robot project: build my own robotic car! Of course I don't have the skills, nor the money to build a real car, but I will try to convert a RC car into a robot. In my attic I found the perfect RC car: a Tamiya Hummer! This 1:12 model provides enough space for the electronics.

The HummBot, as I will call the hummer robot, will be controlled by an Arduino board and I will start with a few IR sensors to sense the distance to surrounding obstacles. After that I plan to add more sensors like Ultrasonic sensors, compass module, accelerometer, camera, ... I think I should start saving some money!

Here two pictures of what the HummBot looks like today. This is still the bare tamiya kit. I will first give it some better painting and after that I will start integrating the first electronics. Will be continued!



The Arduino board

The 50 euro robot project that Albert van Breemen published on his Personal Robotics site made me enthousiastic for the Arduino microcontroller. The Arduino is a very cheap and very popular open-source microcontroller based on the ATmega168 processor. The main advantage of the Arduino is that there is a huge number of enthousiasts around the world that have build (robotics) projects based on the Arduino. So there are thousands of projects that can be found on the internet that are very useful to get you started. Here is just a short list of some interesting sites:

The Arduino can be programmed in a C-like programming language. Since the Arduino is open source, all development software is for free! The complete Arduino development environment can be downloaded from the Arduino home page. This environment will give you a great start with 160 MB of tools, tutorials and example code.

Last week I ordered dthe Arduino Diecimila USB board via Robotshop.ca. The price? Only $38,95 which is a little more than 26 euro!

If you're not enthousiastic yet, please have a look at this fun video that introduces the Arduino board:

Friday, December 7, 2007

More Volkwagen robots!

It looks like Volkwagen provides an ideal robot platform! In my previous post I already showed a video of a VW Golf GTI robot. Also Stanford University has chosen VW for their robotic cars. In 2005 they won first prize the yearly DARPA challenge with Stanley, a robot car based on a VW Touareg. In 2007 Stanford won second prize in the same contest with Junior, a robot car based on a VW Passat!

The winning Stanley:


The second prize winning Junior:

Thursday, November 29, 2007

Robot VW Golf GTI

Is a robot the ultimate test driver? VW has transformed a Golf GTI into a very cool robot car. Could the robot Golf beat a human driver? Look at this video to find out.

Tuesday, November 27, 2007

Invasion of the Media robots

It looks like a new robot trend. The last months a number of media robots have been introduced. They all have two things in common: the all are very nice looking robots and they all are able to play all kinds of media.

Here are three examples or recently introduced media robots: the Murio, the Murider and the Rolly.


Sunday, November 25, 2007

Robby moves!

This video shows the first steps of my brand new RP6. In the coming weeks I want to make the first small extensions like adding some LEDs and light sensors and use these to create some test programs.

Wednesday, November 21, 2007

Robby has arrived!

Yesterday evening my Robby RP6 has been delivered. I was positively surprised by the quality of the robot. It all looks and feels very solid and made to last. Thanks to the extensive manual it was quite easy to setup the basics. Within half an hour I had uploaded my first example program and could let the robot run through the living room, finding its own way by avoiding the furniture.

I've attached some first pictures, one or two videos will follow shortly.




One last photo of my two robots together: I-Qbot and RP6.

Sunday, November 18, 2007

MegaBot 0.3

I created a little video of MegaBot 0.3. This tool allows you to control the I-Qbot robot from your PC, PDA or SmartPhone. In this video MegaBot is installed on my SPV M600 smart phone.

Saturday, November 17, 2007

Almost 4 years at Mars

Next january 24, it will be 4 years ago that the Mars rovers Spirit and Opportunity arrived at Mars. Although their mission was planned for 90 days, they are still alive and kicking.


Friday, November 16, 2007

Qrio

Sony's Qrio, still one of the most amazing robots:

Thursday, November 15, 2007

Rubik's cube solver

A great Lego Mindstorms NXT robot that solves Rubik's cube! It will take some time before I can learn my RP6 or iQbot a trick like this...

RP6 Robot

I made a decision today: I ordered the rp6 robot from conrad.


This is the brand new version of the rp5 (robby) robot. It has a ATMEGA32 microprocessor that can be programmed in C and is highly extensible. So I think this will be a perfect platform for further experiments!

Wednesday, November 14, 2007

Books



After visiting the great Robot Room web site of David Cook, I decided to buy his two books:
Having read Cook's site and having read the review's on Amazon.com, I'm convinced these books will be a great start in learning more about robotics and especially electronics.

Let's get started!

I've always been interested in robotics and have always looked with admiration to robots like Sony's QRIO. Being a software developer for more than 10 years I've always been very interested in the programming side of robotics.
Until now I never took the step of building my own robot, since I'm a dummy in the field of electronics and mechanics.
This year I decided to change that and use robotics to learn more about electronics and mechanics. As a starting point I joined the I-Qbot project of deAgostini. This project allows me to build my own robot step by step and learn along the way.
Being a software developer I could not wait to develop some software for the I-Qbot, so I created MegaBot, a tool to control the I-Qbot from a PC, a PDA or a Phone.

As a next step I will order some books on robotics and I want to select an educational robot kit like the Boe-Bot or the Asuro.

I'll keep you posted!