Агуулгын хүснэгт:

Өөрөө суралцах эмх замбараагүй робот: 3 алхам
Өөрөө суралцах эмх замбараагүй робот: 3 алхам
Anonim
Өөрөө сурч буй эмх замбараагүй робот
Өөрөө сурч буй эмх замбараагүй робот

AI, роботууд, та машин сурах сонирхолтой юу? Тансаг зэрэглэлийн их сургуульд ажиллах шаардлагагүй. Энэ бол миний эмх замбараагүй роботыг тайлбарлах явдал юм. Энэ бол өөрөө сурах кодыг хэрхэн ашиглах, хэрхэн arduino платформд хэрэгжүүлэхийг харуулах маш энгийн робот юм. Энэ бол маш хямд платформ юм!

Код нь роботыг өөрчилдөг бөгөөд ингэснээр робот мөлхөж сурдаг. Энэ нь хулганаас арын хэсэгт цацагдсан санал хүсэлтийг хүлээн авдаг. Код нь "генетик" юм. Энэ нь хэд хэдэн хувь хүмүүсийг туршиж үзээд хамгийн сайн хүмүүсийг байлгаж, хүүхэдтэй болно гэсэн үг юм. Энэ нь код нь хувьслын замаар хөгжиж байна гэсэн үг юм.

Алхам 1: Тоног төхөөрөмж AKA робот

Тоног төхөөрөмж AKA робот
Тоног төхөөрөмж AKA робот
Тоног төхөөрөмж AKA робот
Тоног төхөөрөмж AKA робот
Тоног төхөөрөмж AKA робот
Тоног төхөөрөмж AKA робот

Чамд хэрэгтэй:

- 1 Arduino хугацаа

- 8 microservos

- 1 PS/2 хулгана

- 1 түвшний шилжүүлэгч

- Мэдрэгч бамбай эсвэл үүнтэй төстэй хувилбаруудын зарим нь би мэдрэгчийн бамбайгаас залхаж, өөрөө гагнасан.

-утаснууд

-servo -ийн гадаад 5V цахилгаан хангамж

- зарим хаягдал төмрийн хэсэг, зарим цавуу, зарим ган утас. Мөн соронзон хальс!

Тиймээс Дудыг шалан дээр тавь. Сервоуудаа тойруулан цагираг хэлбэрээр хийнэ. Төмөр хаягдал, цавуу, утас зэргийг хамтад нь тавь. Энэ бол эмх замбараагүй байдлын хэсэг юм! Загвар хийц нь эмх замбараагүй тул мөлхөхийн тулд хэрхэн яаж хөдлөхөө тодорхойлох нь урьдчилан таамаглах аргагүй юм. Тиймээс өөрийгөө сурах код бол хамгийн сайн арга юм!

Зөвлөмж: нэлээд хүнд металл эд ангиудыг ашигла, энэ нь роботыг хөдөлгөхөд хялбар болгодог.

Сервүүдийг зохих ёсоор нь холбоно уу, миний хувьд тэд D39, 41, 43, 45, 47, 49, 51, 53 -т холбогдсон байна.

Servo -г гадаад 5V цахилгаан тэжээлд холбоно уу. Үүнийг хийхийн тулд ямар нэгэн бамбай хийх, эсвэл мэдрэгчтэй бамбай эсвэл үүнтэй төстэй зүйлийг ашигла. 5V -ийн хураамжаас серво тэжээх хэрэггүй, энэ нь хангалтгүй, учир нь шатах болно. Би жижиг прототип хавтанг ашиглан 5 В -ийг бүх серверт тараасан. Энэхүү самбар нь PS/2 хулганы цаг ба өгөгдлийн шугамын түвшний шилжүүлэгчтэй. Самбар нь хулганыг 5V хүчээр тэжээдэг. Газрыг гадны хүчнээс Arduino руу холбогдох ёстой гэдгийг санаарай! Схем нь энэ бүгдийг хэрхэн холбохыг харуулж байна.

PS/2 -ийг тэжээлд (5V) холбож, газардуул. Түвшин шилжүүлэгчээр PS/2 -ийн цаг ба өгөгдлийн шугамыг Due руу холбоно уу. (хугацаа 3.3V, PS/2 нь 5V). D12 дээрх цаг, D13 дээрх өгөгдлийг холбоно уу.

PS/2 протоколын талаар дэлгэрэнгүй мэдээлэл авахыг хүсвэл энэ бол маш сайн зааварчилгаа юм.

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

Миний ашиглаж байсан jazzycamel -ийн PS/2 номын сан:

Алхам 2: Код

Код
Код

Эхлээд хэлье: Би програмист биш. Зарим хэсэг нь маш өргөн цар хүрээтэй, чадварлаг программист мэдээж үүнийг богиносгож болно.

Код нь өөрөө суралцах бөгөөд энэ нь төслийн гол цөм юм. Энэ бол хөгжилтэй хэсэг юм! Энэ нь робот хөгжиж, улам сайжирч, энэ тохиолдолд мөлхөхөд сайжирна гэсэн үг юм. Гайхалтай зүйл бол робот нь таны тэжээж байсан зүйл болгон хөгжих болно. Энэ тохиолдолд PS/2 хулганыг чирэх бөгөөд хулганыг удаан барих тусам илүү өндөр оноо авах болно.

Энэ нь роботыг хэмжиж, робот руу буцааж өгөх л юм бол та энэ кодыг ашиглан роботыг өөр зүйл хийхийг сургах боломжтой гэсэн үг юм!

Зурган дээрээс харахад хулганыг нимгэн утсан дээр чирсэн байна. Эхэндээ хулганы кабель руу чирсэн. Гэсэн хэдий ч кабель нь нэлээд хатуу тул робот хулганаа чирэхийн оронд сэгсрэхийг сурчээ. Өндөр оноог сэгсэрч байна …

Код нь 50 хүнийг ашигладаг. Үүний гол цөм нь 50х50 байтын массив юм.

Хувь хүн бол байтын массив юм. Хувь хүнийг роботыг ажиллуулахад ашигладаг бол энэ хүнийг "tolken" кодын функц руу илгээдэг.

Гүйлтийн эхэнд m1, m2, m3, m4, m5, m6, m7, m8 гэсэн 8 хувьсагч байна (серво тус бүрт нэг). Энэ робот дээр тэд бүгд тогтмол эхлэх утгатай байдаг. "Толкен" -д mś нь тухайн хүний утгаас хамаарч кейс/свич гогцоонд хувирдаг. жишээ нь "1" утга нь дараах зүйлийг гүйцэтгэнэ: m1 = m1 + m2.

Хэрэв хувь хүн: 1, 2, 3, 0, 0, 0, 0….. бол mś дараах байдлаар хувирна.

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Толкен бол 256 өөр математикийн үйлдлүүдийн жагсаалт тул хувь хүмүүсийн массивын боломжит бүх утга нь m утгуудын математик өөрчлөлтийг илэрхийлдэг.

Толкен процессыг 4 удаа давтаж, тойрог бүрийн хооронд уншиж, "м" бүрт дөрвөн өөр мотор код үүсгэдэг. Мотор кодууд нь дараа нь servo руу илгээгдэх утгууд юм.

Хөгжлийн алхам бүрт 4 хувь хүн мөлхөхөд өрсөлддөг. Хамгийн сайн хоёр хүн бол хоёр хүүхдийн эцэг эх байх болно, нялх хүүхдүүд хамгийн муу хоёр хүүхдийг орлох болно. Нялх хүүхэд төрүүлэх үед нэг эцэг эхээс авсан "генетикийн код" -ыг бусад эцэг эхийн зүсмэлээр сольж, хоёр шинэ хувь хүнийг бий болгодог.

Хэрэв хувь хүн огт хийхгүй бол шинэ хүмүүс үүсгэхийн тулд хувь хүмүүсийн мутаци явагдах болно.

Та кодыг GitHub дээрээс олж болно:

Алхам 3: Үүнийг хэрхэн сургах вэ?

Энэ бол төвөгтэй хэсэг юм. Зөв бэлтгэл хийхийн тулд гүйлт бүрийн дараа үүнийг "дахин тохируулах" хэрэгтэй. Энэ нь та үүнийг үргэлж ижил байрлалд оруулах ёстой гэсэн үг юм.

Робот анхны байрлалдаа байгаа эсэхийг баталгаажуулахын тулд би код дотор хэдэн шалгах цэг оруулсан.

Тиймээс роботыг тэгшлээд ажиллуулаарай.

Энэ нь 4 хүнийг шалгадаг бөгөөд дараа нь эцэг эх болох хамгийн сайн 2 -ийг сонгодог. Хамгийн мууг нь нялх хүүхдүүдээр орлуулсны дараа хувь хүмүүсийн гүйцэтгэлийн талаархи зарим мэдээллийг хэвлэдэг. Мөн 50x50 массивыг хэвлэдэг. Үүнийг excel хуудас эсвэл үүнтэй төстэй зүйл болгон хуулах нь ухаалаг хэрэг юм. (эсвэл боловсруулахад шаардлагатай зарим кодыг бичнэ үү) Хэрэв хугацаа нь өөрчлөгдсөн бол (энэ нь янз бүрийн шалтгааны улмаас тохиолддог) та сургалтын ажлаа алдахгүй. Та массивыг код руу хуулж/буулгаж, үлдсэн тохиолдолд сургалтаа үргэлжлүүлж болно.

Миний робот хэдхэн цагийн дараа мөлхөж сурсан. Мөрдөхийн тулд видеог татаж аваарай. Энэ нь миний бодож байсан чиглэлд явсангүй!

Мөн өөр өөр давхруудыг туршиж үзээрэй! Миний робот нейлон хивсэн дээр хамгийн сайн гүйцэтгэсэн.

Боломжит сайжруулалтууд:

1. PS/2 хулганыг уншихын тулд тусдаа нано байх нь илүү дээр юм. Миний PS/2 хулганыг уншихад жаахан чичирч байна. Энэ нь хулганы кодын хэсгүүдийг унших/цэвэрлэх шалтгаан болдог.

2. роботыг анхны байрлал руу нь чирсэн ямар нэгэн туршилтын төхөөрөмж нь сургалтыг хурдасгах болно.

3. Надаас арай удаан сургах нь ухаалаг хэрэг гэж бодож байна. Удаан сургалт нь "зөв чиглэлд" сургагдсан гэдгийг баталдаг. Хэд хэдэн туршилтын дундаж гүйцэтгэл нь боломжтой арга байж болох юм.

Зөвлөмж болгож буй: