4 @author: Andrea Del Prete, Gabriele Buondonno
5 This module contains utilities for the SOT
7 from __future__
import print_function
10 from time
import sleep
17 self.__dict__.update(kwds)
21 for key, value
in self.__dict__.iteritems():
23 isinstance(value, np.ndarray)
24 and len(value.shape) == 2
25 and value.shape[0] > value.shape[1]
27 res += prefix +
" - " + key +
": " + str(value.T) +
"\n"
28 elif isinstance(value, Bunch):
30 prefix +
" - " + key +
":\n" + value.__str__(prefix +
" ") +
"\n"
33 res += prefix +
" - " + key +
": " + str(value) +
"\n"
38 os.system(
"rosservice call /start_dynamic_graph")
42 os.system(
"rosservice call /stop_dynamic_graph")
46 value_type = type(sig.value)
47 v = np.array(sig.value)
49 v = np.array(0.95 * v)
50 sig.value = value_type(v)
52 print(
"Setting signal to zero")
54 sig.value = value_type(v)
58 value_type = type(sig.value)
59 v = np.array(sig.value)
60 vf = np.array(final_value)
61 for i
in range(steps + 1):
62 alpha = 1.0 * i / steps
63 sig.value = value_type(np.array(vf * alpha + (1 - alpha) * v))
64 sleep(1.0 * duration / steps)
66 sig.value = value_type(vf)
71 err = np.zeros((N, 6))
73 err[i, :] = np.array(sig.value) - np.array(sigRef.value)
77 "Max tracking error for axis %d: %.2f"
78 % (i, np.max(np.abs(err[:, i])))
81 "Mean square tracking error for axis %d: %.2f"
82 % (i, np.linalg.norm(err[:, i]) / N)