Forum Replies Created
-
AuthorPosts
-
HugoKeymaster
Hey @quantanovo
I tested it with the recent v20.12.01 release of SOFA it seems to work well.
Could you try it as well?Only a set of RequiredPlugin was missing:
root.addObject('RequiredPlugin', pluginName="SofaGeneralLoader") root.addObject('RequiredPlugin', pluginName="SofaLoader") root.addObject('RequiredPlugin', pluginName="SofaImplicitOdeSolver") root.addObject('RequiredPlugin', pluginName="SofaSimpleFem") root.addObject('RequiredPlugin', pluginName="SofaOpenglVisual")
Hope this helps.
BestHugo
HugoKeymasterOur project is mainly C++ oriented. Therefore we are looking for C++/CMake/Qt devs and the best is to have good backgrounds in computational mechanics and numerical analysis in order to cover the basis of SOFA.
I am afraid Java, Flutter and Swift would not be of key interest for us know, but thank you for your interest and for posting.Best wishes,
Hugo
HugoKeymasterDear @aryakarani,
Thank you for your interest in SOFA and for your question.
1. In SOFA, each component in the scene graph corresponds to a C++ class. Each component has parameters which can be accessed by the user (in the GUI, or using Python script for instance): these are called the Data. Position of a MechanicalObject, time in the simulation and many information can thus be accessed during the simulation.
If you want to export these Data into a specific format you can use our Exporters: MeshExporter or VTKExporter.2. I am no expert of the SoftRobot/STLIB plugins. Which scene are you currently running in the SoftRobot plugin?
@olivier-goury do you see how change the step-size of the prefab like the s90 servo ?3. This means your change might include an error/typo or similar. It is impossible to tell without the change that you did and the full error message.
Best,
Hugo
HugoKeymasterGreat, thanks for keeping us posted @newbie
Do not hesitate to contribute back your fix in the plugin!
Best,Hugo
HugoKeymasterHi @twxu Thomas
Thanks for making the effort it helps !
I run the scene on my side it seems to work fine. What is the issue again? Scene seems to run fine here, I might be missing something.Best
Hugo
HugoKeymasterHi @timp
I am really the sorry the transfer expired. Could you restart it please? I will try to give a look within the next days! My apologies!
Best,Hugo
HugoKeymasterTo compute the pressure, use directly the P = F/S relationship.
Best,Hugo
HugoKeymasterHi @twxu
“constraintForces” is a vector which size equals the number of constraints (maybe contacts in your case). If you have 3 contacts you would have :
“Contact1_ForceInX Contact1_ForceInY Contact1_ForceInZ Contact2_ForceInX Contact2_ForceInY Contact2_ForceInZ Contact3_ForceInX Contact3_ForceInY Contact3_ForceInZ”
Best,
Hugo
HugoKeymasterHi @agnesenardi
I do not unfortunately have an example of needle insertion, working out of the box. I never implemented needle insertion myself.
Such codes are usually implemented by people in plugins. You could maybe collaborate with some research team or consulting company.Needle insertion is far from being trivial: not only collision must be detected, contact creates a Unilateral constraint, when the force applied exceed a threshold aa SlidingConstraint replaces the Unilateral to mimic penetration etc. A complicated pipeline.
Let me know the way you want to follow.
Best wishes,Hugo
HugoKeymasterHugoKeymasterOk …
Either the ffmpeg which has wrong rights, or the repository in which you are trying to write (build/bin) have strange rights.Is there a ffmpeg in build/bin ? if so what are its rights ? is it executable ?
Maybe @tgaugry has an idea ?
Best,
Hugo
25 February 2021 at 23:30 in reply to: [SOLVED] SofaPython3 pygame rendering example not working #18753HugoKeymasterThanks for backing up people reading your post @psomers
I close the topic in the mean if this is fine for you two. If I missed somehting, please do not hesitate to reopen it.Best wishes,
Hugo
HugoKeymasterThere you are:
def createGraph(self,rootNode): # rootNode rootNode.createObject('RequiredPlugin', name='SofaOpenglVisual') rootNode.createObject('RequiredPlugin', name='SofaImplicitOdeSolver') rootNode.createObject('RequiredPlugin', name='SofaLoader') rootNode.createObject('RequiredPlugin', name='SofaGeneralSimpleFem') rootNode.createObject('VisualStyle', displayFlags='showBehaviorModels') rootNode.createObject('DefaultPipeline', name='CollisionPipeline', verbose='0') rootNode.createObject('BruteForceDetection', name='N2') rootNode.createObject('DefaultContactManager', name='collision response', response='default') rootNode.createObject('DiscreteIntersection') rootNode.createObject('MeshObjLoader', name='LiverSurface', filename='mesh/liver-smooth.obj') # rootNode/Liver Liver = rootNode.createChild('Liver') self.Liver = Liver Liver.gravity = '0 -9.81 0' Liver.createObject('EulerImplicitSolver', rayleighStiffness='0.1', name='cg_odesolver', rayleighMass='0.1') Liver.createObject('CGLinearSolver', threshold='1e-09', tolerance='1e-09', name='linear solver', iterations='25') Liver.createObject('MeshGmshLoader', name='meshLoader', filename='mesh/liver.msh') Liver.createObject('TetrahedronSetTopologyContainer', src='@meshLoader', name='topo') Liver.createObject('MechanicalObject', src='@meshLoader', name='dofs') Liver.createObject('TetrahedronSetGeometryAlgorithms', name='GeomAlgo', template='Vec3d') Liver.createObject('DiagonalMass', massDensity='1', name='computed using mass density') Liver.createObject('TetrahedralCorotationalFEMForceField', poissonRatio='0.3', name='FEM', computeGlobalMatrix='0', method='large', template='Vec3d', youngModulus='3000') Liver.createObject('FixedConstraint', indices='3 39 64', name='FixedConstraint') Liver.createObject('BoxROI', box='-1 4 -1 1 6 1', drawBoxes='1', name='boxROI', drawPoints='1') # rootNode/Liver/Visu Visu = Liver.createChild('Visu') self.Visu = Visu Visu.tags = 'Visual' Visu.gravity = '0 -9.81 0' Visu.createObject('OglModel', src='@../../LiverSurface', name='VisualModel') Visu.createObject('BarycentricMapping', input='@../dofs', name='visual mapping', output='@VisualModel') # rootNode/Liver/Surf Surf = Liver.createChild('Surf') self.Surf = Surf Surf.gravity = '0 -9.81 0' Surf.createObject('SphereLoader', filename='mesh/liver.sph') Surf.createObject('MechanicalObject', position='@[-1].position', name='spheres') Surf.createObject('SphereCollisionModel', listRadius='@[-2].listRadius', name='CollisionModel') Surf.createObject('BarycentricMapping', input='@../dofs', name='sphere mapping', output='@spheres') return 0;
To help you visualize your BoxROI, you can activate the
drawBoxes='true'
boolean data AND the “Behavior Models” in the View widget of runSofa.Best wishes,
Hugo
HugoKeymasterGreat, I let the topic open so that you can update us about your SOFA discovery / work on doc.
Best wishes,
Hugo
HugoKeymasterBinaries including SOFA + SoftRobots + STLIB … are not yet available. Our dev team works hard currently to make it available and usable from a python3 environment.
In the meantime, you can now compile waaayyyy more easily SOFA and SofaPython3. Actually SofaPython3 is now fetchable directly from the SOFA sources! In tree build will therefore work, aka a smoother experience for you!
Best wishes,
Hugo
HugoKeymasterHi @amendiza
This means your runSofa executable is run without write privileges. Could you try a:
sudo chmod 777 runSofa
Best wishes,
Hugo
HugoKeymasterHey @quantanovo
Thank you very much for your interest in SOFA, for your feedback regarding the YouTube tutorial videos and SofaPython3.
The problem you point out is strange indeed. @jnbrunet could this be due to a missing binding for OBBs?
In the meantime @quantanovo could you try replacing theNewProximityIntersection
byLocalMinDistance
instead? Let us know if it helps.Best wishes,
Hugo
HugoKeymasterHey @michelodu
I invite you to take a look to the Caribou plugin providing a novel yet modular implementation of the FEM, flexible-like. Let us know how this suits you. This plugin should very soon be available within SOFA.
Best wishes,
Hugo
HugoKeymasterHi @pasquale94
You can add Rayleigh damping which will mimic damping, i.e. viscosity based on Mass and Stiffness matrices.
You can also see :
– UniformVelocityDampingForceField
– and DiagonalVelocityDampingForceFieldDo you have an idea of damping model you would be looking for?
Best wishes,Hugo
HugoKeymasterDear @newbie
the SofaCV plugin is a private plugin. It is therefore hard for us to help. Does your plugin have an explicit dependency on SofaCore in the CMakeLists.txt (in target_link_libraries)? Does your code include DataFileName as well?
Best,
Hugo
HugoKeymasterIf it is not a blocking point, it is fine for me: this plugin being a private plugin I can not access it and help you debugging it.
I would bet for a CMakeLists.txt issue. If you want to investigate the fix, you can get inspired for other CMakeLists.txt as in Cosserat plugin for instance. If not, I let you close the topic.
Best wishes.
Hugo
HugoKeymaster17 February 2021 at 17:49 in reply to: [SOLVED] Rotate BoxROI for creating force fields of different stiffness in actuator #18709HugoKeymasterHey @anoush
I think I replied about this question here.
Is this correct?
If so, please do not hesitate to close this topic.Best
Hugo
HugoKeymasterHi @twxu
Using the GenericConstraintSolver, you can activate the “computeConstaintForces” boolean. This fills the nodal data field “constraintForces”: this vector will have the size of the constraints, i.e. contacts.
Let me know it this helps.
Best wishes,
Hugo
HugoKeymasterIt seems your computation is diverging, isn’t it Sergei?
You are printing the position (DOFs) which clearly seems to undergo a problem.
Could you print before and after you access it to check that the script is not the problem source?Without seeing more of your scene, it is complicated to guess.
Best
Hugo
-
AuthorPosts