TODOPIC
Mecatrónica => Robótica => Mensaje iniciado por: yair_xiox en 02 de Septiembre de 2015, 19:38:58
-
hola, tengo un robot bioloid tipo a con un cm530 con 18 ax-12 cada uno se puede mover 300 grados y necesito saber como calcular la cinematica inversa del robot alguien sabe del tema que me pueda ayudar no importa que tan complejas salgan las ecuaciones yo se programar en matlab y las puedo resolver con este programa, y ademas yo ya vi calculo infinitesimal, calculo integral, calculo multivariado, ecuaciones diferenciales, soy muy bueno en matematicas y en fisica tambien soy muy bueno
-
Hechale un vistazo a la toolbox del dr. anibal ollero de la universidad de sevilla (un guru de la robotica española) para matlab, esta dedicada a la robótica y tiene muchas funciones para cinemática directa e inversa, la toolbox se llama HEMERO.
Un saludo.
-
Es bonito el robotillo.
(http://www.chilerobotica.cl/tienda/35-thickbox_default/bioloid-premium-.jpg)
¿Para qué quieres calcular la cinemática inversa?
Un saludo.
-
La cinemática inversa es lo mas importante en un robot para su posicionamiento en el espacio, ya que teniendo un eje de coordenadas, con un punto espacial, que este dentro de su espacio de trabajo se calculan todos los ángulos que deben poseer las articulaciones del robot para llegar a esa posicion. Mientras mas grados de liberta mas soluciones, algunas imposibles y es un problema bastante complejo.
De esta manera al robot le dices posiciones y el calcula sus propios movimientos para llegar a esos puntos de esta manera se pueden trazar trayectorias y trabajos automatizados.
Es lo contrario que la cinematica directa que debes conocer, todos los ángulos de las articulaciones para saber el punto donde esta, que no tiene mucha razón de ser para el movimiento del robot. Mas bien para saber en que posición esta, pero no para darle un punto de movimiento.
Un saludo
-
Si, lo conozco. Pero en este caso la cinemática inversa de 18 grados no da soluciones simples. Es muy complejo.
Tampoco este es un robot que necesite precisiones milimétricas. Y el controlador embarcado no puede ser muy grande ni muy potente.
Yo veo más realista manejar miembros por separado. Con 3 grados sí puedes calcular cinemática inversa.
Pero incluso en ese caso, creo que sería mejor tener una tabla aproximada de soluciones a la cinemática inversa e interpolar las soluciones intermedias.
Una solución más fácil suele ser plantear la cinemática directa (más sencilla) y resolver la inversa por métodos numéricos.
Para la solución inicial (la semilla) se puede utilizar la tabla anterior y luego con el método de Newton-Raphson, calculas los ángulos exactos.
Un saludo.
-
Otra solución es resolver las ecuaciones (de forma algebráica o numérica) y diseñar un polinomio interpolador o una serie de splines que te den las soluciones.
Pero ¿Para qué necesitas esto?
Este robotillo es muy complejo. Si tiene que guardar equilibrio con los movimientos el problema ya no es cinemático, sino dinámico y la complejidad se multiplica muchísimo. Es como intentar fabricar el Honda Asimo.
Por eso creo que es importante conocer el objetivo del proyecto.
Un saludo.
-
hola, lo que pasa es que quiero hacer que el robot juegue futbol camine se mueva y esquive obstaculos y estos movimientos deben ser muy precisos por eso quiero calcular la cinematica inversa
-
Yo veo más realista manejar miembros por separado. Con 3 grados sí puedes calcular cinemática inversa.
Pero incluso en ese caso, creo que sería mejor tener una tabla aproximada de soluciones a la cinemática inversa e interpolar las soluciones intermedias.
Si haces, eso estas pasando a la robótica colaborativa, en un único robot un problema mas complicado aun, ya que estas proponiendo una solución como los robot que tienen dos brazos colaborarivos, con grados de libertad redundantes, esto quiere decir que en el mismo punto coincidiran varias partes del robot, y esto lo puede romper.con el equilibrio y la dinámica no puedes tratarlos por separado, estos robot ya tienen su software implementado para vencer los problemas de dinamica programando en un alto nivel con un software.
Este robotillo es muy complejo. Si tiene que guardar equilibrio con los movimientos el problema ya no es cinemático, sino dinámico y la complejidad se multiplica muchísimo. Es como intentar fabricar el Honda Asimo.
Estos robot prefabricados vienen con sus tarjetas de hardware y software especifico para implementar cosas como por ejemplo jugar al fútbol, cualtas competiciones de fútbol, o baile de robots y cosas así has visto? Muchos los realizan aficionados a la robotica, imagina que estos fueran como asimo, Se hacen con este tipo de robot y este tipo de software que esta muy unido a los lenguajes de alto nivel como matlab o labview.
De todas formas la cinemática no se deberá resolver para los 18 grados de libertad sera un problema en 3 partes o mas. Se debe resolver la cinemática directa de las piernas de los brazos y de la cabeza h tronco por separado.
De esta manera si el robot debe avanzar se utiliza una cinemática y cuando esta acabe si tiene que girar la cabeza, lo hará al finalizar el movimiento para que los movimientos de brazos tronco y cabeza no afecten al equilibrio, seria imposible, calcular un movimiento de los brazos cabeza y demás guardabdo el equilibrio mientras se mueve. Eso si seria asimo.
Si te fijas en los robot de fútbol y demás primero andan, luego se paran (como si se lo pensaran) se colocan y chutan, si se caen mueven los brazos para levantarse. Etc etc. Pero todo con pausas cambiando de cinemáticas.
Un saludo..
-
hola ya tengo la usb2dynamixel que debo descargar para poder programar al robot con matlab, y para evitar que el robot se caiga tanto creo que solo es inicializar el giroscopio y asi el robot es mas estable y no se cae facilmente
-
ese toolbox de hemero no sirve esta lleno de errores casi todos esos punto .m tienen algun error pasa lo mismo con todos los toolbox que agrego a matlab estan llenos de errores voy a tener que estudiar esas teorias y hacer mis propios programas en matlab
-
ese toolbox de hemero no sirve esta lleno de errores casi todos esos punto .m tienen algun error pasa lo mismo con todos los toolbox que agrego a matlab estan llenos de errores voy a tener que estudiar esas teorias y hacer mis propios programas en matlab
Esa toolbox funciona perfectamente, se usa en una empresa de investigación aeroespacial (en la que trabajaba de becario) y la utilice para crear la cinemática directa e inversa de un brazo de 6 grados de libertad, además de calcular trayectorias de trabajo con splines, todo con la toolbox
Sera mas bien que te has bajado una versión antigua, o que la toolbox no funciona bien con tu versión de matlab, no te digo que no tengan bug pero funcionar funciona.
Yo he agregado esa y la de algoritmos genéticos y no he tenido problemas de errores.
-
hola, juaperser1 ya se me han ocurrido algunas mejoras para el robot, me puedes ayudar a pulirlas un poco, tienes razón con lo del sensor con acelerometro y giroscopio de 3 ejes para darle equilibrio inteligente al robot ademas son sensores muy baratos, para esquivar obstaculos le dejare el dms en el frente que mide distancias entre 10 y 80 cm y a los lados le pondre los dos sensores infrarojos para que detecte obstaculos laterales,crees que es mejor quitarle el sensor acelerometro de dos ejes que tiene que no se sabe si es acelerometro o giroscopio y reemplazarlo por el otro, leyendo me surge la idea como podría diseñarle un controlador para el movimiento en algun eje pero no se que clase de controlador
-
hola, encontre esta tarjeta y no es tan cara Tarjeta GY-80 – IMU 10DOF tiene 10 grados de libertad 3 ejes acelerometro, 3 ejes giroscopio, 3 ejes de sensor de campo magnetico
y tiene un sensor de presion barometrica le pongo un sensor solo con 3 ejes de acelerometro y giroscopio o la tarjeta con 10 grados de libertad que me aconsejas igual no es muy cara
-
hola, la tarjeta es esta http://electronilab.co/tienda/tarjeta-gy-80-imu-10dof/ y encontre otra mas barata con lo mismo pero sin el sensor de presion http://electronilab.co/tienda/tarjeta-gy-85-imu-6dof-9dof/ cual de las dos seria mejor para darle un equilibrio mas inteligente al robot
-
hola yair_xiox, pues la diferencia entre un giroscopio y un acelerometro es de manera resulida, que uno mide aceleraciones y otro mide giros, hay mucha información por internet que te explica muy bien y de manera muy extensa el funcionamiento de este tipo de sensores.
si le cambias el que tiene solo dos ejes por un giroscopio mas acelerometro podras hacer muchas mas cosas y tener mas juego, la tarjeta que pones esta muy completa, demasiado quizás, por que por ejemplo para que necesitas medir la temperatura o la presión barométrica? creo que esta mas pensado para drones.
lo de los 10 grados de libertad a que te refieres? eso no lo he entendido, o no has puesto cual es.
para medir distancias, (de manera básica) están como bien dices los sensores infrarojos, pero estos solo detectan lo que tienen justo delante, en linea recta, es decir si le pones uno en la cabeza, y delante tiene un obstaculo un poco a la derecha se lo va a comer, estudia tambien los sensores por ultrasonidos que miden no en linea recta si no de forma cónica (parecido a como se guían los murciélagos:
(http://1.bp.blogspot.com/-YPi1XbCNVE4/T39HFDozw6I/AAAAAAAAAlU/1g5w8Tse-VA/s1600/HC-SR04%2Bdimensiones.PNG)
para el control de equilibrio, creo que te pueden dar muchas pistas e ideas los proyectos de pendulos invertidos, o seaway, donde hacen un uso intensivo de estos sensores para guardar el equilibrio, en tu caso sera incluso mas fácil ya que le robot tiene mas equilibrio que un pendulo invertido.
te recomiendo también aunque no es importante que si compras por ejemplo 1 tarjeta que funcione por I2C pues todo lo demas tambien, y que no mezcles protocolos de SPI e I2C o rs232, que no pasa nada pero si solo tienes un bus ahorraras errores y trabajo.
un saludo
-
hola, entonces deberia elegir la tarjeta que tiene 3 ejes de acelerometro 3 ejes de giroscopio y 3 ejes de un sensor de campo magnetico, me puedes explicar que se puede hacer con los 3 ejes del campo magnetico, y si con el robot hago que detecte objetos de 10 cm a 80 cm con un sensor dms que ya tiene el robot para detectar distancia de frente en linea recta y en los pies le pongo esos de ultrasonido que dices para que detecte distancia al frente a la izquierda o ala derecha, ademas de esos ya no seria necesario usar los otros dos sensores infrarojos que tiene, o podria ponerle los dos de ultrasonido al frente de los pies y los infrarojos a los lados o no es necesario
-
hola, me puedes ayudar a comparar estos dos sensores de ultrasonido que encontre que venden en mi país y son muy baratos http://www.robot-electronics.co.uk/htm/srf05tech.htm ese es el primero y este el segundo http://bkargado.blogspot.com.co/2013/09/todosobrehc-sr04.html y me puedes explicar mejor a donde debo conectar los pines trig y echo que ahi dice que uno es salida y otro es de entrada pero no se a donde conectar esos pines
-
Pues el sensor de campo magnético de 3 ejes es básicamente una evolución de una brújula digital (si no me equivoco) sirve para orientar el norte, y contrarrestar el error, de por si solo vale poco es necesario usarlo con el acelerometro, de todas maneras, para tu caso sirve de.poco el tema del magnetismo ya que tu robot no debe saber si va hacia el norte o no.
En cuanto a poner tantos sensores tengo una idea, ¿la cabeza cuantos movimientos tiene? Si es capaz de mirar de izquierda a derecha, y arriba y abajo, puedes hacer un barrido con la cabeza, teniendo la distancia, medida de un sensor de la cabeza, y los dos ángulos de la cabeza por trigonometría puedes hacer un mapa de obstáculos y tenerlo en memoria para tu robot. Obviamente este barrido deberá hacerlo cada cierto avance pare ir dibujando de nuevo el mapa de obstáculos, de esta manera no deberás tener tantos sensores.
En cuanto a los dos sensores que pones son los dos de ultrasonidos muy parecidos, creo que uno es mas moderno que el otro (el 5) pero no poseen un protocolo de comunicación y son mas difíciles de manejar.
Necesitaras una uc para mandar una señal de mas de 10us por el trigger, usando un primer por ejemplo, y después deberás medir el pulso que recibes por el echo y dependiendo de lo que tarde esa señal sabrás a que distancia esta el objeto.
Es mejor buscar uno que funcione con algún protocolo, donde por I2c por ejemplo le digas, "mide" y el responda el numero y se acabaron las complicaciones de medir tiempo.
Todo esto esta en las hoja de datos del sensor, no tienes mas que leerla y encontraras ejemplos, y todo lo que necesites saber sobre como usarlos.
Un saludo
-
ese es el problema la cabeza no se mueve y ponerle un motor mas ahi ax12 le daria un grado mas de libertad y serian en total 19 grados de libertad y todos los calculos de movimiento del robot se harian mas complejos
-
hola, ya se que sensores ponerle los dos funcionan por i2c 1-http://www.linio.com.co/Mpu6050-Acelerometro-Giroscopio-6-Dof---Azul-1101138.html
y el 2-http://www.pishrobot.com/files/products/datasheets/srf06.pdf el primero es el de los 3 ejes de acelerometro y giroscopio y el segundo es un sensor de ultrasonido, oye deberia ponerle al robot delantero 2 sensores de esos de ultrasonido uno en cada pie y el de los 6 ejes, pero al robot portero yo pienso que no es necesario darle un equilibrio tan inteligente y que podria jugar bien con el acelerometro de 2 ejes que opinas tambien deberia ponerle uno de 6 ejes al robot portero mas dos de ultrasonido de los que ya mencione o al portero solo los 2 de ultrasonido
-
hola juaperser1 he tenido mas problemas con el robot el programa robot motion plus sigue sin reconocer la posicion del robot y no se porque y cuando le doy start mueve un brazo y una pierna sin parar hasta que lo apago ya compre el usb2dynamixel y se instalo el driver del usb ahora como hago para programar al robot desde matlab con el usb2dynamixel, una pregunta con ese usb se puede programar al robot desde matlab y eclipse al mismo tiempo o solo puedo usar uno de los dos programas
-
Pues, yo siempre te hablo de los servos, ya que he trabajado con robot que tenían esos servos, robotis da una .DLL para que puedas comunicarte con los servos a través de distintos lenguajes de programación, incluidos matlab, c++, c#, labview, etc. Yo los software que he usado para ordenador los he hecho con c#, pero con eclipse puedes hacerlo con c++.
En mi caso mi software de ordenador, utilizaba los datos generados en matlab para manejar el robot, dibujar graficas, y a todo el manejo en general.
He visto casos que, compilados directamente en simulink se han ejecutado en un hardware con un sistema operativo en tiempo real. Mezclando dos programas, pero de eso olvidate. Te llevaría años hacer eso.
Osea que programes en un solo entorno o matlab o eclipse o visual estudio. Pero solo 1, eso no quiere decir por ejemplo que crees un fichero de coordenadas en matlab y lo interpretes desde eclipse.
Lo de que mueve un brazo y una pierna sin parar, yo juraria que alguien han tocado los parámetros de la ROM ( si es de la universidad y lo han tocado mas gente no te extrañe), pero si dices que ya lo has comprobado, no tengo ni idea de que puede ser.
Un saludo.
-
Generalmente se usan acelerómetros en conjunto con giróscopos para obtener buenos resultados a la hora de medir angulos. El acelerómetro por sí solo te puede indicar la inclinacion del punto donde esta instalado, pero el problema es que es muy "ruidoso" y con pequeñas vibraciones se miden grandes diferncias de angulo. El giróscopo en cambio mide VELOCIDAD ANGULAR. Si lo dejas quieto, a salida es cero (o debería), al girarlo con velocidad constante, la salida es un valor fijo. Entonces integrando la salida del giróscopo se obtiene el ángulo de giro. Este sensor es el mejor para medir ángulos si no fuese por un defecto, presenta "deriva" en los resultados de las mediciones y debe ser compensado constantemente. Con qué se lo compensa? con el acelerómetro.
Entonces lo que debes investigar es algoritmos de fusion para giróscopos y acelerómetros. Hay muchos, desde un filtro Kalman, hasta la matriz DCM, o un simple filtro ponderado...
En esta seccion (http://www.todopic.com.ar/foros/index.php?board=65.0) podrás encontrar algo de esos sensores y la combinacion de los mismos.
Saludos!
-
gracias, por sus respuestas al menos guiado por ustedes tengo una idea de que camino seguir aunque este solo en el proyecto
-
hola elgarbe mira este es el sensor que voy a usar en el robot mpu 6050 http://www.linio.com.co/Mpu6050-Acelerometro-Giroscopio-6-Dof---Azul-1101138.html
ahi dice que tiene un DMP capaz de procesar algoritmos Motion Fusion de 9 ejes complejos me puedes explicar eso un poco mejor ya que no lo entiendo muy bien
el MPU-6050 elimina el problema de alineación de ejes que pueden arrastrarse para arriba en partes discretas esto que quiere decir me puedes explicar soy muy novato
con eso de los giroscopios y acelero-metros, y me puedes explicar este sensor se comunica por i2c y el cerebro del robot tiene puertos ttl y rs485 como haria la comunicación
para que sea directa entre el sensor y el cerebro del robot para no poner tarjetas ni nada de eso entre el sensor y el robot ya que el robot va a estar en movimiento constante,
he leido un poco lo de control y las tecnicas que han usado en el subforo uavs lei sobre lo del filtro de kalman y el de compensacion que era mejor que el primero, I2C Digital-salida de datos Motion Fusion 6 o 9 ejes en matriz de rotación, cuaternión, Euler ángulo, o formato de datos en bruto estos son datos del mpu 6050 dime esto significa que como incluye un DMP que procesa algoritmos de movimiento ya no seria necesario utilizar ningun PID, ni kalman ni el de compensacion
-
Nunca he usado el DMP y no creo que sea la solucion magica que buscas.
Es cierto que con e MPU6050 eliminas problemas de alineacion.
Pues como no tienes un puerto I2C en el "cerebro" de tu robot, tendrías que ver si es posible emularlo por software. desconozco totalmente las especificacione del "cerebro" de tu robot, ni como se programa ni nada de nada.
No sé si el DMP se encarga de fusionar los datos del giroscopo con los del acelerómetro y que informacion te da. Incluso tengo entendido que la habilitacion del DMP no es algo simple.
Si nunca trabajaste con un giróscopo ni con un celerómetro estas muy lejos de poder fusionar sus datos y utilizarlos para conocer la inclinacion del robot.
Estas cosas se plantean de a poco, fijate en el foro de uav's que para cada sensor hemos hecho un estudio desde cero y hemos realizado pruebas desde cero con cada uno de ellos, no arrancamos directamente a tratar de fusionar los datos, ya que ni siquiera conociamos lo que daba cada sensor.
no intentes correr antes de aprender a caminar.
Si quieres probar el mpu6050 con gusto te ayudo, pero arranquemos de cero y avanzá paso a paso.
abrazo!
-
ok el garbe ya lei varios post de uavs y tengo mas o menos la idea la otra semana compro el sensor y empiezo a probarlo
-
ok, y ya sabes como lo vas a conectar al "cerebro" del robot?
-
no tengo idea como hago eso ya que el mpu 6050 tiene comunicacion i2c pero el cerebro del robot solo tiene puertos ttl y rs485
-
Como que el datasheet no posee demasiada explicacion de que es el DMP
Solo encontre esto que supuestamente es la libreria de Invesense
https://www.dropbox.com/s/91yioqg11bhgyvk/DMP.zip
Pero que dijeron que no andaba muy bien.
no tengo idea como hago eso ya que el mpu 6050 tiene comunicacion i2c pero el cerebro del robot solo tiene puertos ttl y rs485
Te dieron la respuesta justo arriba
Pues como no tienes un puerto I2C en el "cerebro" de tu robot, tendrías que ver si es posible emularlo por software. desconozco totalmente las especificacione del "cerebro" de tu robot, ni como se programa ni nada de nada.
Aunque tal ves esto sea lento. y no funcione demasiado bien.
Pd: Parece que trae hasta un ejemplo para Code Composer Studio de TI :P, me vino de 10 buscarlo por que tengo el modulo en casa, nomas que nunca lo toque.
-
no tengo idea como hago eso ya que el mpu 6050 tiene comunicacion i2c pero el cerebro del robot solo tiene puertos ttl y rs485
podría ayudar tener las especificaciones del "cerebro" del robot...
saludos
-
claro es un controlador cm-530 http://support.robotis.com/en/product/controller/cm530.htm
-
Interesante tiene micro de la flia:
STM32F103RE
http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164485
http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1031
Se puede programar parece, ya que in cluso la pagina te ofrece los codigos para que lo hagas embebido
http://support.robotis.com/en/software/embeded_c/cm530.htm
Mas que obvio no funcionaria mas las aplicaciones RoboPlus y esas cosas. Pero cuando quieras podes volver a cargar lo que tenia antes, en esa pagina , en Getting started tiene todo, sobre como recuperarlo
Y el hardware:
http://support.robotis.com/en/software/embeded_c/cm530/programming/hardware_port_map_cm530.htm
Mirando los pines y el hardware podria llegar a sacar I2C por los pines de
SIG_MOT6+ y SIG_MOT6-
Con todo lo que tenes que hacer xD es mas facil comprar un integrado y ponerlo :P
-
como te resultaría programar el microcontrolador que trae ese control? el STM32F103, ellos te dan un ide sugerido, las librerías y ejemplos, pero haz programado alguna vez un microcontrolador?
saludos!
PD: Alguien ve a que pines del micro se conecta las salidas OUT1 y OUT2 del "external ports" ? no lo encuentro por ningun lado!
-
si hago eso de mebeded c habria que programar en eclipse gran ventaja soy muy bueno en eclipse, lo malo es que ya no podria programar al robot con matlab y lo quiero programar con matlab me facilita muchas cosas
-
PD: Alguien ve a que pines del micro se conecta las salidas OUT1 y OUT2 del "external ports" ? no lo encuentro por ningun lado!
Son de tension
OUT1 : Output voltage 3.3V (0.3A max)
OUT2 : Output voltage 3.3V (0.3A max)
si hago eso de mebeded c habria que programar en eclipse gran ventaja soy muy bueno en eclipse, lo malo es que ya no podria programar al robot con matlab y lo quiero programar con matlab me facilita muchas cosas
C es igual en eclipse, en MPLAB, en CCS, en IAR, en KEIL, etc, es C, lo unico que cambias es el IDE (interfaz grafica), yo copio y pego los programas al bloc de notas de windows para ver el error o modificarlos donde lo hagas no tiene nada que ver.
Suerte programando con el matlab el micro.
-
A ver OS explico, este robot puede verse como un sistema distribuido, ya que estos servos no son servos como los de radio control, son servos para robótica y todos tienen un microcontrolador de la gama mx28 en adelante cuenta con un arm de st cada servo, con comunicación unidireccional ttl o rs485 dependiendo del modelo del servo.
Este cerebro del que habláis no es mas que un micro con la comunicación. Cuando he hecho robot con estos servos nunca he trabajado con estos cerebros, lo mejor es hacer un hardware, con la comunicación, para los servos, el giroscopio el acelerómetro, el i2c para los sensores, y ya esta, también se puede poner en el ordenador con jn conversor ttl o rs485 a serial com y programarlo con c++, c#, matlab etc ya que robotis te da las DLL para acceder a la memoria ROM y RAM del servo.
Por lo tanto el robot hay que verlo como 18 microcontroladores esclavos, mas un maestro en bus donde el maestro da pautas de movimiento y lee estado de los esclavos. Es así de "fácil" si sabes hacer el hardware claro, habría que leer sensores servos y mover.
Un saludo
-
http://www.ebay.com/itm/ALL-IN-1-USB-to-SPI-I2C-IIC-UART-TTL-ISP-Serial-Adapter/111647165705?_trksid=p2047675.c100011.m1850&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D32933%26meid%3D559d1770851840fab2bf36484a6edca4%26pid%3D100011%26rk%3D1%26rkt%3D9%26sd%3D160914896490, creo que depronto este integrado convierte i2c en ttl pero no estoy seguro si ese me sirva
-
Son de tension
OUT1 : Output voltage 3.3V (0.3A max)
OUT2 : Output voltage 3.3V (0.3A max)
si, si, pero a que pin del micro van...
-
Eso debe ser una parte aparte del HW, no deben ir al micro, debe entrar VDD-GND de la fuente, y pasar por un regulador y ahi tenes esa salida. Nomas que no te dan el esquematico completo. Tampoco veo razon para que se conecte a un pin del micro, a lo mejor VCC del micro, O tal ves posea un regulador parte del micro, como para que no incluya en la tension del mismo.
-
A ver OS explico, este robot puede verse como un sistema distribuido, ya que estos servos no son servos como los de radio control, son servos para robótica y todos tienen un microcontrolador de la gama mx28 en adelante cuenta con un arm de st cada servo, con comunicación unidireccional ttl o rs485 dependiendo del modelo del servo.
Este cerebro del que habláis no es mas que un micro con la comunicación. Cuando he hecho robot con estos servos nunca he trabajado con estos cerebros, lo mejor es hacer un hardware, con la comunicación, para los servos, el giroscopio el acelerómetro, el i2c para los sensores, y ya esta, también se puede poner en el ordenador con jn conversor ttl o rs485 a serial com y programarlo con c++, c#, matlab etc ya que robotis te da las DLL para acceder a la memoria ROM y RAM del servo.
Por lo tanto el robot hay que verlo como 18 microcontroladores esclavos, mas un maestro en bus donde el maestro da pautas de movimiento y lee estado de los esclavos. Es así de "fácil" si sabes hacer el hardware claro, habría que leer sensores servos y mover.
Un saludo
Ok, pero por lo queparece yair conoce mucho de matlab y parece ser su "fuerte".
Quizá lo que podría intentar es usar el "cerebro" (me gusta como lo ha llamado :)) para controlar los servos conectandolo a matlab. Luego intentar con el menor hrdware posible la conexion de los sensores tambien a matlab, por ejemplo con ese conversor USB - I2C. Y ya con la info en matlab que trate de hacer algo. como lo ves?
saludos
-
Eso debe ser una parte aparte del HW, no deben ir al micro, debe entrar VDD-GND de la fuente, y pasar por un regulador y ahi tenes esa salida. Nomas que no te dan el esquematico completo. Tampoco veo razon para que se conecte a un pin del micro, a lo mejor VCC del micro, O tal ves posea un regulador parte del micro, como para que no incluya en la tension del mismo.
bueno, está bajo el título External Port, me dió a pensar que serían esas salidas TTL que yair ha mensionado. Si el micro no tiene pines libres disponibles en el exterior, pues el I2C por software no va y lo unico que queda es lo que puse en el post anterior o eliminar un servo como vos sugeriste.
sds.
-
Una pregunta, yair, has hecho alguna prueba de ese robot? digo, ya te podes conectar a matlab para manejarlo/programarlo?
que avances tenes?
saludos
-
las salidas ttl son comunicacion a 3 hilos que la tienen todos los motores del robot que son 18 y esta comunicacion tambien la traen algunos sensores del robot ttl o rs485 en el cerebro del robot hay púertos ttl y rs485 para conectar varios sensores
-
hola, elgarbe ya voy a mirar lo de matlab hasta ahora hice pruebas solo con roboplus hice un programa para que el robot subiera los brazos cuando detectara presencia con el sensor dms pero en vez de eso le di start y mando ambos brazos para atras y dio una patada, no se si le quedo ese progranma cargado y ahora le doy start y mueve un solo brazo y una pierna sin parar
-
Ok, pero por lo queparece yair conoce mucho de matlab y parece ser su "fuerte".
Quizá lo que podría intentar es usar el "cerebro" (me gusta como lo ha llamado Smile) para controlar los servos conectandolo a matlab. Luego intentar con el menor hrdware posible la conexion de los sensores tambien a matlab, por ejemplo con ese conversor USB - I2C. Y ya con la info en matlab que trate de hacer algo. como lo ves?
déjame que consulte una cosa con robotis y contesto a eso.
las salidas ttl son comunicacion a 3 hilos que la tienen todos los motores del robot que son 18 y esta comunicacion tambien la traen algunos sensores del robot ttl o rs485 en el cerebro del robot hay púertos ttl y rs485 para conectar varios sensores
la comunicacion TTL no es comunicacion a 3 hilos por asi decirlo, un cable es masa, por el otro van de 10 a 14 voltios (12 recomendado) y un único cable de comunicación. Este modelo de servo es mas lento en la comunicacion ya que el maestro pregunta y espera a recibir por pulling a todas las id de los servos, los rs485 son mejores y mas robustos pero bueno en el tema de la comunicación pero bueno.
-
bueno, a mi es que el "cerebro" este, no me gusta sinceramente:
1º para poder comunicarlo con un PC sin cables debes de conectarle un modulo "ZIG-110/BT-110 wireless communication module can be connected to CM-530"
2º no lo veo una plataforma lo suficientemete abierta ni expandible.
3º has pensado en remplazar eso por esto: http://en.robotis.com/index/product.php?cate_code=131010
bueno puedes manejar el robot con matlab directamente si, pero necesitaras el usb2dynamixel o alguna manera de conectarte al PC.
y aqui tienes, que supongo que lo habrás mirado ya como conectarte directamente al bus de los servos para manejarlos independientemente del "cerebro" ese, creo que para manejar el robot con matlab lo mejor es meterte directamente en los servos y con la información recibida con la cinematica directa conociendo los ángulos que matlab haga la inversa y cree los splines de movimiento:
aqui tienes como comunicarte con el bus de servos, yo olvidaria el robot como tal, y dividiria las tareas por secciones de servos:
con el dynamixel SDK: http://support.robotis.com/en/ y sigue esta ruta en la derecha "Software Help/Software development kit/Dynamixel SDK/USB2Dynamixel/Window comunication1.0/MATLAB"
hay tienes lo necesario para manejar los servos desde matlab y con esa guia electronica lo conocerás todo para manejar un robot con esos servos, yo me guié de ella para crear y programar un brazo que iba embarcado en un dron, el programa ya embarcado era en c, mi tarea fue hacerlo funcionar y que siguiera trayectores, homing etc etc cuando no estaba embarcado, para que lo embarcaran luegos los de avionica y lo que yo hice fue un programa en C# que leia las trayectorias generadas en matlab con hemero, esas trayectorias no las generaba yo, era un compañero, pero mi programa interpretaba las cordenadas, y movia el brazo, hacia las gráficas, sistemas de seguridad etc etc, y toda la información la obtuve de ese manual electronico y echarle horas:
los servos que lleva ese brazo en la pinza son los mismos que lleva tu robot.
supongo que todo esto te lo has estudiado ya no? : http://support.robotis.com/en/product/bioloid/bioloid_prem_main.htm
cuando dices que sabes mucho de eclipse? a que lenguaje te refieres? java? C++? por que eclipse solo es el IDE.
lo que yo haría sinceramente y no te ofendas si te digo que no estas preparado para algo te lo digo de como amigo y no te quiero engañar, crear un hardware, dado que tu no tienes conocimientos para ello intentaría estudiar colocarle esto: http://en.robotis.com/index/product.php?cate_code=131010 ya que tiene puertos libres para ponerle sensores y tal, pero habria que estudiarlo si se puede meter por hay el I2C por cambio de pines o lo que sea.
crear los algoritmos de control en matlab, y matlab tiene un generador de código en C, este codigo no esta ni mucho menos para cogerlo y meterlo en el micro, pero si para ir desgrosandolo y adaptar el C para programar el ST, todo esto te lo digo de manera teórica y no se que problemas te puedes encontrar por el camino.
es o eso, o lo de la ruta que te he puesto para hacerlo todo con matlab.
un saludo
-
hoal juapersr1 gracias por intentar ayudarme pero ya tome una decision y elegi algo mas realista cambiare mi proyecto de grado por un robot movil de 4 ruedas controlado por un pic 18f4550
-
lo de eclipse tengo experiencia programando en java, pero la verdad no lo volvi a tocar desde el 2011 y si era un pasado pero todo lo que no se practica constantemente simepre se olvida y sobre todo en la programacion
-
Si ya tenes el micro entonces dale para adelante, si ves que te quedo chico de memoria o de modulos luego cambiaras.
Ahora Asumiendo que todavia no compraste el micro:
Como consejo por ahi buscate algun micro mas nuevo que el PIC18F4550, se que es famoso al igual que el PIC16F84 /877/887 y el PIC18F2550, pero el precio de estos, comparado con los nuevos es mayor.
Ademas los nuevos suelen traer muchas mas cosas
Un ejemplo para que te des cuenta:
PIC18F4550 - U$S 3.65
PIC18F45K50 - U$S 1.99
No posee diferencia de memoria, tienen los mismos pines, tienen USB, tienen todo lo mismo. La diferencia esta en que el 4550 tiene oscilador interno de 8Mhz y 32Khz. Y el nuevo tiene un oscilador interno de 16Mhz. Que si usas USB debes poner cristal y no habria cambio
El nuevo ademas agrega:
- Mayor numeros de canales para el ADC, esto en parte esta bueno para no estar restringido donde colocar una entrada A/D ( de 13 entradas a 25 )
- Posee un ADC de 5 bits, no es mucho pero si lo necesitas, es mejor que nada.
- Referencia interna de voltaje
En si vas a tener que buscar segun lo que necesites. Si necesitas una 2 UART (supongamos PC + RS485 para los servos, si es que los haces con estos) te conviene buscarte otro micro por ejemplo.
Necesitas mas pines ? le agregas mas, etc
Para darte una idea, de los PIC18 con USB, el PIC18F4550 es el tercero mas caro.
Incluso mas caro que comprarse uno de 100 pines con 4 veces mas memoria de programa con 4 UART + 2 SPI + 2 I2C. ( aunque este no posea EEPROM )
Fijate nuevamente que necesitas, analiza que tenes que conectar al micro, cuantos pines te va a llevar, etc
PD: el proyecto ese lo veo mas alcanzable, todavia no se lo que va a hacer el robot. Pero lo veo mas factible ya que se dejan muchas cosas afuera.
-
hola killer, necesito que me ayuden me den mas ideas de cosas que puedo hacer con un robot movil con 4 ruedas gobernado por un micro 18 a talvez uno 24 ya que aun no tengo el micro y el primer problema es que en la universidad el profesor lo primero que va a decir es que es un proyecto demasiado facil y sin complejidad alguna para un proyecto de grado y la investigacion y todo eso, si me pueden ayudar añadiendole alguna clase de calculos de control de alguna cosa, con alguna tecnica de control que le pueda aplicar al robot, porque por ahora estoy pensando en agregarle dos camaras al robot para que tenga vision artificial con la tecnica de vision estereoscopica y algun sensor de presencia y agregarle algunos otros sensores hay una parte que se me hace facil el micro y agregar sensores y todo eso pero lo que se me hace dificil es como armar la parte externa del robot que partes comprar y todo eso necesito de su ayuda para poder hacer un proyecto bien argumentado que este a mis alcanzes y no se salga tanto de mis conocimientos, yo he visto que le podria agregar un arduino al micro ya que el arduino ayuda mucho a controlar algunos sensores, o no se si seria mejor en vez de arduino una raspberry pi, alguno de esos dos le quiero agregar al proyecto ya que los dos modulos se pueden comunicar con matlab, pero necesito de su ayuda ya que saben mas que yo denme mas ideas de que se puede hacer con un robot movil
-
Lo que podes hacer con un microcontrolador, lo podes hacer con un arduino. ya que un arduino tiene un microcontrolador.
Lo unico que te permite arduino es no regenar tanto con el hardware, ya que vas a comprar la plaqueta hecha, ya posee un bootloader, compras un modulo y lo conectas. Por otro lado tal ves necesites crear un shield que sirva a tu proposito, como por ejemplo manejar los motores etc.
Con respecto a la construccion del robot , ahi no te puedo ayudar ya que jamas hice uno en mi vida, soy anti robot y es lo que muchas veces no comprendo de la gente, todos quieren hacer un robot :/.
Si compras un raspberry PI para un robot, espero que esa placa haga todo. Ya que va a tener un linux montado de seguro. y ahi vas a tener que realizar todos lso calculos. Cero MATLAB para vos en ese caso, sino seria claramente poner un tanke para matar a una mosca.
Lo bueno es que tal ves te puedas comunicar por Ethernet y que sea mucho mas rapido la comunicacion con la PC.
Y antes de comenzar tenes que fijar exactamente que queres que haga el robot. Queres que se mueva por algunos puntos ? Que siga una linea ? Vas a usar camaras? una camara aerea que tome la posicion del robot y lo maneje o camaras al frente del robot?
Y tambien esta lo del profesor, decile que pensas hacer y el te va a decir si es poco/mucho, de nada sirve hacerte la cabeza con que es poco y luego va un compañero tuyo y presenta una alarma "anti-robo" con un trasistor (No ese extremo pero me paso algo parecido). Y hasta por ejemplo preguntarle que le gustaria ver en el robot.
Por ultimo, no se que tan dificil sea construir un robot, lo que mas me confundiria seria encontrar donde te venden una carcaza + motores + ruedas, o si tenes que hacerlo vos mismo la carcaza, lo cual yo pienso en el precio, y veo que se va para arriba. Por que seguro no es cualquier motor, es un motor con reduccion, que tenga un encoder para medir la posicion, etc etc etc.
-
pues por ahora quiero hacer que el robot tenga movimiento omnidireccional y ponerle dos camaras al frente del robot para usar vision estereoscopica para que perciba mejor la profundidad, y algun sensor para que detecte la distancia por ultrasonido, segun lo que dijiste mejor me compro un arduino y descarto lo del raspberry, ademas con el arduino se me facilita muchisimo lo de los sensores, o que piensas tu si mas bien subo el pic a un pic 24 para hacerlo en un pic que gobierne los motores y los sensores o talvez asi sea mas dificil
-
Primero buscaria si hay modulos para un Arduino que sean capaces de manejar los motores. Luego si agregas camaras va a depender si es que pasan por el arduino o no, si no pasan por el aruidno y van derecho a la PC, entonces se vuelve mas facil.
Pero si decidis que pase los datos por el Arduino tal ves se quede corto el arduino. Adems vas a tener que ver si te dan todas las salidas del arduino como para que puedas manejar todo.
Igual creo que dijiste que estabas estudiando Ing. Electronica o me parecio leerlo. Al menos en mi universidad no puedo presentar nada con una placa pre-fabricada como lo es un arduino y todos los modulos. Eso tambien vas a tener que preguntar.
-
si tienes razon debo preguntar eso, estoy estudiando ing mecatronica
-
hola killer un amigo de la u me dijo que si se puede usar arduino pero depende de la aplicacion mientras que todo no lo haga solo con el arduino y haga mas cosas si se puede