Kiedy FPGA należy stosować w robotyce?


12

FPGA ma zalety, takie jak wiele punktów IO, ale potem znowu trzeba myśleć, co na bardzo niskim poziomie z przerzutników i pionierem na obszarach, gdzie rzeczy nie są jeszcze dojrzałe - przykładowo patrz na to pytanie tutaj o rozwoju narzędzi informatycznych na FPGA - obecnie tak rozumiem! Teraz FPGA została wykorzystana do stworzenia doskonałej zręczności w robotycznych rękach, takich jak tutaj . Teraz niektórzy ludzie sprzedają FPGA do szybkiego prototypowania i „przyszłościowych” projektów, jak tutaj , nie do końca je rozumiem: jeśli nie potrzebujesz wielu punktów IO dla takich rzeczy jak czujniki, dlaczego wybrać FPGA dla robota? Więc

Kiedy FPGA należy wybrać do projektu z robotyki?


Jeśli potrzebujesz równoległości, możesz użyć FPGA, ponieważ możesz to osiągnąć. Możesz także dostosować swój „układ układu” i „łatwo” zaktualizować niektóre funkcje bez nowego układu sprzętowego. Widziałem przykłady wykrywania wielu obiektów z kamery w czasie rzeczywistym. Na pewno jest to narzut dla mniejszych projektów.
Gossamer,

Odpowiedzi:


4

Nie jestem pewien, co w powiązanym pytaniu o narzędzia programistyczne powoduje, że myślisz, że nie są one dojrzałe. Prawdą jest, że większość z nich jest zastrzeżona i nie jest oprogramowaniem typu open source. Ale myślałem, że narzędzia były dość dojrzałe, nawet gdy zadawano to pytanie trzy lata temu. Obecnie Xilinx , Altera i Lattice mają swobodnie dostępne środowiska programistyczne działające w systemach Windows i Linux z obsługą 32 i 64-bitową. Jeśli nalegasz na open source Icarus Verilog może zrobić całkiem sporo. Ale osobiście trzymałbym się narzędzi specyficznych dla dostawcy.

FPGA to coś więcej niż kilka konfigurowalnych klapek. Zastanów się nad Altera NIOS II . 32-bitowy procesor typu soft-core zdolny do działania w systemie Linux. Łącz i łącz komunikację i inne urządzenia peryferyjne z OpenCores lub Xilinx , Altera lub Lattice, a zbudowałeś niestandardowy mikrokontroler ze wszystkim, czego potrzebujesz i niczym, czego nie potrzebujesz. Możesz nawet napisać kod C dla procesora NIOS II i mieć pewne funkcje zaimplementowane bezpośrednio w sprzęcie FPGA, jeśli potrzebujesz prędkości. Czy to dla ciebie wystarczający poziom myślenia?

Układy FPGA mają wysoki początkowy koszt inwestycji. Ale taniej i łatwiej jest dodać funkcjonalność na późniejszym etapie procesu projektowania. To właśnie oznacza „przyszłościowe” projekty. Rozważ projekt, w którym chcesz dodać dodatkowe silniki do robota, ale zabrakło generatorów PWM na mikrokontrolerze. Co robisz? Dodać kolejny mikrokontroler? Kup oddzielne układy PWM i podłącz je do interfejsu komunikacyjnego? Co jeśli wszystkie interfejsy komunikacyjne są w użyciu? W przypadku FPGA jest to prawie całkowicie zredukowane do operacji kopiowania i wklejania. O wiele łatwiejsze, tańsze i szybsze jest skalowanie projektu w celu uwzględnienia nowej funkcjonalności bez kupowania dodatkowego sprzętu z układem FPGA.

Ale prawdopodobnie największym powodem korzystania z FPGA jest szybkość. Nie mówię o czystej częstotliwości zegara. Ale kiedy potrzebujesz wielu rzeczy, aby wydarzyły się jednocześnie. Jak wspomniał Gossamer, równoległość jest tym, w czym FPGA są naprawdę dobre. Konstrukcje filtrów szczególnie korzystają z tego rodzaju architektury równoległej. Jeśli potrzebujesz filtrować i reagować na szybko zmieniający się czujnik, potrzebujesz FPGA. Są również całkiem dobre w przetwarzaniu wideo, ponieważ to również korzysta z przetwarzania równoległego.

Weźmy na przykład tego szybkiego robota ręcznego . Musi przetwarzać wideo z szybkiej kamery wizyjnej (1000 klatek na sekundę), a także czujników dotykowych i reagować, manipulując wieloma siłownikami w zaledwie kilka milisekund. Ten typ projektu ma miejsce, gdy trzeba wybrać układy FPGA.

masowo równoległe przetwarzanie obrazu


Czy możesz wyjaśnić to „FPGA mają wysoki koszt inwestycji początkowej”. Powiązane tutaj : ceny wyglądają bardzo nisko. Masz na myśli wysokie koszty szkolenia lub inną postać?
hhh

1
@ hhh Nie mówiłem o koszcie surowego chipa. Mówiłem o kosztach rozwoju. Rozważ zestaw rozwojowy mikrokontrolera, taki jak PandaBoard . Zawiera ARM Cortext A9 za 181 USD. Płytka rozwojowa FPGA, która może pomieścić A9, taka jak Cyclone V, kosztuje 1099 USD.
embedded.kyle

@ hhh Istnieją oczywiście tańsze zestawy programistyczne FPGA. Ale próbowałem znaleźć jakąś miarę, za pomocą której można by porównać dwie tak różne rzeczy. Tak więc zestaw programistyczny, który ma (bardzo) taką samą moc przetwarzania, jest około 10 razy większy.
embedded.kyle

@ hhh Najtańszy ARM na Mouser kosztuje 0,80 USD . Najtańsza FPGA kosztuje 2,80 USD .
embedded.kyle

2
@ hhh Ta ręka to najnowocześniejsze badania z prawdopodobnie dziesiątkami, jeśli nie setkami tysięcy dolarów niestandardowego sprzętu do jej obsługi. Przetwarzanie wideo ogólnie jest na wyższym poziomie. Zobacz tutaj i tutaj . I żaden z nich prawdopodobnie nie może przetworzyć wideo 1kfps. Więcej jak 30-60 fps. Wymieniona płyta nie ma żadnych wejść wideo. Choć z pewnością mógł kontrolować siłowniki i przetwarzać czujniki dotykowe. Zdecydowanie może emulować rękę, którą połączyłeś.
embedded.kyle

2

Myślę, że może istnieć nieporozumienie co do tego, czym właściwie jest FPGA i kiedy jest używana w projektach. Więc pozwól mi najpierw wyjaśnić tę część.

FPGA i kiedy ktoś może chcieć mieć ...

W przypadku ryzyka uproszczenia układ FPGA to niewiele więcej niż procesor, który może być „konfigurowalny”.

Dlaczego ktoś miałby chcieć mikroprocesora „rekonfigurowalnego”? Cóż, ponieważ wyprodukowanie procesora krzemowego kosztuje zbyt wiele, aby pozwolić sobie na to za jeden, dwa, a nawet dwieście układów. Musiałbyś uruchamiać partie tysięcy żetonów, aby było to ekonomicznie wykonalne.

Ponieważ żaden projekt nigdy nie jest wolny od błędów za pierwszym razem, wybranie krzemowej trasy skutecznie zobowiązuje firmę do co najmniej dwóch, jeśli nie większej liczby testów, a wszystko to przy ogromnych kosztach produkcji.

Co w gruncie rzeczy oznacza, że ​​bardzo niewiele firm komercyjnych będzie zainteresowanych projektowaniem i wprowadzaniem do produkcji czegokolwiek innego niż mikroukład o wystarczająco szerokim komercyjnym charakterze.

Tak więc, jeśli wymyślić genialny projekt, który uzasadnia zwyczaj mikroprocesorowe, to może próbować wnieść swój pomysł do życia na skromny budżet poprzez wdrożenie go w FPGA, gdzie rzeczywisty układ jest po prostu zbiorem bramek, a „program” (zazwyczaj VHDL lub Verilog) ustawia te bramki w rzeczywisty mikroprocesor.

Ale to zupełnie inna droga (zupełnie odmienna konstrukcja mikroprocesora!) ...

Co prowadzi mnie do tego

... FPGA nie są niezbędne dla robotyki - przynajmniej na samym początku

Do robotyki potrzebny jest procesor . FPGA to tylko specjalny rodzaj procesora (konfigurowalny).

Pytasz, czy powinieneś? To zależy od twojej wiedzy, a także od tego, gdzie leżą twoje prawdziwe zainteresowania - najpierw projektowanie mikroprocesorów czy robotyka?

Jeśli mikroprocesory są Twoją pasją, to na pewno! A robotyka to świetny obszar zastosowań dla niestandardowych mikroprocesorów - być może kora wzroku z wieloma równoległymi ścieżkami decyzyjnymi obsługiwanymi bezpośrednio w sprzęcie lub specjalne mnożenie tensorów w sprzęcie - w zasadzie wszystko, czego zwykłe procesory nie są w stanie poradzić sobie dobrze z gotowymi produktami.

Ale jeśli zamierzasz projektować mikroprocesory w układach FPGA, to oczywiście musisz mieć całą wiedzę o niskim poziomie, o której wspomniałeś, i więcej - ponieważ zasadniczo będziesz projektować własny procesor. Co tak naprawdę nie ma nic wspólnego z robotyką, nawet jeśli twoją docelową aplikacją może być robotyka.

Większość projektantów prawdopodobnie znajdzie istniejący procesor, który zrobi większość tego, czego kiedykolwiek będzie potrzebował.

Myślę więc, że prawdopodobnie nie potrzebujesz FPGA.

Plan startowy: od możliwości komercyjnych do (być może) FPGA ...

Moim zdaniem pierwszym celem jest próba przekształcenia wszystkich twoich pomysłów w działającego robota (samo w sobie dość intensywne wyzwanie).

Jeśli okaże się, że masz w projekcie specyficzne i znaczące wąskie gardła w przetwarzaniu, następnym celem jest optymalizacja wyboru / projektu procesorów, wciąż dostępnych na rynku układów scalonych. Może większy, szybszy (kompromis z poborem mocy, rozpraszaniem ciepła). Być może mniejsze, dedykowane układy obsługujące określone zadania i współpracujące z głównym mózgiem (kompromis z komplikacjami algorytmu / logiki).

Tylko jeśli istnieją możliwości, których po prostu nie będziesz w stanie obsłużyć komercyjnych układów, możesz rozważyć wdrożenie specjalistycznego procesora w układzie FPGA, ponieważ w tym momencie pojawią się bardzo wyraźne korzyści, które masz nadzieję zyskać, rozwijając własne ”, a Ty możesz skoncentrować się na implementacji tych możliwości, korzystając z odpowiednich interfejsów do reszty projektu.

W przeciwnym razie prawdopodobnie zostaniesz pobocznym od głównego celu (zakładam, że faktycznie zbuduję robota!)

Podsumowując: układy FPGA odwracają uwagę od rozpoczęcia robotyki - dopóki nie znajdziesz się daleko na drodze do robotyki - i zyskałeś mocne podstawy w projektowaniu elektroniki cyfrowej / mikroprocesora gdzieś po drodze.


Mogę myśleć o wielu przykładach w takich obszarach, jak przetwarzanie wideo, gdzie równoległe przetwarzanie z FPGA jest niezbędne dla szybkości i dokładniejszych wyników. Widoczne awarie, w których ludzie próbują zaimplementować wykrywanie głośnej tęczówki w czasie rzeczywistym za pomocą jednego procesora. Nie. FPGA ma swoje specyficzne obszary, w których się kołysze, takie jak robotyczne dłonie o dużej zręczności lub precyzyjne / szybkie przetwarzanie wideo. Nie mogę i zestawiam FPGA z takim mikroprocesorem. Są to bardzo różne bestie, które mają swoje dobre i złe strony. Błędny? Masz pomysł, czy gdzieś wymienione są takie dobre obszary dla FPGA?
hhh

Z pewnością masz rację, że istnieje wiele obszarów, w których FPGA są zaletą - nie wykluczyłem tych w mojej odpowiedzi. Problem polega na tym, gdzie znajdujesz się na krzywej doświadczenia i jak jasno określasz konkretne zalety, które chcesz zyskać dzięki FPGA. Jeśli nie znasz odpowiedzi na to pytanie, prawdopodobnie nie potrzebujesz takiej odpowiedzi! (To echo odpowiedzi Jakoba poniżej.)
Assad Ebrahim

1

Pracując zarówno z układami FPGA, jak i mikrokontrolerami w projektach robotyki, powiedziałbym teraz: bez względu na to, kto ma największe doświadczenie w realizacji zadania. Jeśli znasz oba równie dobrze, nie zadajesz sobie pytania. Jeśli nie znasz dobrze, to są następujące punkty do przejścia:

  • Czy wymagana jest złożona synchronizacja portów I / O? 3-fazowe sterowanie silnikiem może mieć takie wymagania. FPGA mają tutaj niewielką przewagę.
  • Czy potrafisz zrównoleglić algorytm super małych opóźnień? Tutaj FPGA tak naprawdę nie konkuruje z mikrokontrolerami, ale bardziej z wbudowanymi komputerami PC. Większość rzeczy wybrałbym dla wbudowanego komputera, ale możesz mieć przewagę z FPGA dla niektórych konkretnych aplikacji. Gęste przetwarzanie stereo na przykład często odbywa się w układach FPGA. Wiele kamer używa FPGA do przetwarzania strumienia danych.

Często stosuje się również rozwiązania hybrydowe. Albo z dwoma chipami, więc jednym mikrokontrolerem dla kodu programu i FPGA dla IO lub innym zadaniem. Istnieje również wiele układów FPGA, które faktycznie mają wbudowany mikrokontroler.

Nie byłbym tak surowy w układach FPGA jak niektóre inne posty, ale ogólnie twierdziłbym również, że jeśli nie znasz dobrze swojego VHDL, lepiej skorzystasz z mikrokontrolera lub jeszcze lepiej osadzonych komputerów.


Czy możesz pokazać przykładowe projekty, które pomogłyby zrozumieć, jakie rzeczy są dobre w przypadku układów FPGA, a które w przypadku mikrokontrolerów? Załóżmy na przykład, że jakiś robot podążający za linią: działa całkiem dobrze z pojedynczym mikrokontrolerem na płaskiej, czystej powierzchni, aż do uzyskania bardziej rozmytych linii, które wymagają wyostrzania obrazu / zwojów itp. Jeśli linia w lesie (lub innej hałaśliwej powierzchni) byłaby znacznie trudniejszym wyzwaniem (wątpię, czy w ogóle można to zrobić z FPGA). Czy zrobiłeś jakiś projekt robota w świecie rzeczywistym, w którym używałeś FPGA na przykład do przetwarzania obrazu / wideo w czasie rzeczywistym? +1 dla VHDL.
hhh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.