返回首页

STM Python 控制:模拟器和 RL

amrl-transport 库统一 RL 代理的 STM 控制。模拟器模拟原子操作物理,asyncio 服务器替代 LabVIEW。支持 Createc/Nanonis、RabbitMQ 任务队列。

通过 Python 和 RL 代理进行原子控制
Advertisement 728x90

Python框架实现STM控制与原子操控

amrl-transport库为扫描隧道显微镜(STM)提供了一致的接口。STMTransport类定义了12个使用物理单位的方法:纳米、毫伏和皮安。具体实现因控制器而异——Createc、Nanonis或模拟器。

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: ...
    # 还有8个方法

这些方法涵盖表面扫描、横向与纵向原子操控、探针形状调整及化学操作。强化学习(RL)智能体运行在抽象层上,与硬件平台无关。

无需硬件即可开发的仿真环境

SimulatorTransport 模拟完整的STM工作流程。表面原子通过高斯分布生成,支持自定义噪声。操控物理机制:当电流足够时原子会移动;探针随时间逐渐变钝或重新变尖。

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 —— 128x128的numpy数组

该模拟器可在笔记本电脑上直接训练RL智能体。迁移到真实硬件时需解决“仿真到现实”的差距问题。

替代LabVIEW服务器DeepSPM

DeepSPM(《自然·通讯》,2020年)使用LabVIEW TCP服务器与Createc控制器通信。协议已逆向工程:共6条命令——scantipshapingtipcleangetparamapproachmovearea。响应为二进制格式。

基于asyncio的Python实现完全兼容:

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

DeepSPM代码可直接连接localhost:5556,无需修改。原需$3,500/年且仅限Windows的LabVIEW被跨平台、MIT许可的开源代码取代。

支持并行任务的队列系统

RabbitMQ + Redis 负责在多台显微镜间分发任务。任务由Pydantic模型定义:ManipulationTaskAtomTarget

# 工作节点
python -m amrl_transport.cli worker --transport simulator --worker-id sim-01

# 提交任务
python -m amrl_transport.cli submit --atoms '[[0,0],[1,0],[0.5,0.866]]'

支持3–5台仪器的并行扫描与操控。工作节点具备优雅关闭与重试退避机制。

Google AdInline article slot

与强化学习环境的集成

TransportEnv 是Aalto大学SINGROUP项目中RealExpEnv的即插即用替代品。兼容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)

训练好的模型可无缝从仿真环境迁移至真实设备。

核心STM控制功能:

  • 原子级分辨率扫描
  • 横向操控(每原子约10秒)
  • 纵向操控
  • 探针诱导化学反应
  • 基于RL智能体的自主控制

测试与架构设计

41项测试覆盖协议、模拟器、COM/TCP模拟、asyncio服务器、队列及集成模块。所有测试均无需实体设备即可运行:

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

架构结构如下:

amrl_transport/
├── transport/           # ABC基类 + 适配器
├── deepspm/            # asyncio服务器
├── queue/              # RabbitMQ/Redis
├── integration.py      # Gym环境封装
└── cli.py

为何这项技术至关重要

  • 统一API支持Createc、Nanonis与模拟器
  • 无需花费50万美元设备即可完整模拟STM物理过程
  • 跨平台替代LabVIEW(MIT许可证 vs $3,500/年)
  • 即插即用的Gym环境,用于原子操控强化学习训练
  • 支持多台显微镜并行执行任务

— Editorial Team

Advertisement 728x90

继续阅读