Configuration du logiciel

Installation du SDK, connexion réseau, ROS2 avec planification à double bras MoveIt2, panneau de téléopération du navigateur, intégration du modèle VLA et pipeline de données en un clic. Tout, de la découverte du réseau à la manipulation autonome.

Accéder à une section :

Étape 1 — Installation du SDK

Installation de votre SDK

Le VLAI L1 est contrôlé via le roboticscenter SDK Python, qui fournit à la fois des API de tâches de haut niveau et un contrôle conjoint de bas niveau. Installez sur votre PC hôte.

Créer un environnement virtuel

python -m venv ~/.venvs/vlai
source ~/.venvs/vlai/bin/activate

Installer le SDK

pip install roboticscenter[l1]

Vérifier l'installation

python -c "from roboticscenter import L1; print('SDK OK')"
rc --version   # command-line tool
Étape 2 — Connexion réseau

Connexion au L1

Le L1 exécute sa propre pile ROS2 intégrée et expose une API de contrôle gRPC sur votre réseau local. Votre PC hôte communique avec lui via WiFi ou Ethernet.

Configuration initiale du réseau

# Power on the L1 — it will connect to the configured WiFi automatically
# Then discover it on your network:
rc discover
# Output: L1-XXXX found at 192.168.1.45 (port 8888)

Connectez-vous et vérifiez

rc connect --device l1 --host 192.168.1.45
# Output: Connected to VLAI L1 (firmware v2.1.4, battery: 87%)

# Or use the Python SDK:
from roboticscenter import L1

robot = L1(host="192.168.1.45")
robot.connect()
print(robot.get_status())
# {'battery': 87, 'arm_left': 'ready', 'arm_right': 'ready', 'base': 'ready'}
robot.disconnect()

Définir une adresse IP statique (recommandé pour une utilisation en laboratoire)

rc config set network.static_ip 192.168.1.100
rc config set network.gateway 192.168.1.1
rc config apply   # reboots the L1 network stack
Étape 3 – ROS2 + MoveIt2

ROS2 avec commande à double bras MoveIt2

Le L1 est livré avec ROS2 Humble à bord. Votre PC hôte se connecte en tant que nœud ROS2 sur le même réseau. Vous avez besoin de ROS2 Humble sur votre hôte.

Installez ROS2 Humble sur l'hôte (Ubuntu 22.04)

sudo apt update && sudo apt install ros-humble-desktop \
  ros-humble-moveit ros-humble-ros2-control \
  ros-humble-ros2-controllers -y

Lancez le pont L1 ROS2

# On the L1 (via SSH or the onboard terminal):
ros2 launch vlai_l1_ros2 l1_bringup.launch.py

# On your host PC:
source /opt/ros/humble/setup.bash
export ROS_DOMAIN_ID=42   # must match the L1's domain ID
ros2 topic list   # should show /l1/left_arm/joint_states, etc.

Planification MoveIt2 à deux bras

source /opt/ros/humble/setup.bash
ros2 launch vlai_l1_moveit l1_moveit.launch.py

# In another terminal — plan and execute a bimanual task:
ros2 run vlai_l1_moveit bimanual_demo
# Executes: left arm picks object, right arm receives and places

Contrôle individuel des bras via Python

from roboticscenter import L1
import numpy as np

robot = L1(host="192.168.1.45")
robot.connect()

# Move left arm to Cartesian pose (position + quaternion)
pose = {
    "position": [0.4, 0.1, 0.35],    # x, y, z in meters from base
    "orientation": [0, 0, 0, 1]      # quaternion xyzw
}
robot.left_arm.move_to_pose(pose, speed=0.3)

# Read current joint state
state = robot.left_arm.get_joint_state()
print("Left arm joints:", state.positions)  # 8 values in radians

robot.disconnect()

Contrôle de base mobile

depuis le centre de robotique importer L1 robot = L1(hôte="192.168.1.45") robot.connect() # Avancez de 1 mètre à 0,5 m/s robot.base.move(x=1,0, y=0,0, vitesse=0,5) # Rotation de 90 degrés dans le sens des aiguilles d'une montre robot.base.rotate(angle=-90, vitesse=0,3) # degrés # Régler la hauteur de levage (106 à 162 cm) robot.base.set_lift_height(130) # cm # Arrêter robot.base.stop() robot.disconnect()
Étape 4 — Navigateur Teleop

Panneau de téléopération du navigateur

Le L1 comprend un panneau téléop de navigateur intégré — aucune installation de logiciel requise. Accédez à l'adresse IP du L1 sur le port 8888.

Accéder au panneau

# Open in browser:
http://192.168.1.45:8888

# Or launch via CLI:
rc teleop --device l1

Le panneau fournit :

  • Commande par clavier WASD pour base mobile
  • Joystick cartésien bras gauche/droit (cliquez-glissez dans la fenêtre 3D)
  • Boutons d'ouverture/fermeture de la pince
  • Flux de caméra de toutes les caméras montées
  • Démarrage/arrêt de l'enregistrement de l'épisode en un clic
  • Panneau d'état de la batterie et de l'état commun

Téléopération VR (Developer Pro et Max)

rc teleop --device l1 --mode vr
# Opens a WebXR session — put on Meta Quest and visit the displayed URL
Étape 5 — Intégration VLA

Intégration du modèle Vision-Langage-Action

Les niveaux L1 Developer Pro et Max incluent un calcul intégré capable d'exécuter l'inférence VLA localement. Pour tous les niveaux, vous pouvez exécuter l’inférence VLA sur un PC hôte et diffuser les actions vers le robot.

Exécutez OpenVLA sur le PC hôte (n'importe quel niveau)

pip installer roboticscenter[vla] depuis le centre de robotique importer L1 à partir de roboticscenter.vla, importez OpenVLAClient robot = L1(hôte="192.168.1.45") robot.connect() vla = OpenVLAClient( modèle="openvla/openvla-7b", device="cuda" # ou "cpu" pour une inférence plus lente ) # Capturer l'observation obs = robot.capture_observation() # renvoie l'image RVB + l'état commun # Obtenez l'action de VLA (conditionné par le texte) action = vla.predict( image=obs["image"], instruction="Ramassez le bloc bleu et placez-le sur la plaque rouge" ) # action : dictée des deltas des articulations du bras + commande de préhension # Exécuter une action sur le robot robot.execute_action(action) robot.disconnect()

Inférence VLA sur l'appareil (Developer Pro/Max)

rc deploy vla \
  --model openvla/openvla-7b \
  --quantize int4   # fits in 6GB VRAM on V3 compute (70 TOPS)

# Now VLA runs on the L1's onboard compute — no host PC needed:
rc run policy \
  --task "Pick up the blue block and place it on the red plate" \
  --max_steps 50
Dépannage

Problèmes courants

Erreur 1 rc discover ne trouve aucun appareil

Le L1 n'est pas sur le même sous-réseau. Les réseaux WiFi d'entreprise sont souvent isolés des clients : vérifiez auprès du service informatique ou utilisez un routeur dédié.

# Try direct connection by IP if you know it:
rc connect --device l1 --host 192.168.1.45

# Or connect the L1 via Ethernet directly to your laptop:
# Set your laptop to 192.168.2.1/24, L1 will appear at 192.168.2.100
Erreur 2 La planification MoveIt2 échoue : aucun chemin trouvé

La pose cible se situe en dehors de l'espace de travail accessible du bras ou en collision avec le corps du robot.

# Check reachability first:
from roboticscenter import L1
robot = L1(host="192.168.1.45")
robot.connect()
reachable = robot.left_arm.check_pose_reachable(
    position=[0.4, 0.1, 0.35])
print("Reachable:", reachable)  # if False, adjust target pose
robot.disconnect()

Le logiciel fonctionne ? Commencez à collecter des données.

Une fois les bras en mouvement, l’étape suivante est la téléopération et l’enregistrement des jeux de données.