• サぺルOPM
    link
    fedilink
    Polski
    arrow-up
    1
    ·
    7 months ago

    Cała konferencja “Better Software Conference” wydaje się ciekawa. Nie opublikowali jeszcze wszystkich materiałów.

    Ciekawe, że można było się tam dostać tylko na zaproszenie. Nie było publicznie podane dokładne miejsce.

    • naur
      link
      fedilink
      arrow-up
      1
      ·
      7 months ago

      Właśnie miałem wkleić materiał, ale mnie uprzedziłeś. :-)

      • サぺルOPM
        link
        fedilink
        Polski
        arrow-up
        1
        ·
        edit-2
        7 months ago

        Wydaje mi się, że kiedyś zrobiłem obiektowy solver w stylu Kaya. Kiedy implementowałem autopilot do modelu samolotu. Założenie było takie, że każdy efektor (ster, silnik) ma niezależny algorytm. Wspólny jest tylko stan samolotu (wyniki żyroskopu, kompasu, prędkości, położenia i ich abstrakcje). Każdy element niezależnie starał się wpłynąć na stan tak by uzyskać stan docelowy. Za każdą iteracją korygował go. Więc nie wymagało to struktury, którą chwalił Muratori.

        Wynik badania był taki, że niektóre manewry wymagające koordynacji wielu sterów były nieefektywne. Szczególnie redukcja prędkości. Pewnie byłby bardziej gdyby był wsteczny ciąg lub coś podobnego. Tylko, że to jest mniej efektywne energetycznie. Podobnie jak montowanie hamulców. Kiedy wystarczy odpowiednio podciągnąć lub robić jakieś oscylacje.

        • naur
          link
          fedilink
          Polski
          arrow-up
          1
          ·
          edit-2
          7 months ago

          Efektory miały zaprogramowaną jakąś korelację z określonymi elementami stanu? Np usterzenie z rotacją, a silniki z prędkością?
          Wydaje mi się, że taki model o którym piszesz mógłby zadziałać np w multirotorze, ale w samolocie każdy manewr musi być zaplanowany odpowiednio wcześnie (jako sekwencja ruchów). Mam wrażenie, że podejmowanie decyzji na podstawie obecnego stanu (bez planowania) w przypadku samolotu będzie niewystarczające.

          Sprawdziłem, jak robione jest sterowanie w Betaflight. Implementacja miksera jest w sumie zaskakująco prosta.
          Zależnie od układu ramion, każdy silnik ma przypisany zestaw współczynników określających wpływ na poszczególne osie (throttle, yaw, pitch, roll):
          https://github.com/betaflight/betaflight/blob/master/src/main/flight/mixer_init.c#L76
          Relatywna moc silników wyliczana jest na jako iloczyn tego współczynnika i oczekiwanej orientacji z pętli PID:
          https://github.com/betaflight/betaflight/blob/master/src/main/flight/mixer.c#L770
          Potem moc silników jest modulowana throttlem i normalizowana do prawidłowego przedziału:
          https://github.com/betaflight/betaflight/blob/master/src/main/flight/mixer.c#L569

          To są w sumie tak proste obliczenia, że rozbicie ich na niezależne procesy chyba bardziej komplikuje, niż pomaga.
          Ciekawe jak Ardupilot liczy to dla stałopłatowców.

          • サぺルOPM
            link
            fedilink
            Polski
            arrow-up
            1
            ·
            7 months ago

            Były jakieś algorytmiczne połączenia między wpływem stanu i efektorami. Działało zaskakująco dobrze, nawet podczas wiatru. Działało źle gdy redukował wysokość i przyspieszał do prędkości podczas których był niestabilny.

            Nie miałem okazji dotykać od tej strony multirotorów. Mało wybaczają, trzeba szybko reagować, są sztywne i wibrują, co wpływa na instrumenty pomiarowe.

            • naur
              link
              fedilink
              Polski
              arrow-up
              1
              ·
              edit-2
              7 months ago

              Ten pan wytrenował stosunkowo małą sieć do sterowania uproszczonym dronem w 2D - https://www.youtube.com/watch?v=hQ4ryudP4j8.

              Myślę, że wiele zależy od tego, jak zdefiniowany jest problem. Na jakiej “warstwie” działa sieć (czy wejściem są surowe dane z czujników, czy przefiltrowane, a może pod spodem jest już kontroler PID bez stabilizacji horyzontalnej).

              Kolejna kwestia to środowisko w którym uczymy sieć - czy jest to symulator, czy prawdziwy dron.
              W drugim przypadku problemem może być pozyskanie wystarczającej ilości danych.

              Zastanawiam się zresztą, czy to by było w ogóle opłacalne. Kontroler PID przelicza stan na STM32 F4 jakieś 4 - 8 tysięcy razy na sekundę. Sieć neuronowa pewnie wymagałaby znacznie większych zasobów.

              Update: tutaj uczą model w symulatorze, ale uwzględniają też zjawiska wykryte w nagraniach z rzeczywistych lotów.
              https://www.youtube.com/watch?v=fBiataDpGIo

              • サぺルOPM
                link
                fedilink
                Polski
                arrow-up
                1
                ·
                7 months ago

                Chodziło mi o działanie w świecie rzeczywistym. Podstawa to stabilny zawis na podstawie danych z czujników i sterowania silnikami.

                Dzisiaj masz trzecią generację telefonów z NPU, kamerką 20 mpx z przodu i 4 kamerami z tyłu i zestawem czujników. Więc czemu ma nie być opłacalne?

                Czy drony na STM32 są stabilne? Bo z artykułu wynikało, że nie. Na dodatek od każdego producenta były niestabilne inaczej.

                To raczej trudne zagadnienie dla standardowych algorytmów i czujników. Choćby ze względu na duże wibracje, które się zmieniają wraz ze stanem. Przez co wyniki ciągle pływają. Te lepsze zazwyczaj były stabilizowane kamerami.

                • naur
                  link
                  fedilink
                  Polski
                  arrow-up
                  1
                  ·
                  7 months ago

                  Dzisiaj masz trzecią generację telefonów z NPU, kamerką 20 mpx z przodu i 4 kamerami z tyłu i zestawem czujników. Więc czemu ma nie być opłacalne?

                  Takie telefony kosztują tyle co cały dron.

                  Czy drony na STM32 są stabilne?

                  Zależy jakie masz czujniki. Ten ma optyczny i zawis wygląda na stabilny - https://www.youtube.com/watch?v=bEKm-PGRnks
                  Problem w tym, ze optical flow sprawdzi się na dystansie max kilku metrów.
                  Swoją drogą, autor filmu nie jest chyba przywiązany emocjonalnie do swoich palców. ;-)

                  Stabilizacja GPSem jest już nieco mniej stabilna, ale to może też wynikać z podmuchów wiatru - https://www.youtube.com/watch?v=u_ArriXbrR0.

          • サぺルOPM
            link
            fedilink
            Polski
            arrow-up
            1
            ·
            7 months ago

            Dzisiaj by mnie ciekawiło jak duża sieć neuronowa jest potrzebna do stabilizowania wielowirnikowca.