Có bất kỳ vấn đề với điều này?
Vấn đề chính với điều này là trong khi giải pháp đề xuất của bạn sẽ ngay lập tức sửa lỗi không khớp giữa hiệu suất của các động cơ, nó sẽ không sửa lỗi tích lũy, chứ đừng nói đến các lỗi phức tạp hơn ở vị trí như lỗi Abbe (xem phần sau).
Một cách tiếp cận tốt hơn là gì?
Có một số điều bạn có thể làm, tùy thuộc vào mức độ chịu đựng lỗi của bạn và mức độ nỗ lực bạn muốn đưa vào để sửa lỗi.
Bước đầu tiên sẽ là thiết lập một cặp vòng lặp PID, một vòng cho mỗi bánh xe, cho cả hai cùng một vị trí nhu cầu. Như tôi đã đề nghị trong câu trả lời của mình cho một câu hỏi tương tự , nếu bạn giữ cả hai bánh xe trong một lỗi rất chặt chẽ ràng buộc về nơi bạn yêu cầu, thì sẽ mất một thời gian để tích lũy đủ lỗi để gây ra sự xoay vòng đáng chú ý.
Nó cũng sẽ dễ dàng hơn nhiều để điều chỉnh hai vòng PID cấp độ động cơ độc lập trên danh nghĩa hơn là điều chỉnh một hệ thống kết hợp phụ thuộc lẫn nhau, phức tạp. Để chịu mọi thay đổi của bộ điều khiển cấp cao hơn, bạn thực sự cần mỗi động cơ hoạt động tương tự nhất có thể với động cơ khác trong càng nhiều thời gian càng tốt và điều đó thực sự đòi hỏi các vòng servo riêng biệt.
Tuy nhiên, có một số biến chứng tiếp theo, và nó phụ thuộc vào độ chính xác mà bạn cần và mức độ nỗ lực của bạn để chuẩn bị cho chúng về giải pháp bạn thực hiện. Có thể là Dead Reckaming là đủ, hoặc bạn có thể cần thêm xác định vị trí Tương đối hoặc Tuyệt đối cho robot của mình.
Một vấn đề là ngay cả khi bánh xe bên trái và bên phải của bạn đều di chuyển 1000 bộ mã hóa, bạn vẫn có thể ở một vị trí khác nhau trên hai lần chạy khác nhau.
Ví dụ: giả sử bạn có lỗi tối đa sau 10 lần mã hóa và các động cơ của bạn đang chạy ở tốc độ 10 lần mã hóa cho mỗi lần lặp vòng lặp PID. Động cơ bên trái của bạn có thể di chuyển 5,10,10,10 ... 10,5 trong khi động cơ bên phải của bạn có thể có cấu hình 4,11,10,10 ... 10,5 và thậm chí có sự khác biệt nhỏ về gia tốc khi bắt đầu di chuyển có thể khiến robot khởi hành sai hướng. Không chỉ vậy mà bạn càng di chuyển theo hướng đó, lỗi sẽ càng lớn hơn về mặt tuyệt đối. Đây là những gì chúng ta đang nói về khi chúng ta nói về lỗi Abbe và không có mô hình động học phức tạp hoặc một loại tham chiếu bên ngoài nào đó, bạn sẽ không bao giờ có thể sửa chữa cho nó.
Để biết thêm thông tin, hãy xem câu trả lời của tôi cho một câu hỏi tương tự nhưng không hoàn toàn trùng lặp: Làm thế nào tôi có thể sử dụng thư viện Arduino PID để điều khiển robot theo đường thẳng?
và câu trả lời của tôi cho tối ưu hóa Line Follower cũng liên quan