GUI mojej apki do lazika po rurach

Masz coś ciekawego do przekazania ?? Wszyscy o wszystkim piszą tutaj ...
Awatar użytkownika
dajpanspokój
Posty: 139
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016
Has thanked: 3 times
Been thanked: 5 times

GUI mojej apki do lazika po rurach

Post autor: dajpanspokój » 20 kwie 2018 12:16

Hej, zrobilem aplikacje, ktora kontroluje robota, którego zadaniem jest wchodzenie do rury (przekroj mniej wiecej 20 cm) i mapowanie jej w 3d. Aplikacja ma wyświetlić rurę w 3d i zapisać w którym miejscu był robot. Robot wysyla informacje po kablu (tethered mode) albo zapisuje je w swojej pamieci (untethered mode). Polozenie robota jest wiadome z czujnika IMU, ktory jest umieszczony w jego srodku, a przebyta droga z 5 enkoderow, po jednym przy kazdym z gasiennic.

Po wyciagnieciu z rury, jezeli uzywany byl w trybie "untethered", mozna zczytac informacje o katach i drodze. W obu modach, trzeba zapisywac informacje do pliku tdms, zeby potem odczytywac je jako replay.

Z przodu, jest umieszczona kamerka GoPro, filmik jest zapisywany do karty pamieci. Po powrocie, mozna zgrac ten filmik i wyswietlic jako czesc replaya.

Wszystko jest zrobione w 100% w LabVIEW, z biblioteką Vision, zeby wyswietlic odpowiednia klatke z filmu .avi
Start Screen.PNG
Main Menu.PNG
Main Menu.PNG (40.05 KiB) Przejrzano 1592 razy
Project settings.PNG
Project settings.PNG (77.77 KiB) Przejrzano 1592 razy
3d pic with vis on top.PNG
Tethered 3.PNG
Ostatnio zmieniony 20 kwie 2018 12:28 przez dajpanspokój, łącznie zmieniany 2 razy.
Obrazek

Awatar użytkownika
dajpanspokój
Posty: 139
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016
Has thanked: 3 times
Been thanked: 5 times

Re: GUI mojej apki do lazika po rurach

Post autor: dajpanspokój » 20 kwie 2018 12:17

Tethered 2.PNG
Replay Selector.PNG
Replay Selector.PNG (20.68 KiB) Przejrzano 1591 razy
Pop up.PNG
Pop up.PNG (6.9 KiB) Przejrzano 1591 razy
Replay.PNG
Replay 2.PNG
Obrazek

Awatar użytkownika
micard
Posty: 168
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2016
Has thanked: 6 times
Been thanked: 4 times
Kontakt:

Re: GUI mojej apki do lazika po rurach

Post autor: micard » 20 kwie 2018 12:33

Wow!
Kawał niezłej roboty!

Awatar użytkownika
mnawotka
Posty: 40
Rejestracja: 15 lut 2016 20:13
Wersja środowiska: LabVIEW 2014
Has thanked: 2 times

Re: GUI mojej apki do lazika po rurach

Post autor: mnawotka » 22 kwie 2018 17:21

Szacun, też tak bym chciał umieć :)

Zdradzisz trochę "know how" ?

Awatar użytkownika
bogdani
Administrator
Posty: 1311
Rejestracja: 30 lip 2003 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Ruda Śląska
Has thanked: 4 times
Been thanked: 1 time
Kontakt:

Re: GUI mojej apki do lazika po rurach

Post autor: bogdani » 22 kwie 2018 21:30

Świetna robota, widać, że się napracowałeś.

Jaką masz częstotliwość pomiarów, tzn. zapisujesz dane co x czasu, czy co x mm?

bogdani
LabVIEW Champion, Certified LabVIEW Developer, Certified Professional Instructor
Tworzymy dedykowane rozwiązania do testów i pomiarów - www.veritech.pl

Ktoś ci pomógł na forum? Podziękuj dając pochwałę.

Awatar użytkownika
smiga
Posty: 693
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk
Has thanked: 3 times
Been thanked: 1 time
Kontakt:

Re: GUI mojej apki do lazika po rurach

Post autor: smiga » 23 kwie 2018 00:58

Czad!
Może wrzucisz jakiś filmik z działania aplikacji...?
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek

Awatar użytkownika
dajpanspokój
Posty: 139
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016
Has thanked: 3 times
Been thanked: 5 times

Re: GUI mojej apki do lazika po rurach

Post autor: dajpanspokój » 23 kwie 2018 10:59

No uzylem tam paru trikow :)

Architektura jest zrobiona w Actor Framework, bo bylo dość malo czasu na ten projekt (3 miesiace) a jak sie wie co gdzie kliknać to w Actor Framework mozna stworzyc duże aplikacje mega szybko.
Podczas gdy ja robiłem ta apke, drugi gość robil software do robota, i tak naprawde mogłem sie z nim komunikować dopiero przez ostatnie 2-3 tygodnie ;D Musiałem wiec zrobić symulator, na ktorym mogłem testować wiekszość programu i jakoś w miare szybko przełączać miedzy prawdziwym hardwarem, symulatorem i samym modulem IMU, ktory też mogłem podpiąć oddzielnie. Stworzyłem wiec Hardware Abstraction Layer (HAL), po którym dziedziczyły te 3 hardwary. W zalezności, która z 3 klas jest zaladowana, to ona nadpisuje vi ktory ma byc uruchomiony po wysłaniu wiadomości. Np sygnał Stop dla prawdziwego hardware wysyla po serialu, zeby robot sie zatrzymal, a Stop dla symulatora znaczy, żeby po prostu się przestal streamowac.

Jesli chodzi o GUI to moim pierwszym problem było wyswietlenie kontrolek na 3d picture. Generalnie nie da sie tego zrobić :) bo po odświeżeniu 3d picture, wszystkie kontrolki - nawet te ktore sa ustawione on the top - sa nadrysowywane przez 3d pic. Na 3d picture mozna narysować tylko inny 3d picture, albo inny vi. Wiec te przyciski Play, Stop itd. to sa jeden vi, nastepny to sa te 3 kropeczki i 2 inne przyciski w gornym lewym kacie. Na tych vi ustawilem jakies ciemne tlo (13, 13, 13) i potem w user32.dll ustawilem, zeby kazdy piksel (13, 13, 13) zamienil na przezroczysty. W ten sposob mamy vi z przezroczystym tlem! :) (https://forums.ni.com/t5/UI-Interest-Gr ... -p/3419599)
Wszystkie kontrolki sa sciągane ze strony https://thenounproject.com/ potem malowane i skalowane w Gimpie

@bogdani
Po starcie robot zaczyna stream po serialu co 100 ms. Kazda probka ma swoj index i checksum na koncu. Jezeli moj program zauwazy ze jakas probka zostala pominieta, albo checksum sie nie zgadza, to moze poprosic o ta probke jeszcze raz w trakcie streamu. Po odebraniu probki, w ktorej sa zapisane dane z IMU, odleglosc przebyta od ostatniej probki, stan baterii itp., Main przelicza to na pozycje i kąt robota i wysyła te dane do modulu, który rysuje. Ten moduł wie gdzie znajduje sie ostatni fragment rury i jeśli nowa odleglość jest na tyle duża, to oblicza, gdzie ma być narysowany kolejny fragment i go rysuje. Ten sam modul (aktor) zajmuje sie ustawianiem modelu robota w odpowiednim kierunku. Model jest narysowany w Solidzie jako .wrl i zaimportowany do aplikacji

@smiga
Moja firma chce zrobic jakis profesjonalny filmik z tego, z uzwglednieniem jak ten robot wyglada itp., zeby se wrzucic na linka:D Jak zrobia do wrzuce

Tak wyglada symulator:
https://drive.google.com/file/d/1IwzasL ... sp=sharing
I jeden z prawdziwych replayow:
https://drive.google.com/file/d/1Yc00vk ... sp=sharing
Ostatnio zmieniony 23 kwie 2018 14:39 przez dajpanspokój, łącznie zmieniany 1 raz.
Obrazek

Awatar użytkownika
mnawotka
Posty: 40
Rejestracja: 15 lut 2016 20:13
Wersja środowiska: LabVIEW 2014
Has thanked: 2 times

Re: GUI mojej apki do lazika po rurach

Post autor: mnawotka » 23 kwie 2018 12:14

Tym postem natchnąłeś mnie aby robić tak apki że jak się spojrzy na GUI to jest wielkie WOW ;)

Kawał dobrej roboty !!!

spalinowy
Posty: 101
Rejestracja: 03 lut 2012 15:09
Wersja środowiska: LabVIEW 2017
Lokalizacja: Warszawa
Been thanked: 3 times
Kontakt:

Re: GUI mojej apki do lazika po rurach

Post autor: spalinowy » 28 kwie 2018 23:13

Rewelacyjna robota. Fajnie jest robić ciekawe projekty.
mnawotka pisze:
23 kwie 2018 12:14
Tym postem natchnąłeś mnie aby robić tak apki że jak się spojrzy na GUI to jest wielkie WOW ;)

Kawał dobrej roboty !!!
Trzeba robić ładne apki, bo tylko to każdy widzi i ocenia.

Awatar użytkownika
mnawotka
Posty: 40
Rejestracja: 15 lut 2016 20:13
Wersja środowiska: LabVIEW 2014
Has thanked: 2 times

Re: GUI mojej apki do lazika po rurach

Post autor: mnawotka » 29 kwie 2018 09:10

W poprzedniej firmie dla klientów to appki na wypasie powstawały. Teraz jak robie dla użytku wewnetrznego to wszystko na jednym schemacie modern ;) - ale trzeba to zmienić !!!

Awatar użytkownika
dajpanspokój
Posty: 139
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016
Has thanked: 3 times
Been thanked: 5 times

Re: GUI mojej apki do lazika po rurach

Post autor: dajpanspokój » 10 maja 2018 10:54

Polecam uzywanie system buttonow, ktore maja 6 stanów, zamiast 4 -> mozna zdefiniować jak wygląda przycisk, kiedy kursor jest nad nim ale nie jest jeszcze przyciskany. Wtedy aplikacja jest ladniejsza w obsłudze, bo użytkownik wie gdzie może przycisnąć, a gdzie nie. Trochę dłużej schodzi na zrobienie przycisku, ale to jest jedna z tych rzeczy, która jest wszędzie i już jesteśmy przyzwyczajeni do tego, więc należy też robić w naszych apkach.

Można też w miarę łatwo stworzyć paletę z przyciskami, które używa się często (np Start, Ok, Cancel itp) i umieścić ją tam gdzie jest reszta przycisków (C:\Program Files (x86)\National Instruments\LabVIEW 2016\user.lib\Moje kontrolki).
Potem w jakims pustym vi, Tools->Advanced->Edit Palette Set... i otwierają nam sie okienka Funkcji i Kontrolek. Tam juz dosc intuicyjnie można dodać swój folder i kontrolki. W ten sposób mozemy uzywac tych samych ladnych kontrolek dla roznych aplikacji.

Mozemy tez zdefiniowac wyglad pop-upa, który np ma 2 przyciski Ok i Cancel i ustawić jako vi, ktory jest modalny (File->Preferences->VI Properties->Category: Windows Apperence->Customize, zaznaczamy Modal). Też możemy go dodać tam gdzie są wszystkie funkcje (C:\Program Files (x86)\National Instruments\LabVIEW 2016\vi.lib\Moje funkcje) i ustawić w palecie z funkcjami. W tej palecie mam też pare dodatkowych vi, które używam często np. wysuwanie klasterów z menu zza ekranu, przeźroczystość itp. W ten sposób tworzenie ladnych aplikacji zajmuje tyle samo czasu co tworzenie brzydkich aplikacji :p
Obrazek

ODPOWIEDZ