RobotHienThan.comRobot Hiện Thân
Nền tảng & bộ công cụ

Phần mềm nền: cần gì giữa mô hình và phần cứng

Giữa một mô hình xuất ra số và một cánh tay chuyển động có nhiều lớp phần mềm. Biết chúng làm gì giúp tránh viết lại những thứ đã có.

Sơ đồ các lớp phần mềm của hệ robot vẽ trên bảng trắng trong phòng lab

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ạiRobot hiện thân là gì.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138