Retour à l'accueil

Contrôle STM Python : simulateur et RL

Bibliothèque amrl-transport unifie le contrôle STM pour les agents RL. Simulateur émule la physique de manipulation d'atomes, serveur asyncio remplace LabVIEW. Support pour Createc/Nanonis, files d'attente RabbitMQ.

Contrôle d'atomes via Python et agents RL
Advertisement 728x90

Infrastructure Python pour le contrôle STM et la manipulation atomique

La bibliothèque amrl-transport propose une interface cohérente pour les microscopes à effet tunnel (STM). La classe STMTransport définit 12 méthodes utilisant des unités physiques : nanomètres, millivolts et picoampères. L'implémentation varie selon le contrôleur — Createc, Nanonis ou simulateur.

from amrl_transport.transport.protocol import STMTransport

class STMTransport(ABC):
    def connect(self) -> None: ...
    def scan_image(self, size_nm, offset_nm, pixel, bias_mv) -> ScanResult: ...
    def lateral_manipulation(self, x_start_nm, y_start_nm, 
                             x_end_nm, y_end_nm, ...) -> ManipResult: ...
    def tip_shape(self, x_nm, y_nm, ...) -> bool: ...
    # plus 8 méthodes

Les méthodes incluent le balayage de surface, la manipulation latérale et verticale des atomes, la modification de la pointe et les opérations chimiques. Les agents d'apprentissage par renforcement (RL) agissent sur une couche d'abstraction indépendante de la plateforme matérielle.

Simulation pour le développement sans matériel

SimulatorTransport reproduit intégralement le flux STM. Les atomes de surface sont générés avec des distributions gaussiennes, et un bruit personnalisable est pris en charge. La physique de la manipulation : les atomes se déplacent sous courant suffisant ; la pointe s’émousse puis se reaiguise au fil du temps.

Google AdInline article slot
from amrl_transport.transport import SimulatorTransport
import numpy as np

with SimulatorTransport(seed=42) as stm:
    img = stm.scan_image(
        size_nm=5.0,
        offset_nm=np.array([0.0, 0.0]),
        pixel=128,
        bias_mv=100,
    )
    # img.img_forward — tableau numpy 128x128

Le simulateur permet d’entraîner directement des agents RL sur un ordinateur portable. Le passage au matériel réel nécessite de combler l’écart entre simulation et réalité.

Remplacement du serveur LabVIEW DeepSPM

DeepSPM (Nature Communications, 2020) utilise un serveur TCP LabVIEW pour communiquer avec les contrôleurs Createc. Le protocole a été reverse-engineéré : 6 commandes — scan, tipshaping, tipclean, getparam, approach, movearea. Les réponses sont binaires.

L’implémentation Python basée sur asyncio est pleinement compatible :

Google AdInline article slot
python -m amrl_transport.deepspm --transport simulator

Le code DeepSPM se connecte à localhost:5556 sans modification. LabVIEW (coûtant 3 500 $/an, Windows uniquement) est remplacé par un code multiplateforme sous licence MIT.

Système de file d’attente pour tâches parallèles

RabbitMQ + Redis gèrent la répartition des tâches entre plusieurs microscopes. Les tâches sont définies via des modèles Pydantic : ManipulationTask, AtomTarget.

# Worker
python -m amrl_transport.cli worker --transport simulator --worker-id sim-01

# Soumettre une tâche
python -m amrl_transport.cli submit --atoms '[[0,0],[1,0],[0.5,0.866]]'

Supporte le balayage et la manipulation parallèles sur 3 à 5 instruments. Arrêt propre et backoff automatique des tentatives dans les workers.

Google AdInline article slot

Intégration aux environnements d’apprentissage par renforcement

TransportEnv remplace directement RealExpEnv de SINGROUP (Université Aalto). Interface compatible Gym :

from amrl_transport.transport import SimulatorTransport
from amrl_transport.integration import TransportEnv

stm = SimulatorTransport(seed=42)
stm.connect()

env = TransportEnv(
    transport=stm,
    step_nm=0.2,
    max_mvolt=20,
    max_pcurrent_to_mvolt_ratio=2850,
    goal_nm=2.0,
)

state, info = env.reset()
next_state, reward, done, info = env.step(action)

Les modèles entraînés se transfèrent sans effort de la simulation au matériel réel.

Fonctionnalités clés du contrôle STM :

  • Balayage à résolution atomique
  • Manipulation latérale (~10 secondes par atome)
  • Manipulation verticale
  • Chimie induite par la pointe
  • Contrôle autonome via agents RL

Tests et architecture

41 tests couvrent les protocoles, le simulateur, les mocks COM/TCP, le serveur asyncio, les files d’attente et l’intégration. Tous s’exécutent sans équipement physique :

$ pytest tests/ -v
... 41 passed in 2.34s

Architecture :

amrl_transport/
├── transport/           # ABC + adaptateurs
├── deepspm/            # serveur asyncio
├── queue/              # RabbitMQ/Redis
├── integration.py      # Environnement Gym
└── cli.py

Pourquoi cela compte

  • API unifiée pour Createc, Nanonis et simulateur
  • Émulation complète de la physique STM sans équipement à 500 000 $
  • Alternative multiplateforme à LabVIEW (MIT vs 3 500 $/an)
  • Environnement Gym prêt à l’emploi pour l’entraînement RL en manipulation atomique
  • Exécution parallèle sur plusieurs microscopes

— Editorial Team

Advertisement 728x90

Lire ensuite