Robot IA [Dudas]

Hola, ante todo me presento y os mando un saludo! Soy nuevo en el foro y con muchas ganas de meterme en este mundillo.

Me explico un poco: he sido programador durante bastante tiempo (primero BASIC, luego C y luego C++, coqueteando con Ensamblador aunque no me considero programador porque lo dejé en una fase muy temprana), Aunque sé programar, no tengo mucha idea de electrónica "fisica" ni robotica, me he comprado un Arduino y unos kits de componentes básicos para empezar a trastocar con leds, resistencias, condensadores...

Mi verdadera pasión por la informática nació después de ver una película (los más viejos la recordarán) Naves misteriosas. Una película de ciencia ficción donde salían dos pequeños robots (más bien drones) de mantenimiento que tenían una potentísima IA (más cosa de ciencia ficción que de realidad). Desde entonces siempre soñe con aprender a programar y tener nociones de robótica para recrear al menos uno de los tres míticos robots. Y la gran pregunta que siempre me surgió es: ¿es posible hacer algo parecido?

Hace poco cumplí 40 años, y decidí que ahora o nunca. Sabiendo programar tenía la mitad del camino hecho. Incluso hay gente que ha fabricado ya robots de esta peli (como decoración, sin nada de electrónica) y hay incluso tutoriales de cómo llevar a cabo la parte de carpintería y decoración.

Las especificaciones que me gustaría que tuviera son las siguientes, y ahí es donde me gustaría que me pudierais indicar que es posible y que no, que es alcanzable y qué no

-Debería poder caminar (por supuesto) y debería poder evitar obstaculos o sortearlos. Ya he visto por Internet que hay gente que ha hecho proyectos similares
-Debería tener un mínimo "bot conversacional" con sintetizador de voz para pequeñas frases (nada de conversaciones ni súper conversacionales, solo unas cuantas frases predefinidas)
-Si pudiera ser, me gustaría que pudiera distinguir entre distintas voces, variando incluso su comportamiento entre unas y otras. Entiendo que un programa para distinguir rostros ya sería algo absolutamente fuera de mis capacidades, ¿verdad?
-Debería tener un pequeño brazo metálico, nada complejo, dos posiciones (guardado y extendido) pero que, de alguna forma, pudiera transportar objetos
-También me gustaría incorporar dos luces, o leds, que funcionen y estén encendidas cuando todo vaya bien; si algún programa falla, entra en bucle o tiene problemas, las luces se apagarían o parpadearían. Sería una forma de controlar que todo va bien

Esto es un "Bonus" friki que sospecho, será absolutamente imposible, pero me encantaría poder incorporar dentro del robot uno de esos viejos televisores analógicos portátiles, super pequeños (funcionaban con antenitos o "cuernos") y un casette VHS (sí, le tengo mucho cariño a esos viejos aparatos, y tengo muchas películas en dicho formato) de tal forma que puedan introducírsele cintas y visionar películas en el propio robot.

En fin... opiniones, consejos, sugerencias, conceptos que tenga yo equivocados... cualquier cosa que podáis ayudarme, la agradeceré!

Bueno salvo por tu conocimiento en programación lo que quieres hacer es TOO MUCH incluso para muchos de nosotros a nivel electrónico. Pero con paciencia quien dice?
Yo para comenzar te diré:

  1. Todo lo que quieres hacer, con Arduino lo veo casi imposible. Si con un Raspi o un BeagleBone Black (BBB). No tienen memoria. Mucho para programar contra muchas cosas resueltas en Raspi o BBB.
  2. Usaría Arduino para todas las interfaces y un Raspi o BBB para el cerebro. Ahi la cosa tiene mas color para mi y para lo que pretendes. Pero puedo subestimar tus habilidades de programación.
  3. Para comenzar, haría un desgloce de las tareas a realizar, todas con el mayor lujo de detalle posible agrupando por cuestiones como movilidad y ahi incluyo todo lo referente. Comunicaciones y lo mismo.
  4. La parte de reconocimiento de habla esta resuelta en Arduino como en Raspi/BBB. En realidad todo esta resuelto.
  5. Poder evitar obstáculos requiere de visión estereoscópica (la mejor alternativa para mi gusto) que te da control de distancia. Pero eso requiere si o si, manejar OpenCV con un Raspi o BBB.
    Usar Ultrasonido, IR, o cualquier otro sensor... mmmm no sirve. Son puntuales y no manejan el concepto de area de obstáculo a menos que hagas un barrido.

Bueno, mucho dejo para seguir conversando.
A ver que opinan los demás.
Espero que tengas billetera para semejante proyecto y lo mejor, no lo abandones. Muchos vienen acá y plantean cosas locas (no digo que la tuya lo sea) pero luego desaparecen al segundo post.
Bienvenido y ponerlo lo mejor.

Bueno, lo primero de todo, gracias por contestar!

No te preocupes, no soy de los que abandonan lo que empiezan, de hecho creo que la habilidad más importante que tengo es la paciencia...

Respecto a la poca memoria del Arduino, he entendido desde el principio que es su mayor debilidad. Yo empecé programando en el BASIC que traía mi Spectrum (128 Kb de memoria) y desarrollé varios proyectos en él (primero en la propia máquina y luego, en emuladores de PC) así que tengo algo de experiencia con ser ahorrativo en la memoria que gasto. Pero como temas de electrónica estoy absolutamente pez... puede que sea na locura. Ten en cuenta que en este mundillo soy completamente nuevo

Mi idea para la curva de aprendizaje es la siguiente:
-Empezar con arduino, haciendo ejercicios con leds, resistencias, condensadores, motores... en fin, dominar los elementos básicos de electrónica.
-Después seguir intentando programar robots pequeños sencillos, lo más básico y casero, para hacerme con las rutinas de programación de movimiento y demás
-Y ya, cuando controle todos estos conceptos, ponerme con el proyecto. El proyecto es mi objetivo, una ilusión de mi vida, pero para hacerlo bien tengo que tener una base (de programación, que tengo, y de electrónica, que no tengo nada).
Si los que tenéis experiencia pensáis que la curva de aprendizaje que me he propuesto es demasiado rápida, demasiado lenta... estoy siempre a escuchar a los que llevan tiempo en esto.

Respecto al proyecto en sí:

-Soy absolutamente lego en la materia, asi que quizá estoy lanzando preguntas absurdas, pero ¿es posible conectar Arduinos para que trabajen entre sí, haciendo acopio de mayor memoria? ¿No es posible hacer que arduino trabaje con algún sistema de almacenamiento de memoria (ya sea un disco duro, una tarjeta flash...)?

-El tema del movimiento para mi es lo más importante. Que se mueva con la mayor fluidez que sea posible dentro de las posibildades del sistema.
-Despues le daría prioridad a esquivar objetos, he visto en youtube varios robots que funcionan con ultrasonidos, pero por lo que comentas, existe otro sistema. Lo valoraré y buscaré información sobre el tema

-Respecto al tema de comunicación, quizá no me expresé bien. No quiero que "converse" porque eso requiere una memoria brutal (el más sencillo bot del mundo, que programé en C, requería de por sí una memoria brutal, para el propio programa, las bibliotecas y las bases de datos. Y era NADA).
Lo que me gustaría es que pudiera almacenar algunos nombres de usuario y responder a ellos, introducirle unas cuantas frases de "cortesía"... a partir de ahí, ya me ciño a lo que se pueda y no se pueda hacer.

Lo de la tele y el Vhs casi lo descarto, dudo que haya nadie que experimente con eso, es tecnología obsoleta.

Bueno puedes hacer muchas cosas, usando uno Arduino DUE como Cerebro o Maestro y arduino Nanos o Mini Pro como esclavos para controlar motores o sensores.
Existe una placa llama
EasyVR Shield 3.0 - Voice Recognition Shield
que resolverá tu problema de reconocimiento de comandos.
También hay placas para reproducir texto to voz (text to speech).
Control de motores de todas las potencias. Sensores de todos los tipos.

Te aconsejo que si estas en 0 en Arduino sigas los tutoriales de 1 a 7 y luego de 8 en adelante que estan al comienzo de DOCUMENTACION (subforo de tutoriales). En ese subforo todo es tutorial, recomendación de libros, etc, etc.
Asi que cuanto mas absorvas mejor para ti y tu curva de aprendizaje se acelerará rapidamente.

Le echaré un ojo a todos esos tutoriales, parecen muy interesantes.

También quiero redactar un documento con todas las funcionalidades de mi proyecto, explicadas los más sencillamente posible y bien desglosados, para saber yo mismo exactamente que quiero y de donde parto...

He estado leyendo que hay unos Micro SD que pueden darle mayor memoria al Arduino (megas o incluso gigas) ¿se puede almacenar de esa forma el código, o ese espacio es solo para almacenamiento? (fotos, videos... o lo que sea).