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
Next revision Both sides next revision
courses:ros:class7 [2016/10/24 12:29]
anton.filatov
courses:ros:class7 [2018/11/25 21:18]
kalishenko ↷ Page moved from start:ros:class7 to courses:ros:class7
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.txt · Last modified: 2022/12/10 09:08 (external edit)