Skip to main content
Test RSK Blocks - Exemple d'utilisation

🤖 RSK Robot Soccer Kit - Résumé de la Documentation

� Démarrage rapide

Voici un exemple simple pour créer un client et faire taper le robot vert 1 :

import rsk with rsk.Client() as client: client.green1.kick()
Explication :
• import rsk importe le package Python
• with rsk.Client() assure la fermeture propre du client
• client.green1.kick() demande au robot vert 1 de taper

🔌 Configuration du Client

Vous pouvez spécifier l'hôte et la clé d'accès :

import rsk with rsk.Client(host='127.0.0.1', key='') as client: client.robots['green'][1].kick()
Paramètres :
• host : Adresse IP de l'ordinateur qui exécute le Game Controller
• key : Clé d'accès d'équipe (par défaut vide) définie dans le Game Controller

🤖 Accès aux robots

Plusieurs syntaxes pour accéder aux robots :

# Raccourcis pour accéder aux robots client.green1 # Robot vert 1 client.green2 # Robot vert 2 client.blue1 # Robot bleu 1 client.blue2 # Robot bleu 2 # Syntaxe complète permettant l'accès dynamique client.robots['green'][1] client.robots['green'][2] client.robots['blue'][1] client.robots['blue'][2]

ďż˝ Informations de localisation

La localisation est accessible en continu via les variables suivantes :

# Position du robot (x [m], y [m]) client.green1.position # Orientation du robot (theta [rad]) client.green1.orientation # Position + orientation (x [m], y [m], theta [rad]) client.green1.pose # Position de la balle (x [m], y [m]) client.ball
Note : Les tableaux sont des numpy arrays

📏 Constantes utiles

Le module rsk.constants fournit des constantes utiles :

from rsk import constants # Longueur du terrain (axe x) constants.field_length # Largeur du terrain (axe y) constants.field_width # Largeur du but constants.goal_width # Taille de la bordure verte autour du terrain constants.border_size

🎮 Contrôle des robots

Commandes de base pour contrĂ´ler les robots :

# Taper, avec un paramètre de puissance optionnel entre 0 et 1 robot.kick() # Contrôle du robot dans son propre référentiel # Arguments : vitesse x [m/s], vitesse y [m/s], vitesse de rotation [rad/s] # Avancer à 0,25 m/s robot.control(0.25, 0., 0.) # Tourner à 30 deg/s dans le sens antihoraire robot.control(0., 0., math.radians(30))

🎯 Déplacement avec goto

Envoyer un robot Ă  une position arbitraire sur le terrain :

# Envoyer le robot Ă  x=0.2m, y=0.5m, theta=1.2 rad robot.goto((0.2, 0.5, 1.2)) # Goto non-bloquant (wait=False) robot_arrived = robot.goto((0.2, 0.5, 1.2), wait=False)
Paramètre wait :
• True (défaut) : Bloque l'exécution jusqu'à l'arrivée
• False : Retourne immédiatement, retourne True si arrivé

⚠️ Gestion des erreurs

Si une commande échoue, une exception rsk.ClientError est levée :

try: robot.kick() robot.control(0.1, 0, 0) except rsk.ClientError: print('Erreur lors d\'une commande!')

🔄 Callback on_update

Exécuter du code à chaque nouvelle information reçue :

def print_the_ball(client, dt): print(client.ball) # Afficher la balle Ă  chaque nouvelle information client.on_update = print_the_ball

⚖️ Règles de l'arbitre

L'arbitre peut prendre le contrĂ´le des robots dans ces situations :

  • DĂ©but de match : Attendre que la balle soit placĂ©e au centre (game start)
  • Hors terrain : Les robots ne peuvent pas sortir de l'herbe (out-of-game-'nomrobot')
  • Balle sortie : Replacer la balle sur le point neutre le plus proche (sideline-crossed)
  • But marquĂ© : Validation manuelle du but par l'arbitre (goal)
  • DĂ©fense abusive : Plus d'un robot dans la zone de dĂ©fense (penalty + abusive_defense)
  • Attaque abusive : Robot dans la zone de dĂ©fense adverse (penalty + abusive_attack)
  • Abus de balle : Robot près de la balle >3s dans un rayon de 25cm (penalty + ball_abuse)
  • PĂ©nalitĂ© manuelle : L'arbitre peut pĂ©naliser manuellement (penalty + manually penalized)
  • Mi-temps : Pas de communication possible (half-time)

ďż˝ Informations de l'arbitre

Accès aux informations du match via le dictionnaire referee :

# Accès au dictionnaire de l'arbitre client.referee # Vérifier si le robot 1 bleu est pénalisé client.referee["teams"]["blue"]["robots"]["1"]["penalized"]

🎮 Configuration du Game Controller

Vision :
• Sélectionner la caméra dans la liste
• Cliquer "Start" pour démarrer la capture
• Ajuster les paramètres pour atteindre ~30 FPS

Robots :
• Ajouter les ports COM dans le gestionnaire
• Vérifier que les robots répondent (bip + niveau batterie)
• Assigner les marqueurs correspondants

ContrĂ´le API :
• Cocher/décocher les cases de contrôle pour chaque équipe
• Définir une clé (mot de passe) si nécessaire
• Bouton "urgence" pour arrêter tous les robots

đź’ˇ Exemple complet avec blocs

Construction d'un programme avec l'éditeur de blocs :

import rsk with rsk.Client(host='127.0.0.1', key='') as client: # Déplacer le robot vert 1 client.robots['green'][1].goto((0.5, 0.3, 0), wait=True) # Faire taper client.robots['green'][1].kick(0.8) # Afficher la position de la balle print(client.ball)
Blocs utilisés :
1. 📥 Import rsk
2. ďż˝ RSK Client (host: 127.0.0.1, key: '')
3. 🎯 Va à (couleur: green, id: 1, x: 0.5, y: 0.3, angle: 0)
4. âš˝ Fonction kick (power: 0.8)
5. 🖨️ Afficher (client.ball)