Documentation Status

Cannot load information on name: nasa_r2_simulator, 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: nasa_r2_simulator, distro: hydro, 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: nasa_r2_simulator, distro: indigo, 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: nasa_r2_simulator, distro: jade, 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: nasa_r2_simulator, distro: kinetic, 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.

  • r2.png

Documentation

This page gives an introduction to the NASA-GM Robonaut 2 ROS Simulator. More information about R2 can be found at its official website. This stack has only be tested with Ubuntu 12.04.

Tutorials

Starting R2 in simulation

  1. Start up Gazebo in a desired world and spawn an R2 model (choose only one of the following commands)
    roslaunch r2_gazebo r2_empty.launch     # empty world
    roslaunch r2_gazebo r2_ISS.launch       # International Space Station (ISS)
    roslaunch r2_gazebo r2_taskboard.launch # empty world + ISS Task Board

    r2_iss_taskboard.png

Here is a picture of R2 interacting with the ISS Task Board. NOTE: Don't say we didn't warn you that the simulated ISS module leaves something to be desired when compared to the reality.

Basic Control

R2 "Ready Pose"
  • rosrun r2_controllers_gazebo r2_readypose.py
    This script will put the robot into it's home position that we call "ready pose." Note that as per the Robonaut convention, this will turn the robot 180 degrees to face the other way.

Arm Control Modes
  • R2 runs a dual-priority impedance controller on each of its arms. This allows users to command, at any time, either a joint position (this is joint mode), or a high-priority Cartesian pose to a specified "tool tip" (e.g., left_palm, right_index_tip, etc.) and a low-priority joint position (this is Cartesian mode). By default, the robot starts up in joint mode. To switch to Cartesian mode you can use the service call:

    rosservice call /r2_controller/set_tip_name <arm_name> <link_name>

    where "arm name" is either "left" or "right," and "link_name" can be any link name along the appropriate left or right arm chain. A common tip that is used for the left arm is "left_middle_base" representing the base of the left middle finger. To switch back to joint mode for an arm, you can use the service call:

    rosservice call /r2_controller/set_joint_mode <arm_name>

    When an arm is in joint mode, JointState messages can be used to command the joints on the following ports:

    • /r2_controller/left_arm/joint_command
    • /r2_controller/right_arm/joint_command

    When it is in Cartesian mode, PoseStamped messages can be used to set the pose of the tool tip specified with the above service call on the following ports:

    • /r2_controller/left/pose_command
    • /r2_controller/right/pose_command
    In this mode, low priority joint commands can be sent to the arms on the above topics as well. The current state of the robot's left or right tips can be subscribed to on the following ports:
    • /r2_controller/left/pose_state
    • /r2_controller/right/pose_state

Controlling the Head and Waist
  • R2's 3-DOF head can be controlled by sending JointState messages on the following port:

    • /r2_controller/neck/joint_command
    The head is a Tilt-Pan-Tilt device.

    R2's 1-DOF waist can be controlled by sending JointState messages on the following port:

    • /r2_controller/waist/joint_command

Interactive Markers

  1. Launch Gazebo with an R2 model, if needed (see above)
  2. Launch RViz
    rosrun rviz rviz
  3. Launch the R2 Interactive Marker control
    rosrun r2_teleop r2_interactive_control.py
  4. In RViz, set up the appropriate configuration:
    • Under Global Options, change Fixed Frame to "/world"

    • Add Robot Model
    • Add Grid (optional)
    • Add Interactive Markers and set update topic to "/r2_interactive_control/update"

    • Select the 'Interact' option in RViz to display the Interactive Markers

      interactive_markers.png

Report a Bug

Report bugs at our repo.

Wiki: nasa_r2_simulator (last edited 2013-02-18 22:50:05 by Stephen Hart)