Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
Why does this assembly fail when I add one more revolute mate?
https://cad.onshape.com/documents/e2d35ac2d1e44f27c77bde9d/w/f44093b73f72fad5f29e6417/e/695d6496d4cb17d554c17eb7
This is a test assembly of one part six times that is a simplification of what I was trying to do originally. If I add one of the two possible remaining revolute mates, that should finally close it into a complete hollow assembly, some other mate fails and the almost-closed assembly opens somewhere else. Is there a better way of assembling this? Thanks. Still learning...
This is a test assembly of one part six times that is a simplification of what I was trying to do originally. If I add one of the two possible remaining revolute mates, that should finally close it into a complete hollow assembly, some other mate fails and the almost-closed assembly opens somewhere else. Is there a better way of assembling this? Thanks. Still learning...
Tagged:
0
Comments
This is not a lesson on assemblies, but a teaser to get you to learn assemblies, it's not that hard.
You have nothing fixed and your parts aren't located in the assembly:
So please locate your parts:
Fix one of the parts:
These mates are over defining (more later):
This is mostly due to the fact you have stuff stacked on top of other stuff.
4 parts & 3 mates (You have parts inside parts, I didn't fix that):
I think you're setting up an inverse kinematics problem where you want Onshape to solve for the angles that'll close the box up. It'll do this by over constraining (the way you're doing it). Onshape's inverse kinematic solutions are the best I've seen. But give it chance. Build the model without over constraining. Then add one over constraint at a time and let it figure it out.
Here's an example of what I'm talking about, a simpler solution:
Goto position 1:
Goto position 2:
I'm fixing the gripper at different locations and Onshape is computing robot angles to make this happen. I'm working with a friend to output these angles in order to program the robot. Training robots with a teach pendant is a pain.
This is inverse kinematics or solving the transformation stack backwards. I guess I can't describe it.
This gives me goosebumps and it's exciting.
I'm certain Onshape will solve your problem, just feed it a little bit at a time.
I cleaned your model up and got the 6 parts showing:
It's still not correct though, look at the part closest in the image above. It's attached to the bottom edge vs. the top edge.
Now for the hard part. Solve for the angle that makes this all true:
I believe the answer is 26.565°.
This is a great little problem but I don't think it's a real assembly thing. I invite you to explore Onshape you're definitely ready.
Most assemblies are simple. One thing to note about Onshape that other CAD systems messed up, 2 parts & 1 mate connector. Think of the mate as describing the relationship between 2 parts. Others systems use 3 mates to describe this relationship which is so 1990's.
I'm going to stick my neck out here and state whenever you fix parts using more than one mate, you'll invoke inverse kinematics. Tomorrow I might think that's a wrong statement, so at least today, this is true.
I like your model because it's involving an inverse kinematic solution which gets me excited. But it's a little more complicated.
Please keep going, I like where your mind is at.
Onshape would say you don't have to locate your parts, because you don't have to. Their assemblies work fine without locating. Billy says you do have to do it, let's just leave it at that.
Onshape's tutorials are really good, here's my attempt at explaining re-positioning parts in an assembly:
https://rustyshed.com/?quill=5e3ed6c6bc6ac00891a70114
Your model is somewhat complex and I just wanted to point that out. Maybe try and assemble a bolt to a plate with a hole in it. It just builds from there.
You're good at this and I hope you continue.
Good luck,
I deleted all mates, starting over
Unfixed bottom plate, re-located & re-fixed
built bottom
built top
stuck'm both together
I switched to a ball mate to stick'm, because it's more forgiving since it's only fixing translations. Rotations are nasty (order dependant) and harder to figure out. It's still solving using inverse kinematics and it's impressive that it does.
Hopefully this is your want.
https://cad.onshape.com/documents/88614e8e16c6c0a4c0c7258d/w/0d6f6f92a011e362436a4891/e/2acf816910e78215aaa96d74
A simple bit of geometry in the Part Studio for the panel establishes the angle of the main axis Mate Connector:
By using the length of the equilateral floor panel, the Measure Custom Feature (just in case the overall size changes in the future), and some math to define the "height" of the floor. By luck (not luck: geometry) the axis lies 1/3 of the way along the "height" of the triangular floor. This allows us to find the angle of the floor relative to the pentagonal panels...we set our Axis Mate Connector to be coincident with that 1/3 point, and voila: we run a couple of check features (the floor triangle and the circular pattern). Seems to work, right?
Back in the assembly:
The assembly uses a Mate Connector along the Z at the Origin, our Mate Connector axis from the Part Studio, a Slider mate (to establish the "roof" at the correct angle) and a revolute (to connect the first roof panel to the first floor panel), and then a simple Circular Pattern to complete the building.
Seems to produce the correct final building, but in a different way. I think it's valid, because (just like using all revolute mates) you don't need to know the precise angles to do it (particularly the angle of the "floor" panels relative to the "ground".
This is an interesting one - and I'm sure there are more interesting solutions out there!
(by doing some of this layout work in the Part Studio, we also have the opportunity to finish up the windows and other components without "in-context" modelling).
@billy2
When I first read about the ball mates that Billy talked about, I thought, I’ll have to use 2 ball mates at a number of the revolute mate locations, and I was lazy to try that.
Later the thought came to mind — how about I just use ball mates on that last panel, with revolute mates on everything else. And BINGO. That worked like a champ.
Thanks for the great lesson Billy about the freedom of those ball mates being the solution. That never crossed my mind
Branch for a 3rd try:
3rd time's a charm.
I switched to surfaces because the 2 edges so close together makes it to hard to pick the correct one.
Same technique insert one surface into assembly, position and fix.
Copy 5 more surfaces
Assemble
Assembly of 6 surfaces; 4 on the base and 2 above:
It'll do it. The solution is deterministic. None of these surfaces move.
I believe the problem when assembling using only revolutions is tolerances .
Math is perfect, computer math is only a good approximation.
My solution to this problem; the last mate is really just a coincident mate between these 2 vertices:
The best mate, the one mate that behaves like a coincident mate is the ball mate.
You can argue that the solution should remove the ball mate and be replaced with 2 revolves. If computers generated perfect math then I'd agree. Unfortunately they don't.
The assembly can solve this problem with a little help. I've worked with many kinematic software packages and this happens often. This isn't unique to onshape.
You could loosen up the tolerances and get an answer with all revolutions, but this isn't a better solution.
I didn't think about cylindrical, just loosening one degree of freedom; could have done it.
I was thinking you could do it all with ball joints, more of them of course. Not sure if it'd solve faster or would be more robust?
It's rare that you have to think in terms of degrees of freedom, but in this case, it helps.
Because why wouldn’t the slider portion of the cylindrical mate continue to work ?
Kind of makes you wonder if whoever coded the solver said — well we got a weird situation here. The revolute mate should work, but it doesn’t. So we’re gonna throw a little weird on top of weird by allowing the cylindrical mate to work in its place. But we’re gonna stop the slider portion of that cylindrical mate from working whenever you throw it into this particular type of mix
Quirk was probably a better word to use than weird
And the workaround was more than easy. In fact — almost hard to call it a workaround at times because when you think of workarounds, you may think of an extra step or two or more. And in the case of using the cylindrical mate on a scissor lift as you mentioned, it wouldn’t require any extra steps, other than noticing the over constrained warning color and then changing from revolute to cylindrical
As you made clear — it’s more about being familiar with the way CAD (solver in this case) works
Or a ball mate. I've tried all ball mates too, since this thread gave me hope, but no cookie.