Programmation des Robots
- La programmation se fait soit en Python, soit sous forme de blocs de type blockly.
- L’environnement de développement est ROBO Pro Coding
ROBO Pro Coding Getting Started
$ ROBOPro
On choisit le langage de Programmation :
La Programmation se fait dans l’onglet Main Program:
L’ajout d’éléments à contrôler se fait dans l’ongle Controller Configuration:
REMARQUE : L’enregistrement et le chargement d’un programme se fait avec les commandes Import/Export :
Connection au TXT4.0 :
Le PC et le contrôleur doivent au préalable être connectés en WIFI au Réseau e021 ( mot de passe : ROBOTROSE021 ) ou b103 ( mot de passe : robotb103 )
Si nécessaire, faire apparaitre la configuration réseau en tapant nm-applet dans un terminal.
- Côté PC, vérifier que ce dernier a bien une adresse IP en 192.168.50.x, pour cela taper ifconfig ou ipaddr dans un terminal.
- Côté TXT4.0, dans le menu principal, aller dans Info–>WiFi et noter l’adresse IP 192.168.50.y
Dans RoboPro, Cliquer sur Connect Controller :
Renseigner l’ API Code ( disponible dans le TXT4.0 : Paramètres –> Clé API ), et remplacer txt40.local par l’adresse 192.168.50.y
Ajout et initialisation d’une Variable
Pour créer une nouvelle variable, aller dans Variables –> Create Variable…
Initialisation de la variable :
Contrôle d’un Moteur en Boucle Fermée
Ajouter un Encodermotor dans Controller Configuration :
#! /usr/bin/python3
import fischertechnik.factories as txt_factory
txt_factory.init()
txt_factory.init_motor_factory()
txt_factory.init_counter_factory()
TXT_M = txt_factory.controller_factory.create_graphical_controller()
TXT_M_M1_encodermotor = txt_factory.motor_factory.create_encodermotor(TXT_M, 1)
TXT_M_C1_motor_step_counter = txt_factory.counter_factory.create_encodermotor_counter(TXT_M, 1)
TXT_M_C1_motor_step_counter.set_motor(TXT_M_M1_encodermotor)
txt_factory.initialized()
Puis ajouter les blocs suivants dans la fenêtre Main Program :
CW/CCW = Clockwise, CounterClockWise
|
|
Dans le cas d’une commande de 2 moteurs, afin d’éviter tout décalage de vitesse d’un moteur par rapport à l’autre, il est nécessaire d’ajouter l’option synchronisation :
import fischertechnik.factories as txt_factory
txt_factory.init()
txt_factory.init_motor_factory()
txt_factory.init_counter_factory()
TXT_M = txt_factory.controller_factory.create_graphical_controller()
TXT_M_M1_encodermotor = txt_factory.motor_factory.create_encodermotor(TXT_M, 1)
TXT_M_M2_encodermotor = txt_factory.motor_factory.create_encodermotor(TXT_M, 2)
TXT_M_C1_motor_step_counter = txt_factory.counter_factory.create_encodermotor_counter(TXT_M, 1)
TXT_M_C1_motor_step_counter.set_motor(TXT_M_M1_encodermotor)
TXT_M_C2_motor_step_counter = txt_factory.counter_factory.create_encodermotor_counter(TXT_M, 2)
TXT_M_C2_motor_step_counter.set_motor(TXT_M_M2_encodermotor)
txt_factory.initialized()
|
|
Vérification des entrées sorties avec Interface Test
Il est possible de vérifier le bon fonctionnement des différents éléments branchés sur le contrôleur avec Interface Test :
Mesure avec le capteur US et Affichage d’une distance sur l’écran LCD
Ajouter la fenêtre Display Configuration si elle n’est pas présente :
Dans la fenêtre Display Configuration, ajouter un Label, avec comme nom txt_label
Fenêtre Controller Configuration :
import fischertechnik.factories as txt_factory
txt_factory.init()
txt_factory.init_input_factory()
TXT_M = txt_factory.controller_factory.create_graphical_controller()
TXT_M_I1_ultrasonic_distance_meter = txt_factory.input_factory.create_ultrasonic_distance_meter(TXT_M, 1)
txt_factory.initialized()
Fenêtre Main Program :
import time
from lib.controller import *
from lib.display import *
while True:
display.set_attr("txt_label.text", str(TXT_M_I1_ultrasonic_distance_meter.get_distance()))
time.sleep(0.5)