Dans ce tutoriel, nous allons apprendre à utiliser la bibliothèque uROS pour micropython : https://github.com/mgtm98/uRos
ROS est un système d'exploitation pour robots dans lequel les différents "nœuds" communiquent avec un serveur central via des messages TCP au format JSON.
Cette bibliothèque nous permet d'implémenter un nœud ROS dans notre SBC. Il se connectera à un serveur et pourra envoyer (publier) ou recevoir (s'abonner) des messages.
Le code pour poster un message est le suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | importer réseau de aurochs importer * de uros.std_msgs importer std_Bool lan = réseau .LAN() lan.actif(Vrai) LAN.ifconfig( ( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" )) tout en(lan.statut() != 3 ): impression( ".", fin="" ) temps.dormir(1) impression( "Lié!" ) uRos = Rose( "10.0.0.2", 9090 ) #création d'un nouvel objet uRos msg = std_Bool( données = Vrai ) #création d'un objet msg de chaîne Ros uRos.publier( "uRosTopic", message) #publier l'objet msg impression("Fini") |
Dans ce code, nous nous connectons d'abord au réseau LAN, puis au serveur ROS ; nous définissons le format de notre message et enfin nous publions.
Sur le PC, nous exécutons un code en python qui agit comme un serveur ROS. Pour plus de simplicité, ce code est juste un serveur de socket qui imprime les données sur la console.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | importer douille importer sys def serveur_socket(hôte, port): s = douille.prise (prise.AF_INET, douille.SOCK_STREAM) s.lier((hôte, port)) s.Ecoutez(1) tout en Vrai: conn, adresse = s.J'accepte() impression('Connecté par', adresse) tout en Vrai: Les données = conn.recv(1024) if pas données: pause impression(données) connexion.Fermer() impression("connexion fermée") s.Fermer() impression("est fermé") socket_server( «10.0.0.2 ', 9090 ) impression("Fini") |
En conséquence, les données reçues sur le serveur sont affichées :

Si nous examinons les données, nous voyons deux parties :
1. La définition de notre message uRosTopic. Celui-ci n'est envoyé qu'une seule fois pour chaque nouveau type de message.

2. Et les données publiées. Celui-ci est envoyé à chaque fois que nous publions une nouvelle valeur.

Vous êtes maintenant prêt à connecter votre SBC à n'importe quel appareil ROS via Ethernet, à définir un message personnalisé et à l'envoyer avec seulement quelques lignes de code python.