Skocz do zawartości

Pomocna odpowiedź

  • 3 tygodnie później...

Krótki update:

Napisałem filtr cząsteczkowy i w prostych testach wydaje się on działać. Bierze on odczyty z IMU i enkoderów i na ich podstawie liczy o ile się robot przemieścił (+ zakłócenia). Potem dla każdej cząsteczki przewiduje, jakie powinny być odczyty z czujników odległości przy danej pozycji w labiryncie i porównuje je z rzeczywistymi odczytami. Jeśli się zgadzają, to duże prawdopodobieństwo, że cząsteczka dobrze estymuje prawdziwą pozycję robota. Na razie zrobiłem tylko testy jednostkowe dla lokalizacji przy samym IMU+enkoderach i dla jazdy na wprost dodatkowo z czujnikami odległości. Ręczne generowanie bardziej skomplikowanych testów z czujnikami ToF byłoby już dość upierdliwe. W najbliższych dniach zintegruję to z ROSem, żeby móc przetestować lokalizację w symulatorze.

Do tego napisałem jeszcze automatyczne generowanie labiryntu w symulacji na podstawie pliku tekstowego z konfiguracją, korzystając z EmPy. Bardzo się to przyda do szybkiej zmiany ustawień. Na razie labirynty trzeba generować "z ręki", ale może w przyszłości pomyślę nad jakimś losowym generowaniem. Czeka mnie jeszcze sparsowanie tego pliku tekstowego w C++, żeby utworzyć znaną mapę labiryntu. Sam plik tekstowy wydaje się trochę niewygodny do edycji, bo trzeba jednocześnie uwzględniać ściany, słupki i puste miejsca. Zastanawiam się nad bardziej graficznym sposobem edycji, ale nie wiem czy to już nie będzie strzelanie z armaty do muchy.

164670963_Screenshotfrom2024-12-1721-44-22.thumb.png.29846ddc07040cd0bd321d58f8a3a8dd.png

Przy okazji chciałbym bardzo pochwalić ChatGPT i GitHub Copilot. ChatGPT potrafi ładnie wytłumaczyć skomplikowane zagadnienia, jak np filtr cząsteczkowy i pomóc przy implementacji. Copilot szalenie się przydaje przy generowaniu względnie powtarzalnego kodu, np. postawienie jednakowych ścian w kilku miejscach. Oczywiście trzeba krytycznie podchodzić do wygenerowanego outputu, ale łatwiej/szybciej zweryfikować ich prawdziwość niż samemu wymyślać/pisać + wiadomo już co potem dokładniej googlować.

  • Lubię! 2

@Wojcik98 już sama symulacja robi wrażenia. Zapowiada się ciekawy projekt, chyba jeszcze nie było tutaj robota MM, którego autor zaczynał od tej strony. Dzięki, że dzielisz się takimi szczegółami!

@Treker dzięki, zdobyłem trochę wiedzy i doświadczenia na studiach i w pracy, to chciałem to jakoś produktywnie wykorzystać 😛 

Kolejny update:
Zintegrowałem lokalizację z ROSem i po paru poprawkach coś tam działa. Filmik:

Pozycja robota w RViz (po lewej) jest obliczana z filtru cząteczkowego, a ten drugi latający układ współrzędnych jest brany z czystej odometrii z kół. Można zauważyć, że odometria się rozjeżdża po jakimś czasie, a filtr dzięki odczytom z czujników ToF potrafi z powrotem dopasować się do mapy labiryntu.

Nie działa to jeszcze jakoś super i na pewno dużo trzeba będzie zmienić przed zmierzeniem się z szybszą jazdą, ale już fajnie widzieć jakieś postępy. Być może spróbuję to uruchomić teraz na mikrokontrolerze, żeby wiedzieć, jaki rząd czasu zajmują obliczenia. Filtr cząsteczkowy działa lepiej z większą liczbą cząsteczek, więc tutaj głównym ograniczeniem są zasoby obliczeniowe. Zastanowię się też nad UKF, bo on inteligentniej sampluje punkty, przez co potrzebuje ich mniej.

  • Lubię! 1

@Wojcik98 Witam

Czy umiesz stworzyć system lokalizacji obiektu w obszarze 3D 200 m x 200 m x 200 m?

Chodzi mi o lokalizację obiektu lub obiektów z nadajnikiem oraz dokonanie pomiarów trajektorii lotu tych obiektów.

start obiektu - start pomiaru

pomiar przemieszczenia się obiektu - odczyt ciągły z zapisem parametrów lotu przy czym punktem odniesienia są nadajniki radiowe

stop pomiaru przez zdalny wyłącznik

Możliwość użycia danych do aplikacji na komórkę

Proszę o kontakt 

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...