====== 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