Skocz do zawartości
BuxBleed

Robot sterowany wizyjnie - zadawanie trajektorii ruchu na obrazie z kamery

Pomocna odpowiedź

Potrzebuję wsparcia informacyjnego odnośnie projektu robota sterowanego wizyjnie.

Na ten moment, mam robota który jeździ, nie ma osi skrętnej, skręcanie odbywa się różnicowo, czyli zmiana kierunków obrotu w silnikach. To sprawia że jest w stanie chociażby obrócić się o 180 stopni w miejscu, w praktyce wchodzi bezwładność i tak nie jest.

Jest do niego dobrze zrobione sterowanie za pomocą akcelerometru w telefonie, dane wysyłane przez BlueTooth, kręcimy telefonem, robot jeździ skręca opuszcza pisak gdy wciśniemy przycisk jest ok.

Wersja finalna ma umożliwić rysowanie jakichś prostych figur. Można to już zaimplementować w tym momencie, w sensie wgrać program który będzie rysował na przykład prostokąt i zobaczyć co z tego wyjdzie ( nie próbowałem ). Wówczas mamy otwarty układ regulacji, nie mamy informacji zwrotnej na temat sygnału wyjściowego ( czy już trzeba skręcić, podnieść pisak, zatrzymać się itp).

No więc jeśli zamkniemy układ, to informacja wizyjna z obrazu będzie pełnić rolę ujemnego sprzężenia zwrotnego co przełoży się na lepszą dokładność sterowania i rysowania.

Mam kamerkę dedykowaną do Raspbbery Pi, zawieszoną na suficie nad przestrzenią roboczą robota, dwa znaczniki wygenerowane za pomocą funkcji biblioteki OpenCV. Jeden na robocie drugi gdzieś w rogu przestrzeni roboczej. Znam wymiary jednego i drugiego. Położenie ich środków i wierzchołków.

1.Jestem w stanie policzyć odległość w linii prostej od środka jednego znacznika do drugiego znacznika, w pikselach na obrazie. Jak obliczyć ją w jednostkach odległości ? Znam wysokość na jakiej zawieszona jest kamera.

2. Jak obliczyć rotację układu współrzędnych związanych z robotem a układem który jest związany ze znacznikiem odniesienia? Mamy płaszczyznę 2D a więc, tylko współrzędną x i y no i potrzebowałbym jakoś obliczyć kąt o jaki obrócił się jeden układ względem drugiego dookoła osi z .

3. No i potrzebowałbym to jakoś połączyć w programie tak aby zadając punkt na obrazie z kamery robot poruszał się w linii prostej do niego, tyle by na początek wystarczyło. Nie pytam o implementację tylko o funkcjonalności jakie powinien posiadać program.

Będę wdzięczny za wszelkie pomysły 🙂

Udostępnij ten post


Link to post
Share on other sites

1. Najprościej jest zmierzyć. Żeby policzyć, musiałbyś znać parametry obiektywu.

2. Poszukaj w algebrze liniowej o macierzy przejścia między bazami.

3. Nie rozumiem tego pytania.

Udostępnij ten post


Link to post
Share on other sites

1. Mam model matematyczny kamery, w sensie kalibruje kamerę za pomocą odpowiedniej funkcji w OpenCV używając do tego szachownicy.( współczynniki zniekształcenia, ogniskową, oraz centra optyczne(?) zapisane w postaci macierzy i wektorów) Może to jakoś wykorzystać ?

2. Ok

3. Na razie to pomińmy

Udostępnij ten post


Link to post
Share on other sites

Zapewne możesz, tylko będziesz musiał w dokumentacji wyczytać jak się tego dokładnie używa.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...