Autor Tema: [SUSPENDIDO]IA en pic  (Leído 5551 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
[SUSPENDIDO]IA en pic
« en: 11 de Octubre de 2012, 18:23:51 »
Hola a todos, dentro de los proximos dias voy a comenzar a programar una IA para un PIC, mi intencion es realizarlo en C, puede que consuma mas recursos, pero  es con el lenguaje que programo  :)

Puede que parezca imposible dado que los pics tienen una muy poca capacidad de procesamiento, en especial si hablamos de una IA. a pesar que tengo arms tambien, no tengo como programarlos, en cambio pic's si y AVR estoy armando uno, pero no he trabajado mucho en avr's.

Mi primera intencion de hardware es unas cuantas memorias i2c de 512kb que tengo tirada en mi basura(no tanto) electronica, un ds1307, una ram de no mas 1mb, una gran cantidad de sensores, entre ellos una camara o dos incluso, dos microfonos y un parlante, y ningun bus de comunicacion, para eliminar la interaccion del humano en el funcionamiento de este, la idea es que sea un robot con una IA, primeramente muy reducida para luego ser tan avanzada como la humana, que actue como persona, sienta(dolor solamente), vea el mundo (para no chocar y no lastimar a nadie obviamente), pero todo esto con un pic, probablemente mas adelante se me haga corta la capacidad del pic y cambie a ARM, un ARM9 (de los cuales tengo unos cuantos tirados por ahi), espero poder completar este ambicioso proyecto que he pensado desde que comencé a estudiar electonica, documentare todo el proceso desde la programacion, hasta la finalizacion, espero a alguno le interese y me ayude en alguna duda que tenga

Saludos!
« Última modificación: 25 de Noviembre de 2012, 19:31:05 por fantaxmax »
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: IA en pic
« Respuesta #1 en: 11 de Octubre de 2012, 20:20:43 »
 :mrgreen: Que es una IA  :roll:
No contesto mensajes privados, las consultas en el foro

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: IA en pic
« Respuesta #2 en: 11 de Octubre de 2012, 20:28:36 »
:mrgreen: Que es una IA  :roll:

Inteligencia Artificial.

Lo veo sumamente difícil. Suelen necesitar de bastante cómputo y espacio hacer algo interesante...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: IA en pic
« Respuesta #3 en: 11 de Octubre de 2012, 20:49:52 »
No contesto mensajes privados, las consultas en el foro

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: IA en pic
« Respuesta #4 en: 11 de Octubre de 2012, 22:54:50 »
 :mrgreen: olvide poner que era IA xD!

:mrgreen: Que es una IA  :roll:

Inteligencia Artificial.

Lo veo sumamente difícil. Suelen necesitar de bastante cómputo y espacio hacer algo interesante...

eso lo pense antes de pensar el proyecto, y obviamente va a ser muy dificil por lo mismo que tu dices, ahi voy a ir viendo si me queda corto un pic, le colocare dos con una especie de configuracion dual core, como eran antes los dual core en los pc, que se colocaban dos procesadores, hare eso mismo en pics para aumentar la capacidad de procesamiento, y si me siguen quedando cortos usare 4, si me siguen quedando cortos usare 8, y si me quedan cortos usare un arm, si me queda corto lo cual dudo usare 3 arm dos para procesamiento y uno para delegar la carga xD!
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: IA en pic
« Respuesta #5 en: 11 de Octubre de 2012, 23:10:17 »
Pues realmente deseo que llegues a buen puerto!

Estaré atento a tus progresos y te ayudaré en todo lo que esté dentro de mis conocimientos del tema.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: IA en pic
« Respuesta #6 en: 11 de Octubre de 2012, 23:59:22 »
Yo tambien te sigo !!
Que PIC estaras utilizando??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: IA en pic
« Respuesta #7 en: 12 de Octubre de 2012, 06:08:32 »
Yo tambin, suena interesante.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: IA en pic
« Respuesta #8 en: 12 de Octubre de 2012, 06:24:33 »
Otro que se apunta...a seguirte, para ayudarte no me veo capaz.

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1099
Re: IA en pic
« Respuesta #9 en: 12 de Octubre de 2012, 06:33:45 »
:mrgreen: olvide poner que era IA xD!

:mrgreen: Que es una IA  :roll:

Inteligencia Artificial.

Lo veo sumamente difícil. Suelen necesitar de bastante cómputo y espacio hacer algo interesante...

eso lo pense antes de pensar el proyecto, y obviamente va a ser muy dificil por lo mismo que tu dices, ahi voy a ir viendo si me queda corto un pic, le colocare dos con una especie de configuracion dual core, como eran antes los dual core en los pc, que se colocaban dos procesadores, hare eso mismo en pics para aumentar la capacidad de procesamiento, y si me siguen quedando cortos usare 4, si me siguen quedando cortos usare 8, y si me quedan cortos usare un arm, si me queda corto lo cual dudo usare 3 arm dos para procesamiento y uno para delegar la carga xD!

Asi de pasada, se ve muy interesante. Pero a menos que seas un muy experto matematico, informatico y electronico, dudo seriamente que lo consigas con PIC's.
Esta claro que con uno sera practicamente imposible. Quedaria la opcion que tu mismo apuntas de poner varios, pero eso es tarea de gigantes, no es facil hacerlos trabajar cada uno por su lado y unir sus respectivas tareas. Es un proceso muy delicado y complejo.
Cosa distinta seria con los ARM, ahi tienes una arquitectura mucho mas favorable y potente, pero no exenta de dificultad por lo que es el proyecto en si mismo.
No obstante si dominas el tema de la IA, probablemente consigas lo que quieres. Recuerdo que hace casi 30 años, con un ZX Espectrum 64, sacaron un programita que tenia cierta "inteligencia", aprendia, asimilaba y simulaba ciertos comportamientos. El Espectrum tenia como CPU un Z80 y solo 64 KB de RAM. El programa consistia en una especie de juego de preguntas. El Espectrum te hacia preguntas y tu las respondias, aleatoriamente repetia ciertas preguntas y si dabas una respuesta distinta, te recriminaba o avisaba de ello. Tambien tu podias hacerle preguntas y se basaba en tus propias respuestas para responderte.

Bueno espero que mi comentario no te desanime, sino al contrario, te de fuerzas para seguir adelante.

Saludos.

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: IA en pic
« Respuesta #10 en: 16 de Octubre de 2012, 14:44:30 »
de momento no he avanzado en la IA, he estado diseñando la CPU desde lo mas bajo, dado que voy a usar 4 pic's en la CPU, estoy diseñando el protocolo para transferir datos internamente, estoy usando 8 bits de datos y 8 bits de direcciones, multiplexadas datos y direcciones, 3 lineas de control ~ACK, ~A/D,~WE
cada pic obtiene una direccion mediante un sistema de DNS, el cual, de momento, proporciona uno de estos 4 pics, pienso usar un pic extra fuera de la placa de la CPU, el cual se va a encargar de delegar tareas, las cuales son recibir datos de sensores y enviarlos a un "core" para su procesamiento, pero volviendo a lo anterior, he logrado conectar dos pic's mediante este protocolo, con el mismo hex, he conseguido usar uno como DNS y otro como esclavo, pudiendo el DNS enumerar al pic esclavo en poco mas de 38uS, cabe destacar que el protocolo
debo pulirlo, probablemente elimine el sistema dns y el pic obtenga la direccion mediante la entrada de 2 pines, para generar las 4 direcciones para los 4 pics.
bueno dejo la libreria aqui


Código: C
  1. //user define's
  2. #define ACK PIN_E1
  3. #define AD PIN_E0
  4. #define WE  PIN_E2
  5. #define BUS input_d
  6. #define DBUS output_d
  7. #define DNS PIN_E3
  8. //end user defines
  9. #define ON  output_low
  10. #define OFF output_float
  11. #define IN input
  12. //RAM DATA
  13. int DIR,DD;
  14. short int d;
  15. /*Function: wait_ack();
  16.   Requires: NONE.
  17.   Returns : NONE.
  18.   User Function?: NO.
  19.   This Function will wait the ACK.
  20.  
  21. */
  22. void wait_ack(){
  23. while(IN(ACK)){}
  24. }
  25. /*Function: rst_bus();
  26.   Requires: NONE.
  27.   Returns : NONE.
  28.   User Function?: NO.
  29.   This Function will float the bus.
  30. */
  31. void rst_bus(){
  32. OFF(PIN_D0);
  33. OFF(PIN_D1);
  34. OFF(PIN_D2);
  35. OFF(PIN_D3);
  36. OFF(PIN_D4);
  37. OFF(PIN_D5);
  38. OFF(PIN_D6);
  39. OFF(PIN_D7);
  40. }
  41. /*Function: send_ack();
  42.   Requires: NONE.
  43.   Returns : NONE.
  44.   User Function?: NO.
  45.   This Function send the ACK, that requires the protocol.
  46. */
  47. void send_ack (){
  48. ON(ACK);
  49. delay_cycles(4);
  50. OFF(ACK);
  51. }
  52. /*Function: write_bus(x,y);
  53.   Requires: Data to send (x) & Address of the target (y).
  54.   Returns : NONE
  55.   User Function?: YES.
  56.   This Funtion will send a 8-bit data to 8-bit address target.
  57. */
  58. void write_bus (int data,int address){
  59. d=0x1;
  60. ON(WE);
  61. ON(AD);
  62. DBUS(address);
  63. wait_ack();
  64. OFF(AD);
  65. DBUS(data);
  66. wait_ack();
  67. rst_bus();
  68. OFF(WE);
  69. d=0x0;
  70. }
  71.  
  72. /*Function: enumerate(); [to be eliminated]
  73.   Requires: NONE.
  74.   Returns : NONE.
  75.   User Function?: NO, automatically detect a new pic and enum.
  76.   The DNS pic will automatically detect a new pic and enum.
  77. */
  78. void enumerate(){
  79. write_bus(DD,0x00);
  80. DD++;
  81. }
  82.  
  83. /*Function: read_bus();
  84.   Requires: NONE.
  85.   Returns : Data of the Bus if the data is to this direccion.
  86.   User Function?: NO, it will be automatically called when another PIC is writing on the data bus, but you  can call, if you need.
  87.   This function will read the data bus, and compare the address target with the address in the RAM, if they match, the function will send the ACK
  88.   and will store the 8 bit data.
  89. */
  90. BYTE read_bus(){int data;
  91. if(!IN(AD))
  92. {
  93.    if(input_d()==DIR)
  94.    {
  95.          send_ack();
  96.          if(IN(AD))
  97.          {
  98.          data=BUS();
  99.          send_ack();
  100.          if(DIR==0xFF&&data==0x00){enumerate();}
  101.          }
  102.    }
  103. }
  104. return data;
  105. }
  106. /*Function: init_bus();
  107.   Requires: NONE.
  108.   Returns : NONE.
  109.   User Function?: YES.
  110.   This function will comunicate with the "DNS" for receive a valid address, if the "DNS" not response, this function will wait forever for the address.
  111.   If the DNS pin is low, the PIC will act as DNS, if is high will act as a Slave.
  112. */
  113. void init_bus(){
  114. enable_interrupts(INT_EXT);
  115. enable_interrupts(GLOBAL);
  116. ext_int_edge( H_TO_L );
  117. rst_bus();
  118. while(1){
  119. if(!IN(DNS)){DIR=0xFF;DD=0x01;break;}
  120. else{write_bus(0x00,0xFF);
  121. DIR=read_bus();
  122. break;}
  123. }
  124. }
  125.  
  126. #int_EXT   //you need to connect the WE pin with the External Interrupt pin
  127. void  EXT_isr(void)
  128. {
  129. if(d==0x0){read_bus();}
  130. }

actualmente, esta escrita para funcionar con solo dos pics, pero voy a modificarla para que funcione con los 4, eliminando el DNS como ya comente, y ademas la verificacion si esta siendo ocupado el bus.
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: IA en pic
« Respuesta #11 en: 10 de Noviembre de 2012, 10:56:52 »
el bus interno de la cpu lo tengo listo, probablemente deba pulirlo un poco mas, pero de momento asi esta bien, ahora estoy creando el algoritmo de manejo de datos de la cpu, tal como recibir los datos, ordenar la informacion en la ram, informar estados al "chipset", este me va a recibir la informacion de los sensores y otros y la va a derivar a los "nucleos", los nucleos van a enviar la informacion a los sensores sin pasar por el chipset, porque sino se va a crear un cuello de botella de inmensas proporciones, programar el chipset va a ser un verdadero lio ya que debera saber a cual "nucleo" enviar la informacion, el cual no debe tener la ram llena, debe saber cual tiene espacios libres, y cual no, cada nucleo va a usar 8 bytes de la ram interna como ram de datos a procesar, probablemente despues la amplie, pero de momento no creo necesitar mas, volviendo al tema del bus interno, las direcciones las obtiene de 2 pines, no son necesarios mas porque uso 4 pics, la direcciones las obtiene de la sgte manera:

  • A0=0;A1=0==0x01
  • A0=1;A1=0==0x02
  • A0=0;A1=1==0x03
  • A0=1;A1=1==0x04
  • direccion 0x00 reservada

aqui el cronograma sobre como transmite la informacion, el cronograma muestra como se transmite 1 byte de informacion, es decir 1 byte de direccion y 1 byte de informacion, a fin de cuentas 2 bytes pero 1 de informacion.



de momento eso he avanzado, pero seguire avanzando, pronto colocare mas avances.

PD: No he avanzado mucho debido a que estaba trabajando de noche, y eso me quitaba mucho tiempo

Saludos!
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: [SUSPENDIDO]IA en pic
« Respuesta #12 en: 25 de Noviembre de 2012, 19:32:24 »
Suspendo indefinidamente el proyecto, hasta que consiga armar un hardware decente, que sea capaz de simular una inteligencia artificial, y aprenda un poco mas sobre manejo de variables.
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.