Thêm một Thiết bị truyền động hoặc Lực lượng vào Mô hình cơ thể cứng nhắc có khớp nối (Featherstone)


9

Tôi đang làm việc trong một dự án mà tôi cần mô hình hóa một hệ thống chủ yếu bao gồm một loạt các khớp nối bóng và ổ cắm được gắn vào một đế, được gắn lần lượt vào một khớp hình lăng trụ (đường ray).

Tôi đã đọc các trang bìa Thuật toán Động lực học Cơ thể cứng nhắc của Roy Featherstone và tôi cũng đã đọc phần Động lực từ Sổ tay Robot của Springer (cũng được viết bởi Featherstone).

Tôi đã mất một thời gian dài để thích nghi với việc sử dụng ký hiệu "vectơ không gian" và "ma trận không gian" của mình, nhưng sau khi tạo lại tất cả các ký hiệu của mình bằng tay như một bài tập, nó trở thành một cách hay để ghép 3x3 và Ma trận 3x1 và vectơ thành ma trận 6x6 và 6x1 và vectơ. Các toán học mà anh ta phát minh ra để thực hiện các thao tác có thể hơi tẻ nhạt khi đọc khi anh ta chiếm đoạt một số ký hiệu chuẩn, nhưng nhìn chung mọi thứ đều rất nhỏ gọn, rất dễ thực hiện trong MATLAB.

Vấn đề của tôi là thế này: Làm thế nào để tôi thêm bộ truyền động vào mô hình? Ông đi qua cấu hình một cách rõ ràng các định nghĩa chung, định nghĩa liên kết, vv, nhưng khi nói đến thiết bị truyền động hay lực lượng ứng dụng, ông nói cái gì đó như, "Chỉ cần thêm một ở đây và Bob chú của bạn!" - nó không được thảo luận ở tất cả. Trong Sổ tay Robotics , ông đề nghị giới thiệu gia tốc sai cho cơ sở cố định để thêm thuật ngữ lực hấp dẫn, nhưng không chỉ ra cách thêm nó vào tọa độ cục bộ cũng như không đề cập đến cách thêm đầu vào bộ truyền động.τmột

Mọi sự trợ giúp sẽ rất được trân trọng. Tôi đã cân nhắc bắt đầu lại với một cuốn sách khác, nhưng nó sẽ là một chi phí lớn thời gian của tôi để tích lũy lại bản thân vào một tập hợp các ký hiệu khác nhau. Tôi muốn tiến về phía trước với điều này, nhưng tôi cảm thấy như mình chỉ còn vài inch nữa là về đích.

Câu trả lời:


3

Lực lượng chấp hành

Tôi có hiểu đúng không: bạn có một mô hình lý thuyết về một hệ thống đa khung cứng nhắc và muốn thực hiện các tính toán động lực học cơ thể cứng nhắc. Bạn đã triển khai mô hình và bây giờ muốn tính toán cách mô hình hoạt động khi được điều khiển bởi một bộ truyền động.

Tuy nhiên, một thiết bị truyền động cho bạn là gì? Nó chỉ đơn giản là một lực tác động tại khớp đó? Đây có phải là một mô hình động cơ DC? Nó có phải là bộ điều khiển PID không?

Các thuật toán động lực học trong cuốn sách được mô tả về mặt tổng quát vị trí , vận tốc tổng quát ˙ q , vận tốc tổng quát ¨ q , và các lực lượng tổng quát τ . Nếu bạn có một khớp hình lăng trụ có bản dịch được mô tả bởi q i thì lực tuyến tính tại khớp đó được mô tả bởi τ i . Nếu bạn có khớp xoay (bản lề) có vòng quay được mô tả bởi q j thì τ j đại diện cho một mô-men xoắn tại khớp đó.qq˙q¨τqTôiτTôiqjτj

ττ

τmộtτmột

Gia tốc trọng trường:

Featherstone áp dụng gia tốc trọng trường ở gốc và cho phép nó lan truyền bằng các thuật toán thông qua cây. Điều này được thực hiện trong RNEA, Bảng 5.1 trong dòng

một0= =-mộtg

Thay vì làm điều đó, bạn cũng có thể sửa đổi dòng

fTôiB= =TôiTôimộtTôi+vTôi×*TôiTôivTôi

đến

fTôiB= =TôiTôi(mộtTôi-TôiX0mộtg)+vTôi×*TôiTôivTôi

để áp dụng các hiệu ứng hấp dẫn riêng lẻ trên mỗi cơ thể. Điều này giới thiệu các tính toán bổ sung và tôi không thấy bất kỳ lợi ích nào khi làm như vậy.

Đại số không gian so với kết hợp các vectơ 3 chiều

Đại số không gian không chỉ là ghép các vectơ 3 chiều. Cái trước thể hiện các chuyển động cơ thể cứng nhắc tại một khung tọa độ cố định, trong khi cái trước được thể hiện tại các điểm di chuyển với cơ thể. Kết quả là gia tốc không gian là dẫn xuất thời gian của vận tốc không gian. Trong ký hiệu cổ điển sử dụng hai phương trình 3 chiều, đây không phải là trường hợp (Phần 2.11 của cuốn sách Featherstone):

ω

Vận tốc không gian mô tả vận tốc tuyến tính và góc của điểm cơ thể hiện trùng với gốc của khung tham chiếu (cố định). Nếu khung đó được biểu thị ở tâm khối lượng và được định hướng bằng khung tham chiếu toàn cầu thì nó dường như là một phép nối đơn giản của vận tốc góc và tuyến tính 3-D, tuy nhiên đây chỉ là trường hợp cho khung tham chiếu cụ thể này. Được biểu thị ở một khung khác nhau, bạn nhận được các giá trị khác nhau nhưng nó vẫn thể hiện cùng một vận tốc không gian.

Gia tốc không gian mô tả dòng chảy của vận tốc tuyến tính và góc của điểm trùng với gốc tọa độ. "Dòng chảy" ở đây có nghĩa là cách các đại lượng vectơ (vận tốc tuyến tính và góc) thay đổi theo thời gian.


Tôi đã làm việc chăm chỉ để thực hiện thuật toán này, nhưng tôi đã cố gắng có phương pháp như tôi có thể trên đường đi, đảm bảo ngay cả các khía cạnh cơ bản nhất hoạt động chính xác như mong đợi mọi lúc. Cuối cùng, tôi đã thiết lập một số thử nghiệm để tôi có thể tính toán giải pháp chính xác để tôi có thể so sánh giải pháp mô phỏng.
Chuck

Khía cạnh cuối cùng mà tôi đang làm việc là khớp hình cầu - có được đại diện và gia tốc bậc bốn. Trong thí nghiệm này, tôi đang cố gắng mô phỏng một con lắc Foucault bằng cách mô hình trái đất và đặt một con lắc có khớp hình cầu trên bề mặt. Khi làm như vậy, căn cứ cố định của tôi là trung tâm của trái đất, nơi Trái đất quay. Sau đó, từ tâm quay của Trái đất, tôi có thể xoay lên / xuống bất kỳ vĩ độ nào, dịch lên bề mặt, nơi tôi đặt con lắc khớp hình cầu của mình.
Chuck

Tôi cần một cách để thêm trọng lực vì tôi không thể đặt nó trên trục z trên đế cố định của mình; điều này sẽ có trọng lực hoạt động chính xác chỉ ở Bắc Cực. Về cơ bản, tôi không quan tâm đến các lực bên dưới bề mặt trái đất, tôi chỉ quan tâm đến phần trước của con lắc.
Chuck

Tôi đã hỏi một câu hỏi liên quan về cách tôi nên xử lý các khớp cố định.
Chuck

2

Nếu bạn chưa đi qua Thư viện Động lực học Cơ thể cứng nhắc (RBDL), bạn có thể muốn xem cách họ triển khai nó và / hoặc liên hệ với tác giả Martin Felis.


Barrett, tôi đã tìm thấy RBDL vài tuần trước và trong khi đôi khi tôi cố gắng lượm lặt thông tin, nó được viết bằng C ++ với các phương pháp khiến nó khó theo dõi mã. Ví dụ: có một dòng trong mã động học đọcG.block(0,q_index,6,1) = base_to_body.apply(model.X_base[j].inverse().apply(model.S[j])); . Vì vậy, chức năng applylàm gì? Chà, tôi phải vào tập tin tiêu đề cho bất kỳ lớp nào base_to_body, nhưng đó là khớp hay cơ thể? Ngoài ra, những thứ như model.base[j].inverse().apply(model.S[j])không đặc biệt rõ ràng.
Chuck

Điều đó không có nghĩa là đôi khi nó không hữu ích, nhưng đối với tôi để có được sự hiểu biết từ RBDL cần rất nhiều nỗ lực.
Chuck

Chào mừng bạn đến với robot Barrett Ames, cảm ơn câu trả lời của bạn nhưng chúng tôi thích câu trả lời sẽ được khép kín nếu có thể. Liên kết có xu hướng bị thối nên các câu trả lời dựa trên liên kết có thể bị vô dụng nếu liên kết đến nội dung bị thối. Nếu bạn thêm nhiều ngữ cảnh từ liên kết, nhiều khả năng mọi người sẽ thấy câu trả lời của bạn hữu ích.
Gian hàng Mark
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.