GUI mojej apki do lazika po rurach
- dajpanspokój
- Posty: 145
- Rejestracja: 05 lis 2015 08:15
- Wersja środowiska: LabVIEW 2016
GUI mojej apki do lazika po rurach
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
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
Ostatnio zmieniony 20 kwie 2018 12:28 przez dajpanspokój, łącznie zmieniany 2 razy.
- dajpanspokój
- Posty: 145
- Rejestracja: 05 lis 2015 08:15
- Wersja środowiska: LabVIEW 2016
Re: GUI mojej apki do lazika po rurach
Szacun, też tak bym chciał umieć 
Zdradzisz trochę "know how" ?

Zdradzisz trochę "know how" ?
-
- Administrator
- Posty: 1315
- Rejestracja: 30 lip 2003 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Ruda Śląska
- Kontakt:
Re: GUI mojej apki do lazika po rurach
Świetna robota, widać, że się napracowałeś.
Jaką masz częstotliwość pomiarów, tzn. zapisujesz dane co x czasu, czy co x mm?
bogdani
Jaką masz częstotliwość pomiarów, tzn. zapisujesz dane co x czasu, czy co x mm?
bogdani
- smiga
- Administrator
- Posty: 823
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: GUI mojej apki do lazika po rurach
Czad!
Może wrzucisz jakiś filmik z działania aplikacji...?
Może wrzucisz jakiś filmik z działania aplikacji...?
- dajpanspokój
- Posty: 145
- Rejestracja: 05 lis 2015 08:15
- Wersja środowiska: LabVIEW 2016
Re: GUI mojej apki do lazika po rurach
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

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ć


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.
Re: GUI mojej apki do lazika po rurach
Tym postem natchnąłeś mnie aby robić tak apki że jak się spojrzy na GUI to jest wielkie WOW ;)
Kawał dobrej roboty !!!
Kawał dobrej roboty !!!
Re: GUI mojej apki do lazika po rurach
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ć !!!
- dajpanspokój
- Posty: 145
- Rejestracja: 05 lis 2015 08:15
- Wersja środowiska: LabVIEW 2016
Re: GUI mojej apki do lazika po rurach
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
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
