cuốn sách gpt4 ai đã làm

linux - ngủ nhiều hơn (ngắn) quyết định

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 01:38:56 27 4
mua khóa gpt4 Nike

Là một dự án của học sinh, chúng tôi đang chế tạo một robot có nhiệm vụ chạy theo lộ trình quy định và nhặt một khối gỗ. Về cốt lõi, nó là một máy tính bo mạch đơn chạy debian với ARM9 ở tốc độ 250 MHz. Như vậy sức mạnh xử lý của Controller là quá đủ. Ngoài ra, nó thực hiện một số xử lý hình ảnh (không phải khi lái xe, chỉ khi đỗ xe), đó là lý do tại sao chúng tôi không sử dụng bộ vi điều khiển đơn giản mà không có hệ điều hành.

Hiện tại, hoạt động tổng thể vẫn tốt, nhưng có một vấn đề: vòng điều khiển chính được thực thi mà không có bất kỳ độ trễ nào và tần số vòng lặp vượt quá 1kHz. Thế là quá đủ, và 100Hz cũng vậy. Nhưng thỉnh thoảng, có một chu kỳ kéo dài 100 mili giây trở lên, điều này có thể gây trở ngại lớn cho Bộ điều khiển.

Tôi nghi ngờ có một số tác vụ khác gây ra sự chậm trễ này, vì bộ lập lịch có thể phát hiện ra rằng chúng không có thời gian sử dụng CPU trong một thời gian dài.

Vì vậy, điều tôi muốn nhất là điều sau: có thể là một khoảng ngủ ngắn 5 mili giây trong vòng lặp chính của Bộ điều khiển, thực sự chỉ mất 5 mili giây nhưng cung cấp một số thời gian xử lý cho phần còn lại của hệ thống. Ví dụ: tôi có thể bao gồm độ trễ 500us khi sử dụng nanosleep, nhưng điều này sẽ luôn yêu cầu thời gian thực hiện lớn hơn 10 mili giây, vì vậy đây không phải là giải pháp thay thế thực sự. Tôi thích một cái gì đó giống như một giấc ngủ tự nguyện, tạo cơ hội cho nhiệm vụ chờ đợi làm điều gì đó nhưng hãy quay lại càng sớm càng tốt.

Nếu không, hệ thống sẽ dỡ tải, vì vậy thực sự không có gì cần phải xử lý nhiều trong thời gian dài.

Có cách nào để thực hiện việc này trong không gian người dùng, tức là không cần phải sử dụng thứ gì đó như RTAI không?

Cảm ơn Philip

câu trả lời hay nhất

Tôi khuyên bạn nên sử dụng giao diện thời gian thực khi thực hiện điều khiển động cơ; Tôi đã từng thấy một chiếc xe tải 1000kg tông vào tường trong bản demo vì hệ điều hành đã quyết định nghĩ đến những thứ khác vào lúc này...: -)

Nếu bạn muốn tránh xa RTAI (nhưng không nên); một giải pháp nhanh chóng (có thể) là cài đặt một bo mạch Arduino khối cho trình điều khiển thực tế và giữ lại bo mạch linux để xử lý nâng cao.

Để giải quyết "vấn đề về tường", hãy cài đặt một cơ quan giám sát trên bảng điều khiển, nó sẽ ngừng chạy nếu không có lệnh nào đến trong một thời gian...

Về linux - có được một giấc ngủ ngắn (ngắn) mang tính quyết định hơn, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/10732483/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress