Season 3 : Ep. 2 | 3:54
Who wants to incorporate touch sensors when you can incorporate force sensitive resistors? In this episode we start to explore a force sensitive resistor for the DogBot!
Sunday, October 28, 2012
Sunday, October 21, 2012
tv: Season 3 Begins
Season 3 : Ep. 1 | 2:47
I introduce my new workshop in this episode.
I introduce my new workshop in this episode.
Wednesday, October 17, 2012
RepRap: Unboxing
As you know, I moved recently. I don't have many possessions, but one of my most prized possession is my 3d printer. I mean, I printed it myself on a printer I made by hand using primitive wood tools. I could make another one, but I don't want to start from scratch again! I'd rather use the printer I have to print my next one. So when I was packing up my small apartment I took extra care to pack my printer.
I then wrapped the box in a whole roll of plastic moving wrap.
And if anyone forgot what was in the box I labeled it properly!
This box was the printer's home ever since. I needed time to move in and set up my workshop before I wanted to risk stripping off the cocoon. But today was the day!
And here it is getting acquainted to its new home!
Does it still work? I hope so! I don't have time to plug it in...
I made a box out of it.
I then wrapped the box in a whole roll of plastic moving wrap.
And if anyone forgot what was in the box I labeled it properly!
This box was the printer's home ever since. I needed time to move in and set up my workshop before I wanted to risk stripping off the cocoon. But today was the day!
And here it is getting acquainted to its new home!
Does it still work? I hope so! I don't have time to plug it in...
Thursday, September 13, 2012
Dogbot: A Threshold
If you've ever read anything by Joseph Campbell you'll be introduced to the motif of the threshold, e.g. Adam biting the apple or King Arthur pulling the sword from the stone. This motif, or theme, is quite prevalent. You have passed over the threshold, the line in the sand, and you will never be the same person again.
That is how I feel right now. I feel that I am passing over a threshold as I hold in my hand a parcel who's contents change... everything. I haven't opened it yet because I'm basking in the moment.
Before I open this box I am a computer programmer, and an Arduino / micro-controller programmer. After I open this box I am also inevitably an embedded linux programmer. You may ask yourself "What's the difference?" I will try to explain.
Embedded linux brings to robotics a level of computing power 10 to 100 times that of hobby micro-controllers. It also brings a suite of tools that is growing so quickly that it's almost impossible to stay on top of! Embedded linux will change hobby robotics drastically in the next few years! I would have made this move to embedded linux a year ago if I had a reason, but the added power seemed overkill. Now it's exactly what I need.
Box opened... Insert BeagleBone!
It's true that an Arduino can pull in 44 sensor values and use them to calculate 16 servo angle values in real time, but how complex of a calculation will it be capable of making? An Arduino Leonardo operates at 16MHz, vs. 720MHz for a BeagleBone. An Arduino Leonardo has 2.5KB of RAM, vs. 256MB of RAM on a BeagleBone. Finally, an Arduino Leonardo has 32KB of storage, vs. 4GB for a BeagleBone. These are really powerful stats! In other words the amount of intelligence that the BeagleBone is capable of putting into its calculations is close to or much greater than 50 times that of an Arduino. This is the difference between the very mechanical technology of a Model T and the modern computer controlled vehicles with Electronic Stability Control.
Don't get me wrong. I'm still using an Arduino in the Dogbot, right next to the BeagleBone. Arduino is a powerful platform. It has an important place in hobby robotics. That's why I'm using both!
On a final note... isn't the Dogbot and the BeagleBone just a match made in heaven?
That is how I feel right now. I feel that I am passing over a threshold as I hold in my hand a parcel who's contents change... everything. I haven't opened it yet because I'm basking in the moment.
Before I open this box I am a computer programmer, and an Arduino / micro-controller programmer. After I open this box I am also inevitably an embedded linux programmer. You may ask yourself "What's the difference?" I will try to explain.
Embedded linux brings to robotics a level of computing power 10 to 100 times that of hobby micro-controllers. It also brings a suite of tools that is growing so quickly that it's almost impossible to stay on top of! Embedded linux will change hobby robotics drastically in the next few years! I would have made this move to embedded linux a year ago if I had a reason, but the added power seemed overkill. Now it's exactly what I need.
Box opened... Insert BeagleBone!
It's true that an Arduino can pull in 44 sensor values and use them to calculate 16 servo angle values in real time, but how complex of a calculation will it be capable of making? An Arduino Leonardo operates at 16MHz, vs. 720MHz for a BeagleBone. An Arduino Leonardo has 2.5KB of RAM, vs. 256MB of RAM on a BeagleBone. Finally, an Arduino Leonardo has 32KB of storage, vs. 4GB for a BeagleBone. These are really powerful stats! In other words the amount of intelligence that the BeagleBone is capable of putting into its calculations is close to or much greater than 50 times that of an Arduino. This is the difference between the very mechanical technology of a Model T and the modern computer controlled vehicles with Electronic Stability Control.
Don't get me wrong. I'm still using an Arduino in the Dogbot, right next to the BeagleBone. Arduino is a powerful platform. It has an important place in hobby robotics. That's why I'm using both!
On a final note... isn't the Dogbot and the BeagleBone just a match made in heaven?
Friday, September 7, 2012
Dogbot: Progress
In the last few months I spent two weeks in Hawaii, I moved 6 hours outside of Philadelphia, my wife started a new job, and we got an actual dog. In other words, life happened. But I'm still passionate about robotics when life isn't happening, like right now.
My 3d printer is still in a box and may still be in that box for the weeks to come, but my computers are set up. I started using Solidworks again and am thoroughly enjoying the experience! The tool is truly inspiring, letting me work out ideas and inspire new ideas in real time. Here's a render of my current Dogbot leg design.
Other than designing parts I've also put a lot of thought into the electronics. Since I don't have the time to work on my Mill right now, or to design my own boards, I am going to use the Mux Shield on an Arduino Leonardo.
I need the Mux Shield because I am using 16 servos in the design and at least 36 sensors, including pressure sensors, accelerometers, servo hacking, and depth sensors. Yes, I always bite off more than I can chew. I have to say, it's good to be back!
Update: Here's a video render of the new leg design.
My 3d printer is still in a box and may still be in that box for the weeks to come, but my computers are set up. I started using Solidworks again and am thoroughly enjoying the experience! The tool is truly inspiring, letting me work out ideas and inspire new ideas in real time. Here's a render of my current Dogbot leg design.
Other than designing parts I've also put a lot of thought into the electronics. Since I don't have the time to work on my Mill right now, or to design my own boards, I am going to use the Mux Shield on an Arduino Leonardo.
I need the Mux Shield because I am using 16 servos in the design and at least 36 sensors, including pressure sensors, accelerometers, servo hacking, and depth sensors. Yes, I always bite off more than I can chew. I have to say, it's good to be back!
Update: Here's a video render of the new leg design.
Saturday, May 26, 2012
Dogbot: Openscad vs. Solidworks
This is a tough post for me to write because I am still processing a decision I need to make. Hopefully this post will help me, as well as you.
First, a little background. I started work on a dog robot a few years ago. One key aspect of the design was the solid bits that I printed on my 3d printer, which connected the servos together and gave the robot a shape. I chose to use a tool called Openscad to design these parts. Because I kept the parts simple I was able to design them with Openscad fairly easily. I was even able to animate them to verify that I got the math right. All of this work is on my youtube channel.
Now here is where the story gets interesting. As I start to add in sensors and finalize the design I am desiring a much more complex design. I am wanting a design that can be considered to be art as much as good engineering. As I design artistic and life resembling parts I am starting to feel like I have reached the limits of Openscad. I don't give up without a fight, however. Here is an animation of my last stand:
This leg took me at least 10 hours to design and I was mentally fried multiple times by trying to visualize while I coded. In fact, I frequently picked up a pencil and paper as a faster medium to work out the kinks in my design before changing code. This is not how I want to design. I want my tools to be inspiring and suggestive, not tiring. Maybe I am doing something wrong. To give you a better idea of how I designed the lower portion of the leg, here is the code:
module leg_lower(){
difference(){
union(){
difference(){
translate([leg_upper_length/2,0,-servo_h+3])
scale([2,1,1])scale([1.3,1.3,2])
cylinder(r=leg_upper_length/2,h=servo_h/2, $fn=1000);
translate([leg_upper_length/2,0,-servo_h+3-1])
scale([2,1,1])scale([1.2,1.2,2.1])
cylinder(r=leg_upper_length/2,h=servo_h/2, $fn=1000);
rotate([0,15,0])translate([-500,-500,-servo_h+3+servo_h-0.1])
cube([1000,1000,100]);
translate([-500,0,-50])
cube([1000,1000,100]);
rotate([0,0,-45])translate([-500,45,-50])
cube([1000,1000,100]);
translate([leg_lower_length+5,-35,-servo_h+3+servo_h/4])
rotate([0,0,35])rotate([90,0,0])cylinder(r=screw_r,h=100,center=true,$fn=100);
}
translate([leg_lower_length-18,-26,-servo_h+5+servo_h/4])
cylinder(r=5,h=servo_h/2+4,center=true,$fn=100);
}
translate([leg_lower_length-18,-26,-servo_h+5+servo_h/4])
cylinder(r=2,h=servo_h/2+4+1,center=true,$fn=100);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4+0])
rotate([0,0,25])cube([1,5,20]);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4-20-3])
rotate([0,0,25])cube([1,5,20]);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4+0])
rotate([0,0,25+180])translate([-1,-5-5,0])cube([20,15,5]);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4-5-3])
rotate([0,0,25+180])translate([-1,-5-5,0])cube([20,15,5]);
}
}
Does it make sense to you? What line of code makes the screw hole that holds the rubber ball to the leg? Even after writing it I couldn't tell you right away.
After this experience I started looking for a new tool. I am not a mechanical engineer. I didn't know what to use. So I started looking around the internet for something that looked like the best CAD tool out there. I found a few, but Solidworks stood out as a FUN tool. I want to have fun!
So I decided to conduct an experiment. Below is a picture of a servo that I use in my dogbot. What would the experience be like modeling this servo in Openscad? What would be the experience modeling it in Solidworks?
To model this in Openscad you need to keep it simple. Here is the code to create a rough representation of the servo:
module servo(){
color([0.6,0.6,0.6])union(){
//drive shaft
translate([0,0,-servo_ds_h])
cylinder(r=servo_ds_r, h=servo_ds_h);
//body
translate([-servo_t/2,-servo_t/2,-servo_h-servo_ds_h])
cube([servo_w,servo_t,servo_h]);
//flange
translate([-servo_t/2-servo_flange_l,-servo_t/2,-servo_h+servo_flange_z-servo_ds_h])
cube([servo_flange_w,servo_t,servo_flange_h]);
//wire
translate([-servo_t/2-servo_wire_l,-servo_wire_t/2,-servo_h-servo_ds_h])
cube([servo_wire_l,servo_wire_t,servo_wire_h]);
}
}
It only took me about 30 minutes to get the code just right and to take all the measurements. Here is a render of the result:
So next I tried to design this servo in Solidworks. This was one of the first times I have used Solidworks after watching a few youtube tutorials. At first I just went with a simple representation like I did with Openscad, but that only took 10 minutes. So I decided to see how far a newbie could take it. I buckled in and took it all the way to what I consider to be an identical representation. In less than 2 hours I finished the design! In another 30 minutes I had the material tools and rendering tools figured out. Here is the result!
If you put the original servo next to this render you can barely tell them apart, and that's just because I am new to Solidworks. So now I have a dilemma. Openscad is open source and I believe in open source. It is code based and because of this you can create parametric designs that can change by changing one variable, like bolt size. Solidworks is hundreds of dollars and is almost completely mouse driven. But Solidworks is fun and almost without limitless with a new version is coming out every year.
What to do? Which do I use? Is there something even better?
First, a little background. I started work on a dog robot a few years ago. One key aspect of the design was the solid bits that I printed on my 3d printer, which connected the servos together and gave the robot a shape. I chose to use a tool called Openscad to design these parts. Because I kept the parts simple I was able to design them with Openscad fairly easily. I was even able to animate them to verify that I got the math right. All of this work is on my youtube channel.
Now here is where the story gets interesting. As I start to add in sensors and finalize the design I am desiring a much more complex design. I am wanting a design that can be considered to be art as much as good engineering. As I design artistic and life resembling parts I am starting to feel like I have reached the limits of Openscad. I don't give up without a fight, however. Here is an animation of my last stand:
This leg took me at least 10 hours to design and I was mentally fried multiple times by trying to visualize while I coded. In fact, I frequently picked up a pencil and paper as a faster medium to work out the kinks in my design before changing code. This is not how I want to design. I want my tools to be inspiring and suggestive, not tiring. Maybe I am doing something wrong. To give you a better idea of how I designed the lower portion of the leg, here is the code:
module leg_lower(){
difference(){
union(){
difference(){
translate([leg_upper_length/2,0,-servo_h+3])
scale([2,1,1])scale([1.3,1.3,2])
cylinder(r=leg_upper_length/2,h=servo_h/2, $fn=1000);
translate([leg_upper_length/2,0,-servo_h+3-1])
scale([2,1,1])scale([1.2,1.2,2.1])
cylinder(r=leg_upper_length/2,h=servo_h/2, $fn=1000);
rotate([0,15,0])translate([-500,-500,-servo_h+3+servo_h-0.1])
cube([1000,1000,100]);
translate([-500,0,-50])
cube([1000,1000,100]);
rotate([0,0,-45])translate([-500,45,-50])
cube([1000,1000,100]);
translate([leg_lower_length+5,-35,-servo_h+3+servo_h/4])
rotate([0,0,35])rotate([90,0,0])cylinder(r=screw_r,h=100,center=true,$fn=100);
}
translate([leg_lower_length-18,-26,-servo_h+5+servo_h/4])
cylinder(r=5,h=servo_h/2+4,center=true,$fn=100);
}
translate([leg_lower_length-18,-26,-servo_h+5+servo_h/4])
cylinder(r=2,h=servo_h/2+4+1,center=true,$fn=100);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4+0])
rotate([0,0,25])cube([1,5,20]);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4-20-3])
rotate([0,0,25])cube([1,5,20]);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4+0])
rotate([0,0,25+180])translate([-1,-5-5,0])cube([20,15,5]);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4-5-3])
rotate([0,0,25+180])translate([-1,-5-5,0])cube([20,15,5]);
}
}
Does it make sense to you? What line of code makes the screw hole that holds the rubber ball to the leg? Even after writing it I couldn't tell you right away.
After this experience I started looking for a new tool. I am not a mechanical engineer. I didn't know what to use. So I started looking around the internet for something that looked like the best CAD tool out there. I found a few, but Solidworks stood out as a FUN tool. I want to have fun!
So I decided to conduct an experiment. Below is a picture of a servo that I use in my dogbot. What would the experience be like modeling this servo in Openscad? What would be the experience modeling it in Solidworks?
To model this in Openscad you need to keep it simple. Here is the code to create a rough representation of the servo:
module servo(){
color([0.6,0.6,0.6])union(){
//drive shaft
translate([0,0,-servo_ds_h])
cylinder(r=servo_ds_r, h=servo_ds_h);
//body
translate([-servo_t/2,-servo_t/2,-servo_h-servo_ds_h])
cube([servo_w,servo_t,servo_h]);
//flange
translate([-servo_t/2-servo_flange_l,-servo_t/2,-servo_h+servo_flange_z-servo_ds_h])
cube([servo_flange_w,servo_t,servo_flange_h]);
//wire
translate([-servo_t/2-servo_wire_l,-servo_wire_t/2,-servo_h-servo_ds_h])
cube([servo_wire_l,servo_wire_t,servo_wire_h]);
}
}
It only took me about 30 minutes to get the code just right and to take all the measurements. Here is a render of the result:
So next I tried to design this servo in Solidworks. This was one of the first times I have used Solidworks after watching a few youtube tutorials. At first I just went with a simple representation like I did with Openscad, but that only took 10 minutes. So I decided to see how far a newbie could take it. I buckled in and took it all the way to what I consider to be an identical representation. In less than 2 hours I finished the design! In another 30 minutes I had the material tools and rendering tools figured out. Here is the result!
If you put the original servo next to this render you can barely tell them apart, and that's just because I am new to Solidworks. So now I have a dilemma. Openscad is open source and I believe in open source. It is code based and because of this you can create parametric designs that can change by changing one variable, like bolt size. Solidworks is hundreds of dollars and is almost completely mouse driven. But Solidworks is fun and almost without limitless with a new version is coming out every year.
What to do? Which do I use? Is there something even better?
Tuesday, May 15, 2012
Dogbot: Should I be using Solidworks?
I've been using OpenSCAD for a several years now and love that it's open source and driven by code and not a lot of clicking. Still, after seeing this video it makes me wonder... should I be using Solidworks?
Subscribe to:
Posts (Atom)





