sot-talos-balance  2.0.5
Collection of dynamic-graph entities aimed at implementing balance control on talos.
test_COMTraj_tracer.py
Go to the documentation of this file.
1 # flake8: noqa
2 import os
3 from time import sleep
4 
5 from dynamic_graph import plug
6 from dynamic_graph.sot.core import SOT
7 from dynamic_graph.sot.core.matrix_util import matrixToTuple
8 from dynamic_graph.sot.core.meta_tasks_kine import (
9  MetaTaskKine6d,
10  MetaTaskKineCom,
11  gotoNd,
12 )
13 
14 import dynamic_graph.sot_talos_balance.talos.parameter_server_conf as param_server_conf
17 
18 
19 def main(robot):
20  robot.timeStep = robot.device.getTimeStep()
21  dt = robot.timeStep
22  robot.comTrajGen = create_com_trajectory_generator(dt, robot)
23 
24  # --- COM
25  robot.taskCom = MetaTaskKineCom(robot.dynamic)
26  robot.dynamic.com.recompute(0)
27  robot.taskCom.featureDes.errorIN.value = robot.dynamic.com.value
28  robot.taskCom.task.controlGain.value = 10
29 
30  # --- CONTACTS
31  # define contactLF and contactRF
32  robot.contactLF = MetaTaskKine6d(
33  "contactLF", robot.dynamic, "LF", robot.OperationalPointsMap["left-ankle"]
34  )
35  robot.contactLF.feature.frame("desired")
36  robot.contactLF.gain.setConstant(100)
37  robot.contactLF.keep()
38  locals()["contactLF"] = robot.contactLF
39 
40  robot.contactRF = MetaTaskKine6d(
41  "contactRF", robot.dynamic, "RF", robot.OperationalPointsMap["right-ankle"]
42  )
43  robot.contactRF.feature.frame("desired")
44  robot.contactRF.gain.setConstant(100)
45  robot.contactRF.keep()
46  locals()["contactRF"] = robot.contactRF
47 
48  # --- SOT
49  robot.sot = SOT("sot")
50  robot.sot.setSize(robot.dynamic.getDimension())
51  plug(robot.sot.control, robot.device.control)
52 
53  robot.sot.push(robot.contactRF.task.name)
54  robot.sot.push(robot.taskCom.task.name)
55  robot.sot.push(robot.contactLF.task.name)
56  robot.device.control.recompute(0)
57 
58  # --- ESTIMATION
59  robot.param_server = create_parameter_server(param_server_conf, dt)
60  # robot.imu_offset_compensation = create_imu_offset_compensation(robot, dt)
61  robot.device_filters = create_device_filters(robot, dt)
62  robot.imu_filters = create_imu_filters(robot, dt)
63  robot.base_estimator = create_base_estimator(robot, dt, conf)
64  robot.be_filters = create_be_filters(robot, dt)
65 
66  # --- TRACERS
67  outputs = ["robotState"]
68  robot.device_tracer = create_tracer(robot, robot.device, "device_tracer", outputs)
69  outputs = ["q"]
70  robot.estimator_tracer = create_tracer(
71  robot, robot.base_estimator, "estimator_tracer", outputs
72  )
73  robot.device.after.addSignal("base_estimator.q")
74 
75  # --- RUN SIMULATION
76  plug(robot.comTrajGen.x, robot.taskCom.featureDes.errorIN)
77  sleep(1.0)
78  os.system("rosservice call \start_dynamic_graph")
79  sleep(2.0)
80  robot.comTrajGen.move(1, -0.025, 4.0)
81  sleep(5.0)
82  robot.comTrajGen.startSinusoid(1, 0.05, 8.0)
83  sleep(0.2)
84 
85  robot.device_tracer.start()
86  robot.estimator_tracer.start()
87  sleep(3.0)
88  dump_tracer(robot.device_tracer)
89  dump_tracer(robot.estimator_tracer)
90  print("data dumped")
91 
92  # --- DISPLAY
93  device_data = read_tracer_file("/tmp/dg_" + robot.device.name + "-robotState.dat")
94  estimator_data = read_tracer_file("/tmp/dg_" + robot.base_estimator.name + "-q.dat")
95  plot_select_traj(device_data, [10, 23, 15])
96  plot_select_traj(estimator_data, [10, 23, 15])
97  write_pdf_graph("/tmp/")
sot_talos_balance.utils.plot_utils.write_pdf_graph
def write_pdf_graph(path="/tmp/")
Definition: plot_utils.py:32
create_entities_utils
sot_talos_balance.create_entities_utils.create_base_estimator
def create_base_estimator(robot, dt, conf, robot_name="robot")
Definition: create_entities_utils.py:352
sot_talos_balance.utils.plot_utils.read_tracer_file
def read_tracer_file(filename)
Definition: plot_utils.py:17
sot_talos_balance.utils.plot_utils.plot_select_traj
def plot_select_traj(traj, idxs, name)
Definition: plot_utils.py:23
plot_utils
sot_talos_balance.create_entities_utils.create_com_trajectory_generator
def create_com_trajectory_generator(dt, robot)
Definition: create_entities_utils.py:120
sot_talos_balance.create_entities_utils.dump_tracer
def dump_tracer(tracer)
Definition: create_entities_utils.py:438
sot_talos_balance.create_entities_utils.create_be_filters
def create_be_filters(robot, dt)
Definition: create_entities_utils.py:332
sot_talos_balance.test.test_COMTraj_tracer.main
def main(robot)
Definition: test_COMTraj_tracer.py:19
sot_talos_balance.create_entities_utils.create_tracer
def create_tracer(robot, entity, tracer_name, outputs=None)
Definition: create_entities_utils.py:417
sot_talos_balance.create_entities_utils.create_parameter_server
def create_parameter_server(conf, dt, robot_name="robot")
Definition: create_entities_utils.py:619
sot_talos_balance.create_entities_utils.create_imu_filters
def create_imu_filters(robot, dt)
Definition: create_entities_utils.py:388
sot_talos_balance.create_entities_utils.create_device_filters
def create_device_filters(robot, dt)
Definition: create_entities_utils.py:279