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 :
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
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
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()
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
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