logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak stworzyć interaktywną symulację robota w czasie rzeczywistym w CATIA?

peterrrm 22 Kwi 2009 22:14 3391 8
REKLAMA
  • #1 6445941
    peterrrm
    Poziom 14  
    Posty: 166
    Pomógł: 6
    Ocena: 11
    Witam!

    Bardzo proszę o pomoc, obecnie jestem w trakcie pisania pracy magisterskiej i chcę rozwiązać następujący problem: mam stworzyć symulator robota którym można będzie sterować w czasie rzeczywistym np. za pomocą klawiatury albo pada. Problem w tym, że nie chcę tego robić pisząc kompletny program od podstaw bo sie na tym aż tak dobrze nie znam. dodam , żeby było wszystko jasne , że nie chcę z góry założyc symulacji a potem ją przeprowadzić, z tym nie ma problemu ale ma być to interaktywna symulacja czyli mam poruszać jego ramionami w czasie symulacji najlepiej dżojstikiem albo wirtualną klawiaturą a po dojechaniu do jakiegoś punktu program(catia) powinien wysłac współrzędne na zewnątrz np do excella.Myślałem nad tym, żeby wykorzystać np. Catie czy SolidWorksa lub inny program, może Delmię do takiej symulacji ,tylko ,że nie wiem czy będzie to możliwe. Myślę , że trzeba napisać jakieś marko czy aplikację do komunikacji programu 3D ze sterowaniem np. klawiaturą czy padem. Wiem, że cos podobnego zrobiono za pomocą VBA i Inventora ale niestety nie mam nic na ten temat. Symulator też powinien zwracać współrzędne końca chwytaka a najlepiej pozycje wszystkich enkoderów. Nie chodzi mi o żaden firmowy symulator. Proszę o jakieś sugestie i podpowiedzi, czy to w ogóle jest możliwe? dziękuje i pozdrawiam
  • REKLAMA
  • #2 6451044
    adam_es
    Poziom 30  
    Posty: 956
    Pomógł: 175
    Ocena: 185
    Spróbuj oprogramowaniem Dybot. Stare, ale efektowne.
  • #3 6451222
    peterrrm
    Poziom 14  
    Posty: 166
    Pomógł: 6
    Ocena: 11
    Niestety prawie nie ma informacji na temat tego programu , zainstalowałem go i szczerze nie mam pojęcia jak można by było go wykorzystać do mojego zadania:( może ma ktoś inne propozycje?
  • REKLAMA
  • #4 6454172
    kaktus_c++
    Poziom 18  
    Posty: 231
    Pomógł: 26
    Ocena: 3
    Czyli to co chcesz zrobić to nie symulator ale wizualizacja pracy robota. Nie napisałeś jak chcesz komunikować się z robotem - przez LPT ? Za pomocą basica można sterować pinami lpt, nie wiem jak w VBA. Można też tworzyć odrębne moduły do solidworksa w postaci plików dll i korzystać z nich podobnie jak z makr, w tych modułach napisanych np w C++ możesz zrobić niemalże wszystko co chcesz i nic cię wtedy nie ogranicza.

    Ja osobiście bym dał sobie spokój z makrami i solidworksem, dla mnie łatwiej było by napisać odrębną aplikację z prostą "wizualizacją" 3D, jeśli robot nie jest zbyt skomplikowany mechanicznie to nie musisz używać openGL czy DirectX.
  • #5 6455255
    poczitamagoczi
    Poziom 14  
    Posty: 116
    Pomógł: 8
    Ocena: 78
    Ja kiedyś napisałem sobie programik w VC++ 6 z wykorzystanie open-GLa do symulacji ramienia robota.
    Tu jest link: http://www.speeddemon.republika.pl/CopenGL.html
    Musiał byś tam dużo zmian dorobić ale jak chcesz to poszukam gdzieś kodów.
  • REKLAMA
  • #6 6475924
    peterrrm
    Poziom 14  
    Posty: 166
    Pomógł: 6
    Ocena: 11
    Witam, trochę mnie nie było i nie mogłem odpisać. Dziękuje za odzew:) a teraz do sedna. Sądzę, ze symulacja to jak najbardziej odpowiednie słowo. Wizualizacja to było by odwzorowanie ruchu fizycznego robota w czasie rzeczywistym. A ja tylko mam narysować robota i ruszać tym wirtualnym modelem na komputerze za pomocą joysticka. Udało mi sie w Cati zrobić model robota a następnie za pomocą VBA ruszać jego ramionami przesuwając suwaki. muszę jeszcze dorobić kod który będzie obliczał współrzędne chwytaka dzięki notacją D-H , chce jeszcze zrobić sterowanie nie poprzez poszczególne ramiona ale tylko końcówką chwytaka a kąty ramion by obliczał program i też dzięki notacją D-H i wystawiał odpowiednie wartości kątów:) I też bardzo ważna rzecz i pytanie kieruje do kaktus_c++ , wiem , że kody do visuala basica działają tez w VBA (nie wszystkie ale funkcje API na pewno), stąd moje pytanie jeśli wiesz jak odczytywać dane z podłączonego joysticka albo pada to bardzo proszę o odpowiesz ,albo kogokolwiek:) pozdrawiam serdecznie!:)
  • REKLAMA
  • #7 6478560
    kaktus_c++
    Poziom 18  
    Posty: 231
    Pomógł: 26
    Ocena: 3
    Czyli fizycznie robot nie będzie istniał - to zgadzam się , można to nazwać symulacją.
    Joysticka nigdy nie próbowałem odczytywać, posługiwałem się jedynie portem LPT. Była kiedyś taka stronka www.rafal.waw.pl i tam był opis jak korzystać z lpt i innych portów w języku VB za pomocą biblioteki inpout32. Strony już nie ma, ale mam ją częściowo zapisaną. Jest tam też wspomniane że joystick podłącza się do gameportu , a gameport można obsługiwać tak samo jak lpt, tylko ma inny adres. Może to Cię naprowadzi na coś - dołączam tą stronę. Tylko jeszcze jeśli joistick jest na usb to będzie się go obsługiwać zupełnie inaczej.
    Tak czy owak lepiej zadaj to pytanie na innym forum - "programowanie" - tam prędzej znajdziesz odpowiedź.
    Załączniki:
    • www.rafal.waw.pl .zip (19.83 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #8 6478677
    ekomont
    Poziom 16  
    Posty: 121
    Pomógł: 14
    Ocena: 11
    Joya obsługuje się najprościej z winapi. Poniżej 2 funkcje niezbędne...Najpierw należy przechwycić joy (joyGetDevCaps) a potem wystarczy tylko timer i cyklicznie JoyGetPos....Acha dla joystickjów więcej niż 2 osiowych używa się JoyGetPosEx z tej samej dll'ki...


    Public Declare Function joyGetPos Lib "winmm.dll" Alias "joyGetPos" (ByVal uJoyID As Long, pji As JOYINFO) As Long

    Przykład:

    Dim pos As JOYINFO
    x = joyGetPos(0, pos)
    Debug.Print "Współrzędne:" pos.wXpos; pos.wYpos


    Public Declare Function joyGetDevCaps Lib "winmm.dll" Alias "joyGetDevCapsA" (ByVal id As Long, lpCaps As JOYCAPS, ByVal uSize As Long) As Long

    Przykład:

    Dim cap As JOYCAPS
    x = joyGetDevCaps(0, cap, Len(cap))
    If x = 0 Then Debug.Print "Joystick #1 jest gotowy do pracy."
  • #9 6492360
    peterrrm
    Poziom 14  
    Posty: 166
    Pomógł: 6
    Ocena: 11
    Witam, dziękuje za kolejne podpowiedzi. Mam prośbę do Ekomont'a , mógłbyś trochę bardziej wyjaśnić o co w tym chodzi? nie wiem w którym miejscy w programie wstawić to co podałeś ani jak z tego korzystać:( jeśli możesz to proszę o opis krok po kroku jak to zrobić.

Podsumowanie tematu

✨ Użytkownik poszukuje metody stworzenia interaktywnej symulacji robota w czasie rzeczywistym, sterowanej za pomocą klawiatury, pada lub joysticka, z możliwością eksportu współrzędnych chwytaka (np. do Excela). Celem jest uniknięcie pisania programu od podstaw, wykorzystując istniejące oprogramowanie CAD/CAM takie jak CATIA, SolidWorks lub Delmia, potencjalnie z użyciem makr (VBA) lub API. Dyskusja porusza możliwość wykorzystania zewnętrznych aplikacji (np. Dybot), stworzenia własnej wizualizacji 3D, a także metody komunikacji ze sprzętem sterującym. Kluczowym rozwiązaniem zaproponowanym w kontekście VBA jest użycie funkcji WinAPI (`joyGetDevCaps`, `joyGetPos`, `JoyGetPosEx`) do odczytu danych z joysticka. Rozważana jest też metoda obliczania kątów ramion robota na podstawie pozycji chwytaka za pomocą notacji D-H.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA