Bonjour,
Je fias une communication entre un code en C++ et le code python, pour cela j’utilise l’API REST, un socket zmq et des request JSON. J’ai ajouté la fonction suivante au fchier rest.py pour envoyer dans une même réponse le registre de touts les moteurs:
def get_allmotors_register_value(self, register):
return {m.name : self._get_register_value(m.name, register) for m in getattr(self.robot, 'motors')}
Cela marche bien, la réponse envoyée lorsque je demande les positions a cette forme:
{'l_elbow_y': -20.79, 'r_hip_y': -4.88, 'r_knee_y': -2.68, 'head_y': -6.359999999999999, 'head_z': 9.53, 'r_arm_z': 81.98, 'r_ankle_y': 70.29, 'r_shoulder_x': -58.31, 'r_shoulder_y': 11.099999999999994, 'r_hip_z': -2.15, 'r_hip_x': -1.36, 'r_elbow_y': -55.16, 'l_arm_z': -10.24, 'l_hip_x': 23.6, 'l_hip_y': -6.53, 'l_hip_z': 3.03, 'abs_x': -4.88, 'abs_y': -14.02, 'abs_z': 0.04, 'l_ankle_y': 70.29, 'bust_y': 9.27, 'bust_x': 26.15, 'l_knee_y': -2.51, 'l_shoulder_x': 11.450000000000003, 'l_shoulder_y': 15.89}
Et j’arrive à le lire depuis mon code en c++. Pourtant, lorsque je bouge le robot pour changer la position et je demande encore une fois les positions, python envoie les même positions qu’avant pour tous les moteurs, c’est comme s’il ne mettait pas à jour les valeurs. Quelqu’un a eu ce même problème?
L’autre problème c’est quand je veux mettre un position de consigne, selon le protocol, la réponse envoyé après le set_register_value est {}, et c’est bien cela ce que j’obtiens, mais le robot ne bouge pas. Quelqu’un a une idée de comment corriger cela?
Merci,