1 """Test CoM admittance control as implemented in reference code."""
5 import matplotlib.pyplot
as plt
8 from dynamic_graph.sot_talos_balance.utils.gazebo_utils
import apply_force
9 from dynamic_graph.sot_talos_balance.utils.run_test_utils
import (
21 run_test(
"appli_dcmComZmpControl.py")
26 print(
"Connect ZMP reference")
27 runCommandClient(
"plug(robot.dcm_control.zmpRef,robot.com_admittance_control.zmpDes)")
29 "robot.com_admittance_control.setState(robot.dynamic.com.value,[0.0,0.0,0.0])"
37 print(
"Kick the robot...")
46 dcm_data = np.loadtxt(
50 zmpDes_data = np.loadtxt(
54 comDes_data = np.loadtxt(
55 "/tmp/dg_" +
evalCommandClient(
"robot.com_admittance_control.name") +
"-comRef.dat"
61 plt.plot(dcm_data[:, 1],
"b-")
62 plt.plot(dcm_data[:, 2],
"r-")
64 plt.legend([
"x",
"y"])
67 plt.plot(com_data[:, 1],
"b-")
68 plt.plot(comDes_data[:, 1],
"b--")
69 plt.plot(com_data[:, 2],
"r-")
70 plt.plot(comDes_data[:, 2],
"r--")
71 plt.plot(com_data[:, 3],
"g-")
72 plt.plot(comDes_data[:, 3],
"g--")
73 plt.title(
"COM real vs desired")
74 plt.legend([
"Real x",
"Desired x",
"Real y",
"Desired y",
"Real z",
"Desired z"])
77 plt.plot(zmp_data[:, 1],
"b-")
78 plt.plot(zmpDes_data[:, 1],
"b--")
79 plt.plot(zmp_data[:, 2],
"r-")
80 plt.plot(zmpDes_data[:, 2],
"r--")
81 plt.title(
"ZMP real vs desired")
82 plt.legend([
"Real x",
"Desired x",
"Real y",
"Desired y"])
85 plt.plot(zmp_data[:, 1] - zmpDes_data[:, 1],
"b-")
86 plt.plot(zmp_data[:, 2] - zmpDes_data[:, 2],
"r-")
87 plt.title(
"ZMP error")
88 plt.legend([
"Error on x",
"Error on y"])
90 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)