HƯỚNG DẪN LẮP RÁP ROBOT RẮN
Giới thiệu: Robot rắn
Bước 1: Danh sách linh kiện cần thiết
- 1 Arduino Mega
- 1 Bốn nút điều khiển từ xa Keyfob và bộ thu M4 tạm thời tương ứng
- 12 servo
- 12 chân đế servo chữ C
- 12 khung servo
- 4 khung đỡ servo C dài
- 1 Pin Lithium Ion
- 12 bánh xe Lego
- 1 servo 360 độ
- 1 cảm biến khoảng cách IR
- 1 servo nhỏ
- Một số cáp cảm biến và dây nối
- 1 bánh xe lớn
- 1 pin 5AA với đầu cắm
- Các loại đai ốc, bu lông, kẹp dây và dây đai velcro khác
Bước 2: Lắp ráp
Robot rắn có khả năng cấu hình một số tùy chọn chuyển động mong muốn . Bước này sẽ xây dựng chuyển động theo cách di chuyển của một con rắn. Các cấu hình khác sẽ được mô tả trong các bước riêng biệt dưới đây.
Mỗi đoạn trong số 12 đoạn của robot rắn bao gồm một mô tơ servo, một khung chữ C, khung bên, kẹp dây và một bộ bánh xe Lego. Hai lỗ vít cần phải được khoan vào trục bánh xe Lego để cho phép nó được kết nối với khung C. Bên cạnh đó, cần khoan hai lỗ vít vào kẹp dây để gắn nó vào khung C như hình trên. Sau khi tất cả 12 đoạn được lắp ráp, phần đầu và đuôi cần phải được thêm vào để đặt Arduino và pin vào robot. Để làm điều đó, lắp khung bên và hai khung C dài theo hình trên.
Tôi đặt bộ phận gắn pin của Arduino và pin 5AA cho nó vào phần đuôi của con rắn. Các servo được cung cấp bởi một nguồn cung cấp riêng, bộ pin 7.4 volt, được đặt vào đầu con rắn. Tất cả các dây servo cần phải chạy ngược trở lại Arduino. Giữ cho các dây gọn gàng bằng cách sử dụng kẹp để điều khiển dây . Các servo từ đầu đến đuôi được kết nối với chân 2 đến 13 của Arduino. Pin 5AA được kết nối trực tiếp với Arduino và pin 7.4 volt được kết nối với nguồn cung cấp đầu vào trên shield cảm biến Arduino. Tôi giữ pin và Arduino tại chỗ bằng đai Velcro.
Điều khiển từ xa được xử lý bởi bộ phát và bộ thu keyfob từ Adafruit. Chúng khá dễ dàng khi thêm điều khiển từ xa vào bất kỳ dự án Arduino nào. Trên bộ thu, chân đất được nối với GND Arduino. Các chân điện áp được kết nối với chân 5 volt từ Arduino (không phải là nguồn cung cấp 7.4 volt) và chân D0 đến D3 trên bộ thu được nối với các chân 14 đến 17 trên Arduino, tương ứng. (Xem hình trên).
Bước 3: Chuyển động hình rắn
Trên một con rắn thật, các vảy trên da rắn được xếp sao cho ít ma sát theo hướng song song với thân rắn. Thực hiện điều đó trên robot rắn bằng cách gắn các bánh xe vào mỗi đoạn lăn theo hướng dọc theo chiều dài của con rắn. Kết quả là con rắn có thể được đẩy về phía trước chỉ bằng cách cho nó di chuyển theo hình sóng sin dọc theo cơ thể của nó.
Code Arduino để điều khiển chuyển động này được thể hiện trong liên kết bên dưới. Các động cơ servo có các lệnh đặt góc của chúng. Nếu tất cả các servo được đặt ở 90 độ, thì vị trí của con rắn là một đường thẳng. Một góc nhỏ hơn hoặc lớn hơn 90 sẽ cho phép servo uốn cong trái hoặc phải. Lệnh cơ bản để điều khiển mỗi servo cho chuyển động về phía trước được đưa ra bởi một lệnh:
sn .write (90+ biên độ * cos ( tần số * counter * 3,14159 / 180 – n * lag );
Trong lệnh trên, n là số của đoạn hiện tại và lấy giá trị từ 1 đến 12, biên độ xác định độ rộng của sóng (nghĩa là hình dạng “S” cong), tần số (dọc theo độ trễ biến ) xác định tốc độ của con rắn, counter là biến vòng lặp mà có con rắn thông qua sự uốn lượn của nó và lag là sự thay đổi góc liên tục giữa các phân đoạn. Giá trị 3.14159 / 180 chỉ là chuyển đổi độ ra radian.
Mỗi động cơ servo được điều khiển bởi một lệnh của đoạn code này và tất cả mười hai lệnh này được đưa vào vòng lặp for nơi bộ đếm biến đổi từ 0 đến 360 độ giúp robot rắn thực hiện một trong những uốn lượn về phía trước và kết thúc khi robot rắn trở lại vị trí ban đầu của nó. Trong vòng lặp cũng có sự chậm trễ lệnh ( delayTime ). Vì các servo không phản hồi ngay lập tức, code phải tạm dừng để servo có thời gian di chuyển. Đối với các servos tôi đang sử dụng, 7 micro giây hoạt động tốt và mang lại một chuyển động mượt mà. Để làm cho robot rắn di chuyển ngược lại, chỉ cần cho vòng lặp chạy từ 360 xuống 0.
Nếu sóng chịu trách nhiệm cho chuyển động của con rắn được đặt ở giữa 90 độ, khối tâm của con rắn sẽ di chuyển theo đường thẳng. Nếu sóng được đặt ở giữa một góc nhỏ hơn 90 độ, con rắn sẽ rẽ trái và lớn hơn 90 độ con rắn sẽ rẽ phải. Điều này được thể hiện trong code bởi các biến leftOffset và rightOffset . Tuy nhiên, vì điều này sẽ dẫn đến một chuyển động hơi giật khi robot rắn di chuyển đột ngột đến vị trí bắt đầu rẽ, tôi khắc phục bằng cách tăng tốc độ bù đắp ở đầu vòng lặp, và từ từ giảm xuống tại cuối vòng lặp. Điều này dẫn đến một chuyển động mượt mà hơn.
Một trong bốn lệnh chuyển động sẽ tạo thành sự uốn lượn của chuyển động mong muốn và đưa robot rắn đến vị trí chính xác ở cuối vòng lặp. Để thêm điều khiển từ xa vào rô-bốt, tôi sử dụng bộ phát / thu phát từ khóa được thể hiện trong bước 1. Bốn nút trên bàn phim bộ phát tương ứng với a) về phía trước, b) ngược lại, c) rẽ trái, d) rẽ phải. Bộ thu được kết nối với Arduino và a đến chân 14, b đến chân 15, c đến chân 16 và d đến chân 17. Những chân được khai báo là đầu vào và thiết lập ở mức LOW. Bây giờ tôi chỉ cần code cho mỗi chuyển động vào một vòng lặp if chạy khi chân ở mức HIGH (tức là khi nút thích hợp được đẩy).
Bước 4: Chuyển động Rectilinear (hình giun)
Chuyển động giun tròn (còn được gọi là chuyển động thẳng) thực hiện bằng cách bỏ các bánh xe. (Xem hình ảnh ở trên.) Một khung dọc được lắp vào đầu của robot rắn để di chuyển robot rắn về phía trước. Đoạn đầu tiên của robot rắn được xoay ở 90 độ và hai khung C dài và một khung bên được sử dụng để đảm bảo servo quay liên tục với bánh xe lớn gắn vào nó. Bánh xe được định hướng sao cho nó song song với mặt đất. Khi robot rắn muốn xoay, các servo dọc theo robot rắn được thay đổi góc sao cho đoạn đó vuông góc với mặt đất với các servos phía trước không tiếp xúc với mặt đất. Sau đó, đoạn đó có thể xoay trái hoặc phải để xoay robot rắn. Khi lần lượt hoàn thành, phần thân được trả về vị trí nằm ngang của nó và robot rắn có thể tiếp tục tiến lên.
Chugn1 ta có thể sử dụng điều khiển từ xa keyfob. Bốn nút tương ứng với a) về phía trước, b) xoay, c) rẽ trái, d) rẽ phải. Code này chứa biến wheelState lấy giá trị 0 hoặc 1. Biến được khởi tạo là 0. Nếu nút b) được nhấn và wheelState = 0, thì phần thân sẽ xoay và biến wheelState sẽ được đặt thành 1. Nút c ) và d) bây giờ có thể được nhấn để xoay robot. Khi nút b) được nhấn lần nữa wheelState = 1, phần thân sẽ được nhấc lên và robot có thể tiếp tục chuyển tiếp. Biến wheelState cũng sẽ được đặt lại về 0.
Bước 5: Chuyển động Sidewinding
Sidewinding là một chuyển động của rắn khi di chuyển trên địa hình chuyển dịch như cát. Chuyển động này thực sự là sự kết hợp của các chuyển động serpentine và rectilinear được mô tả ở trên. Để đạt được chuyển động này, robot phải được cấu hình lại. Một khung bên kết nối một đoạn với khung C của đoạn tiếp theo được tháo ra và xoay 90 độ. Điều này được thực hiện dọc theo toàn bộ chiều dài của robot rắn. Do đó các servo 1, 3, 5, 7, 9 và 11 sẽ được đặt như đối với chuyển động serpentine và các servo 2, 4, 6, 8, 10 và 12 sẽ được đặt như đối với chuyển động thẳng. Chuyển động ngang được thực hiện bằng cách gửi một sóng cosin ngang tới các servo lẻ và sóng cosin thẳng đứng (thay đổi góc sóng ngang tới 90 độ) tới các servos được đánh số chẵn. Kết quả sẽ tạo ra một chuyển động ngang.
Bước 6: Chuyển động lăn
Một loại chuyển động khác có thể thực hiện cho robot này (nhưng không phải cho rắn thật) là chuyển động lăn. Trong cấu hình tuyến tính, đầu và đuôi có thể được kết nối để tạo thành một vòng khép kín để robot cuộn như bánh xe. Tính đối xứng là cần thiết cho chuyển động này với điều kiện phần đầu và phần đuôi phải được tháo ra nên Arduino và pin được sử dụng riêng. Do đó, chuyển động này chỉ có thể thực hiện ở chế độ kết nối có dây hay không điều khiển từ xa được.
Bước 7: Chuyển động tự do
Cuối cùng, một cảm biến khoảng cách IR gắn với một servo nhỏ có thể được nối với đầu của robot để cho phép robot tự di chuyển. Robot rắn sẽ di chuyển tốt nhất khi chuyển động dạng serpentine. Robot rắn sẽ di chuyển về phía trước bằng cách uốn lượn hình sin, dừng lại và đo khoảng cách. Nếu không có vật cản robot rắn sẽ tiếp tục tiến lên. Khi nó quá gần vật cản, robot sẽ dừng lại và servo nhỏ sẽ điều hướng cảm biến khoảng cách sang trái và phải để thực hiện thêm hai phép đo khoảng cách. Sau đó, robot rắn sẽ quay theo hướng không còn vật cản, và tiếp tục tiến về phía trước.