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?
Saturday, May 26, 2012
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?
Monday, April 23, 2012
RepRap: Upgrades!
This year I started feeling like I was falling behind with the opensource 3d printing movement, so I made the time to upgrade my printer. I started by finally installing a new heated bed. Before now I was still printing PLA on blue tape. Now I'm printing PLA on heated glass. Here is a before and after:
I followed Nophead's lead with simplifying the y axis by using a few linear bearings.
While I was at it I also upgraded my electronics! I was pretty happy to get away from prototyping breadboards by upgrading to RAMPS. These pictures say it all...
Before:
After:
Finally, I upgraded my extruder. The old extruder was my own design that was still running strong after over a year of use, but it was big and bulky, taking up to 10 minutes to heat up. It also pushed 3mm filament through a .5mm hole. The new MakerGear extruder only takes a few minutes to heat up and pushes 1.75mm filament through a .25mm hole. Here is a before and after:
Special thanks to the authors of the following things on thingiverse to add finishing touches to my printer:
http://www.thingiverse.com/thing:6630
http://www.thingiverse.com/thing:14112
One last before and after:
I am very happy with my printer and can't wait to start working on my DogBot again!
I followed Nophead's lead with simplifying the y axis by using a few linear bearings.
While I was at it I also upgraded my electronics! I was pretty happy to get away from prototyping breadboards by upgrading to RAMPS. These pictures say it all...
Before:
After:
Finally, I upgraded my extruder. The old extruder was my own design that was still running strong after over a year of use, but it was big and bulky, taking up to 10 minutes to heat up. It also pushed 3mm filament through a .5mm hole. The new MakerGear extruder only takes a few minutes to heat up and pushes 1.75mm filament through a .25mm hole. Here is a before and after:
Special thanks to the authors of the following things on thingiverse to add finishing touches to my printer:
http://www.thingiverse.com/thing:6630
http://www.thingiverse.com/thing:14112
One last before and after:
I am very happy with my printer and can't wait to start working on my DogBot again!
Sunday, March 18, 2012
Abundance is our future
For some time now I have been aware of the power of perspective and the choice we have each minute to focus on something good or to focus on something bad. We have the choice because we are surrounded by so much good and so much bad. I don't normally blog on this topic, but this time I couldn't resist. Most examples I've read about or personally experienced on the optimistic perspective have a small or narrow context. But here is a person who has applied optimism to our global problems. Oh, and he mentions 3d printing! Well worth a watch!
Monday, March 5, 2012
Dogbot: Improved by someone else!
This weekend I was browsing thingiverse and found that dkobozev recently extended my Dogbot to be printable on a makerbot! Not only this, but some of his other modifications eliminate many of the needed bolts! Check it out: http://www.thingiverse.com/thing:18045
Sunday, February 26, 2012
Blog Upgrade
A lot has changed since I started blogging in 2008. Back then I didn't want to tie myself too closely to a service or technology, so I created my own blog software knowing I would have the ability to export to something else in the future. With all the rich features of blogspot.com, it's time for me to upgrade. This is me upgrading....
Wednesday, February 8, 2012
Graphics: Art is Key
I started reading The Art Of Game Design this week. I'm reading it because I want to understand a little more about why we create and play games before starting my next graphics POC. I figure the best way to really grasp graphics programming is to create playable games.
Inspired by the book I decided to make my Green Army Man POC more immersive by breaking out my best recording equipment and recording the actual sounds my soft air gun makes when it is loaded and fired. Adding these sounds into the POC, as well as adding realistic impact sounds really made a difference! I also took it one step further and added a visible gun. Thanks to TIGG I didn't have to model my own. His model was much better than I am currently capable of, so I didn't hesitate in using it.
I took a video of me messing around with the POC to give you an idea of current state.
Also, if you have a desire to play around with it yourself I am including the executable, as well as the artifacts and dependencies. You can download it here. You'll need a Windows OS. I am not currently capable of compiling for Linux or Mac. Also, you will need DirectX, if you don't already have it.
I just got some feedback that tutorials on OGRE, Bullet, OpenAL, and Blender would be useful to a few people. If you would also find this valuable, leave a comment! What subjects are most interesting to you?
Inspired by the book I decided to make my Green Army Man POC more immersive by breaking out my best recording equipment and recording the actual sounds my soft air gun makes when it is loaded and fired. Adding these sounds into the POC, as well as adding realistic impact sounds really made a difference! I also took it one step further and added a visible gun. Thanks to TIGG I didn't have to model my own. His model was much better than I am currently capable of, so I didn't hesitate in using it.
I took a video of me messing around with the POC to give you an idea of current state.
Also, if you have a desire to play around with it yourself I am including the executable, as well as the artifacts and dependencies. You can download it here. You'll need a Windows OS. I am not currently capable of compiling for Linux or Mac. Also, you will need DirectX, if you don't already have it.
I just got some feedback that tutorials on OGRE, Bullet, OpenAL, and Blender would be useful to a few people. If you would also find this valuable, leave a comment! What subjects are most interesting to you?
Subscribe to:
Posts (Atom)