====== Connessione con ROS ====== Gazebo **non è** più un [[neurali:ROS packages|package]] di ROS: a partire da Gazebo 1.9 e ROS 7 (hydro), Gazebo non dipende più da [[neurali:ROS]] http://gazebosim.org/tutorials?tut=ros_roslaunch&cat=connect_ros ===== rosurun e roslaunch ===== [[neurali:gazebo_connessione_ros#rosrun]] nome_package nome_nodo roslaunch è un comando che evita (con un piccolo file di testo.launch) di ripetere molte volte rosrun... ;;;Obiettivo: avviare tramite ROS la simulazione Gazebo di un file world e depositarci dentro un robot;;; ;;;;Prerequisito: sapere cosa è un;;;; [[neurali:ros_packages]] ;;;;ROS e cosa è;;;; [[neurali:ROS catkin]] - dopo aver inizializzato la shell (potrebbe essere necessario inizializzare le var. di ambiente) - source /opt/ros/indigo/setup.bash - (eventualmente) dopo aver avviato roscore - source ~/catkin_ws/devel/setup.bash roscore - si può avviare con roslaunch il pacchetto gazebo_ros (di ros) contenente l'avvio del file world - roslaunch gazebo_ros file.launch - e poi depositare il robot dentro - rosrun gazebo_ros spawn_model -file `rospack find MYROBOT_description`/urdf/MYROBOT.urdf -urdf -x 0 -y 0 -z 1 -model MYROBOT - oppure, meglio ancora, si può avviare direttamente un file.launch che contiene tutto: world e robot In merito a questo ultimo caso, bisogna ricordare che il pacchetto gazebo_ros contiene uno script python (spawm_model) che si raccomanda di usare quando si deve inserire in simulazione un nuovo robot basato su modello URDF. Ricodando * dove si deve trovare il file MYROBOT.urdf * ~/catkin_ws/src/MYROBOT_description/urdf/MYROBOT.urdf * di aggiungere questo testo in ~/catkin_ws/src/MYROBOT_gazebo/launch/YOUROBOT.launch * ;;;Si avvierà sia world che robot;;; NOTA: se lavorassi solo con Gazebo potrei mettere il file.urdf nella cartella ~/.gazebo ma ciò non è bene se voglio lavorare dentro ROS: lo metto nel package ====Editing the World File Within Gazebo===== You can insert additional models into your robot's world file and use the File->Save As command to export your edited world back into your ROS package. ---- http://gazebosim.org/tutorials?tut=ros_overview The best way to use Gazebo launch files is to simply inherent/include the master "empty world" launch file located in the gazebo_ros package. an example: - package.xml (invece di manifest.xml) - CMakeLists.txt gazebo_ros gazebo_ros cmake_minimum_required(VERSION 2.8.3) project(YOURROBOT_gazebo_plugins) find_package(catkin REQUIRED COMPONENTS gazebo_ros ) # Depend on system install of Gazebo find_package(gazebo REQUIRED) include_directories(include ${catkin_INCLUDE_DIRS} ${GAZEBO_INCLUDE_DIRS} ${SDFormat_INCLUDE_DIRS}) # Build whatever you need here add_library(...) # TODO catkin_package( DEPENDS gazebo_ros CATKIN_DEPENDS INCLUDE_DIRS LIBRARIES ) ===== rosrun ===== http://gazebosim.org/tutorials?tut=ros_roslaunch&cat=connect_ros dopo aver inizializzato la shell (potrebbe essere necessario inizializzare le var. di ambiente) source /opt/ros/indigo/setup.bash (eventualmente) dopo aver avviato roscore source ~/catkin_ws/devel/setup.bash roscore si può avviare Gazebo usando il pacchetto gazebo_ros in ros rosrun gazebo_ros gazebo rosrun gazebo_ros gzserver rosrun gazebo_ros gzclient rosrun gazebo_ros spawn_model rosrun gazebo_ros perf rosrun gazebo_ros debug roslaunch gazebo_ros empty_world.launch e si può testare rostopic list rosservice list