Xây dựng một robot cân bằng với ổ đĩa vi sai


8

Tôi đã chế tạo một robot cân bằng hai bánh bằng cách sử dụng một số động cơ quay liên tục và gia tốc kế / con quay hồi chuyển. Tôi đã nâng cấp các động cơ servo lên một số động cơ DC hướng với bộ mã hóa 8 bit với mục tiêu có robot điều khiển xung quanh trong khi cân bằng.

Tôi bế tắc về cách lập trình nó để lái xe trong khi vẫn giữ thăng bằng. Tôi nghĩ một cách sẽ là chỉ có đầu vào điều khiển cho động cơ hoạt động giống như đẩy nó. Vì vậy, robot sẽ mất cân bằng trong giây lát theo hướng tôi muốn nó di chuyển. Điều đó có vẻ như vụng về với tôi mặc dù. Có phải là một cách làm tốt hơn? Tôi nghĩ rằng tôi cần kết hợp mô hình động cho bộ cân bằng với ổ đĩa vi sai nhưng điều này hơi vượt quá lý thuyết điều khiển mà tôi biết.

Cập nhật từ câu trả lời của Anorton Bây giờ tôi có một ma trận trạng thái ưa nhìn.

Bây giờ về vị trí cực: Ma trận A sẽ phải là 4 x 4 dựa trên vectơ trạng thái mới. Và B sau đó sẽ phải là một ma trận 4x2 vì tôi chỉ có thể điều khiển mô-men xoắn trái / phải (vectơ u = 2x1).

Tôi có thể cần đọc thêm về điều này nhưng có một cách có hệ thống để xác định ma trận A theo vị trí cực? Đối với tôi, ví dụ này và các ví dụ phức tạp hơn, việc xác định A bằng cách đoán và kiểm tra sẽ rất khó khăn.

Cập nhật # 2 Sau khi đọc một chút, tôi nghĩ rằng tôi hiểu nó ngay bây giờ. Tôi vẫn cần sự năng động của robot để xác định ma trận A. Khi tôi đã có tôi có thể thực hiện vị trí cực bằng cách sử dụng matlab hoặc quãng tám.


1
Bạn đang sử dụng loại phương pháp nào / lý thuyết kiểm soát nào? Tôi có thể viết lên một cách tiếp cận, nhưng nó có thể là siêu cơ bản hoặc siêu tiên tiến, tùy thuộc vào nền tảng của bạn ... :)
apnorton

Cảm ơn! Đối với thiết kế cũ với các servo tôi đã tính toán góc nghiêng bằng cách sử dụng dữ liệu từ con quay / gia tốc. Gửi nó tới bộ lọc Kalman và sau đó là PID cho vị trí servo. Tôi tốt với các phương trình vi phân và ổn với đại số tuyến tính. Tôi vẫn còn khá mới để điều khiển nên có lẽ là cơ bản? Hoặc cả hai nếu bạn sẵn sàng. Tôi luôn thích tìm hiểu thêm :)
JDD

1
Tôi chỉ có một cách tiếp cận, vì vậy nhận xét trước đây của tôi thực sự nói rằng nó có thể được thực hiện theo cả hai cách (siêu tiên tiến nếu bạn mới bắt đầu với robot hoặc siêu cơ bản nếu bạn có kiến ​​thức về điều khiển) ... Dựa trên trước bình luận, tôi có cảm giác tôi vượt trội hơn. :) Kiến thức kiểm soát của tôi rất mỏng, nhưng tôi sẽ ném giá trị 0,02 đô la của mình vào đó ...
apnorton

Chào mừng bạn đến với Robotics JDD, tốt hơn là chỉnh sửa thông tin bổ sung vào câu hỏi của bạn thay vì thêm nó dưới dạng nhận xét, theo cách đó, các bình luận có thể được dọn dẹp (xóa) sau đó và chúng sẽ ngừng làm người đọc mất tập trung khỏi câu hỏi.
Gian hàng Mark

Câu trả lời:


8

Tuyên bố miễn trừ trách nhiệm: Tôi chưa bao giờ tự mình làm điều này, nhưng chỉ thấy một mô tả về nó được thực hiện thông qua "Điều khiển robot di động" của Georgia Tech trên Coursera. Kiến thức của tôi về kiểm soát là quá, quá. Do đó ... lấy thứ này bằng một hạt muối.:)

Để giữ cho robot đứng thẳng (và tĩnh), bạn đang cố gắng ổn định (gửi về ) trạng thái x , trong đó: x = [ leftVelocity rightVelocity góc từ dọc ]0x

x= =[trái vận tốcvận tốc đúnggóc từ dọc]

0

xnew= =[trái vận tốc-δLvận tốc đúng-δRgóc từ dọc]
δ

Khi hệ thống này được ổn định, robot sẽ đứng thẳng, và sẽ có mỗi bánh xe quay với tốc độ mong muốn.

Đây là cách tiếp cận / phác thảo cơ bản. Tôi sẽ chỉnh sửa điều này với một số chi tiết vào ngày mai (và toán thực tế, v.v.), nhưng ít nhất tôi muốn đăng ý tưởng chung ngay bây giờ. (Đó là muộn trong múi giờ của tôi và tôi có một lớp học sớm để đến.)

EDITED: Ôi trời. Vì vậy, tôi chỉ nhìn lại các slide liên quan đến điều này trong khóa học Coursera (Phần 4, slide 29). Bạn có thể muốn đi và đăng ký vào lớp đó chỉ để tải xuống bộ slide đó ...:)

MộtB

x= =[vωφφ˙]

vωφ

x~= =x-[vdωd00]= =x-δ

δ

x~˙= =x˙-δ˙= =δ là hằng sốx˙

x~˙= =Mộtx+Bbạn

MộtBbạn

x~˙= =Một(x-δ)+Bbạn+Mộtδ
MộtMộtδ= =0
x~˙= =Mộtx~+Bbạn

Bây giờ bạn có thể sử dụng vị trí cực để xác định giá trị riêng, v.v.


Thật sự cảm ơn! Tôi cũng đã học lớp Coursera đó, có lẽ chúng ta không quá xa trong việc kiểm soát kiến ​​thức. Đây hóa ra là một dự án khó hơn nhiều so với tôi mặc dù nó sẽ được thực hiện. Tôi thích ma trận nhà nước của bạn cho đến nay mặc dù.
JDD

Ôi! Có vẻ như tôi không trả lời tối nay! Tôi đã nghỉ xuân vào tuần trước, và quên mất một cái gì đó là do, vì vậy mà giữ cho tôi bận rộn ngày hôm nay. Tôi sẽ chỉnh sửa nó vào ngày mai ...
apnorton

Không vấn đề gì. Tôi đã làm hỏng cây cầu h cuối cùng của mình ngày hôm qua để cố gắng kết hợp nó lại với nhau để tôi phải chờ người thay thế.
JDD

Cảm ơn rất nhiều Anorton đã giúp đỡ. Tôi nghĩ rằng tôi đang hiểu làm thế nào để làm điều này nhiều hơn bây giờ. Tôi cập nhật câu hỏi ban đầu của tôi. Làm thế nào để xác định ma trận A và B vẫn làm tôi bối rối.
JDD
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.