HAL для атомного манипулятора: путь от научной фантастики к реализации на Python

TL;DR: Путь от размышлений о телепортации под впечатлением от рассказа Стивена Кинга до создания Python-библиотеки для управления сканирующим туннельным микроскопом. В комплекте: 41 тест, полноценный симулятор вместо оборудования за полмиллиона долларов и замена громоздкого LabVIEW на изящный asyncio. Выполните pip install amrl-transport — и обучайте RL-агентов манипуляциям с атомами прямо на домашнем ПК.

Истоки идеи

У Стивена Кинга есть захватывающий рассказ «Долгий Джонт» (The Jaunt), где технология телепортации основана на мгновенной дезинтеграции объекта в начальной точке и его последующей сборке в пункте назначения.

Переслушивая это произведение в озвучке Влада Коппа («Модель для сборки»), я задался вопросом: насколько современная наука близка к подобным концепциям? Речь не о перемещении человека, а о базовой возможности разобрать структуру на атомы и воссоздать её заново.

Выяснилось, что мы подошли к этому вплотную, однако программный инструментарий исследователей безнадежно застрял в технологическом стеке тридцатилетней давности.

Атомная инженерия с помощью СТМ

Еще в 1989 году инженеры IBM продемонстрировали мощь сканирующего туннельного микроскопа (СТМ), выложив логотип компании из отдельных атомов ксенона. За прошедшие 36 лет технология значительно эволюционировала. Современный СТМ позволяет:

  • Визуализировать поверхность с атомарной точностью;

  • Осуществлять латеральное манипулирование (перемещение атомов вдоль поверхности);

  • Реализовывать вертикальное манипулирование (удаление и установку атомов);

  • Инициировать химические реакции на острие иглы (tip-induced chemistry).

Весь процесс происходит поатомно, с использованием зонда толщиной в один атом. Основной камень преткновения — катастрофически низкая скорость. Перемещение одного элемента занимает около 10 секунд. Создание наноструктуры из сотни атомов превращается в многочасовую рутину для ученого. О масштабировании до уровня «Джонта» при таком подходе не может быть и речи.

RL-агенты: ИИ в роли нано-манипулятора

В период с 2018 по 2020 годы две независимые исследовательские группы доказали, что нейросети способны автоматизировать этот процесс:

DeepSPM (Университет Монаша, 2020) — агент на базе глубокого обучения, который берет на себя управление СТМ: сканирование, анализ поверхности и очистку зонда. Результаты опубликованы в Nature Communications.

SINGROUP (Университет Аалто, 2019-2025) — использование алгоритма Soft Actor-Critic (SAC) для обучения агента точному позиционированию атомов в заданных координатах непосредственно на реальном оборудовании.

Идея перспективная, но реализация столкнулась с инфраструктурным барьером.

Проблема: зоопарк закрытого ПО и фрагментация

DeepSPM опирается на LabVIEW-сервер, взаимодействующий с контроллером Createc через COM-интерфейс. Это привязывает исследователей к Windows и требует ежегодных лицензионных отчислений в размере около $3500.

Команда SINGROUP разработала RealExpEnv — надстройку над тем же интерфейсом Createc, что опять же ограничивает выбор оборудования конкретным брендом и ОС.

Если ваша лаборатория использует контроллер Nanonis, вам придется переписывать архитектуру с нуля. Отсутствие симуляторов делает разработку невозможной без доступа к реальному прибору, а параллельный запуск экспериментов на нескольких установках превращается в логистический кошмар.

Эта ситуация напомнила мне повседневные задачи в бэкенд-разработке, где вместо физических параметров мы оперируем бизнес-логикой, но сталкиваемся с тем же отсутствием абстракций.

Представленное решение: amrl-transport

Проект amrl-transport объединяет три ключевых компонента:

1. 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: ...
    # ... и другие методы реализации

Благодаря этому RL-агенту становится неважно, управляет он реальным Createc, Nanonis или виртуальной средой.

2. Физический симулятор

Полноценный бэкенд, имитирующий работу микроскопа:

  • Генерация поверхностей с «атомами» на основе распределения Гаусса — визуально неотличимо от реальных снимков, включая настраиваемый уровень шума;

  • Моделирование латеральных манипуляций с учетом пороговых значений тока;

  • Эмуляция износа и восстановления геометрии острия зонда (tip shaping).

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 возвращает привычный numpy array 128x128

Теперь обучать модели можно на обычном ноутбуке без вакуумных камер и криогенных установок.

3. DeepSPM-сервер: прощай, LabVIEW

Наиболее значимая часть работы. Я провел реверс-инжиниринг протокола DeepSPM и реализовал полноценную замену LabVIEW-серверу на базе Python asyncio.

Протокол обмена данными включает 6 основных команд:

Команда

Сигнатура

Назначение

scan

scan x y size px

Сканирование заданного участка

tipshaping

tipshaping x y dip bias timing

Модификация зонда

tipclean

tipclean x y

Процедура очистки иглы

getparam

getparam Range|zRange

Чтение параметров системы

approach

approach f

Автоматический подвод зонда

movearea

movearea y+

Смещение рабочей области

Вместо проприетарного софта теперь можно использовать кроссплатформенное решение с открытым исходным кодом.

# Запуск сервера на Python
python -m amrl_transport.deepspm --transport simulator

# Код DeepSPM работает с ним прозрачно через localhost:5556

4. Распределенная очередь задач

Интеграция с RabbitMQ и Redis позволяет эффективно масштабировать работу лаборатории. Можно отправить задачу на сборку сложной наноструктуры, и свободный воркер (микроскоп) возьмет её в работу.

# Запуск воркера для конкретной установки
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]]'

TransportEnv: бесшовная интеграция

Для сообщества SINGROUP я подготовил TransportEnv — среду, полностью совместимую с Gym API, которая служит прямой заменой RealExpEnv:

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,
    goal_nm=2.0,
    # ... параметры среды
)

# Стандартный цикл обучения RL-агента
state, info = env.reset()
next_state, reward, done, info = env.step(action)

Это открывает путь к концепции Sim-to-Real: обучаем модель на быстром симуляторе и переносим её на реальное оборудование, просто сменив транспортный слой.

Гарантия качества и архитектура

Проект покрыт 41 тестом, которые проверяют всё: от контрактов ABC и физики симулятора до бинарных протоколов и асинхронного сервера. Для запуска тестов не требуется никакого физического оборудования.

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

Архитектура построена на принципах модульности, разделяя транспортный уровень, сетевые протоколы, систему очередей и интеграционные слои для RL-фреймворков.

Дальнейшие шаги

Как разработчик бэкенда, я подхожу к этой области с позиции инфраструктурного инженера. Моя цель — предоставить ученым качественные инструменты:

  1. Коллаборация с DeepSPM: планирую предложить авторам из Университета Монаша переход на Python-сервер для устранения зависимости от LabVIEW.

  2. Сотрудничество с SINGROUP: интеграция уровня абстракции транспорта в их актуальные разработки.

  3. Развитие экосистемы: надеюсь, что специалисты, работающие с Nanonis или другими контроллерами, воспользуются библиотекой для создания собственных адаптеров.

Если этот инструмент поможет хотя бы одной лаборатории ускорить исследования в области нанотехнологий, я буду считать задачу выполненной.

Установка и ресурсы

pip install amrl-transport

В рамках цикла audiotools.dev мы продолжаем исследовать сложные инженерные задачи. Иногда полезно переключиться с обработки звука на управление материей на уровне атомов.

 

Источник

Читайте также