Google+
Showing posts with label robots. Show all posts
Showing posts with label robots. Show all posts

Sunday, 22 December 2013

One Pound Fighting Robot, Algos

My latest robotic creation is a 1lb fighting robot that competes under the name Algos. Algos replaces a basic 2 wheel drive wedge robot named Kobalos.

The concept for Algos came about when I decided that I wanted to switch to a robot with an active weapon.

I had a few key requirements in mind when designing Algos-

    It must have an active weapon capable of damaging the opposing robot
    It must be able to fight well even if the weapon is disabled
    It must be capable of absorbing a great deal of damage

These requirements led to a few key decisions. First, the weapon needed to be light to allow for the damage absorption and disabled weapon requirements, so I chose to go with a small diameter, high RPM spinning disk. Second, if the robot is going to be capable of fighting even without the weapon, it needed a passive attack system, which led to the general wedged shape and the use of the same drive system as Kobalos, my old 1lb wedge robot. Third, and finally, being able to absorb large amounts of damage while being light enough to stay within the weight limit meant exotic materials would be needed, so I built the entire robot out of 6al-4v (Grade 5) titanium in 1/16 and 1/32" thicknesses. Luckily, due to the size the material cost for the chassis was only $100 for enough material to build two complete chassis.

With the initial concept determined, the next key thing in the development process is deciding how you will make it. I often see people design the parts, then figure out what tool they need to make them. I typically follow the opposite approach and decide upon the manufacturing method before the first component is modeled.

In the case of Algos, I have chosen to use an abrasive waterjet to manufacture all of the components that are not pre-fabricated. The decision to use waterjet from the start influences many of the decisions made when designing Algos. Using 2d part designs reduces potential tolerance stack-up issues as all of the machining can be done at the same time, by the same machine, on the same piece of material for any given part thickness. Using all waterjet fabrication also means that replacement components are relatively inexpensive due to the minimal material waste and speed at which the parts can be made which reduces both material cost for any given part and reduces labor costs if the parts are being fabricated by a company like http://www.bigbluesaw.com/ or http://teamwhyachi.com/.

Parts List:
Fingertech Robotics-
11:1 Silver Spark Gearmotors (2)
TinyESC v2 (2)
Channel Mixer
Lite Hubs with Lite Flite wheels
http://www.fingertechrobotics.com/

Hobbyking-
Turnigy Park 300 brushless outrunner, 1380kV
Plush12 Brushless ESC
R410 OrangeRX
http://www.hobbyking.com/

Robot Marketplace
Thunder Power 325mAh 3S LiPo - G6 Pro Power 65C Series
http://www.robotmarketplace.com/

Cad Files:
http://nearchaos.net/algosdrawings.rar
This contains .dxf drawings of all of the components made for Algos including both generations of center rails.
Algos has competed in three events so far. At Clash of the Bots 3 Algos went 2-2 with several axle failures. At Dragon*Con Robot Micro Battles Algos placed 3rd with the upgraded weapon system. At the Atlanta Mini Maker Faire in the first Atlanta Robotic Combat event Algos went undefeated to take the 1lb championship. Video of Algos can be found at http://www.youtube.com/playlist?list=PLa4DDbMiSUTUSAMtKEfMFhywgw-Bp6Rv-

Step 1: Component Selection

There are a number of components that I have standardized across all of the 1lb robots I have built in recent years. These components are:

Fingertech Robotics TinyESC v2
http://www.fingertechrobotics.com/proddetail.php?prod=ft-tinyESCv2

The TinyESC is, in my opinion, the best insect weight esc available today. The high voltage capability, current limiting and light weight make it a great option for robots up to 3lbs.

Fingertech Robotics Silver Spark gearmotors
http://www.fingertechrobotics.com/proddetail.php?prod=ft-Sspark16

The Silver Spark gearmotors have proven to be incredibly reliable when combined with lite flite foam wheels. The gearboxes in Algos have been through 5 full tournaments across two robots without failure.

Fingertech Robotics Lite Hubs
http://www.fingertechrobotics.com/proddetail.php?prod=ft-lite-hubs

These are the lightest hub adaptors I know of for lite flite wheels. They're inexpensive and they work well.

R410 4 channel Spektrum compatible receiver
http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=11972

They're light,  tiny, and work with DSM2 and DSMX transmitters.

Kitbots Nutstrip
http://kitbots.com/product.sc;jsessionid=60230E830CD664E6E707AD6291A8BCCF.qscstrfrnt04?productId=17&categoryId=1

It's available in a range of sizes and allows for easy assembly of waterjet cut panels.

For the remaining components on the robot, there was a good deal more decision making to be done. I knew I wanted a high RPM weapon, but with sensorless brushless motors there are occasional issues with starting torque, so a balance of torque and peak RPM was necessary. The style of weapon and motor mounting location also meant it would likely see some abuse, so low cost was a priority. When low cost is the goal, Hobbyking is the go to source for components. I eventually settled on a 1380kV outrunner from Hobbyking (http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=14398 ) for the weapon. At 11.1v, the rated voltage of the 3s lipo I was intending to use, the motor would theoretically spin at 15,318 rpm which works out to a tip speed of around 90mph with the 2" disk.

The motor suggests a 10A rated ESC for typical use, seeing as there was very little weight and size increase, I opted for the 12A Plush12 (http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=2161 ) brushless esc to give extra breathing room on that portion of the electrical system.

There's not really a set rule for battery selection, however with lipo batteries, one goal is typically to not drain the battery completely during a match. Matches for 1lb robots are normally 2 minutes long, so I wanted to make sure the robot would have plenty of battery to last a full two minutes. In combat situations, you have current spikes intermixed with low and intermediate draw periods. The TinyESC's limit each motor to 2.8A each, or 5.6A total. The weapon motor claims 7A peak, so when added together, you have a theoretical maximum draw of 12.6A. If through a strange string of circumstances you managed to stay at peak draw for an entire match, you would need to supply 12.6A for two minutes, which converts to a 420mAh battery ( (1000*Amps required) / (minutes of fight/60) ) however, as this is an extreme worst case scenario, a smaller battery can be chosen. I opted for a 325mAh battery under the assumption that 50% average draw would be an extreme case in actual use. I opted for a high end battery pack in this scale, a Thunder Power 3s 325mAh pack ( http://www.robotmarketplace.com/products/LP-TP325-3SPP65J.html ) rated at 65C continuous output, which translates to 21.1A.

The final piece of the puzzle was the mounting of the weapon disk. There are plenty of options on the market today, after looking at several options I chose to try the lightweight set screw hub from ServoCity (https://www.servocity.com/html/lightweight_set_screw_hub__3mm.html ) and have been pleased with the results.

I use a custom power switch for my robots, however there are several off the shelf switches that have been used successfully and removable links are common in the small weight classes. Fingertech Robotics has been developing a small power switch that should be an ideal solution in the future.

Step 2: CAD Design and Development

The original CAD drawing for Algos was lost to a hard drive failure and the design  had to be redone from scratch. Even with the design being completed once, there still was a great deal to do with regards to design refinement. An additional issue that came up during the design was the original planned weapon motor went out of stock.

The initial CAD model primarily served to create the general shape of the robot. This was the stage in the design where most of the component placement and general geometry was determined, both for the chassis and the weapon system.

The second phase of the design was focused on taking this initial concept and removing enough mass from the chassis to guarantee that it would end up under the 1lb weight limit. During this process, the only area safe from weight reduction was the front wedge, as it was meant to be the primary impact surface.

Shortly after making the final adjustments to the design the motor I was intending to use went out of stock. With an event in the not too distant future, I had to find a new weapon motor and alter some aspects of the design, including the weight of the disk and some of the weapon mount hole locations.

Step 3: Fabrication

The fabrication process was quite simple for Algos. The entire chassis is made of 1/16" and 1/32" thick titanium that is cut on a waterjet. The weapon disk is made from a piece of hardened 4130 steel that was used on the 2nd version of my 12lb robot, Apollyon. Using the waterjet meant I was able to cut the pre-hardened steel disk without altering the temper.

The two main waterjet resources I use are Big Blue Saw (http://www.bigbluesaw.com/ ) and Team Whyachi. (http://teamwhyachi.com/botshop.htm ) They both do very high quality work. One handy thing with Big Blue Saw is that they are set up to provide instant quotes. I do recommend contacting them directly for projects with a large number of different parts that are cut from the same thickness material, as there are likely more economical options than ordering the parts one at a time, as they would not need multiple setup procedures.

Step 4: Assembly

With the Nutstrip, chassis assembly went extremely fast, meaning the majority of the work was wiring. I have included a generalized sketch of the electrical layout of a robot with two drive motors and a single weapon motor. In the case of  the weapon motor on Algos, it was brushless so instead of two wires it uses three, however the rest of the layout is identical.

Algos was a very dense robot and due to that,  I had to shift several components from their intended positions. Initially the plan was to have the majority of the electronic components next to the battery, however with all of the wires there wasn't room for everything. The receiver was relocated to the weapon motor side of the chassis and secured to the side rail to minimize the risk of it coming into contact with the weapon motor. The drive ESC's are wedged between the back armor panel and the drive motors, keeping them in place and minimizing the amount of space they take up.

Step 5: Shaft Replacement and Hardening

Algos went to its first event not long after completing the wiring. With all the armor attached and the systems working, it seemed like it would have a good shot at the event.

Algos went 2-2 at the event, which isn't a bad record for a new robot, however the weapon system just didn't work. The shaft of the brushless motor was steel, however it appeared to be unhardened and had a groove for an E clip cut into it near the front face of the motor. This meant that every good hit resulted in a broken shaft and a disk flying out of the robot. After replacing several shafts I eventually stopped using the weapon.

The question after the event was how to fix it. I decided to take a two part approach to fixing the problem. First, I would add a bearing to the far side to support the shaft on both sides. Second, I would make my own shafts that were longer, didn't have a groove, and were heat treated.

I found a nice length of O1 tool steel on McMaster-Carr for a few dollars and decided that this was a good place to start. Once the material arrived, I cut oversized lengths of O1 to allow it to be sanded to a nice snug fit in the bearings and outrunner can. After checking all of my fits, I picked up a steel can and some 30wt oil based upon the suggestions athttp://hocktools.wordpress.com/2011/01/31/diy-heat-treatment-of-tool-steel/ on DIY heat treating.

Each shaft was heated to a bright orange using a torch then dropped lengthwise into the oil bath. After cleaning off the shafts I did a quick test hit on a spare piece to see how hard the shaft had gotten relative to an annealed piece of O1. The annealed piece bent 90 degrees, the hardened piece snapped off very cleanly. The second stage of the process was tempering. The three shafts and test piece were placed in an oven at somewhere between 450 and 500 degrees F and left to soak for 45 minutes.

The new shafts were pressed into the motor cans and everything appeared to be working well.

Step 6: Remade Components and Titanium Anodizing

At the first event, the center rails of the chassis had taken several large impacts and were bent badly. They also weren't sized for the 3mm ID bearing I was intending to use, so they were remade. In the CAD files on the first page I have both center rails included. The new rails had less weight reduction, as I knew how much weight margin was available. This meant they would be much stronger without risking putting the robot over the weight limit.

While I had the bot disassembled, I decided to try some titanium anodizing based off of the methods in this instructable- http://www.instructables.com/id/Anodize-Titanium/

I used a string of 12 9v batteries in series and some foam soaked in Coke Zero along with a bit of electrical tape to anodize the front wedge. Later I did the same with the internal rails, but instead submerged the titanium into a small pool of Coke Zero to get a more even coating.

Step 7: Last Notes

It took a few events, but Algos is working how I wanted it to at this point. It went undefeated in 6 matches at its most recent event, taking the 1lb championship at the first ever Atlanta Robotic Combat event which took place during the Atlanta Mini Maker Faire.

For the moment, I'm intending to leave Algos as is. I'm sure at some point something will happen that will require another design tweak but until that time, I consider Algos to be complete.
Read More


Robotic Spider V8

I needed a project that would use all my servos, so I decided to make the do-nothing, worthless spider. If you have fischertechnik and servos to waste, this is the project for you! Really, this flopping spider makes for a great learning project. The main goal of this project is to teach the fundamentals of servos, synchronizing them, programming them, and understand the range and strength of servos. The results are very amusing!

Fischertechnik? What's that?
Legos have bricks, K'NEX has blue and yellow connector rods, but what does fischertechnik have? In truth, it has way too many pieces to give names to! Fischertechnik is definately not as popular as legos or K'NEX, but I like it much better. It's very good for exercising building and construction skills. Here is an excerpt from Wikipedia on fischertechnik
"Fischertechnik is a brand of construction toy. It was invented by Artur Fischer and is produced by fischertechnik GmbH in Waldachtal, Germany. Fans often refer to Fischertechnik as FT or ft. It is used in education for teaching about simple machines, as well as motorization and mechanisms. The company also offers computer interface technology which can be used to teach the theory of automation and robotics."
I will be calling fischertechnik FT as mentioned above.

Here's a video of it walking.



Step 1: Ingredients:

Tools:
  • Hot glue gun
  • Razor blade
  • Philips Screwdriver
  • Drill with 7/32 drill bit
  • Dremel with very tiny drill bit (a little bit smaller than the screws that come with the servo)
Electronics:
  • 6 AA battery pack and alligator clip
  • 8x micro servos and attachments
  • 30+ jumper wires or pin headers.
  • Breadboard
  • Arduino and power
Parts:
  • Fischertechnik

Step 2: Building the Frame

Since I don't know what to call the FT pieces, I'll just show the pictures to building the frame. Make sure to look at the captions.
Assuming you have fischertechnik, you can just tell what pieces I'm using to build this. I'm sorry I can't offer much more of and explanation!


Step 3: Mounting the Servos

Now get out your dremel! The servos conveniently fit between the 'bricks'. Drill a small pilot hole, then using the screws the servo came with, screw them in. If you don't want to screw into you pieces, that OK, just use some hot glue, but, it's always easier disassemble if you use screws. Note: You will want to screw these on BEFORE you put on the arms, or else the arm will be in the way of your screw making it difficult. And why do I know this? I'll let you guess =) Repeat this on the other side. 

Step 4: Mounting the Servos on Servos

You will first need to screw on the circular servo attachment. If the servo is facing away from you, turn it all the way to the right. See pictures.

Now the circular servo arm is different from the other arms; the screw sticks up above the plastic unlike the other ones, which the screw head sinks below the plastic. So, with  this bump in the middle, a flat surface cannot be mounted totally flat, instead it will wobble and pivot around the center. To fix this, I'm taking a 7/32 bit (one size smaller than 1/4 on a standard drill set) and drilling a small indent on the servo that will be glued on top of the base servo. See pictures. Then using hot glue, glue the two servos together.

See video.





Step 5: Mounting the Spidey Legs!

This part is little tricky. I'm going to put a little video up to kinda help you understand how to mount the arms. See the pictures how to make the arms. You will need four of these.  See the video in step 4 for glueing these on. 

Step 6: Seeing it all Together

After you mounted all the arms you will want to check them for full range of motion.

Step 7: Creating a Diagram For Reference

Now, this is the most helpful step of all. Create a diagram like the one shown in the picture, and figure out for each servo which way is 180 deg. and which is 0 deg.. Then number all the servos. These numbers are what you will be using in your Arduino program. 

Step 8: Breadboarding

Pull out all 30 of your jumpers! Wire up everything according to the schematic. Here's how it works. Each servo has 3 output wires, power, ground, and control. Connect the Vcc and GND from servo to the Vcc and GND rails of your breadboard. Connect the 7.5 volts from your battery pack to the GND and Vcc rails of your breadboard. (Since most battery packs are for 6 AA, take out one of the batteries and use a jumper to bypass it. This will then give you 7.5 v instead of 9v.) Then, following your diagram you made earlier, connect the servo control wires (yellow or orange, I've even seen white) onto pins 2-9.  For instance, servo 1 is connected to pin 2 on Arduino. Servo 2 is connect to pin 3 and so on.

Step 9: Aligning the Servos

Now, here is the time to work out the code. The first thing to do is to make a new Arduino project called, Aligning Servos. In this project, you will align all the servos. So, what you need to do is to find out what degrees (1-179) you need to type in to make the up and down servos (the servos on the top with the arms connected) level with the ground. Then, get the left and right servos (the servos on the bottom) level as well, having the stick straight out. Lets examine the code.
Then, look at the second picture in this post to see what this code does for my spider.
#include<Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
Servo servo7;
Servo servo8;

void setup()
{
  servo1.attach(2);  // s is on pin 8
  servo2.attach(3);
  servo3.attach(4);
  servo4.attach(5);
  servo5.attach(6);
  servo6.attach(7);
  servo7.attach(8);
  servo8.attach(9);
 
}

void loop()

{
                    // all the motors level fowards and backwards
  servo1.write(15);
  servo2.write(100);
  servo3.write(179);
  servo4.write(95);
  servo5.write(160);
  servo6.write(140);
  servo7.write(15);
  servo8.write(85);


 }


Step 10: Up and Down

You will now need to find out the values for making the legs actually lift the spider off the ground. Make a new project called Up and Down. This project make the legs of the spider move up and down. Notice the opposites will lift up first. See video.

And here is the code I used. Yours may be similar.
#include<Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;                      
Servo servo7;
Servo servo8;

void setup()
{
  servo1.attach(2);  // s is on pin 8
  servo2.attach(3);
  servo3.attach(4);
  servo4.attach(5);
  servo5.attach(6);
  servo6.attach(7);
  servo7.attach(8);
  servo8.attach(9);
 
}

void loop()

{
  servo2.write(100); // these numbers are to keep the spin servos put.
  servo4.write(95);
  servo6.write(140);
  servo8.write(85);

  servo1.write(50); // M1 Up
  servo7.write(50); // M1 Up
  delay(500);       
  servo1.write(25); // M1 Down
  servo7.write(35); // M7 Down
  
  
  delay(1000);
  
  servo3.write(135); // M3 Up
  servo5.write(120); // M5 Up
  delay(500);
  servo3.write(150); // M3 Down
  servo5.write(140); // M5 Down
  
  delay(1000);
  
  
 }

Step 11: Forwards and Backwards

Now we will need to get the pan servos to pull forward, and push back.
Here is the code I used. Yours may be similar. When your done it should look like this. . .



#include<Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
Servo servo7;
Servo servo8;

void setup()
{
  servo1.attach(2); 
  servo2.attach(3);
  servo3.attach(4);
  servo4.attach(5);
  servo5.attach(6);
  servo6.attach(7);
  servo7.attach(8);
  servo8.attach(9);
 
}

void loop()

{
  
  servo2.write(80);  // M2 foward
  servo8.write(120); // M8 foward
  delay(500);
  servo2.write(120); // M2 backwards
  servo8.write(90);  // M8 backwards
  
  delay(1000);
  
  servo4.write(120); // M4 fowards
  servo6.write(110);  // M6 fowards
  delay(500);
  servo4.write(80);  // M4 backwards
  servo6.write(140);  // M6 backwards
  
  delay(1000);
  
}

Step 12: Combining

Now, you  need to combing the forwards and backwards with the up and down to make it walk.

#include<Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;                     
Servo servo7;
Servo servo8;

void setup()
{
  servo1.attach(2);  // s is on pin 8
  servo2.attach(3);
  servo3.attach(4);
  servo4.attach(5);
  servo5.attach(6);
  servo6.attach(7);
  servo7.attach(8);
  servo8.attach(9);
 
}

void loop()

{
  servo1.write(50); // M1 Up
  servo7.write(50); // M1 Up
  delay(500);
  servo2.write(80);  // M2 foward
  servo8.write(120); // M8 foward
  delay(500);
  servo1.write(25); // M1 Down
  servo7.write(30); // M7 Down
  delay(500);
  servo2.write(120); // M2 backwards
  servo8.write(90);  // M8 backwards
  

  
  servo3.write(140); // M3 Up
  servo5.write(120); // M5 Up
  delay(500);
  servo4.write(120); // M4 fowards
  servo6.write(110);  // M6 fowards
  delay(500);
  servo3.write(160); // M3 Down
  servo5.write(145); // M5 Down
  delay(500);
  servo4.write(80);  // M4 backwards
  servo6.write(140);  // M6 backwards
  
 }


Step 13: Conclusion

Unfortunately, I wanted to call this the robot spider, but I couldn't really, because it doesn't react in any way with it's environment. I guess you could add some sensors or something like that, but this project really isn't mean't for that. I hope you enjoyed my instructable and If you have any questions or comments please post in the comment box below and I will attempt to answer them as best as I can!
Read More


Join Us

//go.ad2up.com/afu.php?id=25365

© Copyright 2012, Design by Lord HTML.