Esta página es para la versión anterior. La página correspondiente en inglés ha sido eliminada en la versión actual.

Agregar, compilar y quitar objetos en gazebo

Este ejemplo explora una interacción más profunda con el gazebo® Simulator de MATLAB®. Los temas incluyen la creación de modelos simples, la adición de vínculos y uniones a modelos, la conexión de modelos juntos y la aplicación de fuerzas a los sólidos.

Requisitos previos:Empiece con gazebo y un TurtleBot simuladoLeer propiedades de modelo y simulación de Gazebo

Conéctese a gazebo®

En la máquina Linux®, inicie gazebo. Si está utilizando la máquina virtual, utilice el mundo gazebo vacío.Empiece con gazebo y un TurtleBot simulado

Inicializar ROS reemplazando con la dirección IP de la máquina virtual.ipaddress Cree una instancia de la clase.ExampleHelperGazeboCommunicator

ipaddress = '192.168.203.129'; rosinit(ipaddress)
Initializing global node /matlab_global_node_57411 with NodeURI http://192.168.203.1:55160/ 
gazebo = ExampleHelperGazeboCommunicator;

Engendra una esfera simple

Para crear un modelo, utilice la clase.ExampleHelperGazeboModel En el siguiente código, se crea una pelota. Define las propiedades (usando) y engendra la pelota usando la función.addLinkspawnModel

ball = ExampleHelperGazeboModel('Ball')
ball =    ExampleHelperGazeboModel with properties:          Name: 'Ball'     ModelObj: [1×1 org.apache.xerces.dom.DocumentImpl]        Links: []       Joints: []  
spherelink = addLink(ball,'sphere',1,'color',[0 0 1 1])
spherelink =  'link0' 
spawnModel(gazebo,ball,[8.5,0,1])

Todas las unidades para los comandos gazebo se especifican en unidades SI. Dependiendo de la vista, es posible que tenga que alejar para ver la pelota, porque se coloca en.[8.5, 0, 1] Aquí está una imagen de la escena:

Construye y engendra bolos pines

Crear vectores y para la ubicación de las clavijas de bolos (en metros).xy

x = [1.5    1.5    1.5   1.5   2.5     2.5  2.5    3.5    3.5   4.5]; y = [-1.5  -0.5    0.5   1.5   -1      0    1     -0.5    0.5   0];

Defina un modelo básico para el pasador de bolos utilizando el objeto.ExampleHelperGazeboModel Se usa para crear el cilindro y la pelota.addLink

pin = ExampleHelperGazeboModel('BowlPin');  link1 = addLink(pin,'cylinder',[1 0.2],'position',[0,0,0.5]); link2 = addLink(pin,'sphere',0.2,'position',[0,0, 1.2],'color',[0.7 0 0.2 1]);

La salida de produce una variable que contiene el nombre asignado del vínculo.addLink Estas variables crean la articulación.

Se usa para definir la relación entre los dos vínculos.addJoint En este caso están Unidos por una articulación revoluta.

joint = addJoint(pin,link1,link2,'revolute',[0 0],[0 0 1]);

Los argumentos de la función son objeto, primario, secundario, tipo, límites y eje.addJoint

Después de definir una vez, puede crear los diez pines de bolos de la anterior.bowlPinExampleHelperGazeboModel El siguiente bucle genera los modelos en gazebo utilizando el y vectores.forxy

for i = 1:10         spawnModel(gazebo,pin,[x(i),y(i),0.7]);     pause(1); end

Después de agregar los pines al mundo, se ve como esta figura:

Eliminar modelos

Si el TurtleBot® existe en la escena, quítese. Busque en la lista de modelos. Quite el nombre.mobile_base

if ismember('mobile_base',getSpawnedModels(gazebo))     removeModel(gazebo,'mobile_base'); end

Desovar modelos incorporados

Crea un para una barrera de Jersey.ExampleHelperGazeboModel El objeto encuentra este modelo en el sitio web de gazebo.

barrier = ExampleHelperGazeboModel('jersey_barrier','gazeboDB');

Engendra dos barreras de Jersey en el mundo usando.spawnModel

spawnModel(gazebo,barrier,[1.5,-3,0]); % Right barrier pause(1); spawnModel(gazebo,barrier,[1.5,3,0]); % Left barrier

Necesita una conexión a Internet para generar modelos que no se incluyan en estos ejemplos.Note: Sin embargo, si previamente ha generado un modelo en su simulación de Gazebo, se almacena en caché, por lo que puede engendrarlo más tarde sin una conexión a Internet.

La escena se ve como esta figura:

Aplicar fuerzas a la pelota

Recupere la manija de la pelota a través de la clase.ExampleHelperGazeboSpawnedModel

spawnedBall = ExampleHelperGazeboSpawnedModel(ball.Name,gazebo)
spawnedBall =    ExampleHelperGazeboSpawnedModel with properties:        Name: 'Ball'      Links: {'link0'}     Joints: {0×1 cell}  

Definir parámetros para la aplicación de la fuerza. Aquí la duración se establece en un segundo y el vector de fuerza se establece en-75 Newtons en la dirección x.

duration = 1; % Seconds forcevec = [-75 0 0]; % Newtons

Aplique la fuerza al modelo utilizando la funciónapplyForce

applyForce(spawnedBall, spherelink, duration, forcevec); pause(5);

Las siguientes son imágenes de la colisión y las secuelas

Quite modelos y apague

Para limpiar, elimine los modelos creados para este ejemplo.

exampleHelperGazeboCleanupBowling;

Borre el espacio de trabajo de los editores, suscriptores y otros objetos relacionados con ROS cuando haya terminado con ellos

clear

Utilice una vez que haya terminado de trabajar con la red de ROS.rosshutdown Apague el nodo global y desconéctese de gazebo.

  rosshutdown
Shutting down global node /matlab_global_node_57411 with NodeURI http://192.168.203.1:55160/ 

Cuando haya terminado, cierre la ventana de Gazebo en la máquina virtual.

Consulte también