Hola todos,
En este vídeo muestro una pequeña aplicación que había hecho hace un tiempo y quería mostrársela a ustedes, es una aplicación bastante simple; su objetivo es mover un servomotor (controlar la posición de un servomotor) mediante el movimiento de un objeto, haciendo uso de procesamiento de imágenes.
Esta aplicacion la considero como principios básicos de rootica (un pequeño sistema de visión artificial).Esta aplicación surge a partir de mi necesidad de querer aprender a programar en arduino, y quería empezar con algo básico pero quería hacerlo rápido, entonces me puse a pensar, mmmm no tengo tiempo para aprender arduino en este memento, entonces lo que hice fue programar en matlab (que es mi fuerte) y enviar los datos al arduino, luego prendí y apague un LED, cuando de repente estaba buscando algo en el cajón de mi escritorio y encontré un servomotor, entonces se me ocurrió esta aplicación.
Descargar Los Archivos
o
buen proyecto lo intentare
ResponderEliminarexcelente aporte Alex.... gracias y muchos exitos
ResponderEliminarcomo me suscribo amigo
ResponderEliminaren donde dice SEGUIR POR CORREO
EliminarSaludos
como programaste el arduino o como es el código amigo, me gustaría intentarlo, acabo de comprar un arduino leonardo y quisiera hacer proyecto, buen dia.
ResponderEliminarhttp://edutronic.blogspot.com/2013/08/controlar-una-placa-de-arduino-desde.html
EliminarSaludos
necesito las claves para ver el código de los archivos
ResponderEliminardebajo de los links de descarga hay un boton que dice ver contraseña, sale la dirección del blog, esa es la contraseña para descomprimir los archivos
EliminarSaludos
tienes algunos tutoriales de matlab para empezar a programar, muy buen video (y)
ResponderEliminarHola Gran trabajo el que realizas en este blog y muy buen programa este que has publicado!!
ResponderEliminarQuería comentarte que yo estoy publicando también algunos programas basados en procesamiento de imagen con Matlab como reconocimiento de monedas u otros similares.
Además he hecho un pequeño tutorial sobre este tema y quería comentártelo sobretodo lo de los programas que he realizado para que les eches un vistazo si puedes y me comentes que tal los ves y si podría mejorar algún aspecto:
http://matlabimagenes.blogspot.com.es/
esta bueno tu blog, tiene conceptos básicos para personas que hasta ahora están empezando con el mundo del procesamiento de imanes, pero creo que te hace falta explicar un poco sobre el manejo de vectores y matrices con matlab (pues de eso se basa el manejo de imágenes), porque con aplicaciones de alto nivel la personas suelen decir que Matlab es lento y que no hace procesamiento en tiempo real, pero eso es porque no saben manejar bien los vectores y matrices em este sotware, la mayoría de personas esta acostumbradas a programar el C y el uso excesivo de bucles y condicionales en Matlab ocasiona que el procesamiento se vuelva lento (porque Matlab trabaja sobre ,matrices, y que son las imágenes? pues matrices), entonces hay que entender mejor ese paradigma de programación en C y Matlab.
EliminarOtra cosa que puedes mejorar es que el codigo se resalte sobre la pagina, para que no se vea tan plano el diseño de las paginas.
pero en general esta bien, si quieres mas información sobre procesamiento de imagenes me dices y cuando tenga tiempo subo una Demo Computer Vision que hice
Saludos
disculpa amigo, me sale un herror de myvid, sabes como solucionarlo?
ResponderEliminarmas vien esto es:
ResponderEliminar??? Undefined function or method 'message' for input arguments of type 'char'.
Error in ==> MyVid at 37
warning(message('imaq:obj2mfile:MATload'));
Error in ==> ServoMove at 1
vid = MyVid;
tienes que crear tu propio archivo MyVid.m con imtool de matlab, o simplemente reemplazar esa linea y adquirir directamente la imagen de la Cam.
EliminarSaludos
kokok, bueno y como logro eso? jeje, soy nuevo en esto, mas bien en cunato a matlab ;S disculpa la ignorancia,..
Eliminaren mi blog podrás encontrar como controlar una placa de arduino desde matlab, y puedes descargar el código y pegarle una revisada, Saludos
Eliminarhola amigo estoy interesado en este proyecto he descargado los archivos lo que pasa es que cuando me sale la imagen para seleccionar el color roo la imagen sale en gris y no se diferencian los colores para poder seleccionar el color rojo ojola me puedas ayudar con esto muchas gracias
ResponderEliminaroye amigo a mi me ,arca este error:
ResponderEliminarError in MyVid (line 53)
vidObj1 = videoinput(adaptorName, deviceID, vidFormat);
Error in ServoMove (line 1)
vid = MyVid;
Estudia un poco el código y te darás cuanta del error, ademas es la primer linea, la idea cuando uno descarga un código es estudiarlo y aprender de él, no solo copia y pegar.
EliminarPD: Si después de estudiar y analizar el error no encuentra la solución, lea los comentarios anteriores que ya comentaron ese problema.
Saludos
Oye amigo no podrías mostrarnos como hiciste las conexiones a la placa arduino con el servo motor. Para este proyecto........
ResponderEliminarEs solo conectar el servo a los terminales positivo y negativo y el pin del dato a la salida PWM del arduino.
EliminarMe imagino que el arduino lo estas alimentando con una Fuente o un eliminador verdad .......
ResponderEliminarPara esta aplicacion es nomas para el arduino mega o tambien soporta el arduino uno.......... o algunos otros mas......
esta aplicacion funciona para todos los arduino (se necesitan las librerías de matlab, ver el video en donde explico como hacerlo). No, no estoy alimentado el arduino con una fuente, solo lo conecto al Pc y listo, un servo no consume mucha corriente. Saludos
EliminarOye disculpa si quiero detectar la imagen con una camara web USB como seria el comando, para que este trabajando con la camara web USB.......
Eliminares solo tener los instalados los drivers de la cámara, matlab almacena la nomenclatura de las cámaras en un vector, pero para mayor facilidad (aun no sabes mucho del tema), que utilices imtool, escribe ese comando y te aparecerá una interface gráfica de configuración y luego puedes generar una función automáticamente con esa herramienta. Saludos
EliminarOye una pregunta cual es la contraseña del archivo, ya intente con la contraseña que esta abajo de los licks de descarga pero no funciono.
ResponderEliminaresa es la contraseña, intenta otra vez, fijate que no hallan espacios ni nada
Eliminarhttp://edutronic.blogspot.com/
Saludos
si ya lo cheque y si fue la misma. Gracias. Oye otra pregunta si quiero que siga no específicamente siga un objeto, ahora quiero que sean dos objetos como le puedo hacer? tienes un correo para ponerme en contacto ? Gracias
EliminarHola!! este codigo tambien funciona para arduino nano?? y en windows 8?? porque cuando ejecuto el comando ___.servoAttach() suena como si el arduino se desconectara y ya no funciona para ningun comando. No entiendo porque da este error y ya no se que mas intentar. Gracias por tu ayuda
ResponderEliminarsi funciona para cualquier arduino (ver tutorial del blog de como conectar una placa de arduino a matlab) y si funciona en Windows 8, es mas en el video el pc que uso tiene Windows 8.
EliminarSi no funciona ningún comando es porque no has instalado las librerías para poder comunicar la placa de arduino con matlab, entonces te recomiendo que veas el video. Saludos
http://edutronic.blogspot.com/p/matlab.html
Buenas tardes he estado probando tu código, leyendo y experimentando, mas sin embargo aun no me queda muy claro que es el numero que aparece en la imagen cuando se esta moviendo el servo?
ResponderEliminarson los grados, en mi caso lo programe de 0 a 180 porque mi servomotor solo se mueve 180 grados. Saludos
EliminarBuenas tardes John,
ResponderEliminarHe estado revisando tu código y no sé cómo solucionar lo que me ocurre. Resulta que en la pantalla de segmentación del vídeo sólo me sale un único frame y ya no se mueve ni avanza.
Me sale un warning que no sé si tiene que ver con este error:
Attempting connection .............
Analog & Digital I/O + Encoders + Servos (adioes.pde) sketch detected !
Arduino successfully connected !
Warning: P-file C:\Matlab\ARDUINO\Programa 1\colorseg.p is older than M-file
C:\Matlab\ARDUINO\Programa 1\colorseg.m.
C:\Matlab\ARDUINO\Programa 1\colorseg.p may be obsolete and may need to be regenerated.
Type "help pcode" for information about generating P-files from M-files.
> In ServoMove at 35
Warning: P-file C:\Matlab\ARDUINO\Programa 1\imstack2vectors.p is older than M-file
C:\Matlab\ARDUINO\Programa 1\imstack2vectors.m.
C:\Matlab\ARDUINO\Programa 1\imstack2vectors.p may be obsolete and may need to be regenerated.
Type "help pcode" for information about generating P-files from M-files.
> In C:\Matlab\ARDUINO\Programa 1\colorseg.p>colorseg at 33
In ServoMove at 35
He probado con la función pcode para actualizar los archivos .p pero entonces me salen otro tipo de errores.
Muchas gracias, un saludo.
que versión del matlab estas usando? puede ser que estés usando unas versión 2007, entonces actualiza a las nuevas versiones, o puede ser que estas usando la versión 2014, la versión 2014 no la he probado pero se que ha cambiado cosas acerca de la lectura de toolbox, en el caso de mi código supondría que los archivos .m y .p los tomas como toolbox. Si estas usando la ultima versión no te puedo ayudar porque no la he probado y ya hace bástate tiempo que no uso matlab. Saludos
Eliminardisculpa intente realizar esta prueba pero al momento de que empieza a correr el video este detecta el objeto pero solo me arroja numeros incongruentes jamas tengo cero grados ni 180 solo oscila entre 85 y 100 y despues se detiene la captura de video, otra pregunta , las librerias que utilizas es adioes.pde o adiosrv.pde?
ResponderEliminarsupiste como solucionar este error?
EliminarComo hacer el ejecutable, para no instalar matlab en otra pc ?
ResponderEliminarhttp://edutronic.blogspot.com/2013/07/hacer-un-ejecutable-exe-en-matlab.html
EliminarHola amigo, ¿me podrias pasar la contraseña para poder abrir los archivos comprimidos?
ResponderEliminarhola, necesito ayuda, quiero recorrer una matriz binaria con matlab, cuya matriz es sacada de una imagen que se binarizó, y enviar este recorrido a traves de arduino uno hasta unos motores paso a paso para que ejecuten la accion de moverse, donde un láser quemará dependiendo si reciba un 1 o un 0
ResponderEliminarme puedes ayudar amigo me salen estos errores
ResponderEliminarError using checkForSameSizeAndClass (line 8)
X and Y must have the same class.
Error in immultiply (line 54)
checkForSameSizeAndClass(X, Y, mfilename);
Error in ServoMove (line 13)
red=immultiply(mask, a(:,:,1)); % identificar la region roja
Disculpa me podrías decir como va armado el circuito
ResponderEliminarTal como dice el autor]: Es solo conectar el servo a los terminales positivo (5V)y negativo(GND) y el pin del dato a la salida PWM del arduino...
Eliminarexcelente tu proyecto amigo pero yo tengo un probema con el codigo
ResponderEliminarReference to a cleared variable MATLoaded.
Error in MyVid (line 78)
if (MATLoaded)
y una duda el acceso directo de la carpeta que nos brinde trabaja con una base de datos al parecer debo configurar algo ahi?
Amigo como lo puedo contactar
ResponderEliminar?
ResponderEliminarNecesito ayuda con esto "No appropriate method, property, or field 'servoattach' for class 'arduino'."
ResponderEliminar