Робототехника и компьютерное зрение на Python без платных лицензий MATLAB
Репозиторий давно не обновлялся
Последнее обновление было 1 год назад.
Почему робототехники долго сидели на MATLAB
Если вы учились или работали в сфере робототехники лет пять–десять назад, то наверняка помните Robotics Toolbox для MATLAB. Питер Корк создал его еще в девяностых годах. Долгое время эта библиотека оставалась стандартом для академической среды и инженерных лабораторий. Захотели построить матрицу пространственного трансформа, нарисовать траекторию манипулятора или посчитать инверсную кинематику — сразу открывали MATLAB.
Главная проблема этого подхода очевидна: стоимость лицензий. К тому же встроить код из MATLAB в современный продакшн-пайплайн бывает той еще задачей. Несколько лет назад автор полностью переписал свои инструменты на Python, а в 2023 году выпустил третью редакцию книги Robotics, Vision & Control вместе с открытым репозиторием RVC3-python.
Что входит в комплект
В репозитории собраны примеры и единая обертка для четырех профильных библиотек:
- Robotics Toolbox отвечает за кинематику, динамику и траектории манипуляторов.
- Machine Vision Toolbox решает задачи обработки изображений, поиска ключевых точек и стереозрения.
- Spatial Maths Toolbox берет на себя математику трехмерных преобразований, кватернионы и группы Ли SE(3)/SO(3).
- BDSim помогает симулировать динамические системы и структурные схемы.
Все исходники распространяются под лицензией MIT. Чтобы не собирать зависимости вручную, создатели объединили их в один пакет.
Быстрый старт через интерактивную консоль
Разработчики сделали удобную CLI-утилиту rvctool. Она разворачивает сессию IPython, где заранее импортированы все необходимые модули, математические функции и готовые модели популярного железа.
Установка занимает одну команду:
pip install rvc3python
Затем запускаем рабочую среду:
rvctool
Консоль работает с оглядкой на синтаксический опыт MATLAB. Если в конце строки не поставить точку с запятой, результат выражения сразу выводится в терминал. При этом вам доступен обычный Python со всеми удобствами.
Кинематика манипулятора в несколько строк
Попробуем задать модель промышленного робота Franka Emika Panda, посчитать положение его фланца и решить обратную задачу кинематики.
panda = models.ETS.Panda()
T = panda.fkine(panda.qz)
sol = panda.ikine_LM(SE3.Trans(0.4, 0.5, 0.2) * SE3.Ry(np.pi/2))
Метод fkine считает прямую кинематику и дает матрицу жесткого перемещения SE3. Метод ikine_LM ищет углы сочленений через алгоритм Левенберга — Маркварда.
Если вызвать метод panda.teach(panda.qz), откроется графическое окно, где можно двигать ползунки суставов и наблюдать за изменением поз робота.

Обработка изображений и компьютерное зрение
Для базовых задач компьютерного зрения не требуется подключать громоздкие внешние фреймворки. Например, сопоставление ключевых точек SIFT на двух кадрах выглядит так:
sf1 = Image.Read("eiffel-1.png", mono=True).SIFT()
sf2 = Image.Read("eiffel-2.png", mono=True).SIFT()
matches = sf1.match(sf2)
matches.subset(100).plot("w")
Под капотом используются проверенные NumPy и SciPy. Если вам понадобятся примеры глубокого обучения из 11-й главы книги (например, нейросетевая сегментация), PyTorch подтягивается отдельным флажком:
pip install rvc3python[pytorch]

Симуляция систем управления
Отдельного упоминания заслуживает пакет bdsim. Это попытка сделать аналог Simulink без громоздкой среды разработки.
Схемы блоков создаются прямо в Python-коде или собираются визуально через графический редактор bdedit. Данные сохраняются в обычные JSON-файлы с расширением .bd. В репозиторий уже зашито 25 готовых учебных моделей из книги, которые можно запустить напрямую из rvctool.
О чем нужно помнить перед запускaми
Перед началом работы стоит взять на заметку три момента:
- Требуется Python версии не ниже 3.8 из-за активного использования аннотаций типов.
- На чипах Apple Silicon (M1/M2/M3) бывают нюансы с отрисовкой через Open3D. В вики проекта есть отдельная страница с вариантами решения.
- В Jupyter Notebook и Google Colab код работает, но сложная 3D-анимация может подтормаживать из-за специфики передачи кадров в веб-интерфейс.
Кому пригодится этот репозиторий
Если вы преподаете робототехнику, пишите диплом, исследуете алгоритмы навигации или хотите быстро проверить гипотезу без разворачивания тяжелых среды типа ROS 2, RVC3-python сэкономит кучу времени. Проект избавляет от необходимости писать собственные обертки для матриц трансформаций и дает готовую базу для прототипирования.