Zezinho, the poser

This is Zezinho, a humanoid robot that likes to pose! :)

All the microservo supports where made with the amazing material Polymorph.

For now he is being controlled by 8 analog inputs, each input controls one microservo. In the future (as I hope) he will be controlled by a computer vision system where he will try copy real human poses in real time.
I’m still programming servo control functions and movements presets.


This is the analog inputs setup and a custom servo shield.

I’m using an Arduino Mega because I need more than 6 analog inputs that the regular Arduino boards have and I don’t have the time (or should I say patience) to digg around multiplexers.. I’m very lucky to have the support of InMotion.pt, they sent me the Arduino Mega for the first test drive. Thank you so much Filipe!! ;)

This robot will also be my final project for the course ‘O Som do Pensamento’. It will be an instalation where the user will be able to control his poses with physical controllers. I’ve made a controller box in acrylic and will post photos as soon as I have it with me.

Playing with movements and poses.

Testing movements and different servo speeds.

________________________________________________________________
Update (21.08.09)
Other posts related to Zezinho:

Experimental video made for OddBot robot competition:
http://lab.guilhermemartins.net/zezinho-meets-el-sapatero/

Zezinho, the Poser interactive installation:
http://lab.guilhermemartins.net/zezinho-the-poser-installation/

Filtering servo movements:
http://lab.guilhermemartins.net/filtering-servo-movements/

Ratazana drifting

I´ve been quite busy with the motor of this robot and I already started to have some of the results I wanted, but I still couldn´t find a stable setup, after a couple of drifts it starts to lose power as you can see by the end of the movie.

Besides this, I like the way it moves, and I can have some control when it´s drifting, it is now my anti-stress toy!!! :)

I have also made some major updates to the arduino circuit board. As you can see in the photo below, I finally have figured out how to upload code to a custom arduino board, (this post describes everything related to this), added capacitors to the L293D, added pins for the ladyada xbee adapter and also added pins for the sonar sensor.
To upload code, I have to add a switch button, to change the rx / tx wires from the xbee to the ftdi cable :)

Continue reading Ratazana drifting

Robotic articulation prototype with Arduino

This is the result of a couple of tests with recently arrived microservos + Arduino programming + polymorph shaping technics + recently build G’Remote :-)

I don´t have any specific application in mind for this, the main purpose is to learn and test new concepts of mechatronic articulations, and to get used to polymoprh of what I became a big fan.

(sorry for the low light condition video, will make a better one)

bigbro

After completing the new motor driver board, now I feel ready to continue with the development of this bot..

For now it´s just remote controlled, but it will have some intelligence soon.
I will try to add microphones and use them as sound sensors. If I add for example 4 microphones, one on each side of the bot I could detect where does the sound come from and make it move in that direction, then add a couple of distance sensors to avoid obstacles..

My living room seems to be too small to drive this bot..

see it on MAKE :]

Control your motors with L293D

After long research and trial and error,  I´ve came up to a new walkthrough regarding this nice chip, the L293D.
Each project is one project and each one has its own unique power configurations, so you must be aware of the best battery choice and how to distribute voltage through your robot.

I strongly advice you to read the following articles:

Picking Batteries for your Robot
Once you’ve decided on batteries, how do you regulate the voltage

************************************************

L293D gives you the possibility to control two motors in both directions – datasheet

************************************************

The L293D Circuit:

Basic Implementation:

This is the most basic implementation of the chip.

As you can see, a 5V Voltage Regulator is between the battery and pins 1, 9, 16.

Pin 8 gets power before the VReg, if your motor needs for example 6V you should put 6V directly in this pin, all the other pins should not get more than 5V.

This will work with no problem at all, but if you want to do the right implementation take a look at the next example:

This is the correct Implementation (with the capacitors), and note that pin 8 is feeded by unregulated voltage. This means that if your motors need more than 5V, you should power this pin with that amount of voltage, and the rest of the circuit with 5V.


The capacitors stabilize the current.

The same circuit on a breadboard:

Soldered on a pcb and ready to go:


This is the back of the circuit, click for high resolution photo.


// Use this code to test your motor with the Arduino board:

// if you need PWM, just use the PWM outputs on the Arduino
// and instead of digitalWrite, you should use the analogWrite command

// —————————————————————————  Motors
int motor_left[] = {2, 3};
int motor_right[] = {7, 8};

// ————————————————————————— Setup
void setup() {
Serial.begin(9600);

// Setup motors
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
pinMode(motor_right[i], OUTPUT);
}

}

// ————————————————————————— Loop
void loop() {

drive_forward();
delay(1000);
motor_stop();
Serial.println(”1");

drive_backward();
delay(1000);
motor_stop();
Serial.println(”2");

turn_left();
delay(1000);
motor_stop();
Serial.println(”3");

turn_right();
delay(1000);
motor_stop();
Serial.println(”4");

motor_stop();
delay(1000);
motor_stop();
Serial.println(”5?);
}

// ————————————————————————— Drive

void motor_stop(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);

digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
delay(25);
}

void drive_forward(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);

digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}

void drive_backward(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);

digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}

void turn_left(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);

digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}

void turn_right(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);

digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}

***********************************************************************************************
update 26/4/09
***********************************************************************************************

My 1st instructable  :)


Control your motors with L293D and ArduinoMore DIY How To Projects