Если вы когда-нибудь писали ПО для управления роборукой или вообще любым роботоподобным механизмом с числом степеней свободы более трёх, то знаете, что большую часть времени занимает программирование собственно перемещений. А теперь представьте, что вы построили роборуку, соединив звенья и приводы как угодно, а ПО определило длины звеньев, их расположение, углы поворота, и так далее.
Именно так поступили исследователи Columbia Research, написав ПО, которое обучается устройству управляемой им роборуки, не имея никакого первоначального представления о физике, геометрии или динамических характеристиках двигателей. Сразу после первого запуска ему неизвестно, какой формы роборука, как работают её двигатели, как и на что каждый из них влияет. В течение примерно полутора суток, совершая поначалу осторожные перемещения, кажущиеся беспорядочными, и получая обратную связь о происходящем, ПО при помощи глубинного обучения конфигурирует встроенный в него симулятор таким образом, чтобы виртуальная роборука максимально походила на физическую.
Руководитель проекта Lipson и его аспирант Robert Kwiatkowski экспериментируют с сочленённой роборукой, имеющей четыре степени свободы. В начале обучения ПО модель была неточной, и порядок соединения звеньев определён не был. После 35 часов обучения модель соответствовала реальности с точностью не хуже четырёх сантиметров. Затем ПО заставляло роборуку брать и перемещать предметы, при этом происходила дополнительная перекалибровка после каждого перемещения согласно модели, сформированной только самостоятельным обучением.
Чтобы определить, может ли такое ПО выявить повреждение роборуки, взамен одной из деталей была напечатана аналогичная, но специально деформированная. ПО определило, что поменялось, и внесло соответствующие изменения в модель. Вскоре оно выполняло задачи по подъёму и перемещению предметов лишь ненамного хуже.
Поскольку внутреннее представление ПО об устройстве роборуки не статично, это позволяет ему не только действовать всё лучше и лучше, но и подстраиваться под повреждения и изменения структур. Также всё продолжит работать при постепенном износе частей и их замене на слегка отличающиеся по форме.
Конечно, роборука, управляемая таким ПО, очень не скоро станет такой же точной, как Dexter — роборука с традиционным ПО, подарившая своим разработчикам приз на конкурсе Hackaday 2018 года, но посмотреть, как она работает, всё равно интересно: