[Jderobot-dev] Problema con inercia en Gazebo
Mikel Gonzalez Baile
m.gonzalezbai en gmail.com
Vie Feb 17 02:25:27 CET 2012
Buenas Julio,
sigo d�ndole vueltas al problema que comento, la versi�n de introrob que
estoy utilizando es la nueva y la soluci�n que planteabas, aunque mi bot�n
"stop" se implementa de diferente forma, cuando el hilo de control env�a la
info v�a ICE tambi�n hace primero un setV (mprx-setV()) y luego un setW. He
probado a cambiarlo y sigue igual.
No dudo que sea un problema de alto nivel, aunque me mosquea que con el
anterior introrob y con el nuevo suceda lo mismo. Otra cosa que he visto es
que existe alg�n problema con gazeboserver o gazebo ya que la velocidad
rotacional que le llega a introrob (mprx->getW()) siempre es 0, mientras
que el robot s� que est� girando en gazebo, con lo que no puedo comprobar
el valor que tiene cuando se desv�a.
La velocidad lineal s� se actualiza, y mientras que el robot est� quieto en
gazebo, tras haberle comandado velocidad lineal = 0, si imprimo en introrob
la velocidad que tomo v�a ICE de gazeboserver no es 0 absoluto, sino que
hay un error del orden de 10^-9 (casi despreciable). Este hecho me da a
pensar que pueda ocurrir lo mismo con la velocidad rotacional y pueda
generar alg�n desv�o �?.
Seguir� probando a ver si logro acotarlo un poco m�s el error.
Un saludo y gracias!
Maikel.
El 15 de febrero de 2012 23:51, Julio Vega <julio.vega en urjc.es> escribi�:
> **
> Hola Mikel,
>
> el mundo de gazebo es complejo pero lo de comprobar las masas de las
> ruedas ya me parece excesivo :)
>
> El error que comentas creo que me suena (no s� porqu�). Si est�s
> utilizando el introrob que ya hab�a, f�jate en el "controller.cpp", en la
> funci�n siguiente:
> void Controller::stopMotors () {
> this->mprx->setV (0.0);
> this->mprx->setW (0.0);
> }
>
> A esta funci�n es a la que llamas cuando pulsas en el bot�n "Stop".
> Trata de poner trazas a continuaci�n y verifica que la velocidad lineal y
> rotacional vale un 0 como la copa de un pino.
>
> Esta prueba te deber�a salir como comento. Pero por probar.
>
> Sinceramente, yo creo que el error es a m�s alto nivel. Ocurre que para
> que la velocidad rotacional sea X, la rueda loca del Pioneer gira. El hecho
> de que t� pares ambas velocidades no implica que esa rueda vuelva a su
> sitio, de hecho no ocurre as�. La soluci�n inicial (tambi�n conocida como
> �apa) es tener dos botones; uno para parar la velocidad rotacional, y acto
> seguido, cuando la rueda loca est� en su sitio, empleamos el otro para
> parar la velocidad lineal.
> La opci�n ideal, y si la l�gica no falla, ser�a hacer lo siguiente:
> prueba a cambiar el orden de las instrucciones que te indico arriba, para
> que primero se ponga la velocidad rotacional a 0 y despu�s la lineal.
>
> A ver si damos con el clavo. Saludos,
>
> Julio
>
>
> On 12-02-14 09:29 PM, Mikel Gonzalez Baile wrote:
>
> He seguido realizando pruebas y creo que puedo acotar un poco m�s el
> problema.
>
> El problema no es que tarde en responder en girar en sentido contrario,
> al menos con velocidades de rotaci�n comprendidas entre +-20 deg/s
> (aprovecho para preguntar que velocidad de giro se aproximar�a a la
> realidad) ya que m�s o menos creo que el comportamiento es bastante real
> con el torque a 0.8, que es su valor actual. El problema es el siguiente:
>
> 1) Lanzo gazebo e introrob y le doy una velocidad lineal de +2000mm/s
> (por ejemplo), ning�n problema.
> 2) Paro el robot por completo (o no) y le doy una velocidad lineal de
> -2000mm/s (por ejemplo), ning�n problema de vuelcos ni nada.
> 3) Paro de nuevo el robot por completo, le doy una velocidad rotacional de
> +20 deg/s (por ejemplo) y cuando gira 180� le paro por completo, ning�n
> problema.
> 4) El problema viene aqu�, el robot parado completamente, le vuelvo a dar
> una velocidad lineal de +2000mm/s y durante la aceleraci�n tiende a
> desviarse hacia su derecha (unas veces m�s que otras, pero de una forma
> considerable siempre).
>
> Por eso digo que es como si "persistiera" ese giro previo aunque hayas
> parado el robot por completo, ya que si no se realiza dicho giro, el robot
> no se desv�a.
>
> Estoy probando a modificar los valores de las masas de las ruedas e
> intentando comprender el resto de la configuraci�n, aunque a�n no he
> conseguido un buen resultado, seguir� probando.
>
> Un saludo!
>
> Maikel.
>
> El 14 de febrero de 2012 09:49, JoseMaria <josemaria.plaza en gmail.com>escribi�:
>
>> Uhm... suena a que la acelaraci�n en el giro (torque) es peque�a y por
>> eso tarda en dejar de girar en el sentido que lleva, tiene inercia.
>> Quiz� se pueda mirar esa aceleraci�n del robot pioneer en gazebo, tanto
>> para girar como para traccionar, y probar con otros valores, y/o
>> cambiando las masas por defecto de sus partes. Rebuscando en los
>> ficheros de configuraci�n se puede cambiar. Por ejemplo en
>> models/pioneer2dx.model tienes el par�metro Torque (fuerza de los
>> motores) y el par�metro mass para cada uno de las partes de ese robot
>> simulado. Tal vez puedas probar por ah�.
>>
>> �Qu� velocidades de giro le estas ordenando? Para las velocidades de
>> tracci�n 400mm/s dir�a que es normal-lento, moverse a unos 800-1000 mm/s
>> es m�s realista, y a unos 2000mm/s una chulada de r�pido.
>>
>> �Has rebuscado en la lista de correo de gazebo mensajes que te puedan
>> ayudar?
>>
>> JoseMaria
>> On Mon, 2012-02-13 at 19:00 +0100, Mikel Gonzalez Baile wrote:
>> > Hola gente,
>> >
>> >
>> >
>> >
>> >
>> > durante las pruebas del nuevo introrob estoy comprobando que hay
>> > algunos problemas de inercia en gazebo con el robot pioneer. El
>> > problema que encuentro es un tanto extra�o, por lo que voy a intentar
>> > detallarlo lo mejor posible para ver si me pod�is dar alguna pista
>> > sobre qu� modificar y d�nde para tratar de arreglarlo (o en el peor
>> > caso mejorarlo):
>> >
>> >
>> > Por un lado, si inicio gazebo y comando al robot una velocidad lineal
>> > no hay problema ninguno, ya sea un valor grande o peque�o (entre
>> > 0-400, por ejemplo). Asimismo, si le meto otra velocidad lineal pero
>> > en sentido contrario, tampoco hay problema (ni vuelcos ni nada).
>> >
>> >
>> > El problema viene cuando le comandas una velocidad rotacional, que el
>> > robot comienza a girar, luego le pones a 0 (robot parado
>> > completamente) y le das una velocidad lineal (superior a 200, m�s o
>> > menos), ya que durante la aceleraci�n (hasta que consigue la
>> > velocidad) el robot se desv�a sin un patr�n muy claro. Es como si la
>> > fuerza del giro previo "persistiera" y esto repercute en su normal
>> > comportamiento a posteriori.
>> >
>> >
>> > Espero haberme explicado y que me pod�is guiar un poco para luego yo
>> > tratar de arreglarlo.
>> >
>> >
>> > Un saludo y gracias.
>> >
>> >
>> > Mikel.
>> > _______________________________________________
>> > Jde-developers mailing list
>> > Jde-developers en gsyc.es
>> > http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>
>> --
>> http://gsyc.es/jmplaza
>> Universidad Rey Juan Carlos
>>
>>
>>
>
> _______________________________________________
> Jde-developers mailing listJde-developers en gsyc.eshttp://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>
>
> _______________________________________________
> Jde-developers mailing list
> Jde-developers en gsyc.es
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>
>
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20120217/a97e9f1c/attachment-0001.htm
More information about the Jde-developers
mailing list