Chciałbym zbudować robota podążającego wirtualną ścieżką (Niewidoczna ścieżka jak „czarna linia na białej powierzchni” itp.).
Jestem po prostu entuzjastycznie widząc filmy science fiction, które pokazują, że roboty niosą towary i materiały w zatłoczonym miejscu. I tak naprawdę nie podążają za fizyczną linią. Wyczuwają przeszkody, głębokość itp.
Chciałbym zbudować jednego takiego robota, który podąża określoną (wirtualną) ścieżką od punktu A do B.
Próbowałem kilku rzeczy:
Za pomocą magnetycznego czujnika „efektu Halla” na robocie i drutu przewodzącego prąd (pod stołem). Problem polegał na tym, że sąsiedztwo czujnika Halla jest tak małe (<2 cm), że bardzo trudno jest ocenić, czy robot znajduje się na linii, czy poza nią. Nawet użycie szeregu magnesów nie mogło rozwiązać tego problemu, ponieważ mój stół ma grubość 1 cala. Więc ten pomysł się powiódł: P
Używanie farby ultrafioletowej (na linii) i stosowanie diod UV na robocie jako czujnikach. To da więcej ruchu zygzakowatemu robotowi. A ze względu na potencjalne zagrożenia związane ze stosowaniem źródła światła UV nawet ten pomysł się nie powiódł: P
W końcu pomyślałem o umieszczeniu kamery na górze i zastosowaniu algorytmów przetwarzania obrazu, aby zobaczyć, czy robot jest na linii, czy się rozchodzi.
Czy jest jakieś lepsze rozwiązanie niż to? Naprawdę szukam kreatywnych i prostych rozwiązań. :)
Odpowiedzi:
Istnieje wiele możliwych sposobów rozwiązania tego problemu i wszystkie one zależą od dostępnego materiału i wiedzy konstruktora robota.
W skrócie, kryteria są następujące:
W zależności od długości ścieżki użycie koderów może być wystarczające. Należy jednak zauważyć, że z powodu niedokładności fizycznej dryf sprawia, że odometria (co nazywamy koderami do pomiaru odległości) jest niepraktyczna na duże odległości. Jest to jednak łatwe na krótkich dystansach i należy to przynajmniej rozważyć.
Jeśli odległość jest zbyt duża dla samej odometrii, należy rozważyć użycie czujnika do pomiaru zwojów (na przykład żyroskopu lub kompasu ). Zwoje zwykle wprowadzają najwięcej błędów w odometrii (pomiar wzdłuż linii prostej nie ma zbyt dużego błędu), więc użycie czujnika do zwojów może czasami sprawić, że odometria jest realnym rozwiązaniem.
Jeśli odometria lub odometria + wyczuwalne toczenie nie działa, możemy być kreatywni. Jeśli chcesz, aby robot podążał ścieżką złożoną głównie z prostych odcinków, możesz umieścić diody podczerwieni w danych punktach na stole i pozwolić robotowi wyczuć te diody i podjechać szeregowo do każdego punktu.
Jednak nadal pozostawia to jakieś wizualne oznaczenie na stole (choć może być do pewnego stopnia ukryte) i byłoby wspaniale móc się bez tego obejść. Innym podejściem byłoby użycie wskaźników laserowych świecących równolegle do powierzchni stołu, ale kilka cali nad stołem. Robot może użyć fotorezystora do wykrycia, kiedy przechodzi przez laser, a to może dać mu znać, kiedy skręcić.
Podsumowując, myślę, że odometria powiększona o czujnik kąta jest prawdopodobnie najlepszym wyborem dla twojego robota, przynajmniej w sposób, w jaki go opisałeś. Być może będę w stanie wymyślić więcej opcji, ale to wszystko, co teraz widzę.
Ciekawe - dlaczego chcesz, aby linia była niewidoczna? Wiedząc, dlaczego może otworzyć więcej możliwości.
źródło
Anki używa czujników optycznych w swoich samochodach-zabawkach do wdrażania obserwatorów linii. Czujniki optyczne są czułe w zakresie podczerwieni. Fakt, że linie nie są widoczne, można łatwo wyjaśnić: linie są pokryte czarnym kolorem, który jest przezroczysty w zakresie podczerwieni. Paliogen black L 86 lub Paliogen black S 84 firmy BASF to takie kolory. Jeśli umieścisz kody kreskowe wzdłuż linii, możesz nawet uzyskać absolutne informacje o położeniu z czujników optycznych.
źródło
Mam krótką odpowiedź na twoje pytanie. Dotyczy to tylko robota z obsługą ROS. Można to zrobić na wiele sposobów, ale tak właśnie to zrobiłem. Użyłem ROS i Kuka Youbot. Może to być dowolny robot korzystający z ROS. Bardzo dobrze jest znać ROS, jeśli planujesz być w robotyce.
Użyj ROS Następnie użyj GMapping, aby zmapować swoje środowisko. Przykład pokoju lub korytarza i zapisz mapę. Następnie za pomocą RVIZ podaj pozycję celu na mapie.
źródło
Cóż, nie potrzebujesz do tego żadnej linii. Jedyne, czego prawdopodobnie potrzebujesz, to współrzędne globalne. jeśli umieścisz robota w polu zdefiniowanym przez globalne współrzędne i zastosujesz proste reguły fizyki newtonowskiej, robot może przejść z jednego punktu do drugiego. Na podstawie jego aktualnej lokalizacji dowie się o obecnym kącie skrętu, pożądanym kącie skrętu i współrzędnych bramki (zwanych również „pozami”). Gdy nadasz robotowi prędkość, zacznie przesuwać się w kierunku współrzędnych celu. W każdej iteracji ponownie obliczy swoją pozę i dokona korekt w razie potrzeby.
źródło