1 """Test CoM admittance control as described in paper."""
5 import matplotlib.pyplot
as plt
7 from dynamic_graph.sot_talos_balance.utils.run_test_utils
import (
24 print(
"Connect ZMP reference")
25 runCommandClient(
"plug(robot.dcm_control.zmpRef,robot.com_admittance_control.zmpDes)")
26 runCommandClient(
"robot.com_admittance_control.setState(comDes,[0.0,0.0,0.0])")
45 comDes_data = np.loadtxt(
49 comEst_data = np.loadtxt(
56 comRef_data = np.loadtxt(
57 "/tmp/dg_" +
evalCommandClient(
"robot.com_admittance_control.name") +
"-comRef.dat"
59 comSOT_data = np.loadtxt(
63 dcmDes_data = np.loadtxt(
66 dcmEst_data = np.loadtxt(
70 zmpDes_data = np.loadtxt(
73 zmpSOT_data = np.loadtxt(
76 zmpEst_data = np.loadtxt(
79 zmpRef_data = np.loadtxt(
86 plt.plot(comDes_data[:, 1],
"b--")
87 plt.plot(comEst_data[:, 1],
"b-")
88 plt.plot(comRef_data[:, 1],
"b:")
89 plt.plot(comSOT_data[:, 1],
"b-.")
90 plt.plot(comDes_data[:, 2],
"r--")
91 plt.plot(comEst_data[:, 2],
"r-")
92 plt.plot(comRef_data[:, 2],
"r:")
93 plt.plot(comSOT_data[:, 2],
"r-.")
94 plt.plot(comDes_data[:, 3],
"g--")
95 plt.plot(comEst_data[:, 3],
"g-")
96 plt.plot(comRef_data[:, 3],
"g:")
97 plt.plot(comSOT_data[:, 3],
"g-.")
117 plt.plot(dcmDes_data[:, 1],
"b--")
118 plt.plot(dcmEst_data[:, 1],
"b-")
119 plt.plot(dcmDes_data[:, 2],
"r--")
120 plt.plot(dcmEst_data[:, 2],
"r-")
122 plt.legend([
"Desired x",
"Estimated x",
"Desired y",
"Estimated y"])
125 plt.plot(zmpDes_data[:, 1],
"b--")
126 plt.plot(zmpSOT_data[:, 1],
"b-")
127 plt.plot(zmpRef_data[:, 1],
"b:")
128 plt.plot(zmpDes_data[:, 2],
"r--")
129 plt.plot(zmpSOT_data[:, 2],
"r-")
130 plt.plot(zmpRef_data[:, 2],
"r:")
132 plt.legend([
"Desired x",
"SOT x",
"Reference x",
"Desired y",
"SOT y",
"Reference y"])
134 zmpErrSOT = zmpSOT_data - zmpDes_data
137 plt.plot(zmpErrSOT[:, 1],
"b-")
138 plt.plot(zmpErrSOT[:, 2],
"r-")
139 plt.title(
"ZMP SOT error")
140 plt.legend([
"Error on x",
"Error on y"])
142 input(
"Wait before leaving the simulation")
def evalCommandClient(code)
def run_test(appli, verbosity=1, interactive=True)