Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit 454fcc8

Browse files
committed
fix for python3
1 parent b742858 commit 454fcc8

File tree

4 files changed

+700
-628
lines changed

4 files changed

+700
-628
lines changed

python/dynamic_graph/sot/torque_control/talos/create_entities_utils_talos.py

Lines changed: 55 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
@author: Andrea Del Prete
55
"""
66

7+
from __future__ import print_function
8+
79
from dynamic_graph import plug
810
import numpy as np
911
from dynamic_graph.sot.core.latch import Latch
@@ -67,7 +69,7 @@ def get_sim_conf():
6769
conf.motor_params = motor_params
6870
conf.ddp_controller = ddp_controller_conf
6971
return conf
70-
72+
7173
def create_encoders(robot):
7274
encoders = Selec_of_vector('qn')
7375
plug(robot.device.robotState, encoders.sin);
@@ -144,7 +146,7 @@ def create_signal_mixer(robot, conf):
144146
#plug(signal_mixer.sout, robot.torque_ctrl.jointsTorquesDesired);
145147
return signal_mixer
146148

147-
def create_base_estimator(robot, dt, conf, robot_name="robot"):
149+
def create_base_estimator(robot, dt, conf, robot_name="robot"):
148150
from dynamic_graph.sot.torque_control.base_estimator import BaseEstimator
149151
base_estimator = BaseEstimator('base_estimator');
150152
plug(robot.encoders.sout, base_estimator.joint_positions);
@@ -166,7 +168,7 @@ def create_base_estimator(robot, dt, conf, robot_name="robot"):
166168
base_estimator.w_rf_in.value = conf.w_rf_in;
167169
except:
168170
pass;
169-
171+
170172
base_estimator.set_imu_weight(conf.w_imu);
171173
base_estimator.set_stiffness_right_foot(conf.K);
172174
base_estimator.set_stiffness_left_foot(conf.K);
@@ -180,10 +182,10 @@ def create_base_estimator(robot, dt, conf, robot_name="robot"):
180182
base_estimator.set_normal_force_margin_left_foot(conf.normal_force_margin)
181183
base_estimator.set_right_foot_sizes(conf.RIGHT_FOOT_SIZES)
182184
base_estimator.set_left_foot_sizes(conf.LEFT_FOOT_SIZES)
183-
185+
184186
base_estimator.init(dt, robot_name);
185187
return base_estimator;
186-
188+
187189
def create_imu_offset_compensation(robot, dt):
188190
from dynamic_graph.sot.torque_control.imu_offset_compensation import ImuOffsetCompensation
189191
imu_offset_compensation = ImuOffsetCompensation('imu_offset_comp');
@@ -202,7 +204,7 @@ def create_imu_filter(robot, dt):
202204

203205
def create_com_traj_gen(robot, dt):
204206
com_traj_gen = NdTrajectoryGenerator("com_traj_gen");
205-
com_traj_gen.initial_value.value = robot.dynamic.com.value
207+
com_traj_gen.initial_value.value = robot.dynamic.com.value
206208
com_traj_gen.trigger.value = 1.0
207209
com_traj_gen.init(dt,3)
208210
return com_traj_gen
@@ -241,11 +243,10 @@ def create_free_flyer_locator(ent, robot_name="robot"):
241243
try:
242244
plug(ff_locator.base6dFromFoot_encoders, ent.dynamic.position);
243245
except:
244-
print "[WARNING] Could not connect to dynamic entity, probably because you are in simulation"
245-
pass;
246-
ff_locator.init(robot_name);
247-
return ff_locator;
248-
246+
print("[WARNING] Could not connect to dynamic entity, probably because you are in simulation")
247+
ff_locator.init(robot_name)
248+
return ff_locator
249+
249250
def create_flex_estimator(robot, dt=0.001):
250251
from dynamic_graph.sot.application.state_observation.initializations.hrp2_model_base_flex_estimator_imu_force import HRP2ModelBaseFlexEstimatorIMUForce
251252
flex_est = HRP2ModelBaseFlexEstimatorIMUForce(robot, useMocap=False, dt=dt);
@@ -257,9 +258,9 @@ def create_flex_estimator(robot, dt=0.001):
257258
plug(robot.ff_locator.v, flex_est.inputVel.sin2);
258259
plug(robot.ff_locator.v, flex_est.DCom.sin2);
259260
return flex_est;
260-
261+
261262
def create_floatingBase(robot):
262-
from dynamic_graph.sot.application.state_observation.initializations.hrp2_model_base_flex_estimator_imu_force import FromLocalToGLobalFrame
263+
from dynamic_graph.sot.application.state_observation.initializations.hrp2_model_base_flex_estimator_imu_force import FromLocalToGLobalFrame
263264
floatingBase = FromLocalToGLobalFrame(robot.flex_est, "FloatingBase")
264265
plug(robot.ff_locator.freeflyer_aa, floatingBase.sinPos);
265266

@@ -269,7 +270,7 @@ def create_floatingBase(robot):
269270
base_vel_no_flex.selec(0, 6);
270271
plug(base_vel_no_flex.sout, floatingBase.sinVel);
271272
return floatingBase
272-
273+
273274
def create_position_controller(robot, gains, dt=0.001, robot_name="robot"):
274275
posCtrl = PositionController('pos_ctrl')
275276
posCtrl.Kp.value = tuple(gains.kp_pos[round(dt,3)]);
@@ -300,15 +301,15 @@ def create_trajectory_generator(robot, dt=0.001, robot_name="robot"):
300301
def create_filters(robot, conf, motor_params, dt):
301302
filters = Bunch()
302303

303-
# create low-pass filter for motor currents
304+
# create low-pass filter for motor currents
304305
filters.current_filter = create_butter_lp_filter_Wn_05_N_3('current_filter', dt, NJ)
305-
306+
306307
#filters.current_filter = NumericalDifference("current_filter");
307308
filters.ft_RF_filter = NumericalDifference("ft_RF_filter");
308309
filters.ft_LF_filter = NumericalDifference("ft_LF_filter");
309310
filters.ft_RH_filter = NumericalDifference("ft_RH_filter");
310311
filters.ft_LH_filter = NumericalDifference("ft_LH_filter");
311-
filters.acc_filter = NumericalDifference("dv_filter");
312+
filters.acc_filter = NumericalDifference("dv_filter");
312313
filters.gyro_filter = NumericalDifference("w_filter");
313314

314315
filters.estimator_kin = NumericalDifference("estimator_kin");
@@ -397,15 +398,15 @@ def create_torque_controller(robot, conf, motor_params, dt=0.001, robot_name="ro
397398
torque_ctrl.polySignDq.value = NJ*(conf.poly_sign_dq,);
398399
torque_ctrl.init(dt, robot_name);
399400
return torque_ctrl;
400-
401+
401402
def create_balance_controller(robot, conf, motor_params, dt, robot_name='robot'):
402403
from dynamic_graph.sot.torque_control.inverse_dynamics_balance_controller import InverseDynamicsBalanceController
403404
ctrl = InverseDynamicsBalanceController("invDynBalCtrl");
404405

405406
try:
406407
plug(robot.base_estimator.q, ctrl.q);
407408
plug(robot.base_estimator.v, ctrl.v);
408-
except:
409+
except:
409410
plug(robot.ff_locator.base6dFromFoot_encoders, ctrl.q);
410411
plug(robot.ff_locator.v, ctrl.v);
411412

@@ -416,7 +417,7 @@ def create_balance_controller(robot, conf, motor_params, dt, robot_name='robot')
416417
robot.ddq_des.selec(6,NJ+6);
417418
#plug(robot.ddq_des.sout, robot.estimator_ft.ddqRef);
418419
except:
419-
print "WARNING: Could not connect dv_des from BalanceController to ForceTorqueEstimator";
420+
print("WARNING: Could not connect dv_des from BalanceController to ForceTorqueEstimator")
420421

421422
#plug(robot.estimator_ft.contactWrenchRightSole, ctrl.wrench_right_foot);
422423
#plug(robot.estimator_ft.contactWrenchLeftSole, ctrl.wrench_left_foot);
@@ -459,7 +460,7 @@ def create_balance_controller(robot, conf, motor_params, dt, robot_name='robot')
459460
# plug(robot.lh_traj_gen.x, ctrl.lh_ref_pos);
460461
# plug(robot.lh_traj_gen.dx, ctrl.lh_ref_vel);
461462
# plug(robot.lh_traj_gen.ddx, ctrl.lh_ref_acc);
462-
463+
463464
ctrl.posture_ref_pos.value = robot.halfSitting[7:]
464465
ctrl.posture_ref_vel.value = 32*(0.0,)
465466
ctrl.posture_ref_acc.value = 32*(0.0,)
@@ -524,7 +525,7 @@ def create_balance_controller(robot, conf, motor_params, dt, robot_name='robot')
524525
ctrl.w_torques.value = conf.w_torques;
525526

526527
ctrl.init(dt, robot_name);
527-
528+
528529
return ctrl;
529530

530531
def create_simple_inverse_dyn_controller(robot, conf, dt, robot_name='robot'):
@@ -544,7 +545,7 @@ def create_simple_inverse_dyn_controller(robot, conf, dt, robot_name='robot'):
544545
# plug(robot.device.robotVelocity, ctrl.v)
545546
# ctrl.q.value = robot.halfSitting
546547
# ctrl.v.value = 38 * (0.0,)
547-
# except:
548+
# except:
548549
# plug(robot.ff_locator.base6dFromFoot_encoders, ctrl.q)
549550
# plug(robot.ff_locator.v, ctrl.v)
550551
# plug(ctrl.right_foot_pos, robot.rf_traj_gen.initial_value)
@@ -562,12 +563,12 @@ def create_simple_inverse_dyn_controller(robot, conf, dt, robot_name='robot'):
562563
# plug(robot.lf_traj_gen.x, ctrl.lf_ref_pos)
563564
# plug(robot.lf_traj_gen.dx, ctrl.lf_ref_vel)
564565
# plug(robot.lf_traj_gen.ddx, ctrl.lf_ref_acc)
565-
566+
566567
# ctrl.posture_ref_pos.value = robot.halfSitting[6:]
567568
# ctrl.posture_ref_vel.value = 32*(0.0,)
568569
# ctrl.posture_ref_acc.value = 32*(0.0,)
569570

570-
# ctrl.com_ref_pos.value = robot.dynamic.com.value
571+
# ctrl.com_ref_pos.value = robot.dynamic.com.value
571572
# ctrl.com_ref_vel.value = 3*(0.0,)
572573
# ctrl.com_ref_acc.value = 3*(0.0,)
573574

@@ -613,7 +614,7 @@ def create_simple_inverse_dyn_controller(robot, conf, dt, robot_name='robot'):
613614

614615
ctrl.init(dt, robot_name)
615616
return ctrl
616-
617+
617618
def create_inverse_dynamics(robot, conf, motor_params, dt=0.001):
618619
inv_dyn_ctrl = InverseDynamicsController("inv_dyn");
619620
plug(robot.device.robotState, inv_dyn_ctrl.base6d_encoders);
@@ -634,7 +635,7 @@ def create_inverse_dynamics(robot, conf, motor_params, dt=0.001):
634635
plug(inv_dyn_ctrl.tauDes, robot.torque_ctrl.jointsTorquesDesired);
635636
plug(inv_dyn_ctrl.tauDes, robot.estimator_ft.tauDes);
636637
plug(robot.estimator_ft.dynamicsError, inv_dyn_ctrl.dynamicsError);
637-
638+
638639
inv_dyn_ctrl.dynamicsErrorGain.value = (NJ+6)*(0.0,);
639640
inv_dyn_ctrl.Kp.value = tuple(conf.k_s); # joint proportional conf
640641
inv_dyn_ctrl.Kd.value = tuple(conf.k_d); # joint derivative conf
@@ -654,7 +655,7 @@ def create_inverse_dynamics(robot, conf, motor_params, dt=0.001):
654655
plug(robot.traj_gen.q, ddp_controller.pos_des);
655656
plug(robot.device.ptorque, ddp_controller.tau_measure);
656657
plug(robot.device.motor_angles, ddp_controller.pos_motor_measure);
657-
658+
658659
ddp_controller.temp_measure.value = conf.temp_const;
659660
660661
#plug(ddp_controller.tau, robot.torque_ctrl.jointsTorquesDesired);
@@ -671,7 +672,7 @@ def create_ddp_controller(robot, conf, dt):
671672
plug(robot.joint_torque_selec_ddp.sout, ddp_controller.tau_measure);
672673
plug(robot.motor_pos_selec_ddp.sout, ddp_controller.pos_motor_measure);
673674
plug(robot.tau_des_selec_ddp.sout, ddp_controller.tau_des);
674-
675+
675676
ddp_controller.temp_measure.value = conf.temp_const;
676677

677678
#plug(ddp_controller.tau, robot.torque_ctrl.jointsTorquesDesired);
@@ -691,27 +692,27 @@ def create_pyrene_ddp_controller(robot, conf, dt):
691692
return ddp_controller
692693

693694
def create_ctrl_manager(conf, motor_params, dt, robot_name='robot'):
694-
ctrl_manager = ControlManager("ctrl_man");
695+
ctrl_manager = ControlManager("ctrl_man");
695696

696697
ctrl_manager.tau_predicted.value = NJ*(0.0,);
697698
ctrl_manager.i_measured.value = NJ*(0.0,);
698699
ctrl_manager.tau_max.value = NJ*(conf.TAU_MAX,);
699700
ctrl_manager.i_max.value = NJ*(conf.CURRENT_MAX,);
700701
ctrl_manager.u_max.value = NJ*(conf.CTRL_MAX,);
701-
702-
# Init should be called before addCtrlMode
702+
703+
# Init should be called before addCtrlMode
703704
# because the size of state vector must be known.
704705
ctrl_manager.init(dt, conf.urdfFileName, robot_name)
705706

706707
# Set the map from joint name to joint ID
707708
for key in conf.mapJointNameToID:
708709
ctrl_manager.setNameToId(key,conf.mapJointNameToID[key])
709-
710+
710711
# Set the map joint limits for each id
711712
for key in conf.mapJointLimits:
712713
ctrl_manager.setJointLimitsFromId(key,conf.mapJointLimits[key][0], \
713714
conf.mapJointLimits[key][1])
714-
715+
715716
# Set the force limits for each id
716717
for key in conf.mapForceIdToForceLimits:
717718
ctrl_manager.setForceLimitsFromId(key,tuple(conf.mapForceIdToForceLimits[key][0]), \
@@ -731,29 +732,29 @@ def create_ctrl_manager(conf, motor_params, dt, robot_name='robot'):
731732
# Set the hand frame name
732733
for key in conf.handFrameNames:
733734
ctrl_manager.setHandFrameName(key,conf.handFrameNames[key])
734-
735+
735736
# Set IMU hosting joint name
736737
ctrl_manager.setImuJointName(conf.ImuJointName)
737-
738+
738739
ctrl_manager.setRightFootForceSensorXYZ(conf.rightFootSensorXYZ);
739740
ctrl_manager.setRightFootSoleXYZ(conf.rightFootSoleXYZ);
740741

741742
return ctrl_manager;
742743

743-
def connect_ctrl_manager(robot):
744-
# connect to device
744+
def connect_ctrl_manager(robot):
745+
# connect to device
745746
plug(robot.device.currents, robot.ctrl_manager.i_measured)
746747
plug(robot.device.ptorque, robot.ctrl_manager.tau)
747-
robot.ctrl_manager.addCtrlMode("torque")
748+
robot.ctrl_manager.addCtrlMode("torque")
748749
plug(robot.inv_dyn.u, robot.ctrl_manager.ctrl_torque)
749750

750751
robot.ctrl_manager.setCtrlMode("all", "torque")
751-
plug(robot.ctrl_manager.joints_ctrl_mode_torque, robot.inv_dyn.active_joints)
752+
plug(robot.ctrl_manager.joints_ctrl_mode_torque, robot.inv_dyn.active_joints)
752753
plug(robot.ctrl_manager.u_safe, robot.device.control)
753754
return
754-
755+
755756
def create_current_controller(robot, conf, motor_params, dt, robot_name='robot'):
756-
current_ctrl = CurrentController("current_ctrl");
757+
current_ctrl = CurrentController("current_ctrl");
757758

758759
current_ctrl.i_max.value = NJ*(conf.CURRENT_MAX,);
759760
current_ctrl.u_max.value = NJ*(conf.CTRL_MAX,);
@@ -772,9 +773,9 @@ def create_current_controller(robot, conf, motor_params, dt, robot_name='robot')
772773
plug(robot.filters.current_filter.x_filtered, current_ctrl.i_measured)
773774
plug(robot.filters.estimator_kin.dx, current_ctrl.dq);
774775
plug(current_ctrl.u_safe, robot.device.control);
775-
# initialize
776+
# initialize
776777
current_ctrl.init(dt, robot_name, conf.CURRENT_OFFSET_ITERS)
777-
778+
778779
return current_ctrl;
779780

780781

@@ -788,7 +789,7 @@ def create_admittance_ctrl(robot, conf, dt=0.001, robot_name='robot'):
788789
plug(robot.filters.ft_LF_filter.x_filtered, admit_ctrl.fLeftFootFiltered);
789790
plug(robot.inv_dyn.f_des_right_foot, admit_ctrl.fRightFootRef);
790791
plug(robot.inv_dyn.f_des_left_foot, admit_ctrl.fLeftFootRef);
791-
792+
792793
admit_ctrl.damping.value = 4*(0.05,);
793794
admit_ctrl.controlledJoints.value = NJ*(1.0,);
794795
admit_ctrl.kp_force.value = conf.kp_force;
@@ -797,14 +798,14 @@ def create_admittance_ctrl(robot, conf, dt=0.001, robot_name='robot'):
797798
admit_ctrl.ki_vel.value = conf.ki_vel;
798799
admit_ctrl.force_integral_saturation.value = conf.force_integral_saturation;
799800
admit_ctrl.force_integral_deadzone.value = conf.force_integral_deadzone;
800-
801+
801802
# connect it to torque control
802803
from dynamic_graph.sot.core import Add_of_vector
803804
robot.sum_torque_adm = Add_of_vector('sum_torque_adm');
804805
plug(robot.inv_dyn.tau_des, robot.sum_torque_adm.sin1);
805806
plug(admit_ctrl.u, robot.sum_torque_adm.sin2);
806807
plug(robot.sum_torque_adm.sout, robot.torque_ctrl.jointsTorquesDesired);
807-
808+
808809
admit_ctrl.init(dt, robot_name);
809810
return admit_ctrl;
810811

@@ -825,7 +826,7 @@ def create_topic(rospub, entity, signalName, renameSignal, robot=None, data_type
825826
plug(entity.signal(signalName), rospub.signal(rospub_signalName))
826827
if robot is not None:
827828
robot.device.after.addSignal('{0}.{1}'.format(entity.name, signalName))
828-
829+
829830

830831
def create_ros_topics(robot):
831832
from dynamic_graph.ros import RosPublish
@@ -842,7 +843,7 @@ def create_ros_topics(robot):
842843
robot.device.after.addDownsampledSignal('rosPublish.trigger',1);
843844
except:
844845
pass;
845-
846+
846847
try:
847848
create_topic(ros, robot.filters.estimator_kin.dx, 'jointsVelocities');
848849
create_topic(ros, robot.estimator_ft.contactWrenchLeftSole, 'contactWrenchLeftSole');
@@ -888,18 +889,18 @@ def create_ros_topics(robot):
888889
create_topic(ros, robot.floatingBase.soutPos, 'floatingBase_pos');
889890
except:
890891
pass;
891-
892+
892893
return ros;
893-
894-
894+
895+
895896
def addTrace(tracer, entity, signalName):
896897
"""
897898
Add a signal to a tracer
898899
"""
899900
signal = '{0}.{1}'.format(entity.name, signalName);
900901
filename = '{0}-{1}'.format(entity.name, signalName);
901902
tracer.add(signal, filename);
902-
903+
903904
def addSignalsToTracer(tracer, device):
904905
addTrace(tracer,device,'robotState');
905906
addTrace(tracer,device,'gyrometer');
@@ -921,7 +922,7 @@ def create_tracer(device, traj_gen=None, estimator_kin=None,
921922
device.after.addSignal('{0}.triger'.format(tracer.name));
922923

923924
addSignalsToTracer(tracer, device);
924-
925+
925926
with open('/tmp/dg_info.dat', 'a') as f:
926927
if(estimator_kin!=None):
927928
f.write('Estimator encoder delay: {0}\n'.format(robot.filters.estimator_kin.getDelay()));

0 commit comments

Comments
 (0)