2009-02-12 23 views
22

Incluso antes de aprender a programar me he sentido fascinado con la forma en que los robots podrían funcionar. Ahora sé cómo se escribirían las instrucciones de programación subyacentes, pero lo que no entiendo es cómo esas instrucciones son seguidas por el robot.¿Cómo crear robots de la vida real?

Por ejemplo, si escribía este código:

object=Robot.ScanSurroundings(300,400); 
if (Objects.isEatable(object)) 
{ 
    Robot.moveLeftArm(300,400); 
    Robot.pickObject(object); 
} 

¿Cómo este programa será seguido por la CPU de una manera que haría que el robot realizar la acción física de mirar a la izquierda, moviendo el brazo , ¿y tal? ¿Se hace principalmente en lenguaje binario/ASM?

Por último, ¿dónde iría si quisiera aprender a crear un robot?

+1

Ir a la tienda de Lego NXT. –

Respuesta

5

En la mayoría de los robots modernos, tendrías un modelo cinemático inverso del mecanismo, en este caso el brazo, que convierte las coordenadas espaciales en posiciones para las articulaciones del brazo. Estas articulaciones generalmente se mueven con servomotores. Para mover suavemente el brazo, necesita una serie de posiciones de unión intermedias que definan la ruta que desea que siga el brazo. También debe preocuparse por las velocidades de las articulaciones, que en conjunto controlan la velocidad de la "mano" al final del brazo.

Mientras el brazo se mueve, su sistema de servos recibirá comentarios sobre su posición real. Los servosistemas simples pueden usar un circuito de retroalimentación PID básico para ajustar los motores. Los sistemas más complejos incluirán parámetros de avance que compensan la inercia, la gravedad, la fricción, etc. Estos pueden volverse muy sofisticados.

La verdadera diversión comienza cuando tienes que tener en cuenta los obstáculos en el espacio alrededor del robot. Tienes que sentir el obstáculo y descubrir cómo evitarlo y aún llegar al destino.

1

Tendría que tener un controlador que se conectara con el hardware (muy probablemente un STAMP o FPGA con motores, etc.). Luego llamaría a la función me.moveLeftArm (x, y); y el conductor sabría que moveLeftArm() significa mover un actuador por X segundos/milisegundos/grados.

Estoy seguro de que podrías encontrar un kit que haga programación de robots.

0

Probablemente sea más fácil obtener un lenguaje de más alto nivel para describir los comportamientos e inteligencia del robot y dejar que el lenguaje de bajo nivel se adapte a las acciones (mover el brazo, caminar, detenerse). Hay mucha investigación en lo que se llama arquitectura BDI para agentes inteligentes, google for it.

Puede encontrar más en este site, es una DSL para describir el comportamiento del agente en Java. Se llama intérprete de Jason y el lenguaje es AgentSpeak (L).

3

Los robots funcionan interactuando con el hardware. El puente de su código a menudo se realiza a través de diferentes tipos de puertos de E/S. Simplemente podría ser un cable RS232 por ejemplo (usted conoce esos viejos puertos COM1). Las piezas de hardware estarán compuestas por motores (como servo motors) y sensores (como ultrasonidos para detectar obstáculos, láseres para obtener distancia o interruptores).

No necesita usar ensamblador para hacer eso, hay muchos idiomas (si no la mayoría) que pueden hacerlo pero requiere conocimiento sobre cómo interactuar con el hardware. Como escribir un controlador. Requiere al menos una electrónica básica también si quiere construir el robot usted mismo.

Si le interesa, le sugiero que eche un vistazo a this book que es una buena cartilla.

Además, podría intentar programar un Basic stamp, es bastante fácil seguir los tutoriales y le dará un buen comienzo sobre cómo construir robots. No es demasiado caro y estarás interactuando con el hardware en muy poco tiempo.

¡Buena suerte y diviértete!

3

Si obtiene la programación suficiente, puede descubrir que ni siquiera necesita un robot para probar gran parte del código más difícil que necesitará para escribir ... (por ejemplo, hacer que un robot vea y reconozca) una escena siempre me fascinó ... Pero en algún momento, me di cuenta de que el robot físico requerido para este problema es la parte fácil ... ¡El software es la parte más difícil!) ...

+0

¿cómo es la parte fácil? –

17

Al final, algo tiene que descomponer los comandos de alto nivel en comandos de muy bajo nivel. Algo tiene que traducir "Levantar la copa" a cómo mover el brazo (en qué ángulos deben estar las articulaciones) a los comandos de hardware que realmente hacen girar los motores.

Hay marcos que intentan proporcionar una cierta cantidad de esta traducción, incluyendo (pero no limitados a):

Sin embargo, dado que la investigación en robótica está interesada en cada capa del sistema, no hay muchos sistemas que proporcionen toda la pila de traducción. Si usted está buscando en entrar en la robótica, hay varios sistemas que tratan de hacer esto (de nuevo, una muestra aleatoria) más fácil:

A falta eso, sitios tales como Make incluso proporcionan guías para construir proyectos de robots para partir. ¡El desafío es encontrar un proyecto que te entusiasme e ir a la ciudad!

+1

+1 para Lego Mindstorms como punto de partida – lpfavreau

1

Si desea una alternativa de Java, puedo recomendar el libro Linux Robotics. Tiene mucha información buena acerca de dónde obtener kits, piezas y sensores, así como listados completos de código fuente en Java.

2

Encuentra un equipo local de robótica FIRST y ser voluntario para ser un mentor. FIRST es una competencia de robótica para niños de escuela media y secundaria. El objetivo es que los niños hagan todo el trabajo para construir, programar, probar y ejecutar el robot, pero aún tendrá muchas oportunidades para profundizar y aprender realmente el software. Están utilizando LabView por National Instruments, y, a partir del 8 de febrero, acaban de comenzar la competencia regional para este año. LabView es un entorno de programación gráfica que se conecta con el hardware de NI para permitirle programar motores, actuadores y sensores.El material de NI es bastante elegante y es bastante fácil de usar, además se proporciona gratis a cada equipo, por lo que no tiene que comprar el hardware y el software usted mismo (al menos para comenzar). Además, obtiene la ventaja adicional de ayudando a una nueva generación de ingenieros a comenzar.

1

Comparto el mismo picor .. Estoy a punto de comprar mi primer Beagle Board y algunos sensores/servos que pueden usar el bus I2C. Voy a utilizar un diseño basado en eventos y una implementación cruda de fibras (fibrillas, si se quiere) que son hilos del espacio de usuario.

Básicamente mi diseño requiere un proceso, que inicia un hilo por grupo de servos. Cada subproceso del administrador de grupo lanzará x # de fibrillas, 2 por servo (probable). Una fibrilla se usa para controlar el servo, la otra fibrilla maneja eventos de ese servo (es decir, un objeto es demasiado pesado para recogerlo, un objeto se cayó, etc.).

El proceso principal tiene la tarea de escuchar eventos de todo lo demás y de asegurarse de que la 'mano derecha sabe lo que está haciendo la mano izquierda' mientras avanza y negocia obstáculos.

Me va a tomar la mejor parte de dos años para conseguir algo que funcione hasta el punto de que estoy orgulloso de ello ... pero anticipo muchas noches agradables llevándolo a ese punto.

Probablemente esté usando un Microkernel, no Linux.

estoy haciendo esto tanto para afilar a mí mismo con los métodos por eventos, así como mi deseo de hacer mi propia R2 :)

1

de inicio con Phidets si está familiarizado con .Net. Puede consultar TrossenRobotics.com para obtener piezas.

El kit de interfaz de Phidgets es un buen lugar para comenzar. Desde allí, puedes obtener un servocontrolador y comenzar a construir cosas que se muevan.

Los foros de Trossen también son un buen lugar para revisar los proyectos de otras personas. También tienen un nuevo centro de datos con muestras de código/proyecto. No trabajo para ellos ... solo un cliente feliz.

0

muchas buenas respuestas aquí. su pieza de código de fantasía no está muy lejos de cómo lo haría en un lenguaje de nivel superior, como C# sobre MS Robotics Studio. Solo tenga en cuenta que incluso las cosas simples (como "mover el brazo hacia la izquierda") están muy cargadas con "sesgo de información".

hasta el metal, un brazo robótico es un conjunto de eslabones y [posiblemente] articulaciones motorizadas. Por lo tanto, "mover el brazo hacia la izquierda" (o cualquier punto en la coordenada) ya es una tarea muy compleja de calcular (busque D & Tabla H, cinemática directa e inversa para manipuladores).

También existe el concepto de que mover el brazo hacia la izquierda supone que no hay nada en ese espacio y no se producirá una colisión. Si el entorno no está restringido, entonces necesita implementar un sistema de detección de colisión, a menudo basado en algún tipo de sensor (cámara) y algoritmos de visión artificial.

En resumen, el lenguaje y la interfaz de hardware a menudo son triviales en comparación con el modelado del sistema para lograr el comportamiento deseado.

4

Solo tengo que agregar algo sobre Arduino projects a esto porque no lo veo mencionado anteriormente.

Hay una barra muy baja para entrar en los proyectos de robótica basados ​​en Arduino.Los programas de "boceto" que escribe para el hardware son muy fáciles de recoger y similares a la sintaxis C. Si no conoce sus transistores de las resistencias, estas placas todavía le permiten hacer mucho con el hardware adicional y "shields" adicionales que extienden la placa base de la computadora.

Es muy divertido, muy flexible y algo para que tu código interactúe con el mundo real. Además de su "Hardware abierto" muy similar al software de código abierto.

Cuestiones relacionadas