Dlaczego linux dla robotyki (szkic)

Twierdzę, że każdy kto chce się zajmować robotyką, musi znać Linuxa i jego narzędzia. Także Ci, którzy siedzą w branżach pokrewnych takich jak automatyka przemysłowa czy domowa, będą potrzebować coraz bardziej znajmości Linuxa. Powodów na to jest sporo.

Dla robotyków budujących nowe konstrukcje i ogólnie będących w awangardzie nowoczesnej robotyki bardzo ważnym argumentem jest to, że na Linuxie oparty jest ROS – Robot Operating System. Jest to de-facto standard robotów mobilnych (wykorzystuje go Atlas, etc), przez to robotyk– adept będzie zarzucany przez starszych kolegów hasłami dotyczącymi ROSowych topiców, packagy itd. ROS jest projektem open source / libre podobnie jak Linux. Bez porównania łatwiej buduje się w Linuxie projekty gdzie trzeba podłączyć do siebie ileś różnych programów czy rozwiązań innych ludzi (szczególnie,że są one też zazwyczaj open-source), stąd decyzja aby ROS bazował na Linuxie. Nawet jeśli ROS 2, będzie miał możliwość łączenia się z Windows, wynika to bardziej z potrzeby łączenia do ROS programów, które są tylko na Linuxie a nie z tego, aby całość przenieść do Windows.

Drugim argumentem jest to, że Linux to powszechnie stosowany system wbudowany, to znaczy system, który uruchamiany jest na urządzeniu do specjalnego przeznaczenia. Linuxa mają zegarki, samochody, routery. Jako, że robotycy chcą budować zaawansowane maszyny, w skład których wchodzić będą urządzenia z systemami wbudowanymi, muszą umieć je konfigurować, debugować czy nawet kompilować na nie nowe programy. To wymusza znajomość poruszania się po Linuxie, rozumienia Makefilei czy korzystania z Vim. Argument coraz bardziej dotyczy też automatyków, którym długo uchodziło na sucho stosowanie tylko Windows. Niestety, wraz z pojawieniem się Internet-of-Things i Smart Urządzeń, to się zmienia. Smartness urządznia najczęściej wiąże się z tym, że wyposażone jest w system operacyjny i można je, w dużym stopniu modyfikować i dostosowywać do własnych potrzeb. Tym systemem najczęściej jest Linux.

Powodów czemu w urządzeniach wbudowanych jest najczęściej Linux jest kilka. Cena – która w przypadku Linuxa jest niewielka, nie piszę żę zero, ponieważ producent urządzenia ze zmodyfikowanym Linuxem musi udostępnić swoją wersję. Miniaturyzacja – wbudowane Linuxy często mieszczą się na 5MB, a są też takie, które mieszczą się na historycznej dyskietce (1.44 MB). Wreszcie, łatwość tworzenia okrojonych Linuxów, dokładnie dostosowanych do potrzeb sytuacji. Tutaj polecam zapoznać się z projektami BusyBox i Yocto Project.

Argumentem, który przemawia do mnie osobiście, jest to, że Linux pozwala na bycie leniwym. Drivery do większości urządzeń są od razu dostępne, szczególnie do tych przeznaczonych dla robotyków (konwertery USB– UART, kamerki, pendrive’y itd itd). Większość programów można zainstalować, pisząc w konsoli apt-get mój-program, zamiast przeklikiwać godzinami przez GUI, uważając aby nie zainstalować przy okazji Ad-Ware. Można wszystko zautomatyzować pisząc mini programy w jednym z od razu dostępnych języków, takich jak Python czy Bash (np. od paru lat na jednym z moich komputerów chodzi program, który wchodzi na Allegro, sprawdza cenę produktu i zapisuje ją do pliku). Dla robotyka, taka łatwość uruchamiania programów i automatów może być kluczowa.

Ostatnim argumentem, już nie związanym z robotyką, jest to, że współczesne dystrybucje Linuxa takie jak Ubuntu, są bardzo proste w użyciu. Jako dowód może posłużyć, że moja babcia korzysta w codziennej pracy z Lubuntu (lekki wariant Ubuntu, w sam raz na słabsze komputery) na swoim netbooku ;)