
Autor: Mikołaj Zalewski Inżynier uczenia maszynowego i Przemysław Walczyk, starszy menedżer ds. inżynierii
W Nomagic intensywnie pracujemy z kamerami RealSense z serii D400 (głównie D415). Kamery te cieszą się popularnością ze względu na możliwość dostarczania sygnału RGB i głębi obrazu w rozsądnej cenie – dziesiątki razy taniej niż przemysłowe kamery głębi obrazu. Jako kamera stereoskopowa ze statycznym obrazem, D415 umożliwia jednoczesną pracę wielu kamer bez zakłóceń. Chociaż jakość głębi obrazu mogłaby być lepsza (z drugiej strony, RealSense oblicza głębię w czasie rzeczywistym przy wysokiej liczbie klatek na sekundę), głównym problemem, na jaki natrafiliśmy, była okresowa awaria kamer. Problemy te często pogłębiała złożoność naszego systemu wizyjnego, który wymaga jednoczesnego podłączenia wielu kamer. Poniżej przedstawiamy kilka skutecznych sposobów rozwiązania tych problemów.
Często po zakończeniu procesu węzła ROS dla kamery, kamera nie uruchamiała się przy kolejnej próbie jej użycia. Czasami kamera przestawała działać również w trakcie wykonywania. W takich przypadkach pojawiały się komunikaty o błędach związanych z błędami wejścia/wyjścia lub protokołu, a kamera po prostu znikała z ekranu. rs-enumerate-devices I lsusb. Ponowne podłączenie kamery zazwyczaj rozwiązywało problem (choć w jednym przypadku musieliśmy zrestartować komputer, jak opisano poniżej). Używaliśmy zasilanych hubów, a ponowne podłączenie kabla między kamerą a hubem zawsze skutecznie rozwiązywało problem. Jednak ponowne podłączenie kabla między hubem a komputerem działało tylko w niektórych przypadkach. Sugeruje to, że występują co najmniej dwa rodzaje problemów — więcej szczegółów w następnej sekcji.
W jednym eksperymencie podłączyliśmy cztery kamery do systemu i restartowaliśmy ich węzły ROS 6631 razy z rzędu. Zaobserwowaliśmy 45 przypadków, w których jedna z czterech kamer nie pojawiła się ponownie (około 1%). Szczegóły tego problemu można znaleźć w tym raporcie o błędzie, choć wyniki mogą się znacznie różnić — w niektóre dni kamery działały znacznie lepiej, w inne gorzej.
Ponieważ zdalne odłączanie kamer nie jest możliwe, stosujemy dwa dodatkowe triki:
Chociaż te obejścia pomagają w krótkiej perspektywie, nie nadają się do środowisk produkcyjnych. Dlatego szukaliśmy bardziej niezawodnych rozwiązań.
Domyślne oprogramowanie układowe 5.8.15 dostarczane z kamerami często powoduje problemy z okresowymi awariami. Aktualizacja do serii 5.9.x rozwiązuje wiele z tych problemów, a seria 5.10.x oferuje jeszcze większą stabilność.
Czasami kamera łączy się w trybie USB2 (nawet po podłączeniu do portu USB3), co znacznie ogranicza jej funkcjonalność. Na przykład, rejestrowanie obrazów głębi i podczerwieni lub uzyskanie wyższych rozdzielczości i liczby klatek na sekundę staje się niemożliwe. Aby zweryfikować typ połączenia, uruchom lsusb -t. Każda kamera powinna być widoczna jako cztery wpisy z prędkością 5000 mln. Jeśli widzisz tylko trzy wpisy na 480 mln, konieczne jest ponowne podłączenie aparatu.
Jak szczegółowo opisano w tym dokumencie, kamery RealSense zużywają znaczną część teoretycznej przepustowości USB3 wynoszącej 5000 Mb/s (przy rzeczywistej przepustowości wynoszącej zazwyczaj około 3200–3600 Mb/s). Podłączenie zbyt wielu kamer do jednego portu USB za pośrednictwem koncentratorów może spowodować awarie z powodu ograniczeń przepustowości. Nawet z oddzielnymi portami USB, wiele płyt głównych ma tylko jeden lub dwa wewnętrzne koncentratory USB, co oznacza, że porty mogą współdzielić tę samą przepustowość 5000 Mb/s. lsusb -t polecenie może ujawnić, ile koncentratorów jest w użyciu (poszukaj linii oznaczonych 5000 mln).
Aby zwiększyć przepustowość:
Resetowanie kamery przed użyciem okazało się bardzo skuteczne, szczególnie w przypadku starszych wersji oprogramowania sprzętowego. Wiele problemów udało się rozwiązać poprzez programowe resetowanie kamery, jak pokazano w tym artykule. popełniać. Dodanie takiego kodu do procesu uruchamiania aparatu znacznie zmniejszyło liczbę przypadków niepowodzenia inicjalizacji.
Resetowanie lub odłączanie kamer może ujawnić błąd w niektórych jądrach Linuksa, w tym w wersji używanej w Ubuntu 16.04 LTS. Jak opisano w ten raport, niektóre wersje jądra przeciekają /dev/media* urządzeń po odłączeniu. Po użyciu wszystkich 255 urządzeń kamery RealSense przestają działać.
Objawy obejmują:
lsusb -t seans Kierowca= zamiast Sterownik=uvcvideo.ls /dev/media* pokazano 255 wpisów.Jedynym obejściem tego problemu jest ponowne uruchomienie systemu, choć lepszym rozwiązaniem jest uaktualnienie jądra do wersji, której nie dotyczy ten błąd (np. 4.18 lub nowszej).
Jeśli strumień głębokości zaczyna być zniekształcony, może to oznaczać uszkodzenie danych kalibracji głębokości. “Narzędzie do dynamicznej kalibracji” umożliwia przywrócenie danych kalibracyjnych za pomocą Intel.Realsense.CustomRW -g, a następnie uruchom procedurę kalibracji.

Niektóre problemy wynikają z wadliwych kabli, szczególnie gdy kamera jest zamontowana na ruchomym ramieniu robota. Objawy obejmują częstsze awarie konkretnej kamery z czasem, aż do całkowitego zaprzestania jej działania. Wymiana kabla zazwyczaj rozwiązuje ten problem. Chociaż nie dysponujemy jeszcze niezawodną metodą wykrywania wadliwych kabli, zliczania niekompletnych klatek lub korzystania z… Pobierz liczbę błędów portu polecenie (wprowadzone w USB 3.1) może pomóc.
Uwaga: Teoretyczna przepustowość USB3 wynosząca 5000 Mb/s może zakłócać działanie urządzeń radiowych 2,5 GHz. Na przykład, klawiatura bezprzewodowa przestała działać po podłączeniu w pobliżu kamery RealSense. Ekranowane kable USB lub unikanie takich urządzeń w pobliżu może złagodzić ten problem.
Wiele z opisanych tutaj sztuczek zostało odkrytych poprzez interakcje z Obsługa Intel RealSense, za co jesteśmy wdzięczni. Możesz tam składać zgłoszenia i oczekiwać szybkiej odpowiedzi.