¿Cuáles son algunos proyectos relacionados con la visión por computadora o la robótica que podría asumir por mi cuenta que mejorarían una o más de mis habilidades y agregarían valor a mi perfil?

Creo que las sugerencias de todos son geniales, pero también me gustaría agregar algunos consejos sobre cómo su proyecto puede agregar valor a su perfil.

1.) De código abierto su proyecto. Los empleadores potenciales, así como los programas de doctorado de primer nivel, quieren saber si usted es serio acerca del código y la mejor manera de mostrar sus habilidades de programación es hacer que su código sea de código abierto. Le recomiendo que haga que su código esté disponible gratuitamente en Github. No se preocupe si no es un ingeniero de software, su código mejorará con el tiempo. Solo tener presencia en Github le mostrará al mundo que no tienes miedo de dejar que otros miren alrededor de tu base de código. No tener miedo. No se preocupe por las personas que roban sus ideas: como estudiante, realmente quiere que las personas incorporen su código en sus propios proyectos. Una vez que consiga el trabajo soñado (a menudo como resultado de escribir un código de código abierto increíble) y obtenga un cheque de pago increíble, entonces (y solo entonces) debería preocuparse por proteger sus ideas.

2.) ¡ Haz un video de YouTube! Tome fotos y videos de su proyecto a medida que comience a funcionar, luego haga un breve video de YouTube sobre su proyecto. Puede mostrar su robot moviéndose por un pasillo, mostrar algunas nubes de puntos, segmentos de imagen o cualquier salida de visión relacionada. ¡Cuenta una historia y hazla divertida!

3.) Crea una reseña de tu proyecto. Si bien esto podría no ser una publicación oficial, mostrará que está dispuesto a comunicar sus ideas al mundo. Hable sobre su problema, su solución, y relacione algunos trabajos existentes con citas apropiadas. Haga un buen PDF y póngalo en su sitio web. Si otros encuentran valor en sus ideas, podrán citar su “informe técnico” no oficial. Tal vez su redacción sea lo suficientemente buena como para poder enviarla a un taller de la conferencia y obtendrá un “documento” oficial de sus esfuerzos.

4.) Tener un sitio web. Esto es obvio para los estudiantes de ciencias de la computación, pero me sorprende la frecuencia con la que los estudiantes que no son de CS simplemente no tienen presencia en la web. ¿No quieres que la gente se entere de tus increíbles habilidades? ¿No quieres recibir correos electrónicos de ofertas de trabajo? Luego ten un sitio web y muéstrale al mundo que eres un rudo.

Cada una de estas sugerencias se centra en comunicar sus puntos fuertes . Conozco demasiados ingenieros y científicos que carecen de habilidades de comunicación; esto es lo único que está frenando sus carreras. Si trabaja diligentemente en su proyecto y comunica eficazmente sus ideas al mundo, entonces tendrá la receta para el éxito. No tenga miedo de pedirle a otros comentarios durante su proyecto. Trate de explicar lo que está haciendo tanto a los amigos que saben menos que usted como a los compañeros / profesores que saben más que usted.

¡Buena suerte con tu proyecto!

No sé cuánta experiencia tiene con la robótica o la visión, por lo que esta publicación está escrita bajo el supuesto de que no tiene ninguna. Espero que les sea útil.

En mi (algo breve) experiencia. Las personas en robótica a menudo están interesadas en su capacidad para completar proyectos y demostrar la integración del sistema. Mi sugerencia para algo manejable, pero impresionante, sería hacer un sistema de navegación basado en visión para un robot. Lo que necesita es un pequeño robot móvil (con ruedas, muy probablemente) y una cámara. Probablemente pueda encontrarlos en línea por alrededor de $ 100 en total si va bastante deshonesto. Si finaliza, este proyecto le brindará las siguientes habilidades, que, individualmente, solo la visión puede ser muy impresionante, pero el proyecto en su conjunto le brindará mucha experiencia en depuración y hacer que los sistemas funcionen juntos. Estos no están en un orden particular: solo como se les ocurrió.

  • Visión por computadora: procesamiento básico de imágenes y habilidades de percepción robótica Y familiaridad con OpenCV.
  • Inteligencia artificial / mapeo / planificación de rutas: esto depende mucho de lo que realmente quieres hacer. La navegación basada en la visión puede ser bastante simple o increíblemente compleja. Mi recomendación sería comenzar con algo parecido a evitar obstáculos.
  • Probablemente programación Linux (si no estás familiarizado)
  • Programación C / C ++
  • Programación de microcontroladores: necesita controlar el robot de alguna manera. La mayoría de los microcontroladores son bastante fáciles de usar, pero lleva algo de tiempo. No he encontrado que esta sea una habilidad muy práctica en robótica, sino más bien una afición. De cualquier manera, es útil tener la experiencia.
  • Interfaz de microcontrolador: similar y diferente de la programación de microcontroladores. Debe programar tanto en el lado del microcontrolador como en el lado de la computadora para descubrir cómo se comunican estas cosas entre sí.
  • Trabajar con hardware: esta es probablemente una de las habilidades más relevantes para cualquier cosa que la gente de robótica haga (gente de robótica verdadera, de todos modos). Planear las cosas y hacer que funcionen “en teoría” o tener “diseños agradables” es genial, pero hasta que realmente construyas tu diseño y pruebes tu código en el mundo real, te estás perdiendo una de las experiencias más frustrantes y gratificantes de trabajar en robótica. Las cosas se rompen. Las cosas simplemente no funcionan. No tienes idea de por qué, y simplemente te sientas allí probando cualquier cosa y todo lo que puedas pensar durante horas hasta que finalmente haga clic. Pero cuando lo hace, y ves que tu robot se mueve solo, es una sensación bastante increíble.

Lo primero que quiere hacer es crear un problema para usted. Tal vez diga “Quiero hacer un robot que pueda conducir por mi apartamento por sí solo”. Excelente. Sin embargo, eso podría ser difícil para un proyecto por primera vez con solo una cámara web, por lo que usted dice “Quiero hacer un robot que pueda seguir un camino de cinta de color en el suelo”. Impresionante, ¡eso suena como un gran proyecto! Usted compra sus partes y obtiene su cámara web. Arme una base básica de robot con algunas ruedas. Pega con cinta adhesiva esa cámara en la parte superior y listo.

En mi opinión, una de las partes más difíciles de comenzar cualquier proyecto OpenCV / Vision / Perception es saber lo que necesita hacer con la imagen. (En realidad, obtener la imagen de la cámara puede ser un desafío en sí mismo, pero se lo dejo a usted). Para este proyecto, básicamente queremos encontrar la cinta de color en el suelo. Queremos segmentar la imagen en diferentes regiones según el color. Ahora normalmente usa una imagen RGB, por lo que cualquier color es una combinación de rojo, verde y azul. Esto hace que encontrar regiones de la imagen que tengan un color innecesariamente difícil, ya que debe buscar en tres canales de datos. Dejaré que lo descubras, pero hay una transformación simple que puedes hacer para obtener todos los datos de color en un canal. Esto debería ser suficiente para comenzar. Una vez que pueda encontrar de manera confiable la cinta de color (o cualquier objeto de interés, realmente), puede comenzar a armar las cosas y hacer que su robot la siga. Este es un proyecto bastante básico, pero lo preparará para hacer cosas más complejas.

Una gran modificación a esto sería usar una cámara de profundidad Kinect o Asus Xtion y hacer su navegación basada en nubes de puntos. No solo puede usar todo el procesamiento de imágenes en color como lo haría con una cámara web, sino que ahora también puede evitar obstáculos de verdad y tal vez algún tipo de mapeo con las nubes de puntos. Puede obtener experiencia trabajando con Point Cloud Library (PCL), que es similar en naturaleza a OpenCV, y otra gran cosa para agregar a su perfil.

Estoy con la respuesta de David Jensen. La mejor manera es encontrar un problema relacionado con el robot que le interese y tratar de resolverlo con las técnicas de visión por computadora.

Teniendo en cuenta que es posible que no tengas mucho tiempo. Quiero proporcionar un ejemplo simple.

Pasos para implementar una implementación simple de detección de objetos
1. Instalar ROS. (Instale Groovy, ya que en el PR2 simulado no se ha admitido perfectamente en Hydro)
maravilloso / Instalación / Ubuntu – ROS Wiki
2. Inicie el Gazebo, genere una mesa, un objeto y un PR2 en el gazebo.
Puede usar el comando “roslaunch pr2_gazebo pr2_table_object.launch” después de instalar ROS.
3. Mete los brazos y haz que la cabeza de PR2 mire hacia el objeto.
Es posible que necesite ayuda cuando haga que PR2 mire hacia abajo, puede dejar comentarios y le proporcionaré un código fuente.
4. Aprenda cómo recibir una imagen suscribiéndose a un “tema”
cv_bridge / Tutoriales / UsingCvBridgeToConvertBetweenROSImagesAndOpenCVImages – ROS Wiki
5. Después de recibir el tema, use la función de openCV para detectar el color del objeto
Detección de color y seguimiento de objetos

Después de hacer este proyecto, puede aprender las ideas básicas y el uso de
1. ROS
ROS es una herramienta prometedora en el área de robótica, trae muchas colaboraciones en el campo de la robótica. Si conoce ROS, ciertamente puede conectarse con investigadores sobresalientes más fácilmente.
2. OpenCV
Creo que ya lo escuchaste antes. Es una herramienta poderosa en visión por computadora.

Este podría ser un proyecto simple, pero puede familiarizarlo rápidamente con estas herramientas. Después de aprender el uso de estas herramientas, puede hacer mucho más. En otras palabras, el potencial es muy alto .

Ok, hablemos de ideas de proyectos.

Sistema SLAM
Construir un sistema SLAM es una gran opción. Incluso el hardware del robot es opcional al principio. Use su sistema de visión para recuperar información sobre su entorno y reconstruir la información del entorno. Podrían ubicarse en función de la información de visión y es la base de cualquier tarea que el robot pueda hacer.

Construir un sistema móvil
Puede obtener un chasis 4 × 4 con $ 200 e integrarlo con su sistema SLAM. Entonces el sistema podría explorar el entorno por sí mismo. Puede navegar a través de su apartamento, su laboratorio, incluso su campus o su ciudad. Aprenderá toneladas de conocimiento sobre cómo integrar todo el hardware que necesita y controlarlos para que el robot funcione.

Construye un robot caminante
Es más fácil comenzar con el robot andador hexagonal y aprender a programarlo para que se mueva de manera efectiva y elegante. Eventualmente puedes hacer un andador de cuatro o incluso dos piernas, lo que será extremadamente difícil. Eso lo introdujo a la robótica poco activa, que necesita mucho conocimiento sobre la dinámica para mantener el robot equilibrado. Puedes ver cómo el Big Dog camina por el terreno irregular.

Construye un UAV o AUV
También puede construir un quadcopter con $ 400 y escribir su sistema de control de piloto automático. Su software necesita leer la entrada de los sensores y controlar los 4 motores para mantenerlo estable o controlar la trayectoria de vuelo. Con algún sistema de visión, su quadcopter podría identificar los alrededores, y podría evitar obstáculos y / o seguir objetivos.

Si tiene algún sistema de agua, puede construir un submarino con $ 600. Use su computadora de a bordo para controlar el movimiento del submarino y explore el mundo submarino con el sistema visual / sonar.

Otra idea es construir un velero autónomo controlado por GPS, y podría maniobrar el barco para seguir el camino en ciertas condiciones de viento.

Crear una aplicación de brazo robótico
El brazo robot es un jugador nuevo en el campo de la afición. Hay toneladas de buenas aplicaciones demostradas por estos proyectos kickstarter. Con el brazo robótico de $ 400, tú y construyes el robot para escribir, jugar ajedrez contigo e incluso jugar Candy Crash por ti.
7Bot: ¡un brazo robótico de $ 350 que puede ver, pensar y aprender!
Dobot: brazo robótico para todos, Arduino y código abierto

Para integrarse con el sistema de visión, puede construir el brazo del robot para construir bloques, jugar rompecabezas, construir su dominó, selector de Lego (encontrar su pieza de la pila), controlar el hogar (encender / apagar las luces, ajustar los termostatos, quién necesita Nest ) o incluso doblar las toallas. El cielo es el limite.

Robot Generador con Simulador
Otra buena manera de construir algo interesante es a través del simulador de robótica como Gazebo. Puede pensar en crear algún programa de IA para aprovechar la parte estándar, para crear un posible robot para lograr ciertas tareas. Todo lo que necesitas es una buena computadora y seguir generando robots extraños. Es como un proceso en evolución. Genera uno nuevo, y si no funciona, muere. La próxima generación podría estar mejorando. Esto podría darle un robot que los seres humanos nunca podrían diseñarlo, sino que funcionarían de manera eficiente.

Todo depende de la familiaridad en las bibliotecas de Computer Vision y el conocimiento del sistema operativo Robot, que es un tipo de estándar para los robots en todo el mundo hoy en día. Las bibliotecas de OpenCV están bien documentadas y los tutoriales son realmente útiles. También sería de gran ayuda si puede usar bibliotecas PCL para usar cámaras de profundidad como Kinect u otras cámaras primesense que son estándar silenciosas en estos días.

Debería poder usar las siguientes bibliotecas en ROS, por lo que tiene sentido saber acerca de CV bridge, openni, artools, etc., que se usan mucho en robótica.

Una vez que tenga suficiente conocimiento sobre estas bibliotecas, un proyecto interesante sería integrar la percepción con el sistema de navegación del robot. Como comprar un robot es costoso, sería útil que lo intentes en simuladores como Gazebo, stage, v-rep, etc.

Soy un estudiante graduado actual que estudia la aplicación de la visión por computadora en robótica. Hay muchos otros proyectos que tienen mucha aplicación de la visión por computadora en robótica, como el diagnóstico de fallas o el control de calidad en las industrias.

Uso del flujo de profundidad para la navegación, etc. Agregaré más cuando se me ocurra algo. Algunas de las formas más fáciles de comenzar es seguir los tutoriales en el sitio web y extenderlos de la manera que desee. Como se sugirió anteriormente, también tendría sentido tener su código en Github y hacer que su código sea de código abierto.

Mi sugerencia implica mucho MATLAB en el dominio CV:

Aquí hay una jerarquía de proyectos de 4 pasos que proviene del nivel de principiante pero termina en una buena profundidad en la visión por computadora:

CS543 / ECE549 Tarea 1
Primavera 2013 CS543 / ECE549
Primavera 2013 CS543 / ECE549
Primavera 2013 CS543 / ECE549

Los primeros dos reinventan algunas ruedas, pero el tercero es obviamente más interesante al hacer un proyecto de costura panorámica.

En esto, puede explorar muchas posibilidades como deghost.

Hay algunas mejoras interesantes en este libro que probablemente podría obtener de la biblioteca o biblioteca digital de su universidad – Visión por computadora: algoritmos y aplicaciones

Cuando se trata de robótica, IA y toma de decisiones, aquí hay algunos proyectos paso a paso:
CS440 Tarea 1
CS440 Tarea 2
CS440 Tarea 3
CS440 Tarea 4

Son útiles, si tiene alguna idea o enfoque, no dude en declarar.

Recomiendo buscar dispositivos similares a Kinect y OpenNI.

Actualmente estoy trabajando en un sistema de visión para dos robots diferentes que operarán en entornos abarrotados y llenos de humanos, uno como un proyecto de investigación y el otro como un pasatiempo lateral. Ambos usan la combinación Kinect / OpenNI en la parte superior del marco del sistema operativo Robot, y es un sistema muy agradable para trabajar (una vez configurado). Debido a que hay una gran cantidad de funcionalidades integradas, puede mantener un nivel muy alto si lo desea, y no quedar empantanado en los detalles súper finos de CV, mientras sigue moviendo el proyecto muy bien y obteniendo resultados bastante buenos.

Por ejemplo, me las arreglé para unir algunos Kinects en un anillo que ofrece un campo de visión de casi 360 grados y rastrear a los humanos cercanos. Uno de los robots (el pasatiempo lateral) se convirtió de una silla de ruedas motorizada y mediante el uso del software de seguimiento de esqueletos en OpenNI, en realidad fue bastante fácil lograr que siguiera a las personas, reconociera gestos simples, etc. Si quieres ser un poco más elegante, podría profundizar un poco más en el reconocimiento de color / forma, mapeo, etc., todo lo cual con OpenNI lo ayudaría significativamente.

Viniendo de un fondo CAD / CAM, lo que veo es que lo único que intentamos hacer hace muchos años y fallamos, y todavía se necesita hoy, es la identificación confiable de características. Si el software pudiera mirar un dibujo lineal, una estructura metálica en perspectiva o tres vistas; y elegir qué características eran protuberancias, cuáles eran cavidades, qué volúmenes representaban el stock que se eliminaría y qué volúmenes representaban la pieza terminada, el mundo sería maravilloso.

Entonces, casi cualquier dibujo decente podría ser ingerido y presentado como un modelo sólido. Por supuesto, muchos sistemas pretenden hacer esto hasta cierto punto, pero la capacidad de hacerlo con dibujos arbitrarios y sin intervención permitiría automatizar muchos procesos de fabricación. . Además, los algoritmos para lograr esto serían útiles en visión artificial en general.

Si está interesado en un proyecto que emplee OpenCV, puede investigar el mío.
Actualmente estoy trabajando en un teclado háptico para personas con discapacidades físicas, junto con Pranav Sundaram y un amigo más.
Nuestro proyecto es el siguiente: la cámara rastrea el movimiento de la parte del cuerpo de la persona discapacitada: brazo / pierna y busca gestos / patrones en los que se agita el cuerpo. Dependiendo del patrón de agitación, una bola marcadora pasa caracteres en un teclado virtual que se muestra en la pantalla de su computadora. Aquí, aplico el algoritmo de aprendizaje automático para determinar qué está tratando de escribir el usuario. Algo similar a SwiftKey en Android.

Un video de YouTube de nuestro prototipo está aquí:

Para agregar a la respuesta de Po Jen Lai, ROS tiene un tutorial muy completo aquí:

http://wiki.ros.org/&nbsp ;

Sin embargo, realmente no estoy de acuerdo con la mayoría de las respuestas existentes que sugieren pequeños proyectos, como hacer que ROS se ejecute o unir imágenes, etc. Estos proyectos se parecen más al proyecto del curso que cualquier estudiante graduado en esta área puede terminar en unos días. Definitivamente puedes aprender algo al hacerlo, pero incluirlos en tu currículum no ayudará mucho.

La respuesta de Tomasz Malisiewicz es correcta. ¡Obtenga una cuenta de Github y muestre su código! Además de eso, hay tantos proyectos increíbles que están alojados en Github. Por un lado, OpenCV está en Github:

Itseez / opencv

Una vez que comience a escribir su propio proyecto en Github y comience a usar el código de otros proyectos, puede sentir que tiene algo para contribuir (corrección de errores, nuevas funciones, etc.). Si sus contribuciones se fusionan con esos proyectos, eso mejorará mucho su perfil.

Para el lado de la robótica, podría aprender a usar ROS y Gazebo y escribir sus propios algoritmos de planificación de movimiento para el PR2. Potencialmente, eso podría ser pesado en la teoría y una buena tarea de programación (muy probablemente en C ++, pero podría hacer Python si realmente lo desea).

Puerto de código OpenCV a CUDA / OpenCL.

Para una exposición más basada en la investigación, intente encontrar un buen artículo de su interés en ieee u otras revistas, revise y otras referencias, vea la parte de conclusión, allí mencionan dónde se puede extender esa investigación en particular, luego intente agregar más con su conocimiento.

Podrías mirar las competiciones alojadas en Kaggle como punto de partida para inspiración / ideas / experiencia- Competiciones | Kaggle

bueno, podrías trabajar en lo que otros han sugerido o podrías construir uno de estos. simplemente envías a uno de estos tipos para que entreguen tu currículum a mano, y cualquier maldita compañía te seleccionará 🙂
: