Strona 1 z 1

GUI mojej apki do lazika po rurach

: 20 kwie 2018 12:16
autor: dajpanspokój
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 997 razy
Project settings.PNG
Project settings.PNG (77.77 KiB) Przejrzano 997 razy
3d pic with vis on top.PNG
Tethered 3.PNG

Re: GUI mojej apki do lazika po rurach

: 20 kwie 2018 12:17
autor: dajpanspokój
Tethered 2.PNG
Replay Selector.PNG
Replay Selector.PNG (20.68 KiB) Przejrzano 996 razy
Pop up.PNG
Pop up.PNG (6.9 KiB) Przejrzano 996 razy
Replay.PNG
Replay 2.PNG

Re: GUI mojej apki do lazika po rurach

: 20 kwie 2018 12:33
autor: micard
Wow!
Kawał niezłej roboty!

Re: GUI mojej apki do lazika po rurach

: 22 kwie 2018 17:21
autor: mnawotka
Szacun, też tak bym chciał umieć :)

Zdradzisz trochę "know how" ?

Re: GUI mojej apki do lazika po rurach

: 22 kwie 2018 21:30
autor: bogdani
Świetna robota, widać, że się napracowałeś.

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

bogdani

Re: GUI mojej apki do lazika po rurach

: 23 kwie 2018 00:58
autor: smiga
Czad!
Może wrzucisz jakiś filmik z działania aplikacji...?

Re: GUI mojej apki do lazika po rurach

: 23 kwie 2018 10:59
autor: dajpanspokój
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

Re: GUI mojej apki do lazika po rurach

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

Kawał dobrej roboty !!!

Re: GUI mojej apki do lazika po rurach

: 28 kwie 2018 23:13
autor: spalinowy
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.

Re: GUI mojej apki do lazika po rurach

: 29 kwie 2018 09:10
autor: mnawotka
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ć !!!

Re: GUI mojej apki do lazika po rurach

: 10 maja 2018 10:54
autor: dajpanspokój
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