Projekt łazika marsjańskiego.
Kod używa ROS 2 Jazzy i jest rozwijany głównie dla Linux Ubuntu 24.04. Może być możliwe uruchomienie go na innych platformach, ale obecnie nie są one explicite wspierane.
Na samym początku należy skopiować plik .env.template jako .env (cp .env.template .env) i uzupełnić według posiadango CPU i GPU.
Jeśli żadna z opcji nie działa na twoim komputerze, daj znać.
Dostępnymi opcjami na HOST_HW są: [nvidia, intel-amd].
just jest programem do robienia aliasów do poleceń.
Jest on zdecydowanie wygodniejszy od kopiowania zaklęć z README.
W odróżnieniu od własnego skryptu shellowego potrafi łatwo wspierać autouzupełnianie TABem.
Jest też dużo łatwiejszy w zrozumieniu i pisaniu od make.
Instalacja just: sudo snap install --edge --classic just
Autouzupełnianie (wymagany restart terminala żeby zadziałało): just just-autocomplete
Aby zobaczyć wszystkie dostępne polecenia, wystarczy uruchomić just.
Zaleca się używanie Dockera, aby zapewnić jednolite środowisko dla wszystkich programistów.
Najpierw musisz go zainstalować, korzystając z oficjalnych instrukcji.
Pamiętaj również o wykonaniu post-installation steps, zwłaszcza „Manage Docker as a non-root user”.
Możesz się upewnić, że instalacja Dockera działa, uruchamiając polecenie just hello-world-docker, które powinno wyświetlić komunikat powitalny.
Jesteśmy zależni od GPU NVIDII, więc musimy upewnić się, że Docker może go używać.
Najpierw upewnij się, że masz zainstalowane sterowniki GPU na komputerze hosta, możesz skorzystać z instrukcji z Ubuntu help.
Następnie musisz zainstalować NVIDIA Container Toolkit na swoim komputerze, aby Docker mógł korzystać z GPU.
Skorzystaj z oficjalnej instrukcji, aby zainstalować.
Możesz sprawdzić, czy wszystko skonfigurowałeś poprawnie, uruchamiając polecenie just hello-world-nvidia, które powinno wyświetlić informacje o GPU (nazwa, wersja sterownika, temperatura itp.).
TODO: może nie potrzebujemy Nvidii?
Aby wykorzystać WSL zapoznaj się z tym plikiem.
Aby zbudować obrazy Dockera, uruchom just docker-build.
Aby uruchomić kontener z symulacją, uruchom just start-sim-nvidia lub just start-sim-intel-amd (zależnie od CPU i GPU).
Aby dołączyć do działającego kontenera uruchom just docker-attach-sim-nvidia lub just docker-attach-sim-intel-amd.
maly_woz/base:jazzy- obraz bazowy z zainstalowanym ROS 2 Jazzy, nie uruchamiany jako samodzielny kontener.maly_woz/software:jazzy, nazwa:software- "logika biznesowa", tutaj jest cała logika łazika, algorytmy, itd. Niezależne od platformy (sim/hw), oczekuje sygnałów z czujników i wysyła sygnały do aktuatorów wykorzystując ROS 2.maly_woz/hardware:jazzy, nazwa:hardware- obsługa czujników i aktuatorów działająca tylko na prawdziwym łaziku (drivery).maly_woz/sim:jazzy, nazwa:simulation- symulacja łazika w Gazebo. Oczekuje takich samych wejść i wyjść jakhardware(czujniki, aktuatory), tyle że dane brane są z symulacji.
Repozytorium jest workspacem ROSa.
Aby go zbudować w kontenerze, uruchom just ros-build.
Budowanie tworzy linki symboliczne, co oznacza, że można zmieniać pliki niekompilowalne (konfiguracyjne, Pythona, xmle, itd.) bezpośrednio w folderze src i będzie to działać (zmiany w C++ wymagają oczywiście ponownej kompilacji).
Po zbudowaniu możesz uruchomić demo za pomocą just start-sim-nvidia lub just start-sim-intel-amd.
W osobnym terminalu just start-soft, i w kolejnym just start-teleop
Powinna wystartować symulacja (Gazebo/Ignition) i wizualizacja (RViz) z prostym łazikiem na "Księżycu", a także RTAB-Map umożliwiający odometrię i mapowanie otoczenia.
Uruchamiane są również node'y obsługujące sterowanie joystickiem, więc jeśli taki podłączysz, powinieneś być w stanie kontrolować łazik (obecnie nie zaimplementowane).
Można również (w osobnym terminalu) uruchomić just start-teleop, który uruchomi node umożliwiający sterowanie za pomocą klawiatury.
Do pisania kodu polecany jest VS Code, ponieważ wspiera jednocześnie C++ i Pythona (i inne) oraz ma pluginy do ROSa.
Wcześniej polecane było połączenie się z kontenerem przy developmencie, ale ponieważ soft został podzielony na kilka niezależnych kontenerów, nie jest to obecnie polecana opcja. Aby VS Code dobrze sobie radził z podpowiadaniem składni i widział symbole, polecane jest zainstalować ROSa bezpośrednio na hoście (poza kontenerami) i zbudowanie workspace'a. Mogą przy tym wystąpić problemy w budowaniu, ale powinno nieco lepiej działać. Mile widziane propozycje udoskonalenia tego procesu.
Warto zainstalować dodatki, jakie poleca VS Code (ROS, ROS2, Python, C/C++ Extension Pack).
