Một chính sách xuất ra vài con số. Một cánh tay cần dòng điện qua từng động cơ. Giữa hai đầu đó có nhiều lớp, và nhiều nhóm mới bắt đầu viết lại các lớp này từ đầu mà không cần thiết.
Lớp dưới cùng: trình điều khiển và lớp trừu tượng
Trình điều khiển nói chuyện trực tiếp với phần cứng: gửi lệnh xuống bộ điều khiển robot, đọc trạng thái khớp, đọc camera, đọc cảm biến lực.
Trên đó là lớp trừu tượng phần cứng: một giao diện thống nhất để phần trên không cần biết đang nói chuyện với robot hãng nào.
Lớp này rất đáng đầu tư sớm, vì nó cho phép đổi phần cứng hoặc chạy cùng mã trên mô phỏng và máy thật. Nếu mã điều khiển gọi thẳng vào giao diện riêng của một hãng, mọi thứ phía trên bị khoá theo hãng đó.
Một yêu cầu thực dụng: cùng một mã phải chạy được cả trên mô phỏng lẫn máy thật chỉ bằng cách đổi cấu hình. Không có điều này, kết quả kiểm thử trên mô phỏng mất phần lớn giá trị.
Lớp sinh quỹ đạo
Mô hình thường xuất ra các điểm mốc thưa. Cơ cấu cần lệnh liên tục ở tần số cao. Lớp này lấp khoảng giữa.
Nhiệm vụ của nó: nội suy giữa các điểm mốc, giới hạn vận tốc và gia tốc để chuyển động mượt, và chuyển tiếp êm khi có chuỗi lệnh mới tới trong lúc chuỗi cũ chưa xong.
Điểm cuối quan trọng hơn vẻ ngoài: nếu chuyển tiếp giữa hai chuỗi không mượt, robot sẽ giật mỗi lần mô hình xuất ra chuỗi mới, và người quan sát sẽ tưởng mô hình có vấn đề.
Lớp này cũng là nơi hợp lý để đặt cơ chế ngắt sớm: huỷ chuỗi đang chạy khi có tín hiệu bất thường từ cảm biến lực.
Lớp giới hạn an toàn
Như đã bàn ở nơi khác, lớp này kiểm tra mọi lệnh trước khi chúng tới phần cứng: giới hạn không gian, tốc độ, lực, và tốc độ thay đổi lệnh.
Về mặt kiến trúc phần mềm, có hai nguyên tắc.
Không thể đi vòng. Không có đường nào từ mô hình tới phần cứng mà không qua lớp này. Nếu có một đường tắt để gỡ lỗi, nó sẽ được dùng trong sản xuất vào một lúc nào đó.
Đơn giản và đọc được. Lớp này phải đủ ngắn để một người đọc hết và hiểu trong một buổi. Mọi thứ phức tạp nên nằm ở lớp khác.
Với các yêu cầu an toàn nghiêm ngặt, phần giới hạn quan trọng nhất nên nằm trong bộ điều khiển an toàn phần cứng chứ không chỉ trong phần mềm.
Lớp ghi dữ liệu
Ghi dữ liệu không phải tính năng phụ mà là hạ tầng cốt lõi, vì dữ liệu là thứ cho phép cải thiện hệ thống.
Yêu cầu: ghi mọi luồng với dấu thời gian chung, ghi không làm chậm vòng điều khiển, và ghi cả siêu dữ liệu về cấu hình.
Một thiết kế phổ biến là ghi vào bộ đệm trong bộ nhớ rồi mới ghi xuống đĩa ở luồng riêng, để thao tác đĩa không chặn vòng điều khiển.
Nên có hai chế độ: ghi liên tục ở mức tóm tắt cho vận hành hằng ngày, và ghi đầy đủ khi thu dữ liệu hoặc khi điều tra sự cố. Ghi đầy đủ liên tục thường quá tốn dung lượng.
Lớp điều phối nhiệm vụ
Lớp trên cùng quyết định làm gì tiếp theo: nhiệm vụ đang ở bước nào, bước nào đã xong, làm gì khi một bước thất bại.
Với nhiệm vụ nhiều bước, một máy trạng thái tường minh thường thực dụng hơn nhiều so với để mô hình tự quản lý trình tự: dễ đọc, dễ gỡ lỗi, dễ thêm xử lý ngoại lệ, và quan trọng nhất là biết được hệ thống đang ở đâu khi có sự cố.
Lớp này cũng là nơi kết nối với hệ thống bên ngoài: nhận đơn hàng, báo cáo kết quả, gọi người khi cần.
Lời khuyên chung cho toàn bộ kiến trúc: giữ ranh giới giữa các lớp rõ ràng và giữ giao diện giữa chúng đơn giản. Phần lớn nợ kỹ thuật trong hệ robot đến từ việc các lớp thấm vào nhau, khiến đổi một thứ phải sửa mười chỗ.
Câu hỏi thường gặp
Có nên dùng khung phần mềm robot có sẵn không?
Thường nên, vì chúng đã giải quyết các bài toán như truyền thông giữa các tiến trình, quản lý hệ toạ độ, ghi và phát lại dữ liệu. Tự viết lại các phần này tốn nhiều thời gian mà hiếm khi tốt hơn.
Lớp giới hạn an toàn nên nằm trong phần mềm hay phần cứng?
Với yêu cầu nghiêm ngặt thì phải nằm trong bộ điều khiển an toàn phần cứng, vì phần mềm thông thường không đạt được mức tin cậy cần thiết. Lớp phần mềm vẫn hữu ích như một tầng lọc sớm nhưng không thay thế được phần cứng an toàn.
Làm sao đảm bảo cùng một mã chạy được trên mô phỏng và máy thật?
Bằng cách đặt ranh giới trừu tượng ngay dưới lớp điều khiển: phần trên chỉ gọi các hàm chung như đọc trạng thái và gửi lệnh, còn việc các hàm đó nói chuyện với mô phỏng hay phần cứng do cấu hình quyết định.
Ghi dữ liệu có làm chậm hệ thống không?
Sẽ chậm nếu ghi đồng bộ trong vòng điều khiển. Cách chuẩn là ghi vào bộ đệm trong bộ nhớ và để một luồng riêng đưa xuống đĩa. Cần theo dõi tình trạng bộ đệm, vì đầy bộ đệm nghĩa là đang mất dữ liệu.
Đọc thêm trong Triển khai thực tế & thất bại và Robot hiện thân là gì.