Documentation Status

Cannot load information on name: stage_ros, distro: electric, which means that it is not yet in our index. Please see this page for information on how to submit your repository to our index.
Cannot load information on name: stage_ros, distro: fuerte, which means that it is not yet in our index. Please see this page for information on how to submit your repository to our index.
Cannot load information on name: stage_ros, distro: groovy, which means that it is not yet in our index. Please see this page for information on how to submit your repository to our index.

Package Summary

Released Continuous integration Documented

This package provides ROS specific hooks for stage

Package Summary

Released Continuous integration Documented

This package provides ROS specific hooks for stage

Package Summary

Released Continuous integration Documented

This package provides ROS specific hooks for stage

Nodes

stageros

The stageros node wraps the Stage 2-D multi-robot simulator, via libstage. Stage simulates a world as defined in a .world file. This file tells stage everything about the world, from obstacles (usually represented via a bitmap to be used as a kind of background), to robots and other objects.

This node only exposes a subset of Stage's functionality via ROS. Specifically, it finds the Stage models of type laser, camera and position, and maps these models to the ROS topics given below. If at least one laser/camera and position model are not found, stageros exits.

Usage

rosrun stage_ros stageros [-g runs headless] <world> [standard ROS args]

Parameters:

  • world : The Stage .world file to load.
  • -g : If set, this option will run stage as "headless," no GUI will be displayed.

World syntax

The .world file syntax is documented in the Stage manual. stageros only exposes models created by a subset of the .world file syntax, specifically laser, position and camera models. For examples, see the world directory in the stage and stage_ros packages.

Subscribed topics

If there is only one position model defined in the world file, all of these topics appear at the top namespace. However, if more than 1 position models exist, these topics are pushed down into their own namespaces, by prefixing the topics with robot_<i>/ , e.g., robot_0/cmd_vel etc.

cmd_vel geometry_msgs/Twist

  • velocity commands to drive the position model of the robot

Published topics

If there is only one position model defined in the world file, all of these topics appear at the top namespace. However, if more than 1 position models exist, these topics are pushed down into their own namespaces, by prefixing the topics with robot_<i>/ , e.g., robot_0/cmd_vel etc.

odom (nav_msgs/Odometry)

  • odometry data from the position model.

base_scan (sensor_msgs/LaserScan)

  • scans from the laser model

base_pose_ground_truth (nav_msgs/Odometry)

  • ground truth pose

image (sensor_msgs/Image)

  • visual camera image

depth (sensor_msgs/Image)

  • depth camera image

camera_info (sensor_msgs/CameraInfo)

  • camera calibration info

odom vs. base_pose_ground_truth

The odom topic gives simulated odometry, which is affected by settings in the .world file, which can change its origin and noise model (the transforms mentioned below use the same data); see the Stage documentation for details on changing this behavior. The base_pose_ground_truth topic always provides a perfect, globally referenced pose for the robot in the simulation, independent of .world file settings. The base_pose_ground_truth data is intended for testing purposes; it should not be used in robot control loops (because it's unrealistic).

Parameters

~base_watchdog_timeout (default: 0.2)

  • time (in seconds) after receiving the last command on cmd_vel before stopping a position model

~is_depth_canonical (default: true)

  • whether depth image should use canonical (32FC1) or OpenNI (16UC1) representation

tf transforms provided

base_linkbase_laser

  • transform from robot base to attached laser

base_footprintbase_link

  • identity transform

odombase_footprint

  • transform from odometric origin to base

base_linkcamera

  • transform from robot base to attached camera

Using Stage controllers

Stage supports the use of "controllers," which are chunks of code that control simulated robots from inside the simulator, instead of being on the other end of a ROS connection. There are some situations in which it can be advantageous to use Stage controllers. For a discussion of when and how to use Stage controllers, see this tutorial.

Wiki: stage_ros (last edited 2013-10-02 07:04:05 by YuriGavshin)