User Tools

Site Tools


courses:ros:class7

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
courses:ros:class7 [2016/10/24 12:29]
anton.filatov
courses:ros:class7 [2022/12/10 09:08] (current)
Line 4: Line 4:
  
 Например,​ один из самых простых объектов в Gazebo - это робот "​пионер"​ [[http://​www.lar.deis.unibo.it/​equipments/​p2dx/​index.html| Pioneer 2 DX]]. Так он выглядит в симуляторе Gaztbo. Например,​ один из самых простых объектов в Gazebo - это робот "​пионер"​ [[http://​www.lar.deis.unibo.it/​equipments/​p2dx/​index.html| Pioneer 2 DX]]. Так он выглядит в симуляторе Gaztbo.
-{{:start:​ros:​снимок_экрана_от_2016-10-24_14-08-35.png|Pioneer 2 dx in Gazebo}}+{{courses:​ros:​снимок_экрана_от_2016-10-24_14-08-35.png|Pioneer 2 dx in Gazebo}}
  
 Основная цель симулятора - демострировать результат работы программы в виде, удобном для восприятия. Для описания внешнего вида объектов используется язык разметки xml. Некоторые объекты уже описаны и могут быть скачаны с официального сайта gazebo. Однако,​ объекты можно создавать самостоятельно из простых фигур, типа кубов, сфер и прочих. Основная цель симулятора - демострировать результат работы программы в виде, удобном для восприятия. Для описания внешнего вида объектов используется язык разметки xml. Некоторые объекты уже описаны и могут быть скачаны с официального сайта gazebo. Однако,​ объекты можно создавать самостоятельно из простых фигур, типа кубов, сфер и прочих.
Line 26: Line 26:
   roslaunch gazebo_ros empty_world.launch   roslaunch gazebo_ros empty_world.launch
  
-Теперь можно увидеть,​ что gazebo запущена как самостоятельная нода{{:start:​ros:​снимок_экрана_от_2016-10-24_15-02-35.png|граф нод}}+Теперь можно увидеть,​ что gazebo запущена как самостоятельная нода{{courses:​ros:​снимок_экрана_от_2016-10-24_15-02-35.png|граф нод}}
  
 Объект в Gazebo можно создать "​вручную",​ но это не удобно с точки зрения практического использования,​ поэтому существует сервис,​ позволяющий создать объект. Объект в Gazebo можно создать "​вручную",​ но это не удобно с точки зрения практического использования,​ поэтому существует сервис,​ позволяющий создать объект.
Line 81: Line 81:
 Следует обратить внимание,​ что файл model.sdf должен быть скачан до начала работы программы. Для этого можно просто открыть gazebo и попытаться поместить робота pioneer_2dx на плоскость. При этом некоторое время будет происходить скачивание дискриптивных файлов робота,​ после чего все требуемые файлы появлятся в стандартном каталоге. ​ Следует обратить внимание,​ что файл model.sdf должен быть скачан до начала работы программы. Для этого можно просто открыть gazebo и попытаться поместить робота pioneer_2dx на плоскость. При этом некоторое время будет происходить скачивание дискриптивных файлов робота,​ после чего все требуемые файлы появлятся в стандартном каталоге. ​
  
-После размещения робота в мире его нельзя подписать на какой-то топик, как это было сделано в rviz. Для взаимодействия со всеми объектами gazebo использует один топик **gazebo/​set_model_state**+После размещения робота в мире его нельзя подписать на какой-то топик, как это было сделано в rviz. Для взаимодействия со всеми объектами gazebo использует один топик **gazebo/​set_model_state**. При этом в передаваемом сообщении указывается имя объекта,​ которому оно адресовано. Из этого следует,​ что одновременно в мире не может существовать двух объектов с одинаковым именем. Отличие gazebo от rviz в этом моменте заключается в том, что rviz в случае прихода сообщения с просьбой создания объекта с существующим идентификатором создаст новый объект и удалит старый,​ а gazebo проигнорирует просьбу о создании. 
 + 
 +Управление положением объекта происходит через топик gazebo/​set_model_state или через одноимённый сервис. Различие в управлении через топик или через сервис в типе передаваемого сообщения и в наличии или отстутствии подтверждения о приёме сообщения. \\ 
 +Интерес представляет сообщение,​ которое передаётся в топик gazebo/​set_model_state. оно имеет три поля: 
 +  * model_name -- имя объекта 
 +  * pose -- абсолютное положение робота 
 +  * twist -- относительное изменение положения 
 +Следует отметить,​ что, приняв сообщение с непустыми значениями pose и twist, робот будет использовать только положение pose; twist используется только как справочная информация,​ например,​ для лога. 
 + 
 +Для того, чтобы представленный выше код заработал,​ необходимо в CMakeLists.txt добавить зависимость от gazebo: 
 + 
 +  find_package(catkin REQUIRED COMPONENTS 
 +    gazebo_ros 
 +  ) 
 +   
 +  catkin_package( 
 +    DEPENDS gazebo_ros 
 +  ) 
 +   
 +  include_directories( 
 +    ${catkin_INCLUDE_DIRS} 
 +    ${GAZEBO_INCLUDE_DIRS} 
 +    ${SDFormat_INCLUDE_DIRS} 
 +  ) 
 +   
 +В package.xml также необходимо указать build depend и run depend от gazebo_ros. 
courses/ros/class7.1477312192.txt.gz · Last modified: 2022/12/10 09:08 (external edit)