Man robótica

Descrición

man_robotica
[By Leo Boghozian from youtube]
A idea é imprimir unha man articulada que se poda controlar tirando dun cable ou fío para cada dedo.

Estes cables irán unidos a uns servos, cuxo ángulo de xiro determinará a flexión do dedo.

O control pode ser automático ou manual:

  • Control automático: A man realiza movementos programados.
  • Control manual: Utiliza uns potenciómetros ou joysticks para facer xirar cada servo á posición que desexes.
  • Control con sensores: A man robótica moverase en función do sinal procedente dun sensor: Os dedos móvense segundo o sinal dun sensor de flexión ou de inclinación, a man cérrase cando se detecta un obxecto diante, etc.
  • Control sen fíos: controla o movemento da man a traǘes dun mando IR ou duns módulos bluetooth.

Lembra que se conectas 5 servos ao teu Arduíno cómpre que os alimentes de forma independente, pois consumen moita intensidade e poderías facer que a placa se reinicie.

Modelos

En Internet hai moitos sitios nos que descargar modelos en 3D que podemos utilizar para os nosos proxectos. Aquí hai algún exemplos que podes utilizar, pero podes atopar máis por Internet.

Modelos artesanais:

Unha man sinxela de facer é esta feita con palliñas do profe García. Non é moi precisa, pero podería valernos, por exemplo, para que se peche automaticamente a man cando detecta un obxecto ao seu alcance. Se o teu é traballar con madeira, na web de prometec explícannos como facer unha.
manpallas1 manpallas2 manmadeira

Se tes impresora:

En thingiverse podemos atopar modelos para imprimir. Algúns son moi complexos e laboriosos e outros son máis sinxelos. Aquí van algunhas ideas, pero podes atopar outras.

Prosthetic: Unha man sinxela de facer e rápida de imprimir.
Modelos, Instrucións
Snap-Together Robohand: É de fácil montaxe.
Modelos, Instrucións
Dextra: Máis laboriosa. Incorpora os servos na súa estrutura.
Modelos, Instrucións.
manprosthetic mansnaptogether mandextra

Inmoov: Un flipe! Na web de Inmoov podes atopar información sobre como imprimir e montar un robot humanoide completo. Iso si, traballo de impresión e montaxe hai dabondo. Para quen se anime a meterlle horas.

Unha opción sinxela e rápida é facer un único dedo: Finger-starter-kit ModelosInstrucións. Facer unha man xa leva máis traballo: Right hand: Modelos, Instrucións
inmoov   maninmoovdedo maninmoov 

Modelos comerciais

Tamén son interesantes os modelos comerciais que podemos atopar en aliexpress

Programación

Ao ter 5 servos,o mellor é utilizar un controlador de servos e utilizar alimentación externa.

No caso de que queiras realizar cun control analóxico do movemento dos dedos, por exemplo, cuns potenciómetros ou sensores, establece unha correlación entre o ángulo dos servos e o valor do sinal analóxico utilizando a función map.

No caso de que queiramos movementos predefinidos, por exemplo, pedra, papel e tesoira, podemos crear uns arrays que nos indiquen a posición de cada un dos dedos (o encollido e 1 estirado). Cando recibimos o sinal dunha forma determinada ordenamos aos servos que se movan en función dese array.

Por exemplo, despois de introducir o necesario para controlar os servos co controlador de servos introducimos os seguintes parámetros:

// ángulos mínimo e máximo (no servo nº0 (polgar) é ao revés)

int ang_min=5;      // dedo aberto
int ang_max=170;    // dedo cerrado

// pulsadores

int pulsador1=2;  // pedra
int pulsador2=3;  // papel
int pulsador3=4;  // tesoira

// Formas

int man[5];       // a forma que debe conseguir
int estado[5];    // o estado actual

int pedra[] = {0,0,0,0,0};    
int papel[] = {1,1,1,1,1};    
int tesoira[] = {0,1,1,0,0};

Na configuración inicial (setup) imos poñer a man, por exemplo,na posición de puño e completamos os arrays estado[] e man[] cos valores iniciais.

// estado inicial:

  int estado[]= {0,0,0,0,0};  // estado actual  
  int man[] = {0,0,0,0,0};    // petición

Definimos tres funcións: estirar un dedo, encoller un dedo, e mover dedos, que fai o percorrido por todos os dedos da man ata alcanzar a forma que queremos.

Na nosa man robótica o movemento do dedo polgar é o contrario dos demais, por iso facemos a separación para o servo nº0.

void estirar(int servo){

  if (servo==0){
    controladorServo.setPWM(servo, 0, angulo(ang_max));       
  }
  else {
      controladorServo.setPWM(servo, 0, angulo(ang_min));       
  }
  
}

// Función para encoller un dedo

void encoller(int servo){
  
  if (servo==0){
      controladorServo.setPWM(servo, 0, angulo(ang_min));       
  }
  else {
      controladorServo.setPWM(servo, 0, angulo(ang_max));       
  }
  
}

// Función que move todos os dedos desde o estado actual (estado[]) ata a orde (man[])

void moverDedos(){
  
  for(uint8_t n= 0; n<5; n++){

    if (man[n] != estado[n]){     // se a petición é diferente ao estado movemos
      
      if (man[n]==0){             // cando pide 0 encollemos e cando pide 1 estiramos
        encoller(n);
      }
      else{
        estirar(n);
      }
      
      estado[n]=man[n];           // imos gravando o estado actual
    }  
  }
  
}

No loop, por exemplo, se queremos que cun pulsador a man mostre a palma enteira (papel), fariamos:

if (digitalRead(pulsador2)== HIGH){
  while (digitalRead(pulsador2)== HIGH);
  delay(30);
  for(uint8_t n= 0; n<5; n++){
    man[n]=palma[n];
  }
}

Desa maneira man xa ten os valores que queremos na nosa man. Agora só falta mover os dedos desde o estado actual ata a posición nova chamando á función moverDedos()

moverDedos();

O programa anterior non está completo, falta incorporar o controlador de servos e todos os sensores que necesites. Só en unha guía a partir da cal poidas traballar.

Propostas

  • Control manual: Utiliza potenciómetros lineais ou joysticks para modificar a posición dos dedos.
  • Man carnívora: Conecta un sensor ultrasónico preto da palma da man. Cando o sensor detecta un obxecto a man debe cerrarse rapidamente para atrapalo.
  • Con pulsadores: Temos tres pulsadores. Un indica pedra, outro papel e outro tesoira. Cando prememos nun deles a man realiza o movemento relacionado.
  • Números: Utiliza un teclado matricial ou un mando IR para indicar un número de 0 a 5. A man deberá indicar que número se pulsou movendo os dedos.
  • Control con luva por Bluetooth: Podes usar sensores flex ou sensores de inclinación en cada dedo dunha luva provista dunha placa nano e un módulo HC-05. A man robótica deberá reproducir o mesmo movemento.
  • Pedra, papel e tesoira: a luva contra a man. Utiliza comunicación por bluetooth. Ao premer un pulsador quen ten a luva deberá formar pedra, papel ou tesoira, a man formará ao chou tamén unha das tres. A placa arduino recolle os datos, compáraos, e mostra nunha pantalla LCD quen gañou. A partida durará 5 xogadas.

Mostras

Vídeo con algunhas probas de funcionamento:

Control da man con luva por bluetooth.


Deixa un comentario