exponenta event banner

Добавление, построение и удаление объектов в беседке

В этом примере рассматривается более подробное взаимодействие с Gazebo ® Simulator от MATLAB ®. Темы включают создание простых моделей, добавление связей и соединений к моделям, объединение моделей и применение усилий к телам.

Предпосылки: Начните с беседки и смоделированного TurtleBot

Подключение к беседке

®

На компьютере Linux ® запустите беседку. Если вы используете виртуальную машину с Gazebo и Simulated TurtleBot, запустите Gazebo Empty с рабочего стола.

Инициализация ROS путем замены ipaddress с IP-адресом виртуальной машины. Создание экземпляра ExampleHelperGazeboCommunicator класс.

ipAddress = "http://192.168.178.132:11311";
rosinit(ipAddress)
Initializing global node /matlab_global_node_77778 with NodeURI http://192.168.178.1:52158/
gazebo = ExampleHelperGazeboCommunicator;

Создать простую сферу

Для создания модели используйте ExampleHelperGazeboModel класс. Определение свойств (с помощью addLink) и породить шар с помощью spawnModel функция.

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])

Все единицы для команд «Беседка» указаны в единицах СИ. В зависимости от вида может потребоваться уменьшить масштаб изображения, чтобы увидеть шар, поскольку он помещен в [8.5, 0, 1]. Вот изображение сцены:

Построить и спаун боулинг булавки

Создание векторов x и y для расположения булавок боулинга (в метрах).

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];

Определите базовую модель для боулинга с помощью ExampleHelperGazeboModel объект. Использовать 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]);

Выходные данные addLink создает переменную, содержащую назначенное имя ссылки. Эти переменные создают соединение.

Использовать addJoint для определения взаимосвязи между двумя связями. В этом случае они скрепляются между собой поворотным соединением.

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

Аргументы addJoint функции представляют собой объект, родительский элемент, дочерний элемент, тип, пределы и ось.

После определения bowlPin один раз, вы можете создать все десять боулинг булавок из предыдущего ExampleHelperGazeboModel. Следующее for петля порождает модели в беседке с помощью x и y векторы.

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

После добавления контактов в мир он выглядит следующим образом:

Удалить модели

Если TurtleBot ® существует в сцене, удалите его. Посмотрите в списке моделей. Удалить имя turtlebot3_burger, для этого конкретного мира.

if ismember("turtlebot3_burger",getSpawnedModels(gazebo))
    removeModel(gazebo,"turtlebot3_burger");
end

Создание встроенных моделей

Создание ExampleHelperGazeboModel за барьер Джерси. Объект находит эту модель на сайте «Беседки».

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

Породить два барьера Джерси в мире, используя spawnModel.

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

Примечание.Для создания моделей, не включенных в эти примеры, необходимо подключение к Интернету. Однако, если ранее модель была создана в моделировании Gazebo, она будет кэширована, поэтому ее можно будет создать позже без подключения к Интернету.

Сцена выглядит следующим образом:

Применить силы к мячу

Извлечь ручку к шарику через ExampleHelperGazeboSpawnedModel класс.

spawnedBall = ExampleHelperGazeboSpawnedModel(ball.Name,gazebo)
spawnedBall = 
  ExampleHelperGazeboSpawnedModel with properties:

      Name: 'Ball'
     Links: {'link0'}
    Joints: {0×1 cell}

Определите параметры для приложения силы. Здесь устанавливается длительность 1 второй и вектор силы устанавливается в -75 Ньютоны в x направление.

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

Применение силы к модели с помощью applyForce функция.

applyForce(spawnedBall,sphereLink,duration,forceVec);
pause(5);

Ниже приведены изображения столкновения и последствий

Удаление моделей и завершение работы

Удалите модели, созданные для этого примера.

exampleHelperGazeboCleanupBowling;

По завершении работы с ними очистите рабочую область издателей, подписчиков и других объектов, связанных с ROS.

clear

Использовать rosshutdown после завершения работы с сетью ROS. Завершите работу глобального узла и отключитесь от «Беседки».

rosshutdown
Shutting down global node /matlab_global_node_77778 with NodeURI http://192.168.178.1:52158/

По завершении закройте окно «Беседка» на виртуальной машине.

См. также