[Jderobot-dev] Problema con inercia en Gazebo

Mikel Gonzalez Baile m.gonzalezbai en gmail.com
Lun Feb 20 23:33:08 CET 2012


Buenas gente,

tras mil comprobaciones variando mi código creo estar seguro de que no se
trata de un fallo a alto nivel, y si lo es, no consigo ver porqué podría
ser.

Para acotar  un poco más el problema, la desviación ocurre durante la
aceleración del robot y no tiene que ser una aceleración de 0 a X, sino que
con una velocidad de 400mm/s (con el robot circulando totalmente recto) ,
si aumentamos ésta a 2000mm/s también se desvía, con lo que en principio
descarto la posible opción de la rueda loca, ya que ésta debería
encontrarse ya recta.

Por otro lado, gazeboserver no refresca la velocidad rotacional vía ICE en
su comunicación con introrob, sin embargo en gazebo sí ya que el robot
gira. Como de momento voy a descartar que sea de alto nivel el problema,
voy a meterme con gazeboserver para ver qué ocurre con la velocidad
rotacional y si encuentro algún posible problema a estos desvíos.

Cualquier idea es bien recibida =)

Un saludo!

Maikel.

El 17 de febrero de 2012 02:25, Mikel Gonzalez Baile <
m.gonzalezbai en gmail.com> escribió:

> 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/20120220/32289240/attachment-0001.htm 


More information about the Jde-developers mailing list