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 워크플로우를 모사합니다. 표면 원자는 가우시안 분포로 생성되며, 사용자가 설정할 수 있는 노이즈도 지원됩니다. 조작 물리 법칙은 충분한 전류가 흐를 경우 원자가 이동하며, 톱니가 시간이 지남에 따라 둥글고 날카로워지는 방식으로 표현됩니다.
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 구현은 완전히 호환됩니다:
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대의 장비에서 병렬 스캔 및 조작을 지원하며, 워커에서는 예외 처리, 정상 종료, 재시도 백오프 기능도 제공됩니다.
강화학습 환경과의 통합
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
아직 댓글이 없습니다.