Skip to content

Instantly share code, notes, and snippets.

View jangirrishabh's full-sized avatar
🎯
Focusing

Rishabh Jangir jangirrishabh

🎯
Focusing
View GitHub Profile
"""
Scene file for cloth on table.
To check deformations of the cloth under Attach Constraint and Fixed Constraint
Current script uses only Attach constraint at the 2 red balls to grasp the cloth
To add Fixed constraint uncomment line 62
Note: The red balls are supposed to move together in simulation and thus the cloth must follow them with minimum deformations
at the grasped vertices
"""
class workspace (Sofa.PythonScriptController):
def __init__(self, node, commandLineArguments) :
self.commandLineArguments = commandLineArguments
print "Command line arguments for python : "+str(commandLineArguments)
self.node = node
self.createGraph(node)
return None;
def createGraph(self,rootNode):
<?xml version="1.0" ?>
<!-- Testing ball collision problem from hugo -->
<Node name="root" dt="0.05" gravity="0 -9.810 0">
<VisualStyle displayFlags="hideBehaviorModels hideCollisionModels hideMappings hideForceFields showVisualModels hideInteractionForceFields" />
<RequiredPlugin name='SofaMiscCollision'/>
<RequiredPlugin name="SofaPython" pluginName="SofaPython" />
<FreeMotionAnimationLoop solveVelocityConstraintFirst="0" />
<LCPConstraintSolver maxIt="1000" tolerance="1e-6" initial_guess="false" build_lcp="true" multi_grid="false" printLog="0" mu="0.000000000001"/>
<Node name="root" dt="0.05" gravity="0 -9.810 0">
<VisualStyle displayFlags="hideBehaviorModels hideCollisionModels hideMappings hideForceFields showVisualModels hideInteractionForceFields" />
<RequiredPlugin name='SofaMiscCollision'/>
<RequiredPlugin name="SofaPython" pluginName="SofaPython" />
<FreeMotionAnimationLoop solveVelocityConstraintFirst="0" />
<LCPConstraintSolver maxIt="1000" tolerance="1e-6" initial_guess="false" build_lcp="true" multi_grid="false" printLog="0" mu="1.9"/>
<CollisionPipeline depth="6" verbose="0" draw="0" />
<BruteForceDetection name="N2" />
<Node name="root" dt="0.05" gravity="0 -9.810 0">
<VisualStyle displayFlags="hideBehaviorModels hideCollisionModels hideMappings hideForceFields showVisualModels" />
<RequiredPlugin name='SofaMiscCollision'/>
<LCPConstraintSolver maxIt="1000" tolerance="1e-6" initial_guess="false" build_lcp="true" multi_grid="false" printLog="0" mu="0.9"/>
<FreeMotionAnimationLoop solveVelocityConstraintFirst="1" />
<CollisionPipeline depth="15" verbose="0" draw="0" />
<BruteForceDetection name="N2" />
<LocalMinDistance name="Proximity" alarmDistance="0.3" contactDistance="0.1" useLMDFilters="0" />
<CollisionResponse name="Response" response="FrictionContact" />
<DiscreteIntersection/>
@jangirrishabh
jangirrishabh / keyboardControl.py
Created September 25, 2018 16:08
Sofa Cloth simulation
import Sofa
class KeyboardControl(Sofa.PythonScriptController):
# called once graph is created, to init some stuff...
def initGraph(self,node):
print 'initGraph called (python side)'
self.MechanicalState = node.getObject('DOFs')
gravity = node.findData('gravity').value
print gravity
self.rootNode = node.getRoot()
@jangirrishabh
jangirrishabh / ddpg1.py
Last active July 13, 2018 13:25
Snippet for using demonstrations in ddpg.py agent, blog usage, not executable
self.demo_batch_size = 128
def initDemoBuffer(self, demoDataFile, update_stats=True):
#To initiaze the demobuffer with the recorded demonstration data. We also normalize the demo data.
def sample_batch(self):
if self.bc_loss:
transitions = self.buffer.sample(self.batch_size - self.demo_batch_size)
global demoBuffer
@jangirrishabh
jangirrishabh / ddpg2.py
Last active July 13, 2018 13:24
Snippet for using demonstrations in ddpg.py agent, blog usage, not executable
self.lambda1 = 0.001
self.lambda2 = 0.0078
def _create_network(self, reuse=False):
mask = np.concatenate((np.zeros(self.batch_size - self.demo_batch_size), np.ones(self.demo_batch_size)), axis = 0)
target_Q_pi_tf = self.target.Q_pi_tf
clip_range = (-self.clip_return, 0. if self.clip_pos_returns else np.inf)
target_tf = tf.clip_by_value(batch_tf['r'] + self.gamma * target_Q_pi_tf, *clip_range) # y = r + gamma*Q(pi)
@jangirrishabh
jangirrishabh / toyCarIRL2.py
Created June 14, 2018 11:42
Snippet for toyCarIRL, blog usage, not executable
def optimalWeightFinder(self):
i = 1
while True:
W = self.optimization() # optimize to find new weights in the list of policies
print ("weights ::", W )
print ("the distances ::", self.policiesFE.keys())
self.currentT = self.policyListUpdater(W, i)
print ("Current distance (t) is:: ", self.currentT )
if self.currentT <= self.epsilon: # terminate if the point reached close enough
break
@jangirrishabh
jangirrishabh / toyCarIRL3.py
Created June 14, 2018 11:42
Snippet for toyCarIRL, blog usage, not executable
class irlAgent:
def __init__(self, randomFE, expertFE, epsilon, num_states, num_frames, behavior):
self.randomPolicy = randomFE
self.expertPolicy = expertFE
self.num_states = num_states
self.num_frames = num_frames
self.behavior = behavior
self.epsilon = epsilon # termination when t < 0.1
self.randomT = np.linalg.norm(np.asarray(self.expertPolicy)-np.asarray(self.randomPolicy)) #norm of the diff in expert and random
self.policiesFE = {self.randomT:self.randomPolicy} # storing the policies and their respective t values in a dictionary