Kinematic Coupling Assembly3 strategies

Discussion about the development of the Assembly workbench.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
User avatar
Marodut
Posts: 11
Joined: Tue Jun 28, 2022 7:36 am
Location: Padova (IT)
Contact:

Kinematic Coupling Assembly3 strategies

Post by Marodut »

Hello everyone!

I'm working on a kinematic mount where the base is locked into place and three spheres lock into the groove pattern.
I'm trying to use the most realistic set of constraints available in FreeCAD(Assembly3), but it seems I've run into a hiccup vith the "LineVertical" constraint.
Legend.PNG
Legend.PNG (58.77 KiB) Viewed 1899 times
For each of the spheres, i'm using the following set of constraints:
Tree_view.PNG
Tree_view.PNG (7.48 KiB) Viewed 1899 times
A_1/A_2 are "PointsPlaneDistance" constraints, they are meant to constrain the center of the spherical surface on a line that is equally distant from both of the groove surfaces.
As the distance is equal to the radius of the sperical surface, this makes the surfaces of the groove tangent to the sphere itself, thus allowing the shpere to "roll" freely along the groove.
spherical_dof.PNG
spherical_dof.PNG (57.25 KiB) Viewed 1899 times
As I'm following a Top Down modelling approach, i would like to derive the informations that are necessary to model the frame that connects the sphere blocks from the placement of the blocks themselves, instead of locking them to another body.

To manage the blocks aligment i'm using the "LineVertical" constraint, as "Elements" for the LineVertical constraint I'm using planes and axis from the origin of the ParDesign bodies.
Elements.PNG
Elements.PNG (40.71 KiB) Viewed 1899 times
Everything seems ok, but, if you try to moove the sphere block with the "Axial move part" command, the body moves where it should't be able to.

I have two questions for you all:

1) Is there a more efficient/effective set of constraints to achieve the same goal?
2) Have I understood properly how "LineVertical" works ? Am I missing something?

Thank you :)

Example file:
Kinematic_Coupling.FCStd
(344.36 KiB) Downloaded 49 times

Code: Select all

OS: Windows 10 Version 2009
Word size of FreeCAD: 64-bit
Version: 0.21.30265 (Git)
Build type: Release
Branch: master
Hash: c35244e74f326a04c5bcab31e984742db582ac78
Python 3.8.13, Qt 5.15.4, Coin 4.0.0, Vtk 9.1.0, OCC 7.6.2
Locale: English/United States (en_US)
Installed mods: 
  * Assembly3 0.11.3
  * Behave-Dark-Colors 0.1.1
  * CurvedShapes 1.0.4
  * Curves 0.6.5
  * Dracula 0.0.2
  * ExplodedAssembly
  * fasteners 0.4.54
  * fcgear 1.0.0
  * freecad.gears 1.0.0
  * OpticsWorkbench 1.0.9
  * ProDarkThemePreferencePack 1.0.0
  * sheetmetal 0.2.61
User avatar
FBXL5
Posts: 979
Joined: Sat Aug 03, 2019 8:45 pm

Re: Kinematic Coupling Assembly3 strategies

Post by FBXL5 »

Line vertical is dealing with the projection of a line onto a plane. The projection is constrained vertical i.e. along the y axis in relation with the plane's coordinate system.
Multi parallel could be used to link the backside of the spherical object and XY_Plane@Base@ to keep its axis perpendicular to the plane.

Hope this leads into the right direction to further explore the Assembly3 constraints.
User avatar
jpg87
Posts: 809
Joined: Thu Mar 16, 2017 7:16 am
Location: Limoges - France
Contact:

Re: Kinematic Coupling Assembly3 strategies

Post by jpg87 »

Marodut wrote: Fri Mar 03, 2023 10:46 am...
Hello,
I wanted to test your file, but I lack information to fully understand what you want:
1- what relationship should there be between the spheres and the "carrier"?
2- must the 3 spheres be able to move independently of each other?
(the answer to the previous question may answer this one)
My website : http://help-freecad-jpg87.fr updated 2023/11/06
User avatar
bambuko
Veteran
Posts: 2160
Joined: Thu Oct 24, 2019 12:53 pm
Location: UK, England, North Devon

Re: Kinematic Coupling Assembly3 strategies

Post by bambuko »

Hi @Marodut
tried looking at your file and... there is a problem with sphere body.

Code: Select all

Shape must be a wire, edge or compound. Something else was supplied
Sphere_body.FCStd
(38.82 KiB) Downloaded 42 times
Screenshot_20230304_095712.jpg
Screenshot_20230304_095712.jpg (27.5 KiB) Viewed 1807 times
I am using Link branch and Assembly3
you can also download ... and try it here
excellent Assembly3 tutorials here
User avatar
jpg87
Posts: 809
Joined: Thu Mar 16, 2017 7:16 am
Location: Limoges - France
Contact:

Re: Kinematic Coupling Assembly3 strategies

Post by jpg87 »

@bambuko
I had the problem in the version of @realthunder where I had to rebuild the sphere, but this error does not appear in the master version.
My website : http://help-freecad-jpg87.fr updated 2023/11/06
User avatar
Marodut
Posts: 11
Joined: Tue Jun 28, 2022 7:36 am
Location: Padova (IT)
Contact:

Re: Kinematic Coupling Assembly3 strategies

Post by Marodut »

bambuko wrote: Sat Mar 04, 2023 9:59 am Hi @Marodut
tried looking at your file and... there is a problem with sphere body.
Happened the same to me with linkstage3 branch, it's like the function doesn't recognize the construction line used as axis of revolution.
Deleting the function and making it from scratch solved the issue for me.
jpg87 wrote: Sat Mar 04, 2023 9:55 am 1- what relationship should there be between the spheres and the "carrier"?
My goal is to be able to tune the constrain strategy to gain the type of insight that i'm interested in.

AS3 is very powerful, but it can be a struggle to put what you have in mind into a sequence of commands.

I'd like to bounce ideas and share test results with oter users to "separate the wheat from the chaff".

I'd like for both the placement and the geometry of the carrier to be driven by the characteristics of the sub assembly composed by the blocks and the base.

In the image below there's an example:
Design_flow.png
Design_flow.png (219.87 KiB) Viewed 1671 times
The severity of the tilt can indicate which kind of washer is best suited to accomodate both bodies or what kind of tolerances are necessary to achieve the desidered funcionality.

A similar line of reasoning can be applied to the length of the carrier spokes, to the angle of the V groove, to the diameter of the spherical surfaces, etc ...
Kinematic_Coupling.FCStd
(373.55 KiB) Downloaded 44 times
Last edited by Marodut on Tue Mar 07, 2023 8:56 am, edited 1 time in total.
User avatar
Marodut
Posts: 11
Joined: Tue Jun 28, 2022 7:36 am
Location: Padova (IT)
Contact:

Re: Kinematic Coupling Assembly3 strategies

Post by Marodut »

FBXL5 wrote: Fri Mar 03, 2023 2:21 pm Multi parallel could be used to link the backside of the spherical object and XY_Plane@Base@ to keep its axis perpendicular to the plane.
MultiParallel rocks !! :D
It can deal with imputs of different nature: (circular line and three surfaces)
Multi_parallel.png
Multi_parallel.png (288.42 KiB) Viewed 1662 times
How does it work? can someone share the math behind it ?
User avatar
jpg87
Posts: 809
Joined: Thu Mar 16, 2017 7:16 am
Location: Limoges - France
Contact:

Re: Kinematic Coupling Assembly3 strategies

Post by jpg87 »

Marodut wrote: Mon Mar 06, 2023 1:34 pm...
Personally, I only use the constraints from the main toolbar :
Image0.png
Image0.png (16.34 KiB) Viewed 1583 times
Whenever there is a particular plane, shape symmetry for example, I use PlaneAlignment (with possibility to set a distance with "Offset" or more parameters), PointInPlane or PointsPlaneDistance as you did to make tangent your vee-grooved sphere...
Image1.png
Image1.png (16.09 KiB) Viewed 1583 times
Image2.png
Image2.png (17.39 KiB) Viewed 1583 times
Image3.png
Image3.png (17.64 KiB) Viewed 1583 times
The SameOrientation constraint seems to manage the parallelism of the normals to the planes considered, but also the orientation of these normals. The MultiParallel constraint seems more flexible and does not take into account the orientation of the normals.
I couldn't find any more explanation than https://wiki.freecad.org/Assembly3_Workbench.
My website : http://help-freecad-jpg87.fr updated 2023/11/06
User avatar
Marodut
Posts: 11
Joined: Tue Jun 28, 2022 7:36 am
Location: Padova (IT)
Contact:

Re: Kinematic Coupling Assembly3 strategies

Post by Marodut »

Hi everyone! I've been playing with a different approach.
Instead of relying on the properties of 3D surfaces, i'd like to attach the references as close to the coordinate system as possible.

I've choosen to use the "PlaneCoincident" constraint; to locate the items I've used the offset properties of the contstraint itself.
OffsetX and OffsetY manage the distribution of the polar pattern, while OffsetZ manages the tangency between the sphere and the angled surfaces.
Screenshot from 2023-04-22 12-30-22.png
Screenshot from 2023-04-22 12-30-22.png (32.67 KiB) Viewed 1368 times
The function that generates OffsetZ value, refers to a plane geometry problem:
Screenshot from 2023-04-22 12-31-46.png
Screenshot from 2023-04-22 12-31-46.png (23.46 KiB) Viewed 1368 times
I've split its components into a spreadsheet, i hope it makes it clearer.

Setting the orientation for each of the blocks has proven to be troublesome:
locking the "Angle" property ~~results~~ (brings with it/"esprime") in a snapping behaviour, I believe it's related to these posts

* Auto relax
* Solver errors
* sin/cosin uncertanty

I have also tried to use "vertical line" constraint, but i can't derive the constraint element from an origin plane, it only works with surfaces generated by features, which isn't great for TPN reasons.
Screenshot from 2023-04-22 12-34-51.png
Screenshot from 2023-04-22 12-34-51.png (54.95 KiB) Viewed 1368 times
What do you think of the workflow? Does anyone spot any problems or issues?

Thank you all :) .
Kinematic_Coupling_locked_angle.FCStd
(314.05 KiB) Downloaded 32 times
Kinematic_Coupling.FCStd
(334.23 KiB) Downloaded 34 times

Code: Select all

OS: Pop!_OS 22.04 LTS (pop:GNOME/pop)
Word size of FreeCAD: 64-bit
Version: 0.21.0.31695 (Git) AppImage
Build type: Release
Branch: master
Hash: 64caea207394bb05587c8ffb29b7a3e8696d24df
Python 3.10.8, Qt 5.15.6, Coin 4.0.0, Vtk 9.1.0, OCC 7.6.3
Locale: English/United Kingdom (en_GB)
Installed mods: 
  * Assembly3 0.11.4
  * fasteners 0.4.54
  * freecad.gears 1.0.0
  * Behave-Dark-Colors 0.1.1
  * ExtremeProDark 2.6.4
  * Dracula 0.0.2
User avatar
jpg87
Posts: 809
Joined: Thu Mar 16, 2017 7:16 am
Location: Limoges - France
Contact:

Re: Kinematic Coupling Assembly3 strategies

Post by jpg87 »

Marodut wrote: Sat Apr 22, 2023 10:43 am The function that generates OffsetZ value, refers to a plane geometry problem:
The advantage of constraints is that there is no calculation to be made.
As I said before, simple constraints are enough.
Problem, on the version

Code: Select all

OS: Windows 10 Version 2009
Word size of FreeCAD: 64-bit
Version: 0.21.0.32929 (Git)
Build type: Release
Branch: master
Hash: 1dcc58c4b1c51c50215639ca58326f6b69867743
Python 3.10.10, Qt 5.15.8, Coin 4.0.0, Vtk 9.1.0, OCC 7.6.3
Locale: French/France (fr_FR)
Installed mods: 
  * Assembly3 0.11.4
  * BOLTSFC
  * Curves 0.6.8
  * DynamicData 2.46.0
  * fasteners 0.4.2
  * fcgear 1.0.0
  * freecad.gears 1.0.0
  * QuickMeasure 2022.10.28
  * Render 2023.2.3
...
"DatumPlanes" are wrong when converted to constraint "Elements".
planes needed.png
planes needed.png (67.18 KiB) Viewed 1309 times
planes transferred to Elements.png
planes transferred to Elements.png (89.54 KiB) Viewed 1309 times
In the branch of @realthunder the problem does not arise.

Code: Select all

OS: Windows 10 Version 2009
Word size of FreeCAD: 64-bit
Version: 2023.131.26244 +5365 (Git)
Build type: Release
Branch: LinkDaily
Hash: 73c4ca254c5de8849d104973482e98399fb24863
Python version: 3.10.8
Qt version: 5.15.4
Coin version: 4.0.1
OCC version: 7.6.3
Locale: French/France (fr_FR)
The file I attached assumes that the 3 spheres move independently of each other.
You haven't defined the movements that "Carrier" should have either.
Attachments
Kinematic_Coupling_jpg87_Ls3.FCStd
(401.11 KiB) Downloaded 40 times
My website : http://help-freecad-jpg87.fr updated 2023/11/06
Post Reply