From a6d09efe63f0aa0becab8ff211b2e7b3e44d2797 Mon Sep 17 00:00:00 2001 From: pFernbach <pierre.fernbach@gmail.com> Date: Thu, 10 Jan 2019 11:06:25 +0100 Subject: [PATCH] [script] add a script to generate reference config for Kevin --- script/dynamic/talos_table.py | 185 ++++++++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 script/dynamic/talos_table.py diff --git a/script/dynamic/talos_table.py b/script/dynamic/talos_table.py new file mode 100644 index 0000000..83ccebc --- /dev/null +++ b/script/dynamic/talos_table.py @@ -0,0 +1,185 @@ +from hpp.corbaserver.rbprm.rbprmbuilder import Builder +from hpp.corbaserver.rbprm.rbprmfullbody import FullBody +from hpp.gepetto import Viewer +import time +from hpp.corbaserver import ProblemSolver +from hpp.corbaserver.rbprm.rbprmstate import State,StateHelper +import time + + +rLegId = 'talos_rleg_rom' +rLeg = 'leg_right_1_joint' +rFoot = 'leg_right_6_joint' + +lLegId = 'talos_lleg_rom' +lLeg = 'leg_left_1_joint' +lFoot = 'leg_left_6_joint' + +rArmId = 'talos_rarm_rom' +rArm = 'arm_right_1_joint' +rHand = 'arm_right_7_joint' + +lArmId = 'talos_larm_rom' +lArm = 'arm_left_1_joint' +lHand = 'arm_left_7_joint' + +packageName = "talos_data" +meshPackageName = "talos_data" +rootJointType = "freeflyer" +urdfName = "talos" +urdfSuffix = "_reduced" +srdfSuffix = "" + + +fullBody = FullBody () +fullBody.loadFullBodyModel(urdfName, rootJointType, meshPackageName, packageName, urdfSuffix, srdfSuffix) +fullBody.setJointBounds ("root_joint", [-5,5, -1.5, 1.5, 0.95, 1.05]) +ps = ProblemSolver( fullBody ) + + +from hpp.gepetto import ViewerFactory +vf = ViewerFactory (ps) +vf.loadObstacleModel ("hpp-rbprm-corba", "table_140_70_73", "planning") + + + +q_ref = [ + 0.0, 0.0, 1.0232773, 0.0 , 0.0, 0.0, 1, #Free flyer + 0.0, 0.0, -0.411354, 0.859395, -0.448041, -0.001708, #Left Leg + 0.0, 0.0, -0.411354, 0.859395, -0.448041, -0.001708, #Right Leg + 0.0 , 0.006761, #Chest + 0.25847 , 0.173046, -0.0002, -0.525366, 0.0, -0.0, 0.1,-0.005, #Left Arm + -0.25847 , -0.173046, 0.0002 , -0.525366, 0.0, 0.0, 0.1,-0.005,#Right Arm + 0., 0.]; # head + +q_init = q_ref[::] +fullBody.setReferenceConfig(q_ref) + + +tStart = time.time() +# generate databases : + +nbSamples = 1000 +rLegOffset = [0,-0.00018,-0.107] +rLegOffset[2] += 0.006 +rLegNormal = [0,0,1] +rLegx = 0.1; rLegy = 0.06 +fullBody.addLimb(rLegId,rLeg,rFoot,rLegOffset,rLegNormal, rLegx, rLegy, nbSamples, "static", 0.01) +fullBody.runLimbSampleAnalysis(rLegId, "ReferenceConfiguration", True) +#fullBody.saveLimbDatabase(rLegId, "./db/talos_rLeg_walk.db") + +lLegOffset = [0,-0.00018,-0.107] +lLegOffset[2] += 0.006 +lLegNormal = [0,0,1] +lLegx = 0.1; lLegy = 0.06 +fullBody.addLimb(lLegId,lLeg,lFoot,lLegOffset,rLegNormal, lLegx, lLegy, nbSamples, "static", 0.01) +fullBody.runLimbSampleAnalysis(lLegId, "ReferenceConfiguration", True) +#fullBody.saveLimbDatabase(rLegId, "./db/talos_lLeg_walk.db") + + +#rArmOffset = [0.055,-0.04,-0.13] +rArmOffset = [-0.01,0.,-0.154] +rArmNormal = [0,0,1] +rArmx = 0.005; rArmy = 0.005 +fullBody.addLimb(rArmId,rArm,rHand,rArmOffset,rArmNormal, rArmx, rArmy, nbSamples, "EFORT", 0.01) +fullBody.runLimbSampleAnalysis(rArmId, "ReferenceConfiguration", True) + + +""" +lArmOffset = [0.055,0.04,-0.13] +lArmNormal = [0,0,1] +lArmx = 0.02; lArmy = 0.02 +fullBody.addLimb(larmId,larm,lHand,lArmOffset,lArmNormal, lArmx, lArmy, nbSamples, "EFORT", 0.01) +fullBody.runLimbSampleAnalysis(larmId, "ReferenceConfiguration", True) +""" + +tGenerate = time.time() - tStart +print "generate databases in : "+str(tGenerate)+" s" + +v = vf.createViewer(displayCoM=True) +v(q_init) +v.addLandmark(v.sceneName,0.5) +v.addLandmark('talos/arm_right_7_link',0.1) +q_init[0:2] = [-0.5,0.8] +q_init[32] -=1.5 # right elbow +v(q_init) + +# sphere = target +from display_tools import * +createSphere('target',v,size=0.05,color=v.color.red) +v.client.gui.setVisibility('target','ON') +moveSphere('target',v,[0,0,0.5]) + +# create contact : +fullBody.setStartState(q_init,[lLegId,rLegId]) +q_ref[0:3] = q_init[0:3] +sref = State(fullBody,q=q_ref,limbsIncontact=[lLegId,rLegId]) +s0 = State(fullBody,q=q_init,limbsIncontact=[lLegId,rLegId]) +createSphere('s',v) +p0 = [-0.25,0.5,0.75] +#p1 = [-0,0.45,0.8] +p = [0.1,0.5,0.75] +moveSphere('s',v,p) +s0_bis,success = StateHelper.addNewContact(sref,rArmId,p0,[0,0,1]) +#s0_bis2,success = StateHelper.addNewContact(s0_bis,rArmId,p1,[0,0,1]) +s1,success = StateHelper.addNewContact(s0_bis,rArmId,p,[0,0,1]) +assert(success) +v(s1.q()) + +#project com +v(q_init) +com_i = fullBody.getCenterOfMass() +com_i[2] -= 0.03 +com_i[0] += 0.06 +createSphere("com",v) +moveSphere("com",v,com_i) +s1.projectToCOM(com_i) +v(s1.q()) +s1_feet = State(fullBody,q=s1.q(),limbsIncontact=[lLegId,rLegId]) + +s2,success = StateHelper.addNewContact(s0_bis,rArmId,p,[0,0,1]) +com=s2.getCenterOfMass() +#com[0] += 0.03 +com[1] -= 0.06 +com[2] -= 0.02 +moveSphere("com",v,com) +s2.projectToCOM(com) +v(s2.q()) + +q3=q_init[::] +q3[20]=1.2 +s3_0 = State(fullBody,q=q3,limbsIncontact=[lLegId,rLegId]) +s3,success = StateHelper.addNewContact(s3_0,rArmId,p,[0,0,1]) +assert(success) +com=s3.getCenterOfMass() +#com[0] += 0.03 +com[1] -= 0.1 +com[2] -= 0.02 +moveSphere("com",v,com) +s3.projectToCOM(com) +v(s3.q()) + +""" +jointsName = [rFoot,lFoot,rHand] +contactPos = [] +contactNormal = [] +pn = s1.getCenterOfContactForLimb(rLegId) +contactPos += [pn[0]] +contactNormal += [pn[1]] +pn = s1.getCenterOfContactForLimb(lLegId) +contactPos += [pn[0]] +contactNormal += [pn[1]] +pn = s1.getCenterOfContactForLimb(rArmId) +contactPos += [pn[0]] +contactNormal += [pn[1]] + + +ps.client.problem.createStaticStabilityConstraint ('staticStability', + jointsName, contactPos, contactNormal,'root_joint') +""" + + +q2 = q_ref[::] + + + -- GitLab