Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

symulacja robota w czasie rzeczywistym np. w catii

22 Kwi 2009 22:14 3121 8
  • Poziom 14  
    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
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • Poziom 28  
    Spróbuj oprogramowaniem Dybot. Stare, ale efektowne.
  • Poziom 14  
    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?
  • Poziom 18  
    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.
  • Poziom 14  
    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.
  • Poziom 14  
    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!:)
  • Poziom 18  
    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ź.
  • Poziom 16  
    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."
  • Poziom 14  
    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ć.