Forum Replies Created
-
AuthorPosts
-
HugoKeymaster
Hi @ma1991
I am no expert from SoftRobot, but could you elaborate on what you mean by:
- “I cannot actuate the tripod”
- “to pull the volumetric mesh”: do you mean with the mouse?
Best
Hugo
HugoKeymasterHi Pierre,
I have no experience with FixedTranslationConstraint. I just tried it, it seems a bit complicated to use.
What you want to do in step 1 is actually a registration. You can do it by minimizing energy between the two configurations. This idea is shown in the plugin Registration: applications/plugins/Registration/examples/ICPRegistration_MeshSpring.scn
I would go this way.
Let me know how this works for you.Best
Hugo
HugoKeymasterHi @pguillon
I would therefore go for a simulation in two steps: first compute the deformed geometry from your rest position, second release it with the desired collisions. Would this suit your need? Is there a reason you don’t want to simulate the first step ?
Hugo
HugoKeymasterHi @pguillon
If I understood correctly, you are looking for loading a pre-loaded (pre-stressed) object. An you would like to compute the motion back to a rest (stress-free) configuration. Is that correct ?
It is possible to load a deformed geometry. But it is far from being trivial to compute back the rest geometry. This is called inverse mechanical modeling. I know it has been already investigated around SOFA. I will try to gather some info/references.
Best,
Hugo
HugoKeymasterHi @fleonard
No prob. LocalMinDistance actually inherits from DiscreteIntersection but has a more complete implementation (e.g. of all intersections between discrete primitives to compute). You can see this here in the API doc.
If your objects are not in contact, you should be able to find a value of alarm and contact distance which satisfies your expectations.
What do you mean by imposing a displacement on the rest_position? Do you want to keep the same position but to have shifted rest_position? or do you want to shift the object at initialization of the scene ?
Hugo
HugoKeymasterHi Tony @tonydelabril
I am no expert of the SoftRobot plugin.
As the error suggests it, it seems you need the sofa-launcher able to launch several instances of SOFA.I guess you need to have the sources of SOFA somehow. @damien-marchaluniv-lille1-fr do you have an idea?
Best
Hugo
HugoKeymasterHi @outtt
It is a complicated question. Interactive simulation is always a trade-off between efficiency and accuracy. This is what you face willing to have “good local deformation” and reasonable computation time.
Different methods do exist to solve this like: multigrid methods, model order reduction (see the associated plugin), adaptive integration schemes, remeshing techniques, immersed models etc.
Today, a plugin for model order reduction does already exist. The SOFA Symposium could be a good place to discuss such problems (19/11/2019 in Paris).
Hugo
HugoKeymasterDear SOFA Forum,
Don’t forget about the SOFA Awards!
We have already 3 French contributions. Any contribution is welcome and the community would be glad to have you with us in Paris !
—
The SOFA Consortium Staff30 September 2019 at 15:09 in reply to: [SOLVED] Install "Additional libraries" for Visual Sudio 2019 #14315HugoKeymasterThe dependency pack of VS2017 is working for VS2019. You can keep the same.
We will update the doc accordingly.Do not hesitate to re-open the topic if it doesn’t answer your issue.
Best wishes,
Hugo
HugoKeymasterIndeed TriangularBendingSprings do not have yet this update process. But if you look at the PR #1145 for ConstantForceField can inspire to apply this on TriangularBendingSprings. Would you feel confident to implement it?
Hugo
18 September 2019 at 18:43 in reply to: Activating twoWay option in attachConstraint component or not #14265HugoKeymasterBy the way @zahra do not hesitate to join us in Paris to present your work at the SOFA Symposium in November.
Cheers,Hugo
18 September 2019 at 15:13 in reply to: Activating twoWay option in attachConstraint component or not #14262HugoKeymasterHi @charles
I therefore close the topic.
I apologize for the delay, we are currently very busy organizing the SOFA Week 2019 and the next steps for SOFA in 2020! I’ll get back to you before the end of the week.Best
Hugo
HugoKeymasterHi @charles
You did well opening a new topic.
You selected Win, is this your OS?
Have you paid attention to the doc on boost, during the compilation?Hugo
HugoKeymasterHi @eugenekli
Have you tried to get inspired from SOFA examples (like examples/Components/collision/TriangleModel.scn) ?
Here is an example:
<?xml version="1.0"?> <Node name="root" dt="0.02"> <RequiredPlugin name="SofaOpenglVisual"/> <VisualStyle displayFlags="showBehaviorModels showForceFields" /> <DefaultPipeline verbose="0" draw="0" /> <BruteForceDetection name="N2" /> <MinProximityIntersection name="Proximity" alarmDistance="0.8" contactDistance="0.5" /> <DefaultContactManager name="Response" response="default" /> <Node name="cubeFEM"> <EulerImplicitSolver name="cg_odesolver" printLog="false" rayleighStiffness="0.1" rayleighMass="0.1" /> <CGLinearSolver iterations="25" name="linear solver" tolerance="1.0e-9" threshold="1.0e-9" /> <MechanicalObject /> <UniformMass vertexMass="0.25" /> <RegularGridTopology nx="5" ny="5" nz="5" xmin="-3.5" xmax="3.5" ymin="7.5" ymax="14.5" zmin="-3.5" zmax="3.5"/> <TetrahedronFEMForceField name="FEM" youngModulus="25" poissonRatio="0.3" computeGlobalMatrix="false" updateStiffnessMatrix="false" method="large" /> <Node name="Visu"> <MeshObjLoader name="meshLoader_0" filename="mesh/smCube125.obj" handleSeams="1" translation="0 11 0"/> <OglModel name="Visual" src="@meshLoader_0" color="red" /> <SubsetMapping input="@.." output="@Visual" /> </Node> <Node name="Surf"> <MeshObjLoader name="loader" filename="mesh/smCube125.obj" translation="0 11 0"/> <MeshTopology src="@loader" /> <MechanicalObject src="@loader" /> <TriangleCollisionModel /> <LineCollisionModel /> <PointCollisionModel /> <SubsetMapping /> </Node> </Node> <Node name="cubeRigid"> <EulerImplicitSolver name="cg_odesolver" printLog="false" rayleighStiffness="0.1" rayleighMass="0.1" /> <CGLinearSolver iterations="25" name="linear solver" tolerance="1.0e-9" threshold="1.0e-9" /> <MechanicalObject template="Rigid3d" translation="0 0 0"/> <UniformMass vertexMass="0.25" /> <Node name="Visu"> <MeshObjLoader name="meshLoader_0" filename="mesh/smCube125.obj" handleSeams="1" /> <OglModel name="Visual" src="@meshLoader_0" color="grey" /> <RigidMapping input="@.." output="@Visual" /> </Node> <Node name="Surf"> <MeshObjLoader name="loader" filename="mesh/smCube125.obj" /> <MeshTopology src="@loader" /> <MechanicalObject src="@loader" /> <TriangleCollisionModel /> <LineCollisionModel /> <PointCollisionModel /> <RigidMapping /> </Node> </Node> <Node name="Floor"> <MeshObjLoader name="loader" filename="mesh/floor3.obj" /> <MeshTopology src="@loader" /> <MechanicalObject src="@loader" dy="-10" scale="1.75" /> <TriangleCollisionModel name="FloorTriangle" simulated="0" moving="0" /> <LineCollisionModel name="FloorLine" simulated="0" moving="0" /> <PointCollisionModel name="FloorLine" simulated="0" moving="0" /> <MeshObjLoader name="meshLoader_1" filename="mesh/floor3.obj" scale="1.75" handleSeams="1" /> <OglModel name="FloorV" src="@meshLoader_1" texturename="textures/brushed_metal.bmp" dy="-10" /> </Node> </Node>
Hugo
HugoKeymasterHi @fleonard
I do not advise to use DiscreteIntersection for the detection but rather the LocalMinDistance (or MinProximityIntersection) as shown below:
self.rootNode.createObject("LocalMinDistance", name="Intersection", alarmDistance="0.3", contactDistance="0.1", useLMDFilters="0")
Best
Hugo
HugoKeymasterHi @sayan957
Let me poke Damien for you.
He will reply here in the forum regarding your previous question.Hugo
HugoKeymaster1. I will work on it as soon as I can
2. this is ready in PR #1093
3. dt can already be changed, but you must be very careful with this. Some parameters or numerical settings (ODE solvers, constraints) may depend on the time step and can not be updated. I would therefore advise to change it very carefully.
4. Topology change (update in the mesh) is a work in progress thanks to the amazing work of InfinyTech3D (consulting company around SOFA)Best,
Hugo
HugoKeymasterI will let @omar guide you, he’ll have more accurate and up-to-date replies regarding his current work.
BestHugo
HugoKeymasterWelcome on the forum and congratulations for your first steps in SOFA.
To start with SOFA, I would advise the following steps:- follow the online documentation
- watch our first Tutorials on YouTube
- start using SOFA, running the examples/Tutorials (as you just did)
- read a reference paper about SOFA
- browse the SOFA API
Once you played with the existing examples, it is tempting to modify them. To do so, open the *.xml *.scn *.py or *.pyscn in an editor. You can start changing physical properties, add new components etc. We would like to work soon on video tutorials showing how to start editing a scene.
Once a simulation is started, if you want to look into any component in the scene, you can double click left, a window will open.
I hope this helps.
Best wishes,Hugo
HugoKeymasterHi @slin25
Thank you for this interesting question.
I never heard about a routine optimizing the mesh for computation time. I know the Defrost team worked on Control Design, i.e. an optimization process of robot shape so that the simulation “converges faster and with reduced oscillations to a desired equilibrium state”.To run several SOFA simulations, they are using the sofa-launcher application available in SOFA.
I hope this answers your question.
Best wishes,Hugo
HugoKeymasterHi @jieying
The developer of this plugin is @Omar from the Mimesis team. Omar could you explain a bit what you are currently doing with your RGBD camera?
Hugo
PS: for people simply looking for getting screenshots / videos of the simulation (regarding the title of your forum topic), you can use the VideoRecorder (Edit->Video Recorder Manager). To activate it, press “V” during the simulation.
HugoKeymasterThe new API for internal updates of components has recently been introduced in PR #1131.
I will update the mass components and then I will have a look at the ForceFields components. Do not hesitate to make a list of components/Data that you see as crucial for the update.
Hugo
HugoKeymasterHi @bobiko
After gathering information here is what I can summerize.
GPU versions of constraints exist: the construction of the constraint Jacobian matrix (H) and the associated compliance matrix (W) can be parallized. These codes are in private repositories. An example of implementation has been done by Dr. Courtecuisse and put a binary version online: http://hadrien.courtecuisse.cnrs.fr/software/?page=SofaCUDALDI.#linkplugin
Access to source codes is restricted and requires to have licensing contracts. For any further question, you can write us about this on the contact form.For the resolution (Gauss Seidel loop) a GPU implementation remains apparently slower than a CPU approach.
Moreover, one of the SOFA independent developer is also working on making collision detection and resolution multi-CPU, i.e. multithreaded. He is open for collaboration. For this purpose, you can also contact us using the form.
If you have any further question, do not hesitate. Or feel free to close (set as solved) this thread of discussion.
Best,
Hugo
-
AuthorPosts