Obecnie projektujemy robota mobilnego + ramię montowane z wieloma kontrolowanymi stopniami swobody i czujnikami.
Rozważam architekturę w dwóch częściach:
Zestaw kontrolerów czasu rzeczywistego (Raspeberry Pis z systemem RTOS, takich jak Xenomai lub mikrokontrolery z czystego metalu) do sterowania silnikami ramion i enkoderami. Nazwijmy te maszyny RTx, gdzie x = 1,2,3… w zależności od liczby mikrokontrolerów. Ta pętla sterująca będzie działać przy 200 Hz.
Potężna waniliowa maszyna linux z systemem ROS do obliczania SLAM, mocap i wykonywania logiki wysokiego poziomu (decyduj o zadaniu robota i oblicz żądaną pozycję i prędkość silników). Ta pętla sterująca będzie działać przy 30 Hz.
Wiem, że mój framework musi być skalowalny, aby uwzględnić więcej silników, więcej czujników, więcej komputerów (np. Dla zewnętrznego mocapa).
Moim głównym problemem jest wybór sposobu komunikacji różnych RTx z PC1. Przyjrzałem się artykułom związanym z architekturą robotów (np. HRP2 ), najczęściej opisują one architekturę sterowania na wysokim poziomie, ale muszę jeszcze znaleźć informacje na temat tego, jak komunikować się z poziomem wysokim w sposób skalowalny. Przegapiłem coś?
Aby podłączyć szybkie maszyny RT zapewniające sterowanie silnikiem za pomocą PC1, rozważałem TCP / IP, CAN i UART:
- TCP / IP: nie deterministyczny, ale łatwy do wprowadzenia. Czy brak determinizmu jest prawdziwym problemem (ponieważ i tak będzie stosowany przy niskiej prędkości 30 Hz)?
- CAN: powolny, bardzo niezawodny, ukierunkowany na samochody (widziałem kilka przykładów użycia CAN z robotami, ale wyglądało to egzotycznie)
- UART: gdybym miał tylko jedną maszynę RT do sterowania silnikiem, rozważyłbym UART, ale sądzę, że ten port nie skaluje się dobrze z wieloma RTx. Czy TCP / IP naprawdę nie wchodzi w grę z powodu jego niedeterministycznych właściwości? Jest tak łatwy w użyciu…
W tej chwili żadne rozwiązanie nie wydaje mi się oczywiste. A ponieważ nie mogę znaleźć żadnego poważnego przykładu robota używającego konkretnego niezawodnego i skalowalnego rozwiązania, nie czuję się pewny, aby dokonać wyboru.
Czy ktoś ma jasne zdanie na temat tego punktu lub literatury, na które należy wskazać? Czy w robotach stosowane są typowe lub powszechne rozwiązania komunikacyjne?