Szybkie rozpoczęcie prac z ToF dzięki aplikacjom 3D ToF

Przez: Stephen Evanczuk

Przekazane przez: Północnoamerykańscy redaktorzy DigiKey

Obrazowanie 3D ToF stanowi skuteczną alternatywę obrazowania wideo w szerokim zakresie zastosowań, w tym bezpieczeństwie przemysłowym, robotyce, interfejsach sterowania gestami i wielu innych. Podejście to wymaga jednak starannego połączenia konstrukcji optycznej, precyzyjnych obwodów czasowych i możliwości przetwarzania sygnałów, które często stanowią problem we wdrożeniu skutecznej platformy 3D ToF.

W niniejszym artykule opisano niuanse technologii ToF oraz zaprezentowano dwa gotowe zestawy ToF 3D - platformę rozwojową AD-96TOF1-EBZ firmy Analog Devices oraz zestaw ewaluacyjny EPC660 firmy ESPROS Photonics, które mogą pomóc programistom w szybkim prototypowaniu aplikacji 3D ToF i zdobyciu doświadczenia potrzebnego do wdrażania projektów 3D ToF celem spełnienia ich unikalnych wymagań.

Czym jest technologia ToF?

Technologia ToF opiera się na znanej zasadzie, że odległość między obiektem a pewnym punktem źródłowym można zmierzyć, mierząc czas między chwilą, w którym energia została wyemitowana przez źródło, a momentem odbioru jej odbicia przez to źródło (ilustracja 1).

Systemy ToF obliczające odległość między systemem a obiektami zewnętrznymiIlustracja 1: systemy ToF obliczają odległość od systemu do obiektu, mierząc opóźnienie czasowe między wyemitowaniem energii a odbiorem przez ten system energii odbitej od obiektu. (Źródło ilustracji: Analog Devices)

Chociaż podstawowa zasada pozostaje taka sama, rozwiązania ToF różnią się znacznie i przejmują możliwości jak i ograniczenia związane z technologiami, na których są oparte, takimi jak ultradźwięki, LiDAR, kamery czy też sygnały RF fal milimetrowych (mmWave):

  • ultradźwiękowe rozwiązania ToF są tanie, ale mają ograniczony zasięg i rozdzielczość przestrzenną obiektów
  • optyczne rozwiązania ToF mają większy zasięg i rozdzielczość przestrzenną niż systemy ultradźwiękowe, ale ich działanie może ograniczać gęsta mgła lub dym
  • rozwiązania oparte na technologii mmWave są zwykle bardziej złożone i droższe, ale mogą osiągać większy zasięg, zapewniając jednocześnie informacje o prędkości i kierunku obiektu docelowego pomimo dymu, mgły lub deszczu

Producenci wykorzystują możliwości każdej technologii, aby spełnić określone wymagania. Na przykład czujniki ultradźwiękowe dobrze nadają się do wykrywania przeszkód w wypadku robotów poruszających się po ścieżce lub podczas parkowania pojazdów. Natomiast technologia mmWave zapewnia pojazdom zdolność wykrywania na duże odległości, która jest przydatna do detekcji zbliżających się zagrożeń na drodze, nawet gdy inne czujniki nie są w stanie prawidłowo działać z powodu trudnych warunków pogodowych.

Projekty ToF mogą być konstruowane w oparciu o jedną parę nadajnik/odbiornik. Na przykład prosta konstrukcja optycznego czujnika ToF co do zasady wymaga tylko diody LED do oświetlania określonego obszaru zainteresowania oraz fotodiody do wykrywania odbić od obiektów w tym obszarze. Ta pozornie prosta konstrukcja wymaga jednak precyzyjnych obwodów taktowania i synchronizacji do pomiaru opóźnienia. Ponadto mogą być potrzebne obwody modulacji i demodulacji do odróżnienia sygnału oświetlenia od tła lub do obsługi bardziej złożonych metod fali ciągłej.

Złożoność projektów szybko rośnie w miarę postępów prac nad poprawą stosunku sygnału do szumu (SNR) i eliminacją artefaktów w systemach ToF. Co więcej, bardziej zaawansowane rozwiązania detekcji będą wykorzystywać wiele nadajników i odbiorników do śledzenia wielu obiektów lub obsługiwać bardziej zaawansowane algorytmy śledzenia ruchu. Na przykład systemy mmWave będą wykorzystywały wiele odbiorników do śledzenia kierunku i prędkości wielu niezależnych obiektów. (zobacz artykuł „Wykorzystanie radarów fal milimetrowych do szybkiego opracowywania projektów precyzyjnego wykrywania obiektów”.)

Systemy optyczne 3D ToF

Systemy optyczne 3D ToF wykorzystują ideę użycia większej liczby odbiorników, stosując czujniki obrazowania zwykle oparte na matrycach CCD. Gdy zestaw soczewek skupia pewien obszar zainteresowania na matrycy CCD, każdy element światłoczuły w matrycy CCD rejestruje wiązkę promieniowania odbitą od odpowiedniego punktu w danym obszarze. Światło odbite docierające do matrycy CCD zsynchronizowane z impulsem lub falą ciągłą jest zasadniczo wychwytywane w sekwencji odpowiednich okienek lub faz. Dane te są następnie przetwarzane w celu utworzenia trójwymiarowej mapy głębi zawierającej woksele (VOlume piXEL), których wartość reprezentuje odległość do odpowiedniego punktu w obszarze zainteresowania.

Podobnie jak klatki w filmie, poszczególne mapy głębi mogą być przechwytywane sekwencyjnie, aby zapewnić pomiary z rozdzielczością czasową ograniczoną tylko częstotliwością klatek systemu przechwytywania obrazu oraz z rozdzielczością przestrzenną ograniczoną tylko przez matrycę CCD i układ optyczny. Dzięki dostępności większych kamer CCD o rozdzielczości 320 x 240, optyczne systemy 3D ToF o wyższej rozdzielczości znajdują zastosowanie w bardzo różnych segmentach, w tym w automatyce przemysłowej, bezzałogowych statkach powietrznych (UAV), a nawet interfejsach gestów (ilustracja 2).

Obraz 3D optycznego czujnika ToF może dostarczyć szczegółowe dane dla systemów interfejsu gestówIlustracja 2: dzięki wysokiej liczbie klatek na sekundę i rozdzielczości przestrzennej optyczny czujnik 3D ToF może dostarczyć systemom interfejsu gestów szczegółowe dane, takie jak podniesienie ręki osoby w kierunku kamery ToF, jak pokazano na ilustracji. (Źródło ilustracji: ESPROS Photonics)

W przeciwieństwie do większości metod opartych na kamerach, systemy 3D ToF mogą zapewniać dokładne wyniki pomimo zacienienia lub zmieniających się warunków oświetlenia. Systemy te zapewniają własne oświetlenie, zwykle za pomocą laserów lub diod LED podczerwieni o dużej mocy, takich jak diody LED IR Luxeon firmy Lumileds zdolne do działania przy megahercowych częstotliwościach przełączania (MHz) stosowanych w takich systemach. W przeciwieństwie do metod takich jak kamery stereoskopowe, systemy 3D ToF stanowią kompaktowe rozwiązanie do generowania szczegółowych informacji o odległości.

Gotowe rozwiązania

Podczas wdrażania systemów 3D ToF twórcy stają przed wieloma wyzwaniami projektowymi. Oprócz wspomnianych wcześniej obwodów synchronizacji, systemy te zależą od starannie zaprojektowanego procesu przetwarzania sygnałów, zoptymalizowanego do szybkiego odczytu wyników z matrycy CCD dla każdego pomiaru okienka lub fazy, a następnie zakończenia przetwarzania w celu przekształcenia tych surowych danych w mapy głębi. Zaawansowane kamery 3D ToF, takie jak ESPROS Photonics EPC660-CSP68-007 łączą w sobie matrycę CCD 320 x 240 oraz pełny zestaw funkcji synchronizacji oraz przetwarzania sygnałów wymaganych do wykonywania pomiarów 3D ToF i generują 12-bitowe dane odległości na piksel (ilustracja 3).

Schemat systemu ESPROS Photonics EPC660 (kliknij, aby powiększyć)Ilustracja 3: system ESPROS Photonics EPC660 integruje urządzenie do obrazowania o rozdzielczości 320 x 240 pikseli z pełnym zestawem obwodów synchronizacji i kontrolerów wymaganych do konwersji surowych danych z urządzenia do obrazowania w mapy głębi. (Źródło ilustracji: ESPROS Photonics)

Karta ESPROS Photonics EPC660-007 ma zamontowaną kamerę EPC650 na płytce obwodu drukowanego 37,25 x 36,00mm wraz z kondensatorami odsprzęgającymi i złączem krawędziowym. Chociaż ten nośnik mikroukładów posiada podstawowy interfejs sprzętowy w projekcie systemu 3D ToF, projektanci stoją przed zadaniem stworzenia odpowiedniego projektu wizualnego od strony użytkownika i zapewnienia zasobów przetwarzania od strony sprzętowej. Zestaw ewaluacyjny EPC660 ESPROS Photonics eliminuje te zadania, zapewniając pełne środowisko programistyczne aplikacji 3D ToF, które obejmuje gotowy system obrazowania 3D ToF, jak i powiązane oprogramowanie (ilustracja 4).

Schemat zestawu ewaluacyjnego EPC660 firmy ESPROS Photonics (kliknij, aby powiększyć)Ilustracja 4: zestaw ewaluacyjny EPC660 ESPROS Photonics zawiera gotowy system kamery 3D ToF i powiązane oprogramowanie do wykorzystywania informacji o głębi w aplikacjach. (Źródło ilustracji: ESPROS Photonics)

Zestaw ESPROS, zaprojektowany do ewaluacji i szybkiego prototypowania, zapewnia wstępnie zmontowany układ kamery, zawierający nośnik mikroukładu EPC660 CC, zespół soczewki optycznej i zestaw ośmiu diod LED. Wraz z systemem kamer, płytką procesorową BeagleBone Black z 512MB pamięci RAM i 4GB pamięci flash służy jako kontroler hosta i zasób przetwarzania aplikacji.

ESPROS udostępnia również oprogramowanie do obsługi zestawu ewaluacyjnego EPC660. Można je pobrać ze strony internetowej i otworzyć za pomocą hasła, które można zamówić w lokalnym biurze sprzedaży firmy. Po uzyskaniu dostępu do oprogramowania projektant po prostu uruchamia aplikację graficznego interfejsu użytkownika (GUI) z jednym z kilku dostarczonych plików konfiguracyjnych, aby rozpocząć obsługę systemu kamer. Aplikacja GUI zawiera także okna sterowania i wyświetlania do ustawiania dodatkowych parametrów, w tym ustawień filtrów przestrzennych i czasowych, a także do przeglądania wyników. Projektanci mogą bardzo łatwo użyć zestawu w celu przechwytywania map głębi w czasie rzeczywistym i wykorzystywać je jako dane wejściowe do własnego oprogramowania aplikacyjnego.

Systemy 3D ToF o zwiększonej rozdzielczości

Kamera obrazująca 320 x 240, taka jak ESPROS EPC660, pasuje do wielu zastosowań, ale może brakować jej rozdzielczości wymaganej do wykrywania niewielkich ruchów w interfejsach gestów lub do odróżniania małych obiektów bez poważnego ograniczania obszaru zainteresowania. Do takich zadań służą gotowe zestawy oparte na czujnikach ToF 640 x 480, umożliwiające szybkie tworzenie prototypów aplikacji o wysokiej rozdzielczości.

Kamera głębi Seeed Technology DepthEye Turbo jest wyposażona w czujnik ToF 640 x 480, cztery diody VCSEL 850nm, obwody oświetlenia i wykrywania, zasilanie i interfejs USB, a to wszystko w niezależnej kostce o wymiarach 57 x 57 x 51mm. Wsparcie oprogramowania jest zapewniane przez oprogramowanie typu open source libPointCloud SDK z repozytorium github, obsługujące platformy Linux, Windows, Mac OS i Android.

Oprócz sterowników C++, bibliotek i przykładowego kodu, dystrybucja libPointCloud SDK zawiera interfejs API Python do szybkiego prototypowania, a także narzędzie do wizualizacji. Po zainstalowaniu pakietu dystrybucyjnego na platformie programistycznej hosta programiści mogą podłączyć kamerę przez USB do komputera i natychmiast rozpocząć korzystanie z narzędzia wizualizacji do wyświetlania map faz, amplitudy lub chmur punktów, które są zasadniczo ulepszonymi mapami głębi renderowanymi z powierzchniami tekstur w celu zapewnienia lepszego obrazu 3D (ilustracja 5).

Wygląd oprogramowania kamery głębi DepthEye Turbo firmy Seeed TechnologyIlustracja 5: pakiet oprogramowania stosowany w połączeniu z kamerą głębi DepthEye Turbo od Seeed Technology umożliwia łatwe wizualizowanie danych 3D ToF w różnych renderingach, w tym chmury punktów, jak pokazano tutaj w głównym oknie. (Źródło ilustracji: Seeed Technology / PointCloud.AI)

Zestaw ewaluacyjny 3D ToF AD-96TOF1-EBZ firmy Analog Devices zapewnia bardziej otwarty projekt sprzętowy zbudowany z pary płytek i przeznaczony do wykorzystania Raspberry Pi 3 Model B+ lub Raspberry Pi 4 firmy Raspberry Pi jako kontrolera hosta i lokalnego zasobu przetwarzania (ilustracja 6).

Wygląd zestawu ewaluacyjnego AD-96TOF1-EBZ 3D ToF firmy Analog DevicesIlustracja 6: zestaw ewaluacyjny 3D ToF Analog Devices AD-96TOF1-EBZ to dwupłytkowy zestaw do oświetlenia i zbierania danych z płytką Raspberry Pi do lokalnego przetwarzania. (Źródło ilustracji: Analog Devices)

Płytka do analogowego układu front-end (AFE) z zestawu zawiera zespół optyczny, matrycę CCD i bufory, pamięć oprogramowania układowego oraz procesor zarządzający ogólną pracą kamery, w tym czasem podświetlenia, synchronizacją czujnika i generowaniem mapy głębi. Druga płytka zawiera cztery diody laserowe VCSEL 850nm oraz sterowniki i jest zaprojektowana do połączenia z płytką AFE, aby diody laserowe były umieszczone wokół zespołu optycznego, jak pokazano na powyższej ilustracji.

Firma Analog Devices do zestawu AD-96TOF1-EBZ dodaje pakiet oprogramowania 3D ToF bazujący na licencji open source, wyposażony w SDK 3D ToF wraz z przykładowym kodem i wrapperami dla C/C++, Python i Matlab. Aby obsługiwać zarówno aplikacje hosta, jak i interakcje niskiego poziomu sprzętu w środowisku sieciowym, firma Analog Devices dzieli zestaw SDK na partycję hosta zoptymalizowaną pod kątem USB i łączności sieciowej oraz partycję niskiego poziomu działającą w systemie Embedded Linux i opartą na sterowniku Video4Linux2 (V4L2) (ilustracja 7).

Schemat interfejsu API SDK 3D ToF firmy Analog DevicesIlustracja 7: interfejs API SDK 3D ToF firmy Analog Devices obsługuje aplikacje działające na lokalnym hoście Embedded Linux oraz aplikacje działające zdalnie na hostach sieciowych. (Źródło ilustracji: Analog Devices)

Ten zestaw SDK z obsługą sieci umożliwia aplikacjom działającym na hostach sieciowych zdalną współpracę z systemem sprzętowym ToF w celu uzyskania dostępu do kamery i rejestrowania danych głębi. Programy użytkownika mogą również działać na partycji Embedded Linux i w pełni korzystać z zaawansowanych opcji dostępnych na tym poziomie.

W ramach dystrybucji oprogramowania Analog Devices podaje przykładowy kod demonstrujący kluczowe funkcje operacyjne niskiego poziomu, takie jak inicjalizacja kamery, przechwytywanie klatek, dostęp zdalny i przechwytywanie między platformami na komputerze hosta i lokalnie za pomocą Embedded Linux. Dodatkowe przykładowe aplikacje bazują na tych podstawowych operacjach, aby zilustrować wykorzystanie przechwyconych danych w aplikacjach wyższego poziomu, takich jak generowanie chmury punktów. Przykładowa aplikacja w gruncie rzeczy pokazuje, w jaki sposób można wykorzystać model wnioskowania głębokich sieci neuronowych (DNN) do klasyfikacji danych generowanych przez system kamer. Ta przykładowa aplikacja DNN napisana w języku Python (dnn.py) pokazuje każdy etap procesu wymagany do uzyskania danych i przygotowania ich klasyfikacji według modelu wnioskowania (listing 1).

Kopiuj
import aditofpython as tof
import numpy as np
import cv2 as cv
. . .
    try:
        net = cv.dnn.readNetFromCaffe(args.prototxt, args.weights)
    except:
        print("Error: Please give the correct location of the prototxt and caffemodel")
        sys.exit(1)
    swapRB = False
    classNames = {0: 'background',
                  1: 'aeroplane', 2: 'bicycle', 3: 'bird', 4: 'boat',
                  5: 'bottle', 6: 'bus', 7: 'car', 8: 'cat', 9: 'chair',
                  10: 'cow', 11: 'diningtable', 12: 'dog', 13: 'horse',
                  14: 'motorbike', 15: 'person', 16: 'pottedplant',
                  17: 'sheep', 18: 'sofa', 19: 'train', 20: 'tvmonitor'}
 
    system = tof.System()
    status = system.initialize()
    if not status:
        print("system.initialize() failed with status: ", status)
 
    cameras = []
    status = system.getCameraList(cameras)
. . .
    while True:
        # Capture frame-by-frame
        status = cameras[0].requestFrame(frame)
        if not status:
            print("cameras[0].requestFrame() failed with status: ", status)
 
        depth_map = np.array(frame.getData(tof.FrameDataType.Depth), dtype="uint16", copy=False)
        ir_map = np.array(frame.getData(tof.FrameDataType.IR), dtype="uint16", copy=False)
 
        # Creation of the IR image
        ir_map = ir_map[0: int(ir_map.shape[0] / 2), :]
        ir_map = np.float32(ir_map)
        distance_scale_ir = 255.0 / camera_range
        ir_map = distance_scale_ir * ir_map
        ir_map = np.uint8(ir_map)
        ir_map = cv.cvtColor(ir_map, cv.COLOR_GRAY2RGB)
 
        # Creation of the Depth image
        new_shape = (int(depth_map.shape[0] / 2), depth_map.shape[1])
        depth_map = np.resize(depth_map, new_shape)
        distance_map = depth_map
        depth_map = np.float32(depth_map)
        distance_scale = 255.0 / camera_range
        depth_map = distance_scale * depth_map
        depth_map = np.uint8(depth_map)
        depth_map = cv.applyColorMap(depth_map, cv.COLORMAP_RAINBOW)
 
        # Combine depth and IR for more accurate results
        result = cv.addWeighted(ir_map, 0.4, depth_map, 0.6, 0)
 
        # Start the computations for object detection using DNN
        blob = cv.dnn.blobFromImage(result, inScaleFactor, (inWidth, inHeight), (meanVal, meanVal, meanVal), swapRB)
        net.setInput(blob)
        detections = net.forward()
. . .
        for i in range(detections.shape[2]):
            confidence = detections[0, 0, i, 2]
            if confidence > thr:
                class_id = int(detections[0, 0, i, 1])
. . .
                if class_id in classNames:
                    value_x = int(center[0])
                    value_y = int(center[1])
                    label = classNames[class_id] + ": " + \
                            "{0:.3f}".format(distance_map[value_x, value_y] / 1000.0 * 0.3) + " " + "meters"
. . .
        # Show image with object detection
        cv.namedWindow(WINDOW_NAME, cv.WINDOW_AUTOSIZE)
        cv.imshow(WINDOW_NAME, result)
 
        # Show Depth map
        cv.namedWindow(WINDOW_NAME_DEPTH, cv.WINDOW_AUTOSIZE)
        cv.imshow(WINDOW_NAME_DEPTH, depth_map)

Listing 1: ten fragment przykładowej aplikacji w dystrybucji 3D ToF SDK firmy Analog Devices pokazuje kilka kroków wymaganych do uzyskania obrazów głębi i obrazów w podczerwieni oraz sklasyfikowania ich za pomocą modelu wnioskowania. (Źródło kodu: Analog Devices)

Tutaj proces rozpoczyna się od użycia metod DNN OpenCV (cv.dnn.readNetFromCaffe)w celu odczytania sieci i powiązanych wartości dla istniejącego modelu wnioskowania. W tym przypadku model jest implementacją Caffe sieci wykrywania Google MobileNet Single Shot Detector (SSD) znanej z osiągania wysokiej dokładności przy stosunkowo niewielkich rozmiarach modelu. Po załadowaniu nazw klas obsługiwanymi identyfikatorami i etykietami klas, przykładowa aplikacja identyfikuje dostępne kamery i wykonuje szereg procedur inicjalizacji (nie pokazano w listingu 1).

Większość przykładowego kodu dotyczy przygotowania mapy głębi (depth_map) i mapy IR (ir_map) przed ich połączeniem (cv.addWeighted) w jednej matrycy celem zwiększenia dokładności. Na koniec kod wywołuje inną metodę OpenCV DNN (cv.dnn.blobFromImage), która przekształca połączony obraz w czterowymiarowy typ danych blob wymagany do wnioskowania. Następny wiersz kodu ustawia wynikowe dane blob jako dane wejściowe do modelu wnioskowania (net.setInput(blob)). Odwołanie do net.forward() wywołuje model wnioskowania, który zwraca wyniki klasyfikacji. Pozostała część przykładowej aplikacji identyfikuje wyniki klasyfikacji przekraczające ustalony próg i generuje dla nich etykietę i obwiednię wyświetlającą dane przechwyconego obrazu, etykietę identyfikowaną przez model wnioskowania oraz odległość od kamery (ilustracja 8).

Wygląd przykładowej aplikacji DNN w dystrybucji 3D ToF SDK od Analog DevicesIlustracja 8: korzystając z kilku wierszy kodu języka Python i biblioteki OpenCV, przykładowa aplikacja DNN w dystrybucji 3D ToF SDK firmy Analog Devices przechwytuje obrazy głębi, klasyfikuje je oraz wyświetla etykietę i odległość zidentyfikowanego obiektu. (Źródło ilustracji: Analog Devices)

Jak pokazuje przykładowa aplikacja DNN firmy Analog Devices, programiści mogą korzystać z map głębi 3D ToF w połączeniu z metodami uczenia maszynowego, aby tworzyć bardziej zaawansowane funkcje aplikacji. Chociaż w aplikacjach wymagających odpowiedzi o niskim opóźnieniu bardziej prawdopodobne jest wykorzystanie tych funkcji za pomocą C/C++, podstawowe kroki pozostają takie same.

Wykorzystując dane 3D ToF i modele wnioskowania o wysokiej wydajności, przemysłowe systemy robotyczne mogą bezpieczniej synchronizować swoje ruchy z innym sprzętem lub nawet z ludźmi w środowiskach „cobot”, w których ludzie i roboty współpracują ze sobą w bliskiej odległości. Z innymi modelami wnioskowania inna aplikacja może korzystać z kamery 3D ToF o wysokiej rozdzielczości do klasyfikowania precyzyjnych ruchów dla interfejsu gestów. W zastosowaniach motoryzacyjnych to samo podejście może pomóc poprawić dokładność zaawansowanych systemów wspomagania kierowcy (ADAS), w pełni wykorzystując wysoką rozdzielczość czasową i przestrzenną dostępną w systemach 3D ToF.

Podsumowanie

Technologie ToF odgrywają kluczową rolę w prawie każdym systemie, w którym dokładny pomiar odległości między systemem a innymi obiektami ma znaczenie krytyczne. Wśród technologii ToF optyczne czujniki 3D ToF mogą zapewnić zarówno wysoką rozdzielczość przestrzenną, jak i rozdzielczość czasową, umożliwiając dokładniejsze rozróżnienie między mniejszymi obiektami i bardziej precyzyjne monitorowanie ich względnej odległości.

Aby skorzystać z tej technologii, projektanci musieli jednak zmierzyć się z wieloma wyzwaniami związanymi z projektowaniem optycznym, precyzyjnym taktowaniem i zsynchronizowanym pozyskiwaniem sygnałów w tych systemach. Jak wykazano, dostępność wstępnie gotowych systemów 3D ToF, takich jak platforma programistyczna AD-96TOF1-EBZ firmy Analog Devices i zestaw ewaluacyjny EPC660 firmy ESPROS Photonics usuwa bariery w stosowaniu tej technologii w systemach przemysłowych, interfejsach gestów, motoryzacyjnych systemach bezpieczeństwa i nie tylko.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Informacje o autorze

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

Informacje o wydawcy

Północnoamerykańscy redaktorzy DigiKey