Salvius Robot Project: March 2012

Salvius Robot Project

The Open Source Humanoid Robot

proof:pdf xmp.did:F87F11740720681180838E4FEC0BBEE0 xmp.iid:F87F11740720681180838E4FEC0BBEE0 uuid:a82416aa-8f86-e849-8a8d-10757c227e64 xmp.iid:F77F11740720681180838E4FEC0BBEE0 xmp.did:F77F11740720681180838E4FEC0BBEE0 uuid:a82416aa-8f86-e849-8a8d-10757c227e64 proof:pdf saved xmp.iid:F77F11740720681180838E4FEC0BBEE0 2011-07-15T18:59:45-07:00 Adobe Illustrator CS5 / saved xmp.iid:F87F11740720681180838E4FEC0BBEE0 2011-07-15T19:12:41-07:00 Adobe Illustrator CS5 / 2011-07-15T19:12:41-07:00 Adobe Illustrator CS5 2011-07-15T19:12:41-07:00 2011-07-15T19:12:41-07:00 256 256 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FVOa4ghFZXCex6/diqDk1qHpDG0h8fsjFUM+p37/Z4Rj2FT+NcVUWmvHNWuH37KeP6sKqZi B+0zN8zirvQj8MVd6EfhirhFT7LMvyOKqqzXiGq3D/7I8v14qqpqd+n2gkg+4/hTAqJj1mA7TI0R 8ftD8P6YqjYriGYVicOPY7/diq/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqh7m/t rfZ2q/ZF3OKpdNqN5Nsv7lPbdvvxVDCNa8m+Jj1LbnCq7FXYq7FXYq7FXYq7FXYq7FXYqt9Na8lq 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 Adobe PDF library 9.90 image/svg+xml 1 False False 130.000000 130.000000 Pixels Cyan Magenta Yellow Default Swatch Group 0

image/svg+xml

image/svg+xml

Remote H-Bridge motor control

(No comments)

The assortment of wires cascading over the robots arms as I work in this H-bridge.
I have been trying to solve a control issue over the past few days involving controlling the robot's left arm which uses a 12 volt windshield wiper motor. The motor does not receive enough power from the small, temporary RF controller I am using to test the connections to all the motors. I want to have the robot ready for a full mobile demonstration before this June but at this point I will be cutting a few corners to get it to work. Then again the whole point of this robot is to be able to do what you can with whatever is available.

Anyway, today I am figuring out how to set up some sort of control that will allow me to control the 12 volt motor with a very low voltage controller. I am using two relays and I plan on setting up some sort of an H-bridge setup so that the motor's polarity can be reversed. Unfortunately this has turned out to be more difficult than I had originally thought it was going to be. The controller I am using is designed to control one motor with forward and reverse polarities. I need to use the controller to close each relay based on polarity so I will probably also need a few diodes as well (big ones to handle the voltage). Next the relays will have to close one at a time to switch between two sets of wires that will be wires to opposite sides of the battery so that when the opposite relay goes on the motor will reverse.

This all seemed simple enough to me at first but then I realized that I needed the power to the motor to be able to be turned off as well so that the arm could stop moving! I still want to try to stick with only two relays so I will post an update in a few days when I figure out how exactly I am going to do this.

Ethernet Shield Power Drain [SOLVED]

(1 comment)

I have found that the Arduino Ethernet Shield has an issue where there is a power drop once it is plugged into the main Arduino unit. The voltage drop is due to the fact that power is fed from the Arduino to the Ethernet Shield through the cascading pins that the two devices share. To solve this problem I have switched out the battery pack that I was using with a larger 12 volt one that seems to have enough power to keep the Arduino and the Ethernet Shield both working. Hopefully this will be enough for now to power everything because the Arduino is also connected to a motor controller and a relay shield. The motor controller and the relay shield both have options for adding an external power source so perhaps I will need to power them separately from the Ethernet shield and the Arduino.


Grove I2C Motor Driver Setup and Example Code

(4 comments)

After much deliberation I was finally able to get my Grove I2C motor driver and its example code working. I had originally had problems compiling a set of example code that I found online but now I have fixed the code. Also I have made a drawing showing how to connect the Grove I2C Motor Driver to an Arduino Uno. It seems that very few people have made tutorials on this controller other than the wiki page which has just a lot of technical information which is great but for people who don't want all that extra information I have made this short tutorial. I kept it short sweet and to the point so hopefully if you are trying to use one of these controllers you will be able to use the information on this page.

Setup:
(CLICK TO VIEW IMAGE LARGER)

The example code bellow should simply make the motor spin and then reverse directions repeatedly.
Additional help can be found here:
http://www.seeedstudio.com/wiki/index.php?title=Grove_-_I2C_Motor_Driver
http://www.seeedstudio.com/forum/viewtopic.php?f=17&t=2935
http://www.arduino.cc/en/Reference/Wire

Working Code Example:



#include <Wire.h>

//#define MOTORSHIELDaddr   0x0f
#define SETPWMAB          0x82
#define SETFREQ           0x84
#define CHANGEADDR        0x83
#define CHANNELSET        0xAA
#define MOTOR1            0xA1
#define MOTOR2            0xA5
#define SAVEADDR          'S'
#define NOTSAVEADDR       'N'
byte val = 0; // I put this here to replace the "Wire.write(0);"

static unsigned char MOTORSHIELDaddr = 0x28;

void speedAB(unsigned char spda , unsigned char spdb)
{
  Wire.beginTransmission(MOTORSHIELDaddr); // transmit to device MOTORSHIELDaddr
  Wire.write(SETPWMAB);        //set pwm header
  Wire.write(spda);              // send pwma
  Wire.write(spdb);              // send pwmb  
  Wire.endTransmission();      // stop transmitting
}

void fre_pre(unsigned char pres)
{  
  Wire.beginTransmission(MOTORSHIELDaddr); // transmit to device MOTORSHIELDaddr
  Wire.write(SETFREQ);        // set frequence header
  Wire.write(pres);           //  send prescale
  Wire.write(val);            //  need to send this byte as the third byte(no meaning)
  Wire.endTransmission();
}

void change_adr(unsigned char new_adr, unsigned char save_or_not)
{
  Wire.beginTransmission(MOTORSHIELDaddr); // transmit to device MOTORSHIELDaddr
  Wire.write(CHANGEADDR);        // change address header
  Wire.write(new_adr);              //  send new address
  Wire.write(save_or_not);          //   save the new address or not
  Wire.endTransmission();    //
  delayMicroseconds(100); //this command needs at least 6 us
}

void channel(unsigned char i4) //0b 0000 I4 I3 I2 I1
{
  delayMicroseconds(4);
  Wire.beginTransmission(MOTORSHIELDaddr); // transmit to device MOTORSHIELDaddr
  Wire.write(CHANNELSET);        // channel control header
  Wire.write(i4);                // send channel control information
  Wire.write(val);               // need to send this byte as the third byte(no meaning)
  Wire.endTransmission();
}
void motorAndspd( unsigned char motor_s,unsigned char Mstatus, unsigned char spd)
{
  Wire.beginTransmission(MOTORSHIELDaddr); // transmit to device MOTORSHIELDaddr
  Wire.write(motor_s);        // motor select information
  Wire.write(Mstatus);        // motor satus information
  Wire.write(spd);            //  motor speed information
  Wire.endTransmission();
}

void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
  delayMicroseconds(10); //wait for motor driver to initialization
}

void loop()
{

  motorAndspd(0xA1,0B01,225);
  motorAndspd(0xA5,0B01,30);
  delay(2000);

  motorAndspd(0xA5,0B10,225);
  motorAndspd(0xA1,0B10,30);
  delay(2000);

  change_adr(0x12, NOTSAVEADDR );
  MOTORSHIELDaddr = 0x12;

  for( int i = 0;i< 16;i++)
  {
    fre_pre(i);
    channel(i);
    delay(100);
  }
  speedAB(100 , 100); // was 0 , 0
  change_adr(0x28,NOTSAVEADDR );
  MOTORSHIELDaddr = 0x28;

  while(1)
  {
    channel(0b00001010);
    delay(500);
    channel(0b00000101);
    delay(500);
  }
 }


Robot-Human handshake

(No comments)

The first robot-human handshake for Salvius
I have been working on hooking up some controllers that will allow the robot to be remotely operated. I still need to figure out how to get the code to control the motor controllers to work but for now I can control the arm motors over a standard radio frequency. For the motor controller that controls the wheels I am using a Grove I2C dual h-bridge motor driver which had been a bit complicated to use. At first I was unable to even get the sample code to compile because the sample code was written in an earlier form of the Arduino IDE than the one that I am currently using. I fixed that by adding a integer variable (int) that sent a value to the motors. Once I got the code to compile I had trouble trying to get the controller to even turn a motor which ended up being due to a problem with my DC power supply that I was using to test the controller which had very low amperage. I replaced the DC power supply with a 9 volt battery and a smaller motor which seems to be working fine. The only problem that I have left to solve is the voltage drop I get when I connect the Ethernet Shield to the Arduino because without enough power the Arduino does not send the motor information to the controller.

I will be sure to include the video with sound that I used to make the above animated gif in my next video but for now I wanted to see how an agif image would look. To convert the short movie I made into an animated gif I used gifninja.com but I had a bunch of trouble using it. After cropping, resizeing and converting my video from .mov to .avi I finally got it to convert to gif correctly. In between I had all sorts of problems with the video being too large or it ending up looking distorted after gifninja converted it to gif.

Just some recent pictures

(No comments)

I have a lot of plans to get the robot mobile and to hook up some controls so that a person can operate it remotely. Here are a few recent pictures I took:




Robot signed by Dean Kamen

(No comments)

These are some pictures from when I was visited the Connecticut Science Center a few weekends ago and they had a display set up with a FRC robot that went to the championships in 2001. Usually I don't write articles about anything unless it has just a slight relation to Salvius but I have decided to make an exception because I thought it was cool that the robot was signed by Dean Kamin who founded the FIRST robotics competition and invented the Segway.
Signed: Dean Kamen


The sign in front of the robot reads:
"Duncan"
Old Lyme High School's Techno Ticks
This 2001 Championship Division Finalist won a place in FIRST Robotics Competition history by racking up points in the game Diabolical Dynamics. Vying against other remote-controlled robots, Duncan's alliance bested other teams by landing more large and small balls in their opponent's 7-foot high goal, shooting over a randomly tilting bridge that bisected the rectangular playing field.

The Techno Ticks have been bringing FIRST glory back to Old Lyme ever since winning the 1999 New England Regional Rookie Award.

Robot and Chicken

(1 comment)

Alright, so I have been trying to get an example program to work that will allow me to use an I2C motor driver with my existing Arduino. The example program that I found online is still coming up wit errors on compilation and I am only somewhat sure that I have all my hardware hooked up correctly.

While I try to figure out whats going on there I have come up with a quick photographic opportunity that probably only a small portion of audience will appreciate. Here it goes...

Salvius the robot & creator presents:
Robot and Chicken!

I will admit this is pretty bad but when talking with some friends about the comedy Star Wars spoof "Robot Chicken" I couldn't help but think of this.

Hopefully I will get that motor controller working soon because I am running out of stupid robot tricks to blog about!

Here is a few more shots I took (click photos to view them larger):




Just to clarify, my combination of a robot and a chicken in these photos is a parody of a parody called "Star Wars Robot Chicken" published by Adult Swim.

Making Salvius

(3 comments)

Once in a while I like to make a post that somewhat summarizes the progress of the robot up until a recent point in time. I have made my most recent post in the form of a video. Enjoy!


What I really wanted to capture in this video was how much the robot has changes since I started building it. I realize that an important part of the design process is planning and I did do a lot of planning. What I didn't account for was the resources that I have available to devote to robotics and as I have gained more parts and learned more about engineering and programming the robot's design has improved.

When I first started building the robot I didn't even have access to a working internet connection. At that time I would never have dreamed of starting a website and releasing the robot's code as open source. Today I find it very exciting to be able to share what I have learned with people all over the world. I get hundreds of hits on this site every day and they come from every country on earth. This project continues to grow in popularity each month and I cant wait to see where it will go next.

Arduino Ethernet shield illustrates inner workings of servers

(4 comments)

Arduino Ethernet Shield
With the Arduino Ethernet shield that I recently purchased I have been doing a lot of programming involving making a web page. The pages that I have programmed are somewhat simple and use all of the usual HTML tags but since i'm not using any server at all this has been very interesting. My current setup for the arduino web server on the robot is using the Ethernet shield as an adapter to send the code over the internet via a wireless router. Why I think this is so cool is that it is just like a real server in the sense that it is giving information to a user's computer. I have set up servers before and I have designed web pages to go on them but part of programming them to run from the arduino shows something that most people never think of. When you learn how a website works; how a server sends the information to your browser you don't usually think about what it takes beyond a few HTML and PHP files to generate the webpage that you are looking at. With the arduino relay shield you can see in the code that it really is sending the information.

This is a sample of the code that I have been talking about:


   client.println("<html><head><title>arduino web page</title></head><body>");
   client.println("<h1>Example Web Page</h1>");
   client.println("<p>This is some page text.</p>");
   client.println("<p>You should visit http://salviusrobot.blogspot.com for more information.</p>");
   client.println("</body></html>")

This code is sent by the Arduino and received by a user's browser and is indistinguishable from any other webpage that could be displayed by a real server. I thought it was interesting because the " client.println " part that tells the Arduino to send the code to the user's browser is actually visible. Normally servers handle these requests using separately installed software but with the Arduino it is actually the worlds smallest server!

Glossy and 3D Arduino Logos collection

(2 comments)

I was doing some experimenting today with Gimp. Gimp is a great and free alternative to applications like Adobe Photoshop. I have been meaning to make a "Powered by" button for Arduino products since I just so happen to have a six foot tall humanoid robot that uses one. For all its worth the Arduino that Salvius uses as a brain is probably the most important piece of robotic hardware that I have. And so... that leads me into this: my new "Powered by" button for Arduino products:
Powered by Arduino button made with Gimp

 I was very happy with how the glossy effect of the button came out. After I finished I decided to experiment with adding some different gradients to the arduino logo to make it more interesting:

Original Arduino logo

Arduino logo with a light colored gradient

Arduino logo with blue to red gradient

Arduino logo with black to red gradient.

I thought that the gradients were a nice touch. I used the light colored one on my "Powered by" button. As for the others I was trying to place the colors in relation to the positive and negative polarity symbols. The last thing that I tried was adding a bevel around the edge of the logo so that it would have a 3D appearance.

3D Arduino logo


Also feel free to use any of these for your own purposes, hopefully you can get some good use out of these graphics if you are doing a project with an Arduino Product.

Please note that the Arduino logo is a Trade Mark of Arduino which has no affiliation at this time with the robot that I am building and writing about on this site.

Starting an open source project

(No comments)

Salvius the open source
robot
You may already be aware Salvius is an open source robot currently released under a Creative Commons Attribution 3.0 Unported License. All of the robot's source code if freely available under the downloads label on the left sidebar. One of the benefits of any open source project is that anyone can modify the existing material to fit their own needs. Open source programmers also don't have to worry about their code leaking out onto the internet because for them it is actually a good thing. Having lots of people continuously using and modifying the code for a project and posting it on other sites helps to fix bugs that a programmer may not see at first. Sometimes it takes a second set of eyes to find a problem because in our minds we automatically correct our own work because we know what it should look like. You may also find that someone thinks of a more efficient way of doing something since in programming there is almost infinite ways to solve any problem. What a good programmer will do is write code that solves a problem using the least amount of steps and the least amount of processing power.

Starting and sustaining an open source project are two completely different things. To start an open source project you need a website where people can learn about the project and gain access to the source material. Running an open source project usually involves creating a forum or some sort of social medium where people can share, comment on, or submit code. In order to sustain your project it is important to set goals for what you want your project to be able to do. As an example I set many goals for what I want my robot to be able to do. Some of the goals I am just within a hairsbreadth of accomplishing and others may take me many more years.

I did a search online to find out what other people have to say about starting a good open source project. This is what I came up with:

"You must be wary of the term "Open Source Community" because no such community exists. Instead there are thousands of individual communities. Yes, many people participate in several communities, but no one participates in all, and most don't participate so much as watch. Like any good spectator sport though, it's always more fun to play than to watch" (fishybell from http://ask.slashdot.org)

"open source enables is the aggregation of passionate users that can make tweaks that support their own vision and requirements for a product. The ability to look under the hood and make changes/ additions and then contribute the modified code back to the community creates an effect where the code becomes progressively more useful over tim" - (Vijay Goel http://www.innovationinthecrowd.com)
"Learning what it takes to create and grow an open source project is trapped in the brains of many people. Many people want to know what makes a project tick, how it actually gets things done." - (Karsten Wade from http://www.socallinuxexpo.org)