Skocz do zawartości

Robot sterowany wizyjnie - zadawanie trajektorii ruchu na obrazie z kamery


Pomocna odpowiedź

Napisano

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 🙂

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.

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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...