User Tools

Site Tools


neurali:gazebo_connessione_ros

Connessione con ROS

Gazebo non è più un package di ROS: a partire da Gazebo 1.9 e ROS 7 (hydro), Gazebo non dipende più da ROS

http://gazebosim.org/tutorials?tut=ros_roslaunch&cat=connect_ros

rosurun e roslaunch

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 ros_packages ROS e cosa è ROS catkin

  1. dopo aver inizializzato la shell (potrebbe essere necessario inizializzare le var. di ambiente)
    1. source /opt/ros/indigo/setup.bash
  2. (eventualmente) dopo aver avviato roscore
    1.   source ~/catkin_ws/devel/setup.bash
        roscore
  3. si può avviare con roslaunch il pacchetto gazebo_ros (di ros) contenente l'avvio del file world
    1. roslaunch gazebo_ros file.launch
  4. e poi depositare il robot dentro
    1. rosrun gazebo_ros spawn_model -file `rospack find MYROBOT_description`/urdf/MYROBOT.urdf -urdf -x 0 -y 0 -z 1 -model MYROBOT
  5. 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
  • <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-file $(find baxter_description)/urdf/baxter.urdf -urdf -z 1 -model baxter" />

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:

  1. package.xml (invece di manifest.xml)
  2. CMakeLists.txt
<build_depend>gazebo_ros</build_depend>
<run_depend>gazebo_ros</run_depend>
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
neurali/gazebo_connessione_ros.txt · Last modified: 2020/06/08 22:20 by 127.0.0.1