Tôi đang cố gắng để kiểm soát robot Rover 5 bằng ứng dụng Android với điều khiển cần điều khiển dựa trên cảm ứng trong giao diện người dùng ứng dụng. Tôi muốn tính tốc độ của động cơ bên trái và bên phải trong rover khi cần điều khiển được di chuyển.
Từ cần điều khiển, tôi nhận được hai giá trị, xoay và nghiêng. Tôi chuyển đổi chúng thành hệ tọa độ cực với r
và theta
. Trong đó r dao động từ 0 đến 100 và theta từ 0 đến 360. Tôi muốn rút ra một phương trình có thể chuyển đổi(r, theta)
thành (left_speed, right_speed)
cho rover. Các giá trị tốc độ cũng nằm trong phạm vi [0; 100].
Bây giờ, đây là những gì tôi đã tìm ra cho đến bây giờ. Đối với bất kỳ giá trị nào của r
,
Nếu theta = 0
sau đó left_speed = r, right_speed = -r
(rẽ phải tại chỗ)
Nếu theta = 90
sau đó left_speed = r, right_speed = r
(di chuyển về phía trước ở tốc độ r)
Nếu theta = 180
sau đó left_speed = -r, right_speed = r
(rẽ trái tại chỗ)
Nếu theta = 270
sau đó left_speed = -r, right_speed = -r
(di chuyển ngược lại ở tốc độ r)
Đối với các giá trị khác, tôi muốn nó di chuyển và xoay đồng thời. Ví dụ,
Nếu theta = 45
sau đó left_speed = alpha*r, right_speed = beta*r
(di chuyển về phía trước trong khi rẽ phải)
Vì vậy, về cơ bản (r, theta)
, tôi có thể đặt tốc độ là,
(left_speed, right_speed) = (alpha*r, beta*r)
Tôi cần thiết lập một phương trình trong đó tôi có thể khái quát tất cả các trường hợp này bằng cách tìm alpha
và beta
dựa vào theta
.
Tôi có thể làm cái này như thế nào? Có bất kỳ công việc hiện tại tôi có thể tham khảo?