Skocz do zawartości

Algorytm SLAM - pomysł na interfejs GUI dla robota mobilnego na komputerze PC


simba92

Pomocna odpowiedź

Witam!

Chciałbym zapytać forumowiczów o pomysł na stworzenie interfejsu GUI po stronie komputera PC do realizacji wizualizacji algorytmu SLAM dla robota mobilnego o napędzie różnicowym, który umożliwiałby mi realizacje następujących zadań :

1) okno GUI powinno zawierać jakieś przyciski(możliwość zmiany parametrów jazdy robota) + pola tekstowe wyświetlające jakieś parametry jazdy robota w przestrzeni 2D w płaszczyźnie XY + okno główne, w którym widoczna byłaby aktualna mapa otoczenia oraz robot.

2) komunikacja robot - PC odbywa się bezprzewodowo po bluetooth tzn. od strony PC(master) mam konwerter USB - UART podpiety do modułu HC - 05 (port COM) , a od strony robota(slave) jest moduł HC 06.

Obliczenia i algorytm SLAM realizowany jest na robocie (STM32) po stronie komputera, chce tylko wizualizować to co dzieje się wokół robota i jest przez niego wysyłane po BT.

No i teraz pytanie : w jakim języku i programie polecacie zrobić GUI realizujące powyższe zadania 1) i 2) ??? Czy samemu pisać program, który odbiera dane z portu COM, później gdzieś je zapisuje na PC np. w pliku .txt , a GUI aktualizuje dane z tego pliku i wyświetla to co chce ??? Którą drogą iść ? Wykorzystać gotowe programy jak np. MATLAB + V REP ( nigdy nie łączyłem tych programów). Czy pisać GUI w C/C++ lub jakimś APi na Windowsa? mam trochę doświadczenia w GUI dla JAVY. Właściwie wszystko sprowadza się do połaczenia jakoś GUI z portem COM i danymi we/wy ??? Wszelkie sugestie i pomysły bardzo mile widziane 🙂

Link do komentarza
Share on other sites

Wszystko zależy od tego co już umiesz. Możliwości jest naprawdę mrowie. Język programowania w zasadzie dowolny zda egzamin. Możesz to nawet zrobić w javascripcie w przeglądarce (z serwerem do danych).

Ja osobiście robię sobie proste wizualizacje i interface-y w PyGame, bo to znam i lubię — ale uczenie się go tylko po to chyba się mija z celem. Z frameworków GUI jest bardzo dobry QT — i ma biblioteki w zasadzie dla dowolnego języka.

Jak się uprzesz, to możesz to nawet w visualbasicu w excelu jako makro napisać.

Link do komentarza
Share on other sites

Może ROS? Zawiera program rviz, który po skonfigurowaniu wyświetli Ci mapę i pozycję robota, masz też opcję po prostu kliknięcia na mapie i wtedy ustawiasz zadaną pozycję. Nie wiem, co jeszcze mógłbyś chcieć ustawić, ale pewnie też się jakoś da.

Jeśli chodzi o to, jakbyś miał to połączyć, to w Pythonie albo C++ musiałbyś napisać program, który odbierałby dane z Twojego robota, konwertował do standardowych typów danych ROSa, a potem publikował na odpowiednim topicu.

Innym rozwiązaniem na szybko jest Pythonowy matplotlib. Możesz po prostu stworzyć macierz n x m ze swoją mapą, wyświetlić to na wykresie jako bitmapa, na to nakładasz pozycję robota i już. Jak dodasz sobie obsługę klikania, to i możesz wysłać komendę, gdzie robot ma pojechać 😉

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Kiedyś pisałem tutorial jak obsługiwać port COM pod C#: https://forbot.pl/blog/port-szeregowy-interfejs-usart-czyli-komunikacja-mikrokontrolera-z-komputerem-id1122

To było dawno, więc coś się mogło zmienić, ale obstawiam, że dalej jest podobnie. Bibliotekę do obsługi portu COM tak naprawdę znajdziesz w każdym popularnym języku. Więc to, czy wybierzesz C#, Javę, Pythona czy jeszcze coś innego zależy tylko od tego w którym języku czujesz się pewniej przy pisaniu reszty aplikacji.

Odradził bym tylko WinApi bo jest dużo bardziej skomplikowane.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.