Robotyka i widzenie komputerowe w Pythonie bez płatnych licencji MATLAB
Dlaczego inżynierowie robotyki tak długo polegali na MATLAB-ie
Jeśli pięć do dziesięciu lat temu studiowałeś lub pracowałeś w robotyce, prawdopodobnie pamiętasz Robotics Toolbox dla MATLAB-a. Peter Corke stworzył go w latach dziewięćdziesiątych. Przez długi czas ta biblioteka pozostawała standardem w środowisku akademickim i laboratoriach inżynieryjnych. Potrzebowałeś zbudować macierz transformacji przestrzennej, wykreślić trajektorię manipulatora lub obliczyć kinematykę odwrotną — natychmiast sięgałeś po MATLAB.
Główna wada jest od razu widoczna: koszty licencji. Integracja kodu MATLAB z nowoczesnymi potokami produkcyjnymi również stanowi poważne wyzwanie. Kilka lat temu autor całkowicie przepisał narzędzia w Pythonie i w 2023 roku wydał trzecie wydanie książki Robotics, Vision & Control wraz z otwartym repozytorium RVC3-python.
Co zawiera
Repozytorium zawiera przykłady i ujednolicony wrapper dla czterech wyspecjalizowanych bibliotek:
- Robotics Toolbox obsługuje kinematykę, dynamikę i trajektorie manipulatorów.
- Machine Vision Toolbox zajmuje się przetwarzaniem obrazu, wykrywaniem punktów charakterystycznych i widzeniem stereoskopowym.
- Spatial Maths Toolbox zapewnia matematykę transformacji 3D, kwaterniony i grupy Liego SE(3)/SO(3).
- BDSim pomaga symulować systemy dynamiczne i diagramy blokowe.
Cały kod źródłowy jest rozpowszechniany na licencji MIT. Aby wyeliminować ręczne zarządzanie zależnościami, twórcy zbundlowali wszystko w jednym pakiecie.
Szybki start przez konsolę interaktywną
Twórcy udostępnili wygodne narzędzie CLI rvctool. Uruchamia ono sesję IPython z wszystkimi niezbędnymi modułami, funkcjami matematycznymi i gotowymi modelami popularnego sprzętu wstępnie zaimportowanymi.
Instalacja zajmuje jedno polecenie:
pip install rvc3python
Następnie uruchamiamy środowisko robocze:
rvctool
Konsola czerpie ze składni MATLAB-a. Jeśli pominiesz średnik na końcu linii, wynik wyrażenia natychmiast wyświetla się w terminalu. Jednocześnie masz pełny dostęp do zwykłego Pythona ze wszystkimi jego udogodnieniami.
Kinematyka manipulatora w kilku liniach
Zdefiniujmy model robota przemysłowego Franka Emika Panda, obliczmy pozycję końcówki i rozwiążmy problem kinematyki odwrotnej.
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))
Metoda fkine oblicza kinematykę prostą i zwraca macierz transformacji sztywnej SE3. Metoda ikine_LM znajduje kąty przegubów przy użyciu algorytmu Levenberga-Marquardta.
Wywołanie metody panda.teach(panda.qz) otwiera okno graficzne, gdzie możesz przesuwać suwaki przegubów i obserwować zmieniające się pozy robota.

Przetwarzanie obrazu i widzenie komputerowe
Do podstawowych zadań widzenia komputerowego nie ma potrzeby podłączania rozbudowanych zewnętrznych frameworków. Na przykład dopasowywanie punktów kluczowych SIFT na dwóch klatkach wygląda tak:
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")
W środku wykorzystuje sprawdzone NumPy i SciPy. Jeśli potrzebujesz przykładów głębokiego uczenia z rozdziału 11 książki (takich jak segmentacja sieci neuronowej), PyTorch jest dociągany z osobną flagą:
pip install rvc3python[pytorch]
Symulacja systemów sterowania
Pakiet bdsim zasługuje na szczególną uwagę. To próba stworzenia alternatywy dla Simulinka bez rozbudowanego środowiska programistycznego.
Diagramy blokowe są tworzone bezpośrednio w kodzie Pythona lub składane wizualnie przez edytor graficzny bdedit. Dane są zapisywane do zwykłych plików JSON z rozszerzeniem .bd. Repozytorium zawiera już 25 gotowych modeli z książki, które można uruchomić bezpośrednio z rvctool.
O czym warto pamiętać przed uruchomieniem
Przed rozpoczęciem pracy warto zwrócić uwagę na trzy kwestie:
- Wymagany jest Python 3.8 lub nowszy ze względu na aktywne wykorzystanie adnotacji typów.
- Układy Apple Silicon (M1/M2/M3) mogą powodować problemy z renderowaniem w Open3D. Wiki projektu zawiera osobną stronę z obejściami.
- Kod działa w Jupyter Notebook i Google Colab, ale złożone animacje 3D mogą się przycinać z powodu specyfiki transmisji ramek do interfejsu webowego.
Kto znajdzie to repozytorium przydatne
Jeśli wykładasz robotykę, piszesz pracę dyplomową, badasz algorytmy nawigacji lub chcesz szybko przetestować hipotezę bez konieczności konfigurowania ciężkich środowisk takich jak ROS 2, RVC3-python zaoszczędzi Ci mnóstwo czasu. Projekt eliminuje potrzebę pisania własnych wrapperów dla macierzy transformacji i zapewnia gotową podstawę do prototypowania.
Powiązane projekty