Un principiante en las Artes Gráficas Una experiencia en un sector que nos envuelve… El blog personal de David Pinelo.

27abr/1013

Simulador de Quadrotor en Gazebo

Nuevo proyecto extraño que traigo a estas páginas. Dentro del Máster que ya os he comentado estoy realizando, y para una asignatura he realizado una implementación de un simulador de vuelo de un Quadrotor.

Para ello, he utilizado un simulador multirrobot ya existente, Gazebo, que forma parte del proyecto Player/Stage. A grandes rasgos, hay que implementar un Controlador que simule la física del quadrotor (para ello he utilizado el modelo desarrollado en la tesis doctoral de Samir Bouabdallah). Además, he desarrollado una pequeña interfaz en Qt, que utilizando libgazebo (librería de comunicación con Gazebo) permite interactuar con el quadrotor.

Al utilizar Gazebo, permite simulaciones multirrobot, adjuntar cámaras, mundos virtuales complejos...

Los fuentes, podéis descargarlos desde el proyecto que he abierto en Sourceforge.

Además, tenéis disponible la memoria del trabajo, con una explicación de "cómo" serían las líneas básicas de construcción de un simulador robótico (de un quadrotor) y las líneas generales de implementación del quadrotor en Gazebo.

Ahora en inglés.

I have developed a Quadrotor simulator using Gazebo. Gazebo is a 3D multirrobot simulator system, that is part of Player/Stage project. So, I have developed a Controller for Gazebo, that implements the dynamic model of Samir Bouabdallah to simulate the flight. I need to make several changes on the Gazebo core to get some information of the body of Quadrotor, to implement a new data structure to interact with or to set the absolute force applied to.

I have developed a Qt client application too. It is an example of how interact with Gazebo using libgazebo, and implements several loopback controllers that set the angular velocities of each rotor to control the flight.

You can download from Sourceforge.

In next post I will try to explain with more details.

Comentarios (13) Trackbacks (0)
  1. Hola David!
    Excelente código!!!!!!

    Tengo un problema eso si:
    El controlador al parecer es inestable o algo pasa con la simulación… al rato se vuelve loco, choca piso y rebota bien lejos. jaja

    Estoy usando la versión svn 8700 de gazebo. Adapté tu código, hay cambios en como se hacen las cosas como por ejemplo ya no existe World::Instance()->GetModelByName().

    Me gustaría compartir estos cambios. Puedes darme acceso al svn en sf.net? Mi nombre de usuario es lcasassa.

    Muchos saludos!

  2. Hola!!!

    Gracias!!! Es cierto que la versión que dejé tenía el controlador inestable. Al menos si controlabas a través de Liapunov, o con un PID… Sin embargo, hice algunas pruebas con un controlador LQR y ya sí conseguía estabilizarlo. Sin embargo el código de esas pruebas es infumable y hasta que no lo depure un poquito, no lo he puesto en público… sería casi basura.

    Perdona por haber tardado tanto en responder pero como siempre, he tenido algún que otro lío. Ya tienes acceso en el svn de sourceforge.

    Saludos

  3. Hola David,

    gracias por el excelente trabajo.
    Solo una pregunta. El enlace a tu memoria no funciona, y me gustaria mucho poder verla para entender mejor el modelo matematico que seguiste para hacer el quadrotor. Puedes actualizar el enlace por favor?

    Muchas gracias,

    Pablo.

  4. Muchas gracias. Ya tienes el enlace actualizado.

    Saludos

  5. Aunque no tiene nada que ver con el articulo, excelente blog, de casualidad lo encontré y no me arrepiento.

    Saludos desde Chile :D.

  6. Gracias… últimamente lo tengo descuidado… me desborda el trabajo!

  7. First I’d like to say that your work is very good and important for the Gazebo community.
    I’m trying to use your quadrotor world for gazebo but I’m having the following error:

    GAZEBO: “Error Loading Gazebo”
    GAZEBO: ”
    /home/adias/Download/gazebo-0.10.0/server/Simulator.cc:235 : Exception: Failed to load the World
    /home/adias/Download/gazebo-0.10.0/server/controllers/ControllerFactory.cc:66 : Exception: Unable to make controller of type quadrotor_force

    I think that the problem is in the patches, maybe I’m doing something wrong.
    It’s possible to make available the gazebo-0.10.0_patch directory to try to install?

    Thanks
    André Dias

  8. Hi André,

    I upload to the blog the patches to the server and libgazebo directory to apply to the standar gazebo 0.10.0 distribution. This files are gazebo_libgazebo_folder.patch and gazebo_server_folder.patch. Try and tell me what happens.
    Regards

  9. Hi David,

    I use the patch and install the gazebo and everything is working.

  10. Hi David,

    I use the patch and install the gazebo and everything is working.

    Thanks for the support
    André Dias

  11. Hola David,
    lo primero darte las gracias por compartir este gran trabajo, eres un crack.
    Lo he estado probando pero tengo varios problemas.
    Una vez iniciado el simulador desde tu aplicación y tras conectarlo al simulador, cuando le añado una altura deseada comienza a subir y no para nunca, puede que sea algo referente a la realimentación de los sensores ya que en la parte de “Información de la Simulación” los valores de Posición y Velocidad tanto de X,Y, Z como de Roll, Pitch y Yaw siempre permanecen igual a cero, las fuerzas, los momentos y los radianes si si modifican, estos últimos incluso cuando el gazebo está en pausa.

    También he podido ver que la aplicación va exageradamente lenta para poder modificar los valores, sabes que podría ser?

    un saludo,
    y gracias de nuevo por tu colaboración.
    Miguel

  12. El problema de que no para nunca es porque los controladores que tienen integrado no consiguen estabilizar el sistema: Las realimentaciones con PID o demás no sirven. Hay que implementar un LQR que sí lo deja estable… La versión en la que implemento el LQR no la subí porque estaba llena de bugs.

    El modificar los valores se hace a través de sockets (creo recordar)… y no debería ir muy lento… No sabría decirte.

    Saludos


Deja un comentario

Debes iniciar sesión para dejar un comentario.

Sin trackbacks por el momento.