Mục lục:

Robot vẽ Haptic: 5 bước (có hình ảnh)
Robot vẽ Haptic: 5 bước (có hình ảnh)

Video: Robot vẽ Haptic: 5 bước (có hình ảnh)

Video: Robot vẽ Haptic: 5 bước (có hình ảnh)
Video: Trí tuệ nhân tạo mới của OpenAI : Mô hình 3D của Blender + Nhanh hơn 600 lần so với Google 2024, Tháng Chín
Anonim

Là một phần của tốt nghiệp thạc sĩ của tôi tại dep. Thiết kế công nghiệp tại Đại học Eindhoven, tôi đã tạo ra một thiết bị vẽ xúc giác có thể được sử dụng để điều hướng một chiếc ô tô bán tự hành trong giao thông. Giao diện được gọi là nguệch ngoạc và cho phép người dùng trải nghiệm đồ đạc xúc giác trong không gian 2D thông qua một lực và vị trí thay đổi. Mặc dù khái niệm không phải là nội dung hướng dẫn này, bạn có thể đọc thêm về Scribble tại đây:

Scribble sử dụng cấu hình liên kết 5 thanh cho phép nó di chuyển hai bậc tự do theo phương (DoF). Thiết lập này khá phổ biến trong giới nguyên mẫu để tạo rô bốt vẽ, đây là một số ví dụ:

www.projehocam.com/arduino-saati-yazan-kol-…

blogs.sap.com/2015/09/17/plot-clock-weathe…

www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html

Về mặt cơ học, những robot này rất dễ chế tạo. Chúng chỉ cần các khớp nối cơ bản và có hai bộ truyền động có thể tạo ra một số chuyển động chất lỏng. Cấu trúc này lý tưởng cho những nhà thiết kế quan tâm đến việc chế tạo cấu trúc chuyển động. Tuy nhiên, tôi không phải là một kỹ sư cơ khí, tôi thấy động học khá khó để dịch sang mã. Do đó, tôi sẽ cung cấp mã Arduino cơ bản để tìm ra chuyển động học thuận và nghịch để bạn có thể dễ dàng sử dụng mã này trong các thiết kế trong tương lai của mình!;-)

Vui lòng tải xuống mã bên dưới!

* CHỈNH SỬA: cho một dự án tương tự, hãy xem tại https://haply.co *

Bước 1: Xây dựng cấu trúc

Xây dựng cấu trúc
Xây dựng cấu trúc

Tùy thuộc vào mục đích mà bạn có, trước tiên bạn nên thiết kế một cấu trúc liên kết 5. Suy nghĩ về các phép đo, bộ truyền động bạn muốn sử dụng và cách gắn các khớp để chuyển động trơn tru.

Đối với nguyên mẫu của tôi, tôi chạy mã của mình trên Arduino DUE được điều khiển nối tiếp bởi một chương trình trên máy Mac của tôi được tạo trong Open Frameworks. Chương trình sử dụng kết nối UDP để giao tiếp với trình mô phỏng lái xe dựa trên Unity 3D.

Nguyên mẫu Scribble sử dụng vòng bi 5mm và được làm từ acrilic cắt laser 5 mm. Bộ truyền động là Động cơ Haptic của Frank van Valeknhoef cho phép kích hoạt, đọc vị trí và tạo ra một lực thay đổi. Điều này làm cho chúng trở nên lý tưởng cho các thuộc tính xúc giác mong muốn của Scribble. Thông tin thêm về các thiết bị truyền động của anh ấy có thể được tìm thấy tại đây:

Bước 2: Biết giá trị phần cứng của bạn

Biết giá trị phần cứng của bạn
Biết giá trị phần cứng của bạn

Các chuyển động học phía trước dựa trên trạm thời tiết đồng hồ Plot của SAP:

Như được hiển thị trong cấu hình của chúng được mở rộng để cánh tay giữ một điểm đánh dấu để vẽ. Điều này đã bị loại bỏ vì nó không phục vụ mục đích cho nguyên mẫu viết nguệch ngoạc. Kiểm tra mã của họ nếu bạn muốn thêm lại thành phần này. Các tên trong hình được giữ nguyên trong cấu hình của tôi.

Tùy thuộc vào phần cứng của bạn, thuật toán cần biết các thuộc tính phần cứng của bạn:

int leftActuator, rightActuator; // góc để ghi vào bộ truyền động bằng độ, thay đổi thành số nổi nếu bạn muốn chính xác hơn

int posX, posY; // tọa độ của vị trí của con trỏ

Đặt độ phân giải của các giá trị đầu vào của bạn

int posStepsX = 2000;

int posStepsY = 1000;

Kích thước thiết lập của bạn, giá trị tính bằng mm (xem ảnh SAP)

#define L1 73 // chiều dài cánh tay động cơ, xem hình ảnh SAP (trái và phải giống nhau)

#define L2 95 // nhánh mở rộng chiều dài, xem ảnh SAP (trái và phải giống nhau)

#define rangeX 250 // phạm vi tối đa theo hướng X để điểm di chuyển (từ trái sang phải, 0 - maxVal)

#define rangeY 165 // phạm vi tối đa theo hướng Y để điểm di chuyển (từ 0 đến phạm vi tiếp cận tối đa trong khi vẫn ở giữa)

#define originL 90 // offset khoảng cách từ hầu hết giá trị minumim X đến vị trí trung tâm của thiết bị truyền động

#define originR 145 // bù khoảng cách từ hầu hết giá trị minumim X đến vị trí trung tâm của thiết bị truyền động, trong trường hợp này là khoảng cách giữa hai động cơ

Bước 3: Chuyển tiếp động học

Chuyển tiếp động học
Chuyển tiếp động học

Như đã đề cập ở bước trước, chuyển động học chuyển tiếp dựa trên thuật toán của SAP.

Khoảng trống cập nhật các giá trị góc mong muốn của bộ truyền động bên trái và bên phải được xác định trước đó. Dựa vào giá trị X và Y được cắm vào đó sẽ tính toán các góc vuông để đưa con trỏ đến vị trí này.

void set_XY (double Tx, double Ty) // nhập giá trị X và Y của bạn {// một số vals mà chúng tôi cần nhưng không muốn lưu cho các double dài dx, dy, c, a1, a2, Hx, Hy; // ánh xạ độ phân giải inpit thành phạm vi cấu hình của bạn trong thế giới thực int realX = map (Tx, 0, posStepsX, 0, rangeX); // hoán đổi ánh xạ if if inversed int realY = map (Ty, posStepsX, 0, 0, rangeY); // hoán đổi ánh xạ if nếu đảo ngược // góc calc cho bộ truyền động bên trái // cartesian dx / dy dx = realX - originL; // bao gồm offset dy = realY; // độ dài cực (c) và góc (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); leftActuator = floor (((M_PI - (a2 + a1)) * 4068) / 71); // góc cuối cùng và chuyển đổi từ rad sang deg // góc calc cho bộ truyền động bên phải dx = realX - originR; // bao gồm offset dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); rightActuator = floor (((a1 - a2) * 4068) / 71); // góc cuối cùng và chuyển đổi từ rad sang deg}

Khoảng trống bổ sung để tính toán góc:

double return_angle (double a, double b, double c) {// quy tắc cosin cho góc giữa c và a return acos ((a * a + c * c - b * b) / (2 * a * c)); }

Bước 4: Chuyển động học nghịch đảo

Chuyển động học nghịch đảo
Chuyển động học nghịch đảo

Động học nghịch đảo hoạt động theo chiều ngược lại. Bạn cắm chuyển động quay của bộ truyền động theo độ và khoảng trống sẽ cập nhật vị trí được xác định trước đó.

Xin lưu ý rằng bạn sẽ cần bộ truyền động hoặc một cảm biến riêng biệt có thể đọc góc của cánh tay. Trong trường hợp của tôi, tôi đã sử dụng bộ truyền động có thể đọc và ghi vị trí của chúng đồng thời. Hãy thử nghiệm điều này và xem xét thêm một số loại hiệu chỉnh để bạn chắc chắn rằng góc của bạn được đọc chính xác.

Đề xuất: