Taula de continguts:

Robot caòtic d’autoaprenentatge: 3 passos
Robot caòtic d’autoaprenentatge: 3 passos

Vídeo: Robot caòtic d’autoaprenentatge: 3 passos

Vídeo: Robot caòtic d’autoaprenentatge: 3 passos
Vídeo: Тест робот пылесос iLife X660 A8 или Xiaomi кто убирает лучше 2024, De novembre
Anonim
Robot caòtic d’autoaprenentatge
Robot caòtic d’autoaprenentatge

T'interessa l'aprenentatge automàtic, IA i robots? No necessiteu treballar en alguna universitat de luxe. Aquesta és una descripció del meu caòtic robot. És un robot molt senzill per demostrar com utilitzar el codi d'autoaprenentatge i com implementar-lo en una plataforma arduino, en aquest cas un Arduino due. És una plataforma molt barata!

El codi fa evolucionar el robot de manera que el robot aprengui a rastrejar. Obté comentaris del ratolí que s’enfonsa darrere. El codi és "genètic". Això vol dir que es proven diversos individus i es conserven els millors i tindran nadons. Això significa que el codi evoluciona de manera evolutiva.

Pas 1: maquinari AKA el robot

Maquinari AKA el robot
Maquinari AKA el robot
Maquinari AKA el robot
Maquinari AKA el robot
Maquinari AKA el robot
Maquinari AKA el robot

Necessites:

- 1 Arduino Due

- 8 microservos

- 1 ratolí PS / 2

- 1 canvi de nivell

- Alguna variant d'un blindatge del sensor o similar, em vaig cansar del blindatge del sensor i vaig soldar el meu.

-fils

-alimentació externa de 5V per als servos

- algunes peces de ferralla, una mica de cola i una mica de fil d’acer. I cinta!

Així que poseu el Due a terra. Poseu els servos en un anell al voltant. Poseu-los junts amb ferralla, cola i fil. Aquesta és la part del caos! Com que és caòtic en el seu disseny, és imprevisible determinar com moure’s per aconseguir que es rastregi. Per això, el codi d’autoaprenentatge és el camí a seguir.

Consells: utilitzeu algunes peces de metall bastant pesades, facilitant el moviment del robot.

Connecteu els servos al venciment, en el meu cas estan connectats a D39, 41, 43, 45, 47, 49, 51, 53.

Connecteu els servos a la font d'alimentació externa de 5V. Per a això, creeu algun tipus de blindatge o utilitzeu un blindatge del sensor o similar. NO alimenteu els servos del pin de 5V, no n'hi ha prou, ja que es cremarà. Vaig utilitzar un petit prototip de placa per distribuir els 5 V a tots els servos. Aquest tauler també manté el canvi de nivell per al rellotge de ratolí PS / 2 i les línies de dades. La placa també alimenta el ratolí amb 5V. Recordeu que heu de connectar la terra des de l’alimentació externa a la terra deguda a Arduino. els esquemes mostren com connectar-ho tot.

Connecteu el PS / 2 a l’alimentació (5V) i a terra. Connecteu el rellotge i la línia de dades del PS / 2 al Due mitjançant un canvi de nivell. (el venciment va a 3,3 V, el PS / 2 a 5 V). Connecteu el rellotge a D12 i les dades a D13.

Per obtenir més informació sobre el protocol PS / 2, és molt útil:

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

La biblioteca PS / 2 de jazzycamel que he utilitzat:

Pas 2: el codi

El codi
El codi

Al principi, deixeu-me dir: NO sóc programador. Algunes parts són molt extenses, per descomptat, un programador expert podria escurçar-les.

El codi és l’autoaprenentatge i aquest és el nucli del projecte. Aquesta és la part divertida! Vol dir que el robot evoluciona i millora cada vegada millor, en aquest cas millora en rastrejar. El més sorprenent d’això és que el robot evolucionarà cap a allò en què el retroalimentareu. En aquest cas arrossega un ratolí PS / 2 i com més temps es draga el ratolí, més punts obtindrà.

Això també significa que podeu utilitzar aquest codi per entrenar el vostre robot i fer una altra cosa, sempre que es mesuri i es retroalimenti al robot.

Com podeu veure a les imatges, el ratolí s’arrossega sobre un cable prim. Al principi es va arrossegar al cable del ratolí. No obstant això, el cable és una mica rígid, de manera que el robot va aprendre a sacsejar el ratolí en lloc d’arrossegar-lo. La sacsejada va produir punts àlgids …

El codi utilitza 50 individus. El nucli és una matriu de 50x50 bytes.

Un individu és un conjunt de bytes. Quan s'utilitza l'individu per executar el robot, aquest individu s'envia a una funció del codi anomenada "tolken".

Al començament d'una carrera hi ha 8 variables m1, m2, m3, m4, m5, m6, m7 i m8 (una per cada servo). En aquest robot tots tenen valors inicials constants. A "tolken", els mś es transformen en un llaç entre majúscules i minúscules en funció dels valors de l'individu. per exemple, un valor de "1" executa el següent: m1 = m1 + m2.

Si una persona és: 1, 2, 3, 0, 0, 0, 0 ….. llavors el mś es transformarà de la següent manera:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken és una llista de 256 operacions matemàtiques diferents, de manera que cada valor possible de la matriu individual representa un canvi matemàtic dels m valors.

El procés tolken es fa 4 vegades més, amb lectura entre cada volta, generant quatre codis de motor diferents per a cada "m". Els codis de motor són els valors que posteriorment s’envien als servos.

A cada pas de l’evolució, quatre individus competeixen per rastrejar. Els dos millors individus seran pares de dos nadons, els nadons substituiran els dos pitjors individus. Quan es fabriquen nadons, es canvia una parella de "codi genètic" d'un pare per una porció de l'altre pare, cosa que crea dos individus nous.

Si cap persona realitza cap actuació, es produirà la mutació de les persones per generar-ne de noves.

Podeu trobar el codi a GitHub:

Pas 3: Com entrenar-lo?

Aquesta és la part complicada. Per entrenar correctament, haureu de "restablir-lo" després de cada carrera. Això vol dir que cal posar-lo en la mateixa posició cada vegada.

He posat uns quants punts de control dins del codi per assegurar-me que el robot es troba en la seva posició inicial.

Alineeu el robot i deixeu-lo córrer.

Posa a prova 4 individus i després tria els 2 millors per ser pares. Després de substituir el pitjor pels nadons, imprimeix algunes dades sobre el rendiment dels individus. També imprimeix la matriu 50x50. És aconsellable copiar-ho en un full Excel o similar. (o escriviu algun codi de necessitat en el processament) Si es restableix el venciment (això passa per diversos motius), llavors no perdreu el vostre treball de formació. Podeu copiar / enganxar la matriu al codi i continuar la formació quan us quedessin.

El meu robot va aprendre a arrossegar-se al cap d'un parell d'hores. Descarregueu el vídeo per veure'l rastrejar. No anava en la direcció en què pensava que ho faria!

Proveu també diferents pisos. El meu robot va funcionar millor en una catifa de niló.

Possibles millores:

1. Seria millor tenir un nano separat per llegir el ratolí PS / 2 i enviar la distància processada desplaçada per sèrie al nano. La lectura del meu ratolí PS / 2 és una mica inestable. Aquest és el motiu pel qual el ratolí llegeix / esborra parts del codi.

2. una mena de prova que arrossegés el robot cap a la posició inicial acceleraria la formació.

3. Crec que és aconsellable entrenar-lo una mica més lent que jo. Un entrenament més lent assegura que s’entrenen “en la direcció correcta”. El rendiment mitjà de diverses proves podria ser una manera possible.

Recomanat: