No soy capaz de ver el final del túnel

Tengo un serio problema para poder compatibilizar dos tipos de funciones. He mirado tanto por internet como por el foro, este último por desgracia ya que me di cuenta de que le pasó algo parecido a otro usuario y en parte me ayudó, pero sigo sin dar con el problema. Es cierto que llevo poco tiempo con el arduino y el proyecto en si me viene un poco en grande y no estoy dando con la solución.

El proyecto en cuestión es la programación de un brazo robótico Braccio que tiene incorporado una cámara HuskyLens que tendría que realizar la siguiente función:

La cámara tiene que reconocer al usuario, dándole permiso para operar, y con un gesto iniciar la secuencia programada. El brazo seguirá al usuario dentro de un rango de visibilidad para no perder el encuadre. Una ves que se le de la señal, el brazo tendrá que recoger una pieza negra y se la tendrá que pasar a otro brazo que estará realizando una secuencia ya establecida sin parar.

PD: He probado corrigiendo los errores con inteligencia artificial, por si tengo elementos mal escritos o otros fallos, pero me saltan más errores y no estoy entendiendo el porqué. No me gusta copiar los código que no entiendo, así que estoy abierto a un desarrollo progresivo del programa para que pueda entender todo el proceso y poder exponer bien este proyecto.

Lo primero que puse fue esto. No sé si ayudará pero quiero empezar por aquí.

También tengo las librerías correspondientes, por si me falta algo más:

#include <DFRobot_HuskyLens.h>
#include <Servo.h>
#include <SoftwareSerial.h>

// Crear una instancia de DFRobot_HuskyLens
DFRobot_HuskyLens lens;

// Crear instancias para cada servo
Servo base, shoulder, elbow, wrist_rotate, wrist_vertical, gripper;

void setup() {
  Serial.begin(9600);

  // Inicializar comunicación con HuskyLens
  while (!lens.begin(Serial)) {
    Serial.println(F("Conectando a HuskyLens..."));
    delay(100);
  }
  Serial.println(F("Conectado a HuskyLens."));

  // Adjuntar los servos a los pines correspondientes
  base.attach(3);
  shoulder.attach(5);
  elbow.attach(6);
  wrist_rotate.attach(9);
  wrist_vertical.attach(10);
  gripper.attach(11);
}

void loop() {
  // Solicitar datos a HuskyLens
  if (lens.request()) {
    // Leer el primer bloque (objeto) detectado
    if (lens.available()) {
      HUSKYLENSResult result = lens.read();

      // Obtener las coordenadas del centro del objeto
      int x = result.xCenter;
      int y = result.yCenter;

      // Mapear las coordenadas a los ángulos de los servos
      int baseAngle = map(x, 0, 320, 0, 180);
      int shoulderAngle = map(y, 0, 240, 15, 165);

      // Mover los servos a los ángulos correspondientes
      base.write(baseAngle);
      shoulder.write(shoulderAngle);
    }
  } else {
    Serial.println(F("Error al comunicarse con HuskyLens."));
  }

  delay(100);
}

Pido perdón si no es aquí el tema. que estaba entre este y en el de Documentación

No pierdas el tiempo con la IA, aun le falta bastante. Hay cosas en grueso que resuelve bien pero lo fino jamás.

Creo que has planteado mal el problema.
Tu crees que abro un cajón y saco una cámara DFRobot_HuskyLens? Pues creo que eres el primero desde 2014 que estoy en el foro que habla del tema.
Asi que deberías haber puesto links a la cámara para interiorizarnos.

Supongamos que solo devuelva una coordenadas, no veo que tengas o hagas algo que valide que esa respuesta de la camara es la que esperas y por lo tanto deba mover los servos.
No importa que hagas, tu cámara devuelve algo y ese algo da una baseAngle y un shoulderAngle y se mueven y listo, de nuevo a otra cosa, otro gesto.

Eso pasa?

Moderador
Ademas soy el moderador asi que lee las normas, en particular el punto 5 de estas y edita tu titulo retirando la palabra ayuda. El foro solo brinda eso, asi que es inútil pedirlo.

gracias por el tiempo, y seguiré mirando y buscando

NO, no busques.
Explica que debe hacer, pasa información de tu cámara para que entendamos.
Lee las normas, establece bien el contexto de tu problema, no somos aprendices, la mayoría somos técnicos y/o ingenieros con mucha experiencia. Cuando el tema esta mal presentado muchas veces tenemos que indagar mucho para obtener lo que necesitamos para poder brindarte ayuda.

:rofl: :joy: :rofl:

Perdón pero no lo pude evitar.

1 Like

Perdona la demora, pero tengo tengo poco margen para conectarme. :expressionless:

Dicho esto, estuve mirando unos links que me ayudasen con la cámara en cuestión y este es el que mejor me ayudó a entenderlo:

También estuve reflexionando sobre lo que me comentaste sobre el verlo como una secuencia de ejecuciones según la imagen de la cámara y creo que es más sencillo que lo que yo tenia en mente para poder llevarlo a cabo con mi nivel actual. Así que, empezaré a desarrollarlo por ahí.

Por si también ayuda, el proyecto que tengo que realizar presentaría una función parecida a este caso.

Con la salvedad, de que el brazo estaría estático en un sitio tendría que moverse en base a esa posición.

Okay, primera tarea es la de transformar gestos en acciones no en movimientos, deja los movimientos para lo que una acción debe realizar.
Un gesto debe hacer una tarea o acción, otro gesto otra..
Cuando resuelves eso escribir que hace cada tarea o acción es fácil.
Digamos que logras entender el gesto1 y eso mueve servo X grados y hombro Y grados, listo.
Gesto2, lo mismo.

Entiendes?

Si no entiendo mal, Es programarlo para que los distintos gestos realicen los movimientos de los distintos servos.

Si, pero primero te centras en reconocerlos.
Gesto1, y tienes algo que te dice en el Arduino que se realizó el Gesto1 y asi con los demás.
Luego el resto es fácil. No te preocupes ya te guiaremos.

Bueno, esta es la información que hace falta

La del que lo fabrica y comercializa en primera instancia.
Bueno puede hacer esto

  1. Color and Coordinate: reconocer colores y coordenadas de un objeto.
  2. Caras y Objetos
    2.1) Reconocer Rostro o multiples rostros
    2.2) Seguimiento de Objetos
    2.3) reconocer etiquetas o señales por ejemplo
    2.4) Clasifcar objetos : hombres, perros, gatos, etc.

Ahora de todo esto que quieres hacer con tu robot, cual es el gesto1, 2... N que has pensado?

Reconocer rostro FaceId listo, eso debería ser fácil.
Almacena 1 rostro y si no es, no tendrás una respuesta positiva.
Usa 7.1.1.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.