NVIDIA($NVDA) công bố ngày 9 một ví dụ dùng Holoscan 5 SDK để xây dựng vòng điều khiển bù trọng lực cho cánh tay robot. Vòng điều khiển đọc trạng thái khớp, tính mô-men giữ trọng lượng cánh tay rồi gửi lệnh tới động cơ.
Trên blog kỹ thuật, NVIDIA cho biết đã triển khai cùng một luồng điều khiển bằng Python và C++, sử dụng reBot Arm B601-DM của Seeed Studio. Bù trọng lực là phương pháp tính mô-men cần thiết khi cánh tay robot đổi tư thế, để động cơ nâng đỡ trọng lượng của cánh tay. Trong ví dụ, động cơ giữ cánh tay trong khi người dùng di chuyển nó bằng tay.
Vòng điều khiển gồm ba toán tử, lần lượt đọc trạng thái khớp, tính mô-men trọng lực và gửi lệnh tới động cơ. Ở bước giữa, Pinocchio dùng mô hình URDF mô tả cấu trúc và khối lượng của robot để tính mô-men trọng lực cho từng khớp.
Ba toán tử chạy tuần tự trong cùng một phân vùng điều khiển, tránh truyền dữ liệu giữa các luồng ở từng bước. Hàng đợi ưu tiên giữ trạng thái mới nhất để dữ liệu quan sát cũ không tích tụ. Trước khi chạy, hệ thống kiểm tra kết nối đồ thị và cấu hình; Nsight Systems có thể dùng để theo dõi độ trễ và biến động chu kỳ của từng bước.
Việc đọc trạng thái khớp được thiết lập để bắt đầu sau mỗi 2,5 mili giây, tương đương 400 lần mỗi giây. Tuy nhiên, điều này không có nghĩa phần cứng thực tế luôn cập nhật đúng chu kỳ đó. Hướng dẫn kỹ thuật cho biết nếu quá trình chạy bị chậm, hệ thống có thể xử lý gộp các chu kỳ bị trễ.
NVIDIA công bố độ trễ p99.99 của bản C++ giảm từ 86,6 micro giây xuống 17,2 micro giây sau khi ghim và cô lập CPU. Với bản Python, độ trễ giảm từ 1.373,5 micro giây xuống 142,6 micro giây. NVIDIA cho biết mức cải thiện lần lượt khoảng 5 lần và 9,6 lần.
Trong phép so sánh, mỗi cấu hình được đo qua hơn 1 triệu chu kỳ điều khiển và 10 giây đầu tiên bị loại khỏi kết quả. Luồng điều khiển được ghim vào một lõi CPU cụ thể; các luồng phụ trợ và lập hồ sơ được bố trí trên lõi khác. Sau đó, hai lõi vật lý được cô lập khỏi các ứng dụng khác. Thời gian đo kéo dài từ lúc toán tử đầu tiên bắt đầu đến lúc toán tử cuối cùng bắt đầu.
Các phép đo không tính thời gian gửi lệnh tới động cơ hoặc thời gian thực tế từ cảm biến đến động cơ. Vì vậy, số liệu được công bố chỉ phản ánh khoảng thời gian xử lý giữa các toán tử trong vòng điều khiển, khác với tổng thời gian phản hồi của thiết bị thực tế. Hướng dẫn kỹ thuật của NVIDIA nêu rõ phạm vi đo này.
Ví dụ đã được thử nghiệm trên x86 Ubuntu 24.04, Jetson Orin Nano và Jetson Thor. Để chạy ví dụ Python, cần Linux và Python 3.12 trở lên.
NVIDIA giới thiệu Holoscan 5 ngày 20 tháng 10 và cho biết đã tái cấu trúc môi trường chạy cùng API thực thi và cấu hình. SDK cho phép xây dựng các tác vụ xử lý cảm biến và điều khiển bằng chung hệ thống toán tử và đồ thị. Ví dụ cánh tay robot áp dụng cấu trúc này trên thiết bị thực tế.
Khi triển khai trên thiết bị thực, độ mới của dữ liệu phản hồi và quy trình dừng là những điểm cần lưu ý. Trình điều khiển motorbridge mặc định trả về dữ liệu phản hồi đã lưu mà không có thời điểm nhận hoặc số thứ tự gói tin. Nếu dữ liệu phản hồi bị gián đoạn nhưng lệnh vẫn tiếp tục được gửi, hệ thống có thể dùng trạng thái khớp cũ.
Nếu một lô lệnh không hoàn tất trong thời gian chờ mặc định 100 mili giây, bộ giám sát sẽ dừng đồ thị và thử vô hiệu hóa động cơ. Tuy vậy, bộ giám sát này không tự phát hiện tình trạng dữ liệu phản hồi bị cũ.
Khi dừng điều khiển, lực đỡ trọng lượng từ động cơ mất đi và cánh tay có thể rơi xuống. Hướng dẫn yêu cầu đặt cánh tay ở vị trí gốc an toàn trước khi khởi động, đồng thời đưa nó về vị trí đó bằng tay trước khi kết thúc bình thường.
Comment 0