Skip to main content

Manipulation avancée avec AICA - déploiement Cloud

TP3 - Vision par IA avec Yolo

Prérequis

  • Une VM (machine virtuelle ou serveur physique) Linux avec un accès SSH
    • De préférence avec GPU NVidia et nvidia-container-toolkit
    • 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)

Installation de AICA sur le serveur

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 .

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. :

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.
  • 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 le dossier persistent/ : 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é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"