1 """Test CoM admittance control without using the ZMP, with CoM computed as implemented
6 import matplotlib.pyplot
as plt
9 from dynamic_graph.sot_talos_balance.utils.gazebo_utils
import apply_force
10 from dynamic_graph.sot_talos_balance.utils.run_test_utils
import (
27 print(
"Connect CoM reference")
29 "robot.com_admittance_control.setState(robot.dynamic.com.value,[0.0,0.0,0.0])"
34 "plug(robot.dcm_control.ddcomRef,robot.com_admittance_control.ddcomDes)"
39 print(
"Kick the robot...")
48 dcm_data = np.loadtxt(
52 zmpDes_data = np.loadtxt(
56 comDes_data = np.loadtxt(
57 "/tmp/dg_" +
evalCommandClient(
"robot.com_admittance_control.name") +
"-comRef.dat"
63 plt.plot(dcm_data[:, 1],
"b-")
64 plt.plot(dcm_data[:, 2],
"r-")
66 plt.legend([
"x",
"y"])
69 plt.plot(com_data[:, 1],
"b-")
70 plt.plot(comDes_data[:, 1],
"b--")
71 plt.plot(com_data[:, 2],
"r-")
72 plt.plot(comDes_data[:, 2],
"r--")
73 plt.plot(com_data[:, 3],
"g-")
74 plt.plot(comDes_data[:, 3],
"g--")
75 plt.title(
"COM real vs desired")
76 plt.legend([
"Real x",
"Desired x",
"Real y",
"Desired y",
"Real z",
"Desired z"])
79 plt.plot(com_data[:, 1],
"b-")
80 plt.title(
"COM real x")
82 plt.plot(comDes_data[:, 1],
"b--")
83 plt.title(
"COM desired x")
86 plt.plot(com_data[:, 2],
"r-")
87 plt.title(
"COM real y")
89 plt.plot(comDes_data[:, 2],
"r--")
90 plt.title(
"COM desired y")
93 plt.plot(com_data[:, 3],
"g-")
94 plt.title(
"COM real z")
96 plt.plot(comDes_data[:, 3],
"g--")
97 plt.title(
"COM desired z")
100 plt.plot(zmp_data[:, 1],
"b-")
101 plt.plot(zmpDes_data[:, 1],
"b--")
102 plt.plot(zmp_data[:, 2],
"r-")
103 plt.plot(zmpDes_data[:, 2],
"r--")
104 plt.title(
"ZMP real vs desired")
105 plt.legend([
"Real x",
"Desired x",
"Real y",
"Desired y"])
108 plt.plot(zmp_data[:, 1] - zmpDes_data[:, 1],
"b-")
109 plt.plot(zmp_data[:, 2] - zmpDes_data[:, 2],
"r-")
110 plt.title(
"ZMP error")
111 plt.legend([
"Error on x",
"Error on y"])
113 input(
"Wait before leaving the simulation")
def apply_force(force, duration, body_name="talos::torso_2_link")
def evalCommandClient(code)
def run_test(appli, verbosity=1, interactive=True)