SCIENCES DE
L'INGENIEURNiveau : Terminale générale, enseignement de spécialité SI

alphai-api.alphai-apialphai-api sur PyPI


exécuter, cliquer sur Configurer l'interpréteur... et sélectionner
Local Python 3.
import alphai
alphai.motor(-20, 30, 1.5)
Chaque commande correspond à une vitesse des moteurs gauche et droit (de -50 à +50) et une durée en secondes. Si la durée n'ai pas précisée elle sera égale à None (aucune)
ALPHAI-000xxx où xxx est le numéro du robot.

Fichier sélectionner Configurations d'exemples, puis choisir télécommande.
.
.
dans wireshark pour ne pas voir trop de trames.Length.La premère trame de 74 octets est issue de l'importation de Alphai qui met les moteurs à la valeur 0.
Sélectionner la deuxième trame issue de la commande alphai.motor(-20,30,1.5)
Compléter les champs manquants du tableau
Depuis la capture ci-dessus, remplir le tableau suivant, permettant de comprendre la trame TCP.
| Entête Ethernet II | |||||||
|---|---|---|---|---|---|---|---|
| adresse mac source (6 octets) |
adresse mac destination (6) |
type de paquet (2) |
|||||
| Entête IP | |||||||
| version
(½) |
longueur
Entête (½) |
type
de service (1) |
longueur
totale du datagramme (2) |
||||
| Identification
(2) |
drapeaux
(1) |
Décalage
(1) |
|||||
| Durée
de vie (1) |
Protocole
(1) |
contrôle
des entêtes (2) |
|||||
| Adresse
IP Source (4) |
|||||||
| Adresse
IP destination (4) |
|||||||
| Tansmission Control Protocol (TCP encapsulée) | |||||||
| Port source (2) | Port destination (2) | ||||||
| Numéro de séquence (4) |
Numéro d'acquitement (4) |
||||||
| Etc ... | Data | ||||||
| .....set motors.... |
Vitesse MotG |
Vitesse MotD |
durée |
||||
Relever l'adresse IP source et destinataire de la trame et la convertir en décimal.
Exécuter powershell et entrer la commande ipconfig Entrée
Relever l'adresse IP du PC et son masque de sous-réseau, puis déterminer l'adresse du réseau. Montrer que le robot est dans le même réseau que le PC.
Chaque trame contient une commande texte ASCII (set motors) suivie de 4 octets de données :
| Valeur programmée | Valeur transmise au robot | Hex (signé) |
|---|---|---|
| -50 | -127 | 81 |
| -20 | ||
| 0 | 0 | 00 |
| 30 | ||
| 50 | 127 | 7F |
Déterminer le coeficient directeur de cette droite linéaire ($"valeur transmise" = a xx "valeur programmée"$), puis calculer les valeurs manquantes et compléter le tableau ci-dessus.
$a=?$
Vérifier que vos valeurs coïncident avec celles de la trame.
La durée est transmise en ms au format little endian.
exemple : Durée : 1 s = 1000 ms = 03EB(16) = EB 03 en little endian.
Décoder le temps envoyé au robot dans la trame (au format little endian) pour la durée de 1,5 s, puis vérifier que cela correspond bien à la commande Python.
Octets durée, envoyé en hexa :
import alphai
while True:
# Acquerir les puissances moteurs G et D ainsi que la durée en secondes.
mg=float(input ("puissance motG : "))
md=float(input ("puissance motD : "))
d=float(input ("puissance durée : "))
if mg>0:
# Si mg est positif on prépare le moteur à aller vers l'avant et on l'arrête à la fin du mouvement.
alphai.motor(1, 1, 0.5)
alphai.motor(mg,md, d)
# freinage du robot
alphai.motor(1, 1, 0.5)
else :
alphai.motor(-1, -1, 0.5)
alphai.motor(mg,md, d)
alphai.motor(-1, -1, 0.5)
Contenu
sous
licence CC BY-NC-SA 3.0
Pascal Hassenforder 21/10/2025
MAJ : 21/10/2025