Skip to main content

Manipulation avancée avec AICA - déploiement Cloud

TP3 - Vision par IA avec Yolo

Prérequis

On déploie les TP avec une architecture client-serveur

  • Une VM (machine virtuelle ou serveur physique) Linux avec
    • Avec un accès SSH
        pour un utilisateur dans le groupe sudo
      • De préférence avec GPU NVidiaNVidia, les drivers propriétaires et nvidia-container-toolkit installés
      • Avec docker.io installé
    • Un PC avec une connexion rapide à la VM
      • Chrome/Chromium installé
      • VSCode/Codium installé avec l'extension ms-vscode-remote.remote-ssh (sur Codium tester jeanp413.open-remote-ssh)
    Si on est sur un PC Linux

    On peut alors avoir une expérience AICA complète en affichant RViz et AICA Launcher sur le PC :

    https://docs.aica.tech/docs/reference/manual-installation-launch#display-sharing 

    Installation de AICA sur le serveur envia mode headless

    ssh

    https://docs.aica.tech/docs/reference/manual-installation-launch 

    • Ouvrir VSCode
    • Se connecter à la VM via SSH
    • Ouvrir un Terminal dans VSCode
    • Copier le dossier docker dans votre espace utilisateur /home/user/
    • Copier la licence aica-license-1.toml dans docker/aica/
    • Connecter la VM au dépôt Docker de AICA
      cat /home/user/docker/aica/aica-license.toml | sudo docker login registry.licensing.aica.tech -u USERNAME --password-stdin
    • Build le ou les environnements docker nécessaires pour le TP depuis le fichier launcher.toml en leur donnant un nom, par ex. aica-yolo-web :
      cd docker/aica
      sudo docker build -f /home/user/docker/aica/aica-launcher-yolo-web.toml -t aica-yolo-web .

    TP3 - Vision par IA avec Yolo

    Pour déploiement sur un serveur avec GPU NVidia et nvidia-container-toolkit :

    #syntax=ghcr.io/aica-technology/app-builder:v2
    
    [core]
    "image" = "v5.1.0"
    
    [packages]
    # add components
    #"@aica/components/rl-policy-components" = "v2.0.0"
    "@aica/components/advanced-perception" = "v1.0.0" # contains YoloExecutor
    "@aica/components/core-vision" = "v1.1.2" # contains CameraStreamer
    "@aica/foss/toolkits/ml" = "v1.0.0-cpu24.04" # prerequisite for YoloExecutor
    
    # other extensions
    
    # add hardware collections

    Pour déploiement sur un serveur sans GPU :

    #syntax=ghcr.io/aica-technology/app-builder:v2
    
    [core]
    "image" = "v5.1.0"
    
    [packages]
    # add components
    #"@aica/components/rl-policy-components" = "v2.0.0"
    "@aica/components/advanced-perception" = "v1.0.0" # contains YoloExecutor
    "@aica/components/core-vision" = "v1.1.2" # contains CameraStreamer
    "@aica/foss/toolkits/ml" = "v1.0.0-cpu24.04" # prerequisite for YoloExecutor
    
    # other extensions
    "@aica/foss/web-video-server" = "v0.1.0" # enables web streaming of video topics
    
    # add hardware collections

    Si elles ne sont pas déjà dispo dans docker/ télécharger et compiler les composants dépendants, par ex. :

    "my-local-package" = "docker-image://my-custom-component-package"

    Démarrer une instance du conteneur aica-yolo-web nommée aica en lui passant le dossier persistant aica-yolo-web/persistent/ qui sera disponible dans un dossier persistent/ :

    sudo docker run -it --rm --privileged --net=host -v /home/user/docker/aica/aica-license.toml:/license:ro -v /home/user/docker/aica/aica-yolo-web/persistent/:/persistent:rw -e AICA_SUPER_ADMIN_PASSWORD=12345678 --name aica aica-yolo-web
    • L'argument -e AICA_SUPER_ADMIN_PASSWORD=12345678 n'est nécessaire qu'au premier démarrage pour pouvoir créer un compte Admin.

    Il peut y avoir des Warnings qui ne sont à ignorer et apparaissent si Cloud Storage n'est pas configuré ou si la vérification de license prend plus que quelques secondes :

    [2024-11-18 13:38:16 +0000] [135] [INFO] Starting sync of cloud applications
    [2024-11-18 13:38:16 +0000] [135] [WARNING] Sync failed
    [2024-11-18 13:08:42 +0000] [151] [INFO] Waiting for licensing status... 5
    [WARN] [1731935323.407252919] [EventEngine.ServiceHandler]: (404): Could not determine any license status
    • Dans l'onglet Ports de VSCode, ajouter le port 8080
    • Dans le navigateur Chrome Ouvrir localhost:8080 
    • Se connecter avec les identifiants super-admin, 12345678
    • Créer un compte Admin (Profile > change password) et bien noter les identifiants.
    • La configuration de cette instance AICA sera sauvegardée dans aica.sqlite, aica.sqlite-shm et aica.sqlite-wal
    • Pour garder et dupliquer la config, on peut copier les fichiers .sqlite dans le dossier persistent/

    Attacher un Terminal à l'intérieur l'instance aica de aica-yolo-web :

    sudo docker container exec -it -u ros2 aica /bin/bash
    ros2 node list

    On voit bien que le contenu du dossier de la VM aica-yolo-web/persistent/ est dispo dans le conteneur dans le dossier persistent/ :

    ls persistent
    aica.sqlite aica.sqlite-shm aica.sqlite-wal

    Détacher le Terminal du conteneur avec CTRL+D ou en tapant exit.

    Stopper le conteneur : docker container ps puis docker container stop <container_name>.

    Déroulé du TP3

    Define a workcell setup
    AICA studio -> Hardware -> modify URDF of e.g. UR5e

    Build a custom package for Workcell or moveit python API script
    https://github.com/aica-technology/community/blob/main/extensions/topic_based_ros2_control/aica-package.toml
    source = "git://github.com/hellantos/ur5e_cell#start-of-training:ur5e_cell_description"