Loading

Mars Exploration Rover

by tbuser, published

Mars Exploration Rover by tbuser Jul 14, 2011

Featured Thing!

Description

Articulated, snap together, Mars Rover! No screws, glue, or support structure needed (although some glue in a few places wouldn't hurt). All the parts can be posed, turned, twisted. The wheels turn and the legs even pivot like the real thing to go over obstacles! Unfortunately, it is not autonomous.

en.wikipedia.org/wiki/Mars_Exploration_Rover

2011-07-19 Update: V3 fixes a problem with plate 5 that was causing some pieces to be too close together and get merged, makes the axel holes in the body a little tighter, half the panels in the plates have been flipped so that the shiny side of all pieces printed on a HBP can be on top, I made the dimples on the panel tabs larger so they hold together better, and I also added squares to the panels to make them look more like solar panels.

2011-07-16 Update: I uploaded a new version of everything with a few changes like dimpled tabs for the solar panels (thanks to gpvillamil) and slightly larger holes to make it easier to snap bolts into. I also added a variable to the openscad script called tolerance that you can use to make those holes slightly larger. If you print the tolerance_test.stl you can use it to help find the right tolerance for your printer. The holes range from a tolerance value of 0.0 to 0.6 in 0.1 increments and the files I uploaded are 0.2

Recent Comments

view all
I'm going to print another parts set (plate 5) at 100% infill. The bolts break just looking at them sideways.
is that what you did because i am having a really hard time doing that and it looks like it would put a lot of stress on it
Try moving the brass nut to on top of the Z stage to get some extra height out of it.

Liked By

view all

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag. Print Thing Tag

Instructions

You're definitely going to need a stepstruder to print this. There's lots of little tall/narrow bits.

The tolerances are really tight and a few parts might require some drilling/sanding/or a lot of force to get them to snap together. You'll probably break a few bolts trying to get them to snap together, don't worry they're small and you can print new ones quickly. You can always play with the measurements in the openscad file to suit your printer. Also, the solar panels aren't very secure and tend to fall apart and could use a little work to make them snap together better.

Take a look at the "layout" part in the openscad script to help you figure out how the parts go together.

I suggest printing plate 1 in yellow plastic, plates 2, 3, and 4 in black plastic, and plate 5 in white.

The zip file contains all the individual stl files.

20 models
42 total parts

BOM:
1 body
1 panel_center
1 panel_back
2 panel_side_back
2 panel_side_front
6 wheel
2 axel_front
2 axel_back
12 bolt
2 arm
1 arm_sensor
1 target
1 antenna_uhf
1 antenna_low
1 antenna_high_bottom
1 antenna_high_top
1 camera_bottom
1 camera_top
2 camera_top_side
1 camera
I'm going to print another parts set (plate 5) at 100% infill. The bolts break just looking at them sideways.
Try moving the brass nut to on top of the Z stage to get some extra height out of it.
is that what you did because i am having a really hard time doing that and it looks like it would put a lot of stress on it
You know how the Spirit Rover is stuck in the sand? Why not use the arm withthe tool on the end to push itself out?
They spent several months trying to free Spirit unsuccessfully. They have since lost contact with it.
Just uploaded V3 which fixes a problem with plate 5 that was causing some pieces to be too close together and get merged, makes the axel holes in the body a little tighter, half the panels in the plates have been flipped so that the shiny side of all pieces printed on a HBP can be on top, I made the dimples on the panel tabs larger so they hold together better, and I also added squares to the panels to make them look more like solar panels.
Thanks tbuser. I printed this twice trying to determine if there was something wrong with my tolerances. Then looking more closely it seemed that the toolpath was actually doing the merge not some settings on my bot.

Thought I was going crazy!

Thanks again for this. Will be fun to assemble.
i have problems printing round circles for things like the bolts any tips *DONT_KNOW*
also my antenna looks like a swirly piece of crap :-E
Do you have a stepstruder? If you have a DC motor on your extruder, that's pretty much what you'll get. If you're using a stepstruder, have you tried the latest replicatorg and the Print-O-Matic option?
not round :'(
Ah, what you have looks like backlash. Most likely caused by one of your belts not properly tightened. Take a look at: wiki.makerbot.com/thingomatic-doc:about-timing-belts
yup all that just recieved my printer 2 weeks ago
If you mirror plate 4 the panels assembled with the buildplatform side facing the same way. With my PLA-on-glass setup the bottom and top look very different.
Very good idea. Also lets you start the print with yellow and switch to black halfway through, so it looks more like the real rover.
I uploaded a new version of everything with a few changes like dimpled tabs for the solar panels (thanks to gpvillamil) and slightly larger holes to make it easier to snap bolts into. I also added a variable to the openscad script called tolerance that you can use to make those holes slightly larger. If you print the tolerance_test.stl you can use it to help find the right tolerance for your printer. The holes range from a tolerance value of 0.0 to 0.6 and the files I uploaded are 0.2
Cool! I'm working on making flat hinges for the solar panels, so that they can fold into descent position.
This is amazing. Printing it now.

How do you assemble the camera on to the top of its stand? It seems like you have to bend the camera bracket out quite a bit for it to fit?
The horizontal tube that the camera snaps on to is actually 2 parts, you can't see the seam because they meet inside the top loop. :) That part is a little tricky to put together, but the clamping pressure then holds them in place.
Got it, thanks. Basically you slide one of the camera top parts into the camera, slide the camera holder over it, then slip the other camera top in place, and slide the camera holder back to the middle...

I've modified the model to add a pin/dimple to the slots and tabs on the solar panels, should hold them in place better. I'll post once I've printed and tested the mechanism.
That's a good idea about the solar panels. I'm also working on adding a tolerance option to widen the holes to make it easier to snap the pins in along with a calibration print to help you find the right tolerance setting for your individual printer.
I'll upload the SCAD file now, so you can check out my changes and maybe roll them together.
I have a feeling these are replicating in my basement.
You made it to the side-bar in the Makerbot wiki. :)

Congratulations!

makerbot.com/docs/thingomatic/
Trying it at .75 scale on my cupcake. What machine did you print this on, and what's the range of motion please?
tbuser - in reply to
All the parts should fit on a cupcake I think. I printed it on a Thing-o-Matic. Range of motion? Well the wheels spin, the wheel legs both rotate in two places each, the arm has I guess 2 degrees of freedom :) The circular antenna rotates, the camera rotates side to side and up and down, and each of the 5 solar panels can be bent up, down, or horizontal independently.
This is printing well.

"Take a look at the "layout" part in the openscad script to help you figure out how the parts go together."

Is there an easy way to see the "layout" file? I only have Google Sketchup.
Unfortunately, I'm having trouble persuading openscad to export the layout as an stl. You'll have to installed openscad to view it. I posted a few views to flickr that might help?

flickr.com/photos/tbuser/5935745337/in/photostream
http://www.flickr.com/photos/tbuser/5935743871/in/photostream
http://www.flickr.com/photos/tbuser/5936300230/in/photostream
http://www.flickr.com/photos/tbuser/5936297956/in/photostream
Thanks tbuser, that should help me get most of the parts in the right place.
I've been looking for a new desk toy, and you've just presented it. Thank you VERY much sir.
I have 2 plates done. I can't do anymore until I get home. I should have built that stupid robot arm already... I will have one of these by tomorrow though.
What kind of robot arm? :)

Sounds interesting.
You Sir, are Awesome!

Also I'm with xtremd...
This is my favorite Thing, ever. Absolutely amazing work. Thanks!
In awe, sir, in awe.
I'd find a way to slap an arduino on that....
That's quite a lot of work you've done there!

I don't know if you're interested in reducing the amount of code, but if you are...

You have a pattern where you do: translate, rotate, cylinder... You might be able to encapsulate this in arrays, and have a single routine that just iterates the array:

[[tx, ty, tz], [rx, ry, rz], [cr1, cr2, c
h]]

tx/y/z - translation
rx/y/z - rotation
cr1/2 - cylinder radius 1, 2
ch - cylinder height

print_cylinders(cyls)
{
for (cyl=cyls)
{
translate(cyl[0])
rotate(cyl[1])
cylinder(r1=cyl[2][0], r2 = cyl[2][1], h = cyl[2][2]);
}
}

Then a lot of your code disappears
and just turns into arrays of arrays.

Also, I don't quite understand the openscad recursion problem. It simply doesn't have recursion, but you perhaps don't need that if everything is just arrays?
The code I wrote for this is pretty ugly. It is like writing a webpage layout using tables instead of css. Usually I use a lot of variables for measurements and then everything is built off of those measurements, but in this case I pretty much built it as I went.

The recursion problems I had were in my attempt to make a build script. I couldn't call print_part("plate1") which called print_plate("1") which called a bunch of print_part(x y z). Also, I had a bunch of problems where I was calling modules within modules to do negative space cutouts which resu
lted in openscad opencsg rendering being disabled because normalized tree had too many elements. So instead of calling a module, I had to copy/paste the relevant code from that module into the other and it compiled fine.
i see. that problem.
We spend entirely too much time coding around openSCAD instead of coding in it, as it were. :-)
I'm with you there... OpenSCAD is great, but I struggle with the "too many elements" problem as well. I guess my coding style needs adapting, even simple models seem to hit a wall.

If there is a better scripted CAD out there, I would love to try it!
Well, there's that Python based stuff (cadmium). I haven't used it myself, but if you're a Python fan, it will be a good alternative. And then there's RapCad. Some of the key limitations of OpenScad (from my perspective) are being removed.

I myself am turning to Lua as my modeling language. But, my solution is nowhere near as functional as OpenScad is today. So, I actually export to OpenScad, when I need OpenScad's ability to turn my stuff into .stl. Mainly for its connection to CGAL.
I'm allergic to python. What you're doing with lua sounds interesting. I've been thinking of doing the same thing except with ruby which is my language of choice.
Now that I know "the trick", I'm already doing it. I can create stuff using this method just as quickly in Lua as I can using the native editor in OpenScad. Even faster because I have functions and other goodies which makes my coding faster.

I've ported my maths.scad, and will be porting the rest of the renderer. You could do the same with Ruby.

I basically do heavy lifting in Lua, and then generate appropriate OpenScad where needed. I can go straight to .stl for anything that does not require CSG.
This is really great! Wow, that's all I can really say about it.... wow!
Full articulation? Nice. You really are an evil genius. :)
Holy cow! This is awesome.
Did you really use OpenSCAD do do all these parts as the tags suggest?

Must have been a real piece of work with no graphical feedback and no inter-part dependencies in an assembly.
I don't even have to press F5, I use a text editor on one monitor while openscad runs on another monitor with the automatic reload and compile option turned on. So while I'm writing code, the model updates next to me. :P
Hay! I didn't know you could do that!! That will make playing with other generators that much easier. So, I can just go ahead and use Lua, or Python, and generate OpenScad, and I'm fine.
Yep! Under Design -
&
gt; Automatic Reload and Compile. Then openscad will basically do an F5 whenever the file changes. It's really handy because I hate the build in text editor.
That's very cool. You could even use two different machines and a file synch tool.
Someday I want to see your lab.
What do you mean no graphical feedback? You can press F5 and view your design immediately.
3-15 minutes of interpreting a simple gear-calculation on a dual-core mobile I7 with 8GB of RAM is hardly interactive, graphical feedback or "immediately".

Was that a bug in the specific version I tried or in the one gears-scrips I tried?
It's usually CGAL's fault when it comes to being really slow. It's not the fact that it's interpreted. Also, some calculations, like using Minkowski sums, are extremely slow.

I've been using Lua of late, and it's 'fast enough' even generating quite large involved things.
Could be the specific gear script. The mars rover renders very fast on my sub-optimal work machine with 'F5'. 'F6' will be a lot slower, and isn't needed until STL generation.
ok, so I may just have used it wrong.

I'll consider giving it another try when the opportunity arrised.

Thaed: Thanks for calling me "young". ;)
Yes Marcus, we get it, you hate openscad. You don't need to troll every openscad based thingiverse entry to make your point over and over and over and over again.
Sorry, just impressed that this was possible.
Marcus said "sorry!" There is hope for this young man yet! ;)
I looked at the code.

Quite a lot of recursion.

I guess this was required to reuse part-definitions to define other parts using negative space.

Handy feature. :)

Still I envy you for your 3 dimentional visualisation skills.
Top