sot-talos-balance  2.0.5
Collection of dynamic-graph entities aimed at implementing balance control on talos.
plot_utils.py
Go to the documentation of this file.
1 import os
2 from time import sleep
3 
4 import matplotlib.pyplot as plt
5 import numpy as np
6 from dynamic_graph import writeGraph
7 from dynamic_graph.tracer_real_time import TracerRealTime
8 from IPython import embed # noqa
9 
11  addTrace,
12  create_tracer,
13  dump_tracer,
14 )
15 
16 
17 def read_tracer_file(filename):
18  data = np.loadtxt(filename)
19  name = filename[8:-4]
20  return data, name
21 
22 
23 def plot_select_traj(traj, idxs, name):
24  """plot selected idx of ND array"""
25  plt.figure()
26  # nb_plots = np.size(idxs)
27  for idx in idxs:
28  plt.plot(traj[:, idx])
29  plt.title(name)
30 
31 
32 def write_pdf_graph(path="/tmp/"):
33  """outputs a pdf of the graph to the specified path"""
34  writeGraph(path + "graph.dot")
35  os.system("dot -Tpdf " + path + "graph.dot -o " + path + "graph.pdf")
36  return
37 
38 
39 def write_svg_graph(path="/tmp/"):
40  """outputs a svg of the graph to the specified path"""
41  writeGraph(path + "graph.dot")
42  os.system("dot -Tsvg " + path + "graph.dot -o " + path + "graph.svg")
43  return
44 
45 
46 def dump_sot_sig(robot, entity, signal_name, duration):
47  """dumps a sot signal in /tmp
48  ex: dump_sot_sig(robot,robot.entity,'signal_name',1.)"""
49  full_sig_name = entity.name + "." + signal_name
50  robot.tmp_tracer = create_tracer(robot, entity, "tmp_tracer", [signal_name])
51  robot.device.after.addSignal(full_sig_name)
52  robot.tmp_tracer.start()
53  sleep(duration)
54  dump_tracer(robot.tmp_tracer)
55  robot.tmp_tracer.clear()
56 
57 
58 def dump_sot_sigs(robot, list_of_sigs, duration):
59  """dumps several sot signals in /tmp
60  ex: dump_sot_sig(robot,[entity,signals],1.)"""
61  tracer = TracerRealTime("tmp_tracer")
62  tracer.setBufferSize(80 * (2**20))
63  tracer.open("/tmp", "dg_", ".dat")
64  robot.device.after.addSignal("{0}.triger".format(tracer.name))
65  for sigs in list_of_sigs:
66  entity = sigs[0]
67  for sig in sigs[1:]:
68  full_sig_name = entity.name + "." + sig
69  addTrace(tracer, entity, sig)
70  robot.device.after.addSignal(full_sig_name)
71  tracer.start()
72  sleep(duration)
73  dump_tracer(tracer)
74  tracer.clear()
75 
76 
77 def plot_sot_sig(filename, idxs):
78  """plots a dumped signal"""
79  filename = "/tmp/dg_" + filename + ".dat"
80  data, name = read_tracer_file(filename)
81  plot_select_traj(data, idxs, name)
82  return
83 
84 
85 def load_log_txt(filename):
86  v = np.loadtxt(filename)
87  t = v[:, 0]
88  v = v[:, 2:]
89 
90  idx = 0
91  for i in range(1, len(t)):
92  if t[i] < t[i - 1]:
93  idx = i
94  break
95  if idx > 0:
96  t = np.concatenate((t[idx:], t[:idx]))
97  v = np.concatenate((v[idx:, :], v[:idx, :]), axis=0)
98 
99  return t, v
sot_talos_balance.utils.plot_utils.load_log_txt
def load_log_txt(filename)
Definition: plot_utils.py:85
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.utils.plot_utils.write_svg_graph
def write_svg_graph(path="/tmp/")
Definition: plot_utils.py:39
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
sot_talos_balance.utils.plot_utils.dump_sot_sig
def dump_sot_sig(robot, entity, signal_name, duration)
Definition: plot_utils.py:46
sot_talos_balance.create_entities_utils.addTrace
def addTrace(tracer, entity, signalName)
Definition: create_entities_utils.py:402
sot_talos_balance.utils.plot_utils.dump_sot_sigs
def dump_sot_sigs(robot, list_of_sigs, duration)
Definition: plot_utils.py:58
sot_talos_balance.utils.plot_utils.plot_sot_sig
def plot_sot_sig(filename, idxs)
Definition: plot_utils.py:77
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_tracer
def create_tracer(robot, entity, tracer_name, outputs=None)
Definition: create_entities_utils.py:417