NiryoTopic

Pyniryo2 est basé sur la librairie python roslibpy pour collecter des informations du robot. Ces informations sont transmise par ROS grâce à des topics. Cette classe est une surcouche de l’API Topic roslibpy. Cela permet de s’abonner à un topic pour collecter des informations dès qu’elles sont publiées, ou demandées pour une valeur. Merci de vous référer à la documentation ROS du robot Niryo pour voir les topics compatibles.

NiryoTopic - Utilisation

Ceci est un exemple simple d’utilisation de la classe sans conversion:

>> robot = NiryoRobot(<robot_ip_address>)
>> client = robot.client
>> joint_states_topic = NiryoTopic(client, '/joint_states', 'sensor_msgs/JointState')
>> joint_states_topic()
{u'header': {u'stamp': {u'secs': 1626092430, u'nsecs': 945618510}, u'frame_id': u'', u'seq': 13699},
u'position': [0.0, 0.6, -1.3, 0.0, 0.0, 0.0], u'effort': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
u'name': [u'joint_1', u'joint_2', u'joint_3', u'joint_4', u'joint_5', u'joint_6'],
u'velocity': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}

Ceci est un exemple simple d’utilisation de la classe avec conversion:

>> def joint_states_topic_conversion(msg):
        return msg["position"]

>> robot = NiryoRobot(<robot_ip_address>)
>> client = robot.client
>> joint_states_topic = NiryoTopic(client, '/joint_states', 'sensor_msgs/JointState', joint_states_topic_conversion)
>> joint_states_topic()
[0.0, 0.6, -1.3, 0.0, 0.0, 0.0]
>> joint_states_topic.value
[0.0, 0.6, -1.3, 0.0, 0.0, 0.0]

Ceci est un exemple simple d’utilisation de la classe avec une fonction de retour:

def joint_states_topic_conversion(msg):
    return msg["position"]

def joint_states_callback(msg):
    print(msg) # print the list of joints position

robot = NiryoRobot("127.0.0.1")
client = robot.client
joint_states_topic = NiryoTopic(client, '/joint_states', 'sensor_msgs/JointState', joint_states_topic_conversion)
joint_states_topic.subscribe(joint_states_callback)

...

joint_states_topic.unsubscribe()

NiryoTopic - Classe

class NiryoTopic(client, topic_name, topic_type, conversion_function=None, timeout=3)[source]

Représente une instance Topic ROS. Elle supporte à la fois les requêtes pour une simple valeur et/ou pour une fonction de rappel. Cette classe est un wrapper de l’instance Topic roslibpy (https://roslibpy.readthedocs.io/en/latest/reference/index.html#topics)

Paramètres
  • client (roslibpy.Ros) – Instance le la connection à ROS.

  • topic_name (str) – Nom du topic.

  • topic_type (str) – Type du topic.

  • conversion_function (function) – Convertir la réponse du topic dans type spécifique.

  • timeout (float) – Expiration du délais d’attente d’un message

property is_subscribed

Retourne le status du topic de connexion

Renvoie

Vrai si déjà abonné, Faux sinon

Type renvoyé

Bool

property value

Retourne la valeur du topic

Renvoie

la dernière valeur du topic. La valeur dépend de la fonction de conversion du topic. Par défaut, ce sera un dictionnaire

Type renvoyé

subscribe(callback)[source]

Abonne une fonction de retour au topic. Une TopicException est activée si le topic est déjà connecté

Paramètres

callback (function(dict, )) – La fonction de retour appelée à chaque nouvelle arrivée d’un message de topic

Renvoie

None

Type renvoyé

None

unsubscribe()[source]

Désabonne du topic

Type renvoyé

None

publish(msg)[source]

Publie un message sur un topic

Paramètres

msg (dict of roslibpy.Message) – jsonifie le contenu d’un message de topic

Type renvoyé

None