Mục lục:

Robot Chaotic tự học: 3 bước
Robot Chaotic tự học: 3 bước

Video: Robot Chaotic tự học: 3 bước

Video: Robot Chaotic tự học: 3 bước
Video: Goắt đờ lắp ráp xong mang bản hướng dẫn ra thấy không đúng lắm - lag cực mạnh #lego #robot 2024, Tháng bảy
Anonim
Robot Chaotic tự học
Robot Chaotic tự học

Bạn có quan tâm đến học máy, robot AI? Bạn không cần phải làm việc tại một số trường đại học sang trọng. Đây là mô tả về con robot hỗn loạn của tôi. Nó là một robot rất đơn giản để chứng minh cách sử dụng mã tự học và cách triển khai nó vào nền tảng arduino, trong trường hợp này là Arduino. Nó là một nền tảng rất rẻ!

Mã tiến hóa rô bốt để rô bốt học cách bò. Nó nhận được phản hồi từ con chuột được kéo phía sau. Mã là "di truyền". Điều này có nghĩa là một số cá thể được kiểm tra và những cá thể tốt nhất được giữ lại và sẽ có người trông trẻ. Điều này có nghĩa là mã phát triển theo cách tiến hóa.

Bước 1: Phần cứng AKA cho Robot

Phần cứng AKA người máy
Phần cứng AKA người máy
Phần cứng AKA người máy
Phần cứng AKA người máy
Phần cứng AKA người máy
Phần cứng AKA người máy

Bạn cần:

- 1 Arduino Đến hạn

- 8 microservos

- 1 chuột PS / 2

- 1 bộ nâng cấp

- một số biến thể của tấm chắn cảm biến hoặc tương tự, tôi đã chán tấm chắn cảm biến và tự hàn lại.

-Dây điện

-cung cấp nguồn 5V bên ngoài cho servo

- một số mảnh sắt vụn, một số keo và một số sợi thép. Và băng!

Vì vậy, hãy đặt Due lên sàn. Đặt các Servos trong một vòng xung quanh nó. Đặt chúng lại với nhau bằng kim loại phế liệu, keo và chỉ. Đây là phần hỗn loạn! Vì nó hỗn loạn trong thiết kế của nó, nên không thể đoán trước được cách di chuyển để làm cho nó bò. Đây là lý do tại sao tự học mã là cách để đi!

Lời khuyên: sử dụng một số bộ phận kim loại khá nặng, nó giúp robot di chuyển dễ dàng hơn.

Kết nối các Servos đến hạn, trong trường hợp của tôi, chúng được kết nối với D39, 41, 43, 45, 47, 49, 51, 53.

Kết nối Servos với nguồn điện 5V bên ngoài. Đối với điều này, hãy xây dựng một số loại tấm chắn hoặc sử dụng tấm chắn cảm biến hoặc tương tự. KHÔNG cấp nguồn cho Servos từ chân 5V, nó không đủ, Do sẽ bị cháy. Tôi đã sử dụng một bảng nguyên mẫu nhỏ để phân phối 5 V cho tất cả các servo. Bo mạch này cũng giữ bộ thay đổi mức cho đồng hồ chuột PS / 2 và các đường dữ liệu. Bo mạch cũng cấp nguồn cho chuột với 5V. Hãy nhớ kết nối nối đất từ nguồn bên ngoài với tiếp đất do Arduino! sơ đồ cho thấy làm thế nào để kết nối tất cả.

Kết nối PS / 2 với nguồn (5V) và nối đất. Kết nối đồng hồ và đường dữ liệu của PS / 2 với Do thông qua một bộ dịch mức. (do đi 3,3V, PS / 2 đi 5V). Kết nối đồng hồ trên D12 và dữ liệu trên D13.

Để biết chi tiết về giao thức PS / 2, đây là một hướng dẫn rất tốt:

www.instructables.com/id/Optical-Mouse-Od…

Thư viện PS / 2 của jazzycamel mà tôi đã sử dụng:

Bước 2: Mã

Mật mã
Mật mã

Đầu tiên, hãy để tôi nói: Tôi KHÔNG phải là một lập trình viên. Một số phần rất rộng, một lập trình viên có tay nghề cao tất nhiên có thể rút ngắn nó xuống và cứ như vậy.

Mã là tự học và đây là cốt lõi của dự án. Đây là một phần thú vị của nó! Nó có nghĩa là robot tiến hóa và ngày càng tốt hơn, trong trường hợp này, nó sẽ thu thập thông tin tốt hơn. Điều đáng kinh ngạc về điều này là robot sẽ phát triển thành những gì bạn từng nuôi nó trở lại. Trong trường hợp này, nó kéo một con chuột PS / 2 và con chuột được kéo càng lâu, nó sẽ nhận được điểm càng cao.

Điều này cũng có nghĩa là bạn có thể sử dụng mã này để huấn luyện robot của mình làm việc khác, miễn là nó được đo và trả lại cho robot!

Như bạn có thể thấy trong hình ảnh, con chuột được kéo trên một sợi dây mỏng. Lúc đầu, nó được kéo trong cáp chuột. Tuy nhiên, dây cáp hơi cứng nên robot đã học cách lắc chuột, thay vì kéo nó. Rung chuyển tạo ra điểm cao…

Mã sử dụng 50 cá nhân. Cốt lõi của điều này là một mảng 50x50 byte.

Một cá nhân là một mảng các byte. Khi cá nhân được sử dụng để chạy rô bốt, cá nhân này sẽ được gửi đến một chức năng trong mã gọi là "tolken".

Khi bắt đầu chạy, có 8 biến m1, m2, m3, m4, m5, m6, m7 và m8 (một biến cho mỗi servo). Trong robot này, tất cả chúng đều có giá trị khởi động không đổi. Trong "tolken", mś được biến đổi trong một vòng lặp trường hợp / swich tùy thuộc vào các giá trị của từng cá thể. ví dụ giá trị "1" thực hiện như sau: m1 = m1 + m2.

Nếu một cá thể là: 1, 2, 3, 0, 0, 0, 0….. thì mś sẽ được biến đổi theo cách sau:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken là một danh sách gồm 256 phép toán khác nhau, vì vậy mọi giá trị có thể có của mảng riêng lẻ đại diện cho sự thay đổi toán học của m giá trị.

Quá trình tolken được thực hiện 4 lần, với việc đọc ra giữa mỗi vòng, tạo ra bốn mã động cơ khác nhau cho mỗi "m". Các mã động cơ là các giá trị sau này được gửi đến các servos.

Trong mỗi bước của quá trình phát triển, 4 cá nhân cạnh tranh trong việc thu thập thông tin. Hai cá thể tốt nhất sẽ là cha mẹ của hai người giữ trẻ, những người giữ trẻ sẽ thay thế hai cá thể tồi tệ nhất. Khi các con được tạo ra, một đoạn "mã di truyền" từ một bên cha mẹ được đổi lấy một phần từ cha mẹ kia, điều này tạo ra hai con mới.

Nếu không có cá thể nào thực hiện, sự đột biến của các cá thể sẽ diễn ra để tạo ra những cá thể mới.

Bạn có thể tìm thấy mã tại GitHub:

Bước 3: Làm thế nào để đào tạo nó?

Đây là phần khó khăn. Để tập luyện đúng cách, bạn cần "reset" nó sau mỗi lần chạy. Điều này có nghĩa là bạn phải đặt nó ở cùng một vị trí mỗi lần.

Tôi đã đặt một số điểm kiểm tra bên trong mã để đảm bảo rằng rô bốt đang ở vị trí bắt đầu.

Vì vậy, hãy căn chỉnh robot và để nó chạy.

Nó kiểm tra 4 cá nhân và sau đó nó chọn 2 người tốt nhất để làm cha mẹ. Sau khi thay thế thứ tồi tệ nhất bằng những đứa trẻ, nó sẽ in một số dữ liệu về hiệu suất của các cá thể. Nó cũng in mảng 50x50. Bạn nên sao chép nó vào một trang tính excel hoặc tương tự. (hoặc viết một số mã cần thiết trong quá trình xử lý) Nếu Thời hạn đặt lại (điều này xảy ra vì nhiều lý do khác nhau) thì bạn sẽ không mất công việc đào tạo của mình. Bạn có thể sao chép / dán mảng vào mã và tiếp tục đào tạo nếu bạn còn lại.

Robot của tôi đã học cách bò sau vài giờ. Tải xuống video để thu thập thông tin. Nó đã không đi theo hướng tôi nghĩ!

Cũng thử các tầng khác nhau! Robot của tôi biểu diễn tốt nhất trên thảm nylon.

Những cải tiến có thể có:

1. Sẽ tốt hơn nếu có một nano riêng biệt để đọc chuột PS / 2 và gửi khoảng cách đã xử lý được di chuyển qua nối tiếp tới nano. Việc đọc chuột PS / 2 của tôi nó hơi run. Đây là lý do chuột đọc / xóa các phần của mã.

2. một số loại giàn thử kéo robot trở lại vị trí ban đầu sẽ đẩy nhanh quá trình huấn luyện.

3. Tôi nghĩ rằng nó là khôn ngoan để huấn luyện nó chậm hơn một chút so với tôi đã làm. Đào tạo chậm hơn đảm bảo rằng nó được đào tạo "đúng hướng". Hiệu suất trung bình của một số lần chạy thử nghiệm có thể là một cách khả thi.

Đề xuất: