Only released in EOL distros:  

stdr_simulator: stdr_gui | stdr_launchers | stdr_msgs | stdr_parser | stdr_resources | stdr_robot | stdr_samples | stdr_server

Package Summary

Provides robot, sensor implementation, using nodelets for stdr_server to load them.

Overview

The stdr_robot package implements a simulated robot, all simulated sensors and its simulated motion controller. Till now the following sensors are implemented:

Available motion controllers:

  • Ideal motion controller.

The robot class is available using the nodelet interface, named stdr_robot/Robot. To load a new robot a STDR Server has to be running. New robots/nodelets can be loaded only from stdr_server, using either stdr_gui or command-line tools described below.

A parser for YAML and XML files is also provided, to load or save robots, sensors etc. More details on how to use YAML and XML files with stdr_simulator here.

Tf frames

A robot provides tf transforms for the pose of itself and its sensors. All transforms are relative to map_static frame. For more details about map tf frames see STDR Server tf frames. An example with one spawned robot follows (using rqt_tf_tree):

alt text

Sensor transforms

The frame_id for each sensor is defined on loading a robot from GUI or when using a YAML/XML file to describe a sensor. Each sensor frame_id has to have a unique name per robot. To avoid naming collisions with other robots it is also (automatically) prefixed with robot's name. Example: robot0_laser_1.

Robot transform

Each robot provides a tf transform with its current pose. The frame_id is automatically assigned and has the format robot<ID>. Example: robot2.

Topics

All topic names are prefixed with robot name. Example robot1/cmd_vel.

Subscribed Topics

cmd_vel (geometry_msgs/Twist)

  • Robot listens for velocity commands

Published Topics

<laser_sensor_frame_id> (sensor_msgs/LaserScan)

  • Publishes laser scan. Example: robot0/laser_back

<sonar_sensor_frame_id> (sensor_msgs/Range)

  • Publishes sonar measurements. Example: robot0/sonar_2

Services

All services are prefixed with the name robot_manager. This is the name of the nodelet manager and should not change.

load_nodelet (nodelet/NodeletLoad)

  • Called to load a new robot.

unload_nodelet (nodelet/NodeletUnload)

  • Called to unload/delete a robot.

Command-Line Tools

robot_handler

With the robot_handler command-line tool you can add, delete and move a robot directly from the terminal. The following sections describe the available commands.

robot_handler add

  • add <description.yaml> <x> <y> <theta>

    • Adds a new robot at given position (x, y, theta). Needs full path to the description file. Example:

      $ rosrun stdr_robot robot_handler add resources/robots/khepera2.yaml 1.2 2 1.57

      NOTE: robot_handler does not check if the pose you provided is valid, so you can spawn a robot on a wall, or on top of an existing robot. (This will change in future releases)

robot_handler delete

  • delete <robot_name>

    • Deletes a robot named <robot_name>. Example:

      $ rosrun stdr_robot robot_handler delete /robot2

robot_handler replace

  • replace <robot_name> <new_x> <new_y> <new_theta>

    • Moves a robot to given pose. Example:

      $ rosrun stdr_robot robot_handler replace /robot1 1.2 3 3.14

      NOTE: robot_handler does not check if the pose you provided is valid, so you can move a robot on a wall, or on top of an existing robot. (This will change in future releases)

Tutorials

For tutorials see stdr_simulator/Tutorials.

Wiki: stdr_robot (last edited 2014-01-20 15:49:51 by etsardou)