Chúng tôi hiện đang thiết kế một robot di động + cánh tay gắn kết với nhiều mức độ tự do và cảm biến được kiểm soát.
Tôi đang xem xét một kiến trúc trong hai phần:
Một bộ các bộ điều khiển thời gian thực (Raspeberry Pis chạy RTOS như Xenomai hoặc vi điều khiển kim loại trần) để điều khiển động cơ cánh tay và bộ mã hóa. Hãy để chúng tôi gọi các máy này là RTx, với x = 1,2,3, tùy thuộc vào số lượng vi điều khiển. Vòng điều khiển này sẽ chạy ở 200Hz.
Một cỗ máy linux vanilla mạnh mẽ chạy ROS để tính toán SLAM, mocap và thực hiện logic mức cao (quyết định nhiệm vụ của robot và tính toán vị trí và tốc độ mong muốn của động cơ). Vòng điều khiển này sẽ chạy ở 30Hz.
Tôi biết khuôn khổ của tôi cần có khả năng mở rộng để chiếm nhiều động cơ hơn, nhiều cảm biến hơn, nhiều PC hơn (ví dụ: đối với mocap bên ngoài).
Vấn đề chính của tôi là quyết định làm thế nào để RTx khác nhau giao tiếp với PC1. Tôi đã xem xét các bài báo liên quan đến kiến trúc robot (ví dụ HRP2 ), hầu hết họ thường mô tả kiến trúc điều khiển cấp cao nhưng tôi vẫn chưa tìm thấy thông tin về cách để giao tiếp cấp thấp với cấp cao và theo cách có thể mở rộng. Tôi đã bỏ lỡ một cái gì đó?
Để kết nối các máy RT nhanh đảm bảo điều khiển động cơ với PC1, tôi đã xem xét TCP / IP, CAN và UART:
- TCP / IP: không xác định nhưng dễ đặt. Là không xác định là một vấn đề thực sự (vì nó sẽ chỉ được sử dụng ở tốc độ chậm 30Hz dù sao)?
- CAN: chậm, rất đáng tin cậy, nhắm vào ô tô (đã thấy có một số ví dụ sử dụng CAN với robot nhưng trông có vẻ kỳ lạ)
- UART: nếu tôi chỉ có một máy RT để điều khiển động cơ thì tôi đã xem xét UART nhưng tôi đoán cổng này không hoạt động tốt với nhiều RTx Có phải TCP / IP thực sự không hoạt động vì các đặc điểm không xác định của nó? Nó rất dễ sử dụng
Hiện tại không có giải pháp nào thực sự rõ ràng đối với tôi. Và vì tôi không thể tìm thấy ví dụ robot nghiêm túc nào bằng cách sử dụng một giải pháp đáng tin cậy và có thể mở rộng cụ thể, tôi không cảm thấy tự tin để đưa ra lựa chọn.
Có ai có một cái nhìn rõ ràng về điểm này hoặc văn học để chỉ đến? Có giải pháp truyền thông điển hình hoặc chính thống được sử dụng trên robot?