diff --git a/python/unittests/walkromeo.py b/python/unittests/walkromeo.py index dae9e89ad6c73d53ee96c77d196d93d3c12f7abb..3ec6317f547f5796e94918990aad752caa0d5140 100644 --- a/python/unittests/walkromeo.py +++ b/python/unittests/walkromeo.py @@ -15,6 +15,15 @@ from dynamic_graph.sot.dyninv import SolverKine from dynamic_graph.sot.dyninv.robot_specific import pkgDataRootDir,modelName,robotDimension,initialConfig,gearRatio,inertiaRotor,specificitiesName,jointRankName +from numpy import * +def totuple( a ): + al=a.tolist() + res=[] + for i in range(a.shape[0]): + res.append( tuple(al[i]) ) + return tuple(res) + + # --- ROBOT SIMU --------------------------------------------------------------- robotName = 'romeo' robotDim=robotDimension[robotName] @@ -85,6 +94,41 @@ taskLF=MetaTask6d('lf',dyn,'lf','left-ankle') plug(pg.pg.leftfootref,taskLF.featureDes.position) taskLF.task.controlGain.value = 40 + +# ---- WAIST TASK ORIENTATION --- +# set the orientation of the waist to be the same as the one of the foot. +taskWaistOr=MetaTask6d('waistOr',dyn,'waist','waist') +plug(pg.pg.rightfootref,taskWaistOr.featureDes.position) +taskWaistOr.task.controlGain.value = 40 +taskWaistOr.feature.selec.value = '100000' + + +taskHead=MetaTask6d('head',dyn,'gaze','gaze') +plug(taskRF.featureDes.position, taskHead.featureDes.position) +taskHead.feature.selec.value = '111000' +taskHead.task.controlGain.value = 5 + +# --- TASK POSTURE -------------------------------------------------- +# set a default position for the joints. +featurePosition = FeatureGeneric('featurePosition') +featurePositionDes = FeatureGeneric('featurePositionDes') +featurePosition.setReference('featurePositionDes') +plug(dyn.position,featurePosition.errorIN) +featurePositionDes.errorIN.value = initialConfig['romeo'] +featurePosition.jacobianIN.value = totuple( identity(robotDim) ) + +taskPosition = Task('taskPosition') +taskPosition.add('featurePosition') +# featurePosition.selec.value = toFlags((6,24)) + +gainPosition = GainAdaptive('gainPosition') +gainPosition.set(0.1,0.1,125e3) +gainPosition.gain.value = 5 +plug(taskPosition.error,gainPosition.error) +plug(gainPosition.gain,taskPosition.controlGain) +featurePosition.selec.value = '000000000000001111111111111100000000000' + + # --- RUN ---------------------------------------------------------------------- # --- RUN ---------------------------------------------------------------------- # --- RUN ---------------------------------------------------------------------- @@ -92,6 +136,13 @@ sot.push(taskWaist.task.name) sot.push(taskRF.task.name) sot.push(taskLF.task.name) sot.push(taskCom.task.name) +sot.push(taskWaistOr.task.name) + +# Stun the upper part of the body. +sot.push(taskHead.task.name) # constraint the head orientation: look straight ahead +sot.push('taskPosition') # stun the arms. + + # --- HERDT PG AND START ------------------------------------------------------- # Set the algorithm generating the ZMP reference trajectory to Herdt's one.