Aibo who?

Now we are talking! My RSS feed daemons have just notified me that Murray’s Quadruped project has just taken its first steps! And good steps too all things considered. I’m sure the early AIBOs were exactly the same.
I am totally impressed with this project as it uses a lot of custom parts and software. From the wireless controller board to the CAD designed chassis to the electronics its all custom built. Just goes to show that even though us Australians live in the geographical equivalent of Tatooine, we can still show em! (Or rather Murray can, my little droid still has smoothing issues with its main distance sensors :) )

Check out Murray’s Quadruped project on GooglePages for all of the info about this project.

Now with FAST!(tm)

Hey guys! I am really happy to let you know that I have moved Ausrobotics off Dreamhost and on to Webfaction. Webfaction are awesome and if I could marry them I would (Or that robot model I saw the other day but don’t let my fiance know. She already thinks I am weird after the whole vacuum cleaner debacle… haha I kid, I kid! :) )

Anyway, you should be noticing a definite speed up in the site starting from 5 mins ago. Before I did the transfer it was taking up to 30 seconds to load the site which is totally unnacceptable! Now it is like a normal site again, whoooooo!

Please let me know if anything is broken and I will fix it asap

Heartbeat

It may not have actuators (yet) but I -guess- it could still be classed as robotic (What is a robot again exactly?). Heartbeat was a project I made over the course of a couple of evenings as a Valentines Day present for my fiancée. It was also a great chance for me to use my AVR programmer for something more than blinking a LED. This time it was going to be used to charlieplex 11 of the suckers!

The hardest part of all of this was the physical construction. The heart itself is made from Das airdry modelling clay (awesome stuff!) and I just modelled it roughly by hand while sitting on my balcony. The clay dried after a couple of days after which I painted it with some darkish gauche paint. Next time I will use acrylic as I think it will stick to the clay better. I only went with gauche because it was cheaper and at the time I was in the middle of a panic about the Global Financial Crisis. :)

Anyway, after the paint dried I applied a gloss to give the piece more of a ‘freshly removed’ glistening appearance. It came out ok but in hindsight I could have probably applied more coats. Then I left it to dry and started on the case.

The case is constructed of expanded foam sheeting from an art store. I just cut it with a Stanley knife and superglued it together. If you dont like the feeling of highly volatile chemicals melting with your brain I would definitely recommend a mask of some sort and glasses to protect you at this point. The superglue basically melts the foam and all sorts of crazy stuff comes off it. My eyes felt a bit grimy for a while after!

Now, onto the electronics… Unfortunately I don’t have the circuit diagram but I can explain it all because it is so straightforward. The powersupply board seen in the pictures connected to the battery is actually a kit I bought ages ago from Sparkfun capable of 3.3 and 5v output. That feeds 5v into the veroboard circuit which just consists of an AVR and some resistors. The AVR is using its onboard clock so nothing else is required. A resistor is connected to most pins (it’s only an 8 pin in total chip) which, through the power of charlieplexing, allows me to control a lot of leds. In this case 11.

The program that controls the pins basically cycles through them and flashes each led on and off for a fraction of a second. There is also fading going on by varying the ratio of off to on. Leave me a comment if you would like to know more.

Unfortunately I killed the battery in it on the second day by leaving it on overnight. The next version will have an auto-off function as well as an awesome laser cut wooden frame from Ponoko to replace the current foam one.

The code is really simple (I have uploaded it to snipplr.com):

Heartbeat
Posted by ausrobotics on March 29th, 2009
The code for my heartbeat electronic sculpture. Built using AVR Studio 4 for the ATiny8.

  1. #include <avr/io.h>
  2. #include <util/delay.h>
  3.  
  4. // Some macros that make the code more readable
  5. #define output_low(port,pin) port &= ~(1<<pin)
  6. #define output_high(port,pin) port |= (1<<pin)
  7. #define set_input(portdir,pin) portdir &= ~(1<<pin)
  8. #define set_output(portdir,pin) portdir |= (1<<pin)
  9.  
  10. #define LON     1
  11. #define LOF     0
  12.  
  13. #define LED_COUNT       12
  14.  
  15. uint8_t led_table[] =
  16. {
  17.         LOF, PB0, PB1,
  18.         LOF, PB1, PB0,
  19.         LOF, PB0, PB2,
  20.         LOF, PB2, PB0,
  21.         LOF, PB0, PB4,
  22.         LOF, PB4, PB0,
  23.         LOF, PB1, PB2,
  24.         LOF, PB2, PB1,
  25.         LOF, PB1, PB4,
  26.         LOF, PB4, PB1,
  27.         LOF, PB2, PB4,
  28.         LOF, PB4, PB2
  29. };
  30.  
  31. void clear_leds()
  32. {
  33.         set_input(DDRB, PB0);
  34.         set_input(DDRB, PB1);
  35.         set_input(DDRB, PB2);
  36.         set_input(DDRB, PB4);
  37. }
  38.  
  39. void set_led(uint8_t index, uint8_t state)
  40. {
  41.         uint8_t i = (index * 3);
  42.  
  43.         uint8_t s  = led_table[i];
  44.         uint8_t p1 = led_table[i + 1];
  45.         uint8_t p2 = led_table[i + 2];
  46.  
  47.         set_output(DDRB, p1)
  48.         set_output(DDRB, p2);
  49.  
  50.         if(state == LON)
  51.         {
  52.                 output_low(PORTB, p1);
  53.                 output_high(PORTB, p2);
  54.         }
  55.         else
  56.         {
  57.                 output_low(PORTB, p1);
  58.                 output_low(PORTB, p2);
  59.         }
  60. }
  61.  
  62. void delay_10us(uint8_t us)
  63. {
  64.         uint8_t delay_count = F_CPU / 2000000;
  65.         volatile uint8_t i;
  66.  
  67.         while (us != 0) {
  68.         for (i=0; i != delay_count; i++);
  69.            us--;
  70.         }
  71.  }
  72.  
  73. void do_pwm_fade(uint8_t index, uint8_t start_duty, uint8_t end_duty, uint8_t rate)
  74. {
  75.         uint8_t duty;
  76.         uint8_t j;
  77.  
  78.         duty = start_duty;
  79.         while (duty != end_duty)
  80.         {
  81.         for (j = 0; j < rate; j++)
  82.                 {
  83.          set_led(index, LON);
  84.          delay_10us(duty);
  85.          set_led(index, LOF);
  86.          delay_10us(255-duty);
  87.         }
  88.  
  89.         if (start_duty < end_duty)
  90.          duty++;
  91.                 else
  92.          duty--;
  93.         }
  94. }
  95.  
  96. int main(void)
  97. {
  98.         // initialize the direction of the B port to be outputs
  99.         // on the 3 pins that have LEDs connected
  100.                        
  101.         while(1)
  102.         {
  103.                 for(int i=0; i < LED_COUNT; i++)
  104.                 {
  105.                         clear_leds();
  106.                         do_pwm_fade(i, 0, 255, 1);
  107.                         do_pwm_fade(i, 255, 0, 1);
  108.                 }
  109.         }
  110. }

robotics documentary on SBS

http://yourtv.com.au/reviews/index.cfm?i=148353

Where’s my Robot?

So where exactly are the genius robots our intellectual forefathers promised us?
This was supposed to be the future. We were supposed to have robots at our beck and call – automated butlers and household servants to make our lives easier. Our cars would drive themselves, much like the autopilot on a plane, and we could just lounge on the seats watching movies on the built-in TV screens.

But none of that has happened yet, nor does it seem likely to happen anytime soon if this mini-documentary is to be believed.

Taking off around the world, comedian and host Danny Wallace travels to the top robot spots to discover just how close we are to getting a walking, talking, thinking, seeing robot to dote over us. As it turns out, making a robot capable of all that is a lot harder than you’d expect – likely ruining the hopes of lazy people everywhere.

This is a fascinating documentary that makes you deliberate over the endless possibilities of robotics. Also to its credit, Where’s my Robot? doesn’t get bogged down in technical details. The scariest thought to come out of it is that if robots do eventually exist and are for all intents and purposes human, where does that leave us?

Where’s my Robot? airs on SBS on Sunday, November 16, at 8:35pm.

Patrick Tangye

Scout with iPhone control

Cool, I finally got Scout running from my iPhone! It was really easy to set up actually once I got the smooth motor control going on the platform itself.

A while ago I bought a copy of the TouchOSC app for my iPhone so that I could mess around with the OSC protocol over my iPhone’s wireless connection. I had already managed to get a Python script to reliably talk to and control the robot using some wireless XBee modules so all I needed was a way to add an OSC server to the script and connect to that using my iPhone.

Here’s a vid of it in action:

Next up is to re-add the front sensor servo and the ultrasonic distance sensor I got last week.

Software used:

 

Twisted Metal

I managed to finally get to RoboWars 6 on saturday and meet some of the guys (and girl) from the RoboWars site . It was great to see a room full of people into robotics as much as I am and I will definitely consider checking out the other comps in other states if they are big enough.

I took my video camera so I’ll be uploading the footage as soon as I deinterlace and upload it (stupid DV tape). I’ll post a full write up of the day then.

Check the RoboWars forums if you want to see the final result of the weekend’s battles. Unfortunately I was too busy on Sunday to make it back in to see the conclusion!

http://robowars.org

RoboWars 6 is on this weekend in Oakleigh, Vic!

Question:

  • Do you like robots?
  • Do you like watching robots destroy other robots for FREE?
  • Do you live near Oakleigh in Victoria, Australia?

If you answered YES, YES, and (YES or NEAR ENOUGH or DISTANCE IS NO OBJECT) to those questions then you better get on down to Oakleigh this weekend because its time for ROBOWARS SERIES 6!!!

I am a stupid idiot face so I haven’t been able to make it to one of these before (I had just finished the Oxfam Trailwalker last time I think) but I have blogged about them before on Ausrobotics.

The event is run by the awesome guys at http://robowars.org. I am looking forward to meeting some of them and the rest of the Australian fighting robot community. Maybe I’ll bring along Mobot and see how long it lasts agains 50000 KILOGRAMS OF TITANIUM AT 500000 RPM!! 

Haha, should be an interesting couple of days. I plan on taking my video camera to capture all the action so expect an in depth breakdown next week.

Are you thinking of going along to RoboWars 6? Let me know in the comments!

http://www.robowars.org/wikka/RoboWars6

http://robowars.org/

http://www.sidetracked.com.au/


View Larger Map

Site news

Hey guys, some good news to report:

 

  • I have started work on a new robot – Still unnamed, mostly to test some motion control ideas I have had
  • I found a way to integrate PunBB with Wordpress so I will upgrade the forums as soon as I can
  • I finally have time to work on some other AR site stuff so I am going to take the chance to add a site search and clean everything up. Hopefully it should make this a bit easier to find previous posts.
PunBB is nice and lightweight, looks like a forum and has all the features you guys want (you know, like ranking etc :) ) so I am looking forward to replacing the current forum with it asap.
Hope you are all well, I’ll post an update on the robot as soon as I get some time!

Just call it a “DistanceHat”…

[Update: 06/01/09]

- Added the source code to my Arduino sketch
- Found some interesting info on linearising the output from the sharp sensors
- Hack-a-day has an article on the very same subject
- I found the SensorWiki – What a great site!

So…

  1. You can’t buy any new parts
  2. You can’t be bothered getting your robot driving around the house
  3. You want a ‘quick win’ to make you feel better about going back to work tomorrow
  4. You just happen to have a Bare Bones Board Arduino clone and an old Sharp infrared distance sensor sitting around

What do you do? Well if you are me you first make this thing and then make a youtube video about it because one of your New Years Resolutions was to “get famous” hehe :)

Anyway, introducing the SUPER-INFRARED-DISTANCE-SENSING-HAT-MO-TRON! — Otherwise known as the DistanceHat.

This is not a difficult project. In fact it is perfectly suited to people starting out with microcontrollers who want to get something done and possibly impress their parents with how smart they are (in my case I told my fiancé that I was curing blindess of course). It does require you to have an Arduino and a Sharp distance sensor but, man, my grandma has that stuff in her house! (Ed: she doesn’t). And anyways this is Ausrobotics, you need to get that stuff STAT!!!

 

So how does it work? Well…

The Sharp distance sensor outputs an analog voltage on its output pin that is related to the sensor’s distance to a surface. This output value seems to be non-linear (although I must admit I did possibly blow the sensor slightly while mucking around beforehand – gulp) and is more accurate at short distances. Also the distance reported can be change depending on the surface itself – reflective objects -may- return misleading values.

The Arduino (in this case a Bare Bones Board Arduino clone from Modern Device Company) reads the voltage from the distance sensor using one of its analog input pins and converts the value into a beep delay value. The distance sensor reports 0 when it is not pointing at anything and approx 600 when it is really close to it so the Arduino code maps the value from this to a more logical 100-10000 value (100 being the closest).

The Arduino basically just sits in a loop reading values from the sensor and then beeping if its loop count is greater than the last saved beep delay or if the calculated beep delay is less than the previous beep delay. The reason I didn’t just sleep() in the loop is because if you move very quickly from far away to close the Arduino may still be sleep()ing and you could run into the wall before it wakes up and recalculates the distance.

[The requested file http://ausrobotics.com/Mods/http://ausrobotics.com/Mods/distance_hat.cpp could not be found]

The Arduino beeps using a piezo buzzer connected to one of its output pins. The code for the beeping is directly taken from from the bottom of the Arduino Playground code here. It also flashes an LED in time with the beeping for extra dork-factor. Whoooooo! I’m a robot!!!

This code/idea is exactly what you would need if you wanted to add distance sensing to your bot. Now that I have cured blindness around the world I will probably finally get around to adding sensors to Cheapo so that it can drive around the carpet and generally be useless. :) Or maybe I will continue to not do that while dreaming of building this.

Let me know in the comments or forums if you want more information on any aspect of this project.

Happy New Year (and Project)!

(and Merry Xmas as well)

Hey everyone! I hope you guys had a great break and got lots of stuff done (robo or otherwise). I could definitely do with another week before going back to work but ah well… I need to make money somehow and my investments in CitiGroup and Ford seem to not be tracking as well as I would like :)

I have been out of the country and away from my computer for most of the break but today I finally found some time to whip a project together. It’s very simple but fun and might interested someone starting out with microcontrollers (in this case it is using a “Bare Bones Board” Arduino clone as the controller) and sensors.

I’ll have to post the actual article tomorrow as I have put together a quick video intro for it and my vid software has decided that rendering black screens instead of video is the way to go.

Here’s a sneak preview of the finished project… Can you tell that I made it in 20 mins??? (ok 25 mins).