홈으로 돌아가기

STM Python 제어: 시뮬레이터 및 RL

amrl-transport 라이브러리는 RL 에이전트를 위한 STM 제어를 통합합니다. 시뮬레이터는 원자 조작 물리를 에뮬레이트하고, asyncio 서버는 LabVIEW를 대체합니다. Createc/Nanonis 지원, RabbitMQ 작업 큐.

Python 및 RL 에이전트를 통한 원자 제어
Advertisement 728x90

STM 제어 및 원자 조작을 위한 파이썬 인프라

amrl-transport 라이브러리는 스캐닝 터널링 현미경(STM)에 일관된 인터페이스를 제공합니다. STMTransport 클래스는 나노미터, 밀리볼트, 피코암페어와 같은 물리적 단위를 사용해 12개의 메서드를 정의합니다. 구현은 컨트롤러 유형(크리에이텍, 나노니스, 시뮬레이터)에 따라 달라집니다.

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 에이전트를 훈련할 수 있습니다. 실제 장비로 전환하려면 '시뮬레이션에서 현실로'의 격차를 극복해야 합니다.

랩뷰 서버 DeepSPM 대체

DeepSPM(Nature Communications, 2020)은 크리에이텍 컨트롤러와 통신하기 위해 랩뷰 TCP 서버를 사용했습니다. 프로토콜은 역설계되었으며, 총 6개의 명령어(scan, tipshaping, tipclean, getparam, approach, movearea)와 이진 응답을 지원합니다.

파이썬 기반의 asyncio 구현은 완전히 호환됩니다:

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

DeepSPM 코드는 변경 없이 localhost:5556에 연결됩니다. 비용이 $3,500/년인 윈도우 전용 랩뷰는 크로스플랫폼이며 MIT 라이선스를 갖춘 코드로 대체됩니다.

병렬 작업을 위한 큐 시스템

RabbitMQ + Redis를 활용해 다수의 마이크로스코프 간 작업 배포를 관리합니다. 작업은 Pydantic 모델을 통해 정의됩니다: ManipulationTask, AtomTarget.

# 워커 실행
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는 알토 대학교 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초당 1원자)
  • 수직 조작
  • 톱니 유도 화학 반응
  • 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
  • 50만 달러 이상의 장비 없이도 완전한 STM 물리 모사 가능
  • 크로스플랫폼 랩뷰 대체 (MIT vs 연간 $3,500)
  • 원자 조작 강화학습 훈련을 위한 즉시 사용 가능한 Gym 환경
  • 여러 마이크로스코프에서 병렬 실행 가능

— Editorial Team

Advertisement 728x90

다음 읽기