This is a search for all Tutorials on ROS.org:

All Tutorials

    ROS

    ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management. It also provides tools and libraries for obtaining, building, writing, and running code across multiple computers.

    The ROS runtime "graph" is a peer-to-peer network of processes that are loosely coupled using the ROS communication infrastructure. ROS implements several different styles of communication, including synchronous RPC-style communication over Services, asynchronous streaming of data over Topics, and storage of data on a Parameter Server. These are explained in greater detail in our Conceptual Overview.

    1. Building a ROS Package

      This tutorial covers using rosmake to build a package, and rosdep to install system dependencies.

    2. Creating a ROS msg and srv

      This tutorial covers how to create and build msg and srv files as well as the rosmsg, rossrv, roscp, and rosmake commandline tools.

    3. Creating a ROS Package

      This tutorial covers using roscreate-pkg to create a new package, and rospack to list package dependencies.

    4. Examining the Simple Publisher and Subscriber

      This tutorial examines running the simple publisher and subscriber.

    5. Examining the Simple Service and Client

      This tutorial examines running the simple service and client.

    6. Getting started with roswtf

      Basic introduction to the roswtf tool.

    7. Running ROS across multiple machines

      This tutorial explains how to start a ROS system using two machines. It explains the use of ROS_MASTER_URI to configure multiple machines to use a single master.

    8. Navigating the ROS Filesystem

      This tutorial introduces ROS filesystem concepts, and covers using the roscd, rosls, and rospack commandline tools.

    9. Navigating the ROS wiki

      This tutorial discusses the layout of the ROS wiki (ros.org) and talks about how to find what you want to know.

    10. Recording and playing back data

      This tutorial will teach you how to record data from a running ROS system into a .bag file, and then to play back the data to produce similar behavior in a running system

    11. Understanding ROS Nodes

      This tutorial introduces ROS graph concepts and discusses the use of roscore, rosnode, and rosrun commandline tools.

    12. Understanding ROS Services and Parameters

      This tutorial introduces ROS services, and parameters as well as using the rosservice and rosparam commandline tools.

    13. Understanding ROS Topics

      This tutorial introduces ROS topics as well as using the rostopic and rxplot commandline tools.

    14. Using rosed to edit files in ROS

      This tutorial shows how to use rosed to make editing easier.

    15. Using rxconsole and roslaunch

      This tutorial introduces ROS using rxconsole and rxloggerlevel for debugging and roslaunch for starting many nodes at once.

    16. Writing a Simple Publisher and Subscriber (C++)

      This tutorial covers how to write a publisher and subscriber node in C++.

    17. Writing a Simple Publisher and Subscriber (Python)

      This tutorial covers how to write a publisher and subscriber node in python.

    18. Writing a Simple Service and Client (C++)

      This tutorial covers how to write a service and client node in C++.

    19. Writing a Simple Service and Client (Python)

      This tutorial covers how to write a service and client node in python.

    20. How to Roslaunch Nodes in Valgrind or GDB

      When debugging roscpp nodes that you are launching with roslaunch, you may wish to launch the node in a debugging program like gdb or valgrind instead. Doing this is very simple.

    21. Roslaunch tips for large projects

      This tutorial describes some tips for writing roslaunch files for large projects. The focus is on how to structure launch files so they may be reused as much as possible in different situations. We'll use the 2dnav_pr2 package as a case study.

    22. Producing filtered bag files using rosrebag

      This tutorial will cover using rosrebag to filter bag files into new bag files using topic and data information

    23. Recording and playing back data

      This tutorial will teach you how to record data from a running ROS system into a so-called bag file, and then to play back the data to produce similar behavior in a running system

    24. Producing filtered bag files

      This tutorial will cover using rosbag filter to filter bag files into new bag files using topic and data information

    25. Recording and playing back data

      This tutorial will teach you how to record data from a running ROS system into a .bag file, and then to play back the data to produce similar behavior in a running system

    26. How to add support for an OS into rosdep

      This will walk you through what is needed to do to add detection support for a new OS to rosdep.

    27. How to add an OS tag for a rosdep.yaml entry

      This will walk you through adding an entry for rosdep.yaml for a new OS

    28. Add support for a new system dependency

      This will show you how to add support for a new system dependency.

    29. How to add a system dependency to a package.

      This shows how to add a system dependency to a package.

    arm_navigation

    The arm navigation stack contains the action/behavior used to execute collision free motion planning and control for a robot arm manipulator. Included in this stack are the messages required for an action interface that can be used to specify and abort goals for the move_arm action. An implementation for arm navigation on the PR2 robot can be found in the pr2_arm_navigation stack.

    1. Running the object pickup pipeline

    2. Getting started with arm navigation

      This tutorial describes how to get started with using the arm navigation stack to plan and control a robot arm.

    3. Moving the arm to a joint goal

      In this tutorial, we will use a simple action client to get the move_arm node to move the arm to a joint goal.

    4. Moving the arm to a pose goal

      In this tutorial, we will use the action client to send a pose goal for the move_arm node to move the arm to.

    5. Specifying complex pose goal constraints

      In this tutorial, we will use the action client to send a pose goal for the move_arm node to move the arm to. We will also learn how to specify a region of tolerance for the pose goal using a geometric shape.

    6. Specifying path constraints for motion planning

      This tutorial will show you how to specify path constraints for move_arm. This is useful, e.g., if you want to execute tasks like moving a glass with water in it. You can use the path constraints to specify that the glass should stay approximately upright.

    7. ''Safe'' arm trajectory control

      This package implements a simple action interface to a safe arm trajectory controller. The controller will execute a desired trajectory only if the trajectory will not result in self collisions or a collision with the environment.

    camera_drivers

    This stack contains drivers for a variety of cameras, and some associated tools.

    1. Configuring the Prosilica GigE for a Desktop

      This tutorial covers configuring the Prosilica camera for a desktop and viewing images.

    2. How to Determine Your Prosilica GigE Camera's IP Address

      This tutorial will show you how to determine the prosilica camera's IP address if you do not remember it.

    3. Configuring the Prosilica GigE for the PR2

      This tutorial covers configuring the Prosilica camera for a PR2 and viewing images.

    4. Introduction to working with the Prosilica camera.

      This introduction will teach you how to work with a pre-configured Prosilica camera.

    5. How to Configure and Use the WGE100 Camera

      This tutorial is an introduction to using the WGE100 camera connected to a desktop. After reading it you should be able to bring up the WGE100 camera, configure the camera, and display the images.

    6. How to Configure and Use the WGE100 Stereo Camera on a PR2

      This tutorial is an introduction to using the WGE100 stereo camera connected to a PR2 robot. After reading it you should be able to bring up the WGE100 stereo camera and display the images.

    7. Running the WGE100 camera in externally triggered mode

      This tutorial covers using an external trigger with the WGE100 camera on the PR2.

    common

    A set of code and messages that are widely useful to all robots. Things like generic robot messages (i.e., kinematics, transforms), a generic transform library (tf), laser-scan utilities, etc.

    1. Implementing a simple filter

      This will describe how to implement a simple filter. This filter will simply add 1 to any incoming value. This filter exists in the filter package. The version for this tutorial has been isolated from other example files in the filters package.

    diagnostics

    Packages related to gathering, viewing, and analyzing diagnostics data from robots.

    1. Analyzing Diagnostic Logs Off-Line

      This tutorial uses the diagnostic_analysis package to analyze a robot log file. These files are generated automatically by the robots when they're running and contain the entire diagnostics history of the robot. You can convert these log files into CSV files (comma separated value) that can be opened with any spreadsheet editor. This only works with diagnostic_msgs/DiagnosticArray messages on the /diagnostics topic, used in the PR2 diagnostic toolchain.

    2. Configuring a Robot's Diagnostic Aggregator

      This tutorial will help you set up and configure a diagnostic aggregator, using the PR2 as an example. The Aggregator can be configured for a robot or type of robot to perform basic analysis on the diagnostics.

    3. Creating a Diagnostic Analyzer

      An example of how to write your own diagnostic analyzer plug-in for the diagnostic_aggregator.

    4. Starting the Runtime Monitor

      The runtime_monitor is a useful tool for monitoring the state of your robot. It subscribes to the "/diagnostics" topic and displays the data into a simple, easy to use, format.

    5. Using the GenericAnalyzer

      Uses the GenericAnalyzer to analyze diagnostics from EtherCAT devices, hardware drivers and robot computers. Shows the complete feature set of the GenericAnalyzer.

    6. Using the Robot Monitor

      The Robot Monitor is used to view the aggregated diagnostics of a robot. It's useful to view diagnostics data to diagnose and debug hardware and driver problems.

    executive_trex

    trex

    1. An introduction to Agent Actions

      In this tutorial you will learn about a standard T-REX model element (an AgentAction) for encapsulating modular, goal-achieving behaviors.

    2. Create your first action

      In this tutorial you will create an action and build a simple NDDL simulator for testing. This makes it easy to see how things work in the executive without getting into more complicated integration.

    3. Create and explore a simple Hello World project

      In this tutorial you will create a T-REX demo project and execute a test case.

    4. Obtain, compile and test T-REX.

      This tutorial will get you started using T-REX.

    5. Interactive execution and visualization

      In this tutorial you will learn the basics of incremental, interactive execution and visualization of trex.

    6. Using the test harness

      In this tutorial you will learn about the test harness structure put in place for testing the executive

    7. Visualize prior execution

      In this tutorial you will learn the basics of using the trexmonitor tool to visualize execution

    geometry

    The basic geometric and math libraries used in ros.

    1. Adding a dynamic frame (C++)

      This tutorial teaches you how to add an extra dynamic frame to tf.

    2. Adding a dynamic frame (Python)

      This tutorial teaches you how to add an extra dynamic frame to tf.

    3. Adding a frame (C++)

      This tutorial teaches you how to add an extra fixed frame to tf.

    4. Adding a frame (Python)

      This tutorial teaches you how to add an extra fixed frame to tf.

    5. Debugging tf problems

      This tutorial gives a systematic approach for debugging tf related problems.

    6. Introduction to tf

      This tutorial will give you a good idea of what tf can do for you. It shows off some of the tf power in a multi-robot example using turtlesim. This also introduces using tf_echo, view_frames, and rviz.

    7. Sensor messages in tf

      This tutorial describes how to use sensor data with tf.

    8. Time travel with tf (C++)

      This tutorial teaches you about advanced time travel features of tf

    9. Time travel with tf (Python)

      This tutorial teaches you about advanced time travel features of tf

    10. Writing a tf broadcaster (C++)

      This tutorial teaches you how to broadcast coordinate frames of a robot to tf.

    11. Writing a tf broadcaster (Python)

      This tutorial teaches you how to broadcast the state of a robot to tf.

    12. Writing a tf listener (C++)

      This tutorial teaches you how to use tf to get access to frame transformations.

    13. Writing a tf listener (Python)

      This tutorial teaches you how to use tf to get access to frame transformations.

    14. Learning about tf and time (C++)

      This tutorial teaches you to use the waitForTransform function to wait for a transform to be available on the tf tree.

    15. Learning about tf and time (Python)

      This tutorial teaches you to use the waitForTransform function to wait for a transform to be available on the tf tree.

    image_common

    Common code for working with images in ROS.

    1. Running the Simple Image Publisher and Subscriber with Different Transports

      This tutorial discusses running the simple image publisher and subscriber using multiple transports.

    2. Managing Transport Plugins

      This tutorial covers how to discover which transport plugins are included in your system and make them available for use. No programming required!

    3. Writing a Simple Image Publisher (C++)

      This tutorial shows how to publish images using all available transports.

    4. Writing a Simple Image Subscriber (C++)

      This tutorial shows how to subscribe to images using any available transport. By using the image_transport subscriber to subscribe to images, any image transport can be used at run-time. To learn how to actually use a specific image transport, see the next tutorial.

    5. Writing a New Transport

      This tutorials covers how to write publisher and subscriber plugins for a new image transport option.

    image_pipeline

    image_pipeline fills the gap between getting raw images from a camera driver and higher-level vision processing.

    1. How to Calibrate a Monocular Camera

      This tutorial cover using the camera_calibration's cameracalibrator.py node to calibrate a monocular camera with a raw image over ROS.

    2. How to Calibrate a Stereo Camera

      This tutorial cover using the camera_calibration's cameracalibrator.py node to calibrate a stereo camera with a left and right image over ROS.

    imu_drivers

    A stack for any drivers relating to Inertial Measurement Units (IMU).

    1. How to Use Inertial-Link IMUs with the imu_node

      This tutorial is an introduction to using the MicroStrain Inertial-Link IMU connected to a desktop. After reading the tutorial, you should be able to bring up the imu_node and display the IMU data.

    joystick_drivers

    This stack contains a ROS node to interface with joysticks, and drivers for joysticks that are not well supported by a common Linux distribution.

    1. How to Write a Generic Teleoperation Node

      This tutorial goes over generic teleoperation code that is used as an example in many of the teleoperation tutorials.

    2. How to Use a SpaceNavigator with the spacenav_node

      This tutorial is an introduction to using the 3DConnexion SpaceNavigator connected to a desktop. After reading this, you should be able to bring up the spacenav_node and display the data.

    3. Writing a Teleoperation Node for the SpaceNavigator

      This tutorial covers how to write a teleoperation node and use it to drive the turtle in the turtlesim.

    4. Configuring and Using a Linux-Supported Joystick with ROS

      This tutorial is an introduction to using the joystick connected to a desktop computer. After reading it, you should be able to bring up the joy node and display the data coming from the joystick over ROS.

    5. Writing a Teleoperation Node for a Linux-Supported Joystick

      This tutorial covers how to write a teleoperation node and use it to drive the turtle in the turtlesim.

    6. How to Pair the PS3 Joystick with a Bluetooth Dongle

      This tutorial is an introduction to using the PS3 DualShock 3 Joystick connected via bluetooth to a desktop computer. After reading it, you should be able to bring up the ps3joy node and display the data coming from the joystick.

    7. How to Recharge the PS3 Joystick

      This tutorial explains how to recharge the PS3 DUALSHOCK 3 or SIXAXIS Joystick. The tutorial includes details on how to simultaneously use the joystick over Bluetooth and recharge it.

    8. Connecting the PS3 Joystick to the PR2

      This tutorial is an introduction to using the PS3 DualShock 3 Joystick connected via bluetooth to a PR2.

    9. Writing a Teleoperation Node for the PS3 Joystick

      This tutorial covers how to write a teleoperation node and use it to drive the turtle in the turtlesim.

    10. Making the Wiimote Blink and Rumble

      How to use ROS messages to make a Wiimote device rumble (vibrate), and blink its LEDs. With this tutorial you will be able to use ROS command line tools to control rumble and LED states of a Wiimote device.

    11. Pairing and Using a Wiimote with ROS

      Explains how to start a ROS Wiimote node, pair the wiimote with your computer, how the Wiimote device is calibrated, and how to test whether the node functions properly.

    12. Writing a Teleoperation Node for the Wiimote

      This tutorial covers how to write a teleoperation node and use it to drive the turtle in the turtlesim.

    13. Configuring a Multiple Joystick System

      This tutorial uses the joystick remapping node to allow two different joysticks to control a single robot.

    laser_drivers

    This stack contains drivers for laser rangefinders, including Hokuyo SCIP 2.0-compliant and SICK models.

    1. How to dynamically reconfigure the hokuyo_node from the command line or code.

      After completing this tutorial, you will be able to reconfigure the parameters of the hokuyo_node from the command line or python code.

    2. How to Dynamically Reconfigure the hokuyo_node

      This tutorial covers using the reconfigure_gui to dynamically reconfigure the hokuyo_node to run with different parameters. After reading this tutorial, you should be able to bring up the reconfigure_gui and change the hokuyo_node parameters.

    3. How to use Hokuyo Laser Scanners with the hokuyo_node

      This tutorial is an introduction to using a Hokuyo laser scanner connected to a desktop. After reading this tutorial, you should be able to bring up the hokuyo_node and display the laser data.

    4. Using SICK Laser Scanners with the sicktoolbox_wrapper

      This tutorial is an introduction to using a SICK laser scanner connected to a desktop. After reading this tutorial, you should be able to bring up the sicklms node and display the laser data.

    laser_pipeline

    Libraries from processing laser data, including converting laser data into 3D representations.

    1. Introduction to Working With Laser Scanner Data

      This tutorial guides you through the basics of working with the data produced by a planar laser scanner (such as a Hokuyo URG or SICK laser). To learn how to actually produce or change data from laser scanners, please see the laser_drivers stack.

    2. Laser filtering in C++

      Raw laser scans contain all points returned from the scanner without processing. Many applications, however, are better served by filtered scans which remove unnecessary points (such as unreliable laser hits or hits on the robot itself), or pre-process the scans in some way (such as by median filtering). This tutorial will teach you how to apply pre-existing filters to laser scans.

    3. Using the laser filtering nodes

      Raw laser scans contain all points returned from the scanner without processing. Many applications, however, are better served by filtered scans which remove unnecessary points (such as unreliable laser hits or hits on the robot itself), or pre-process the scans in some way (such as by median filtering). This tutorial will teach you how to apply pre-existing filters to laser scans.

    4. How to assemble laser scan lines into a composite point cloud

      In this tutorial you will learn how to assemble individual laser scan lines into a composite point cloud. One particular use case is to assemble individual scan lines from a laser on a tilting stage into a single point cloud to form a full 3D laser sweep.

    motion_planning_environment

    The motion_planning_environment stack contains packages that can be used to monitor the world and the state of the robot for collisions. It contains two packages: planning_environment which contains the monitors and planning_environment_msgs which contains the messages and services that can be used for collision checking, adding and clearing objects and monitoring of the robot state and trajectories.

    1. Checking collisions for a given robot state

      This tutorial will show you how to use the environment server to check whether a given robot state is collision free, within the joint limits and satisfies joint or cartesian constraints

    2. Checking collisions for a joint trajectory

      This tutorial will show you how to check whether an input joint trajectory is in collision, violates joint limits or satisfies constraints.

    motion_planning_visualization

    motion_planning_visualization

    1. Displaying joint paths for the entire robot in rviz

      This tutorial will teach you how to display a robot model in rviz and visualize joint paths for any set of joints on the robot.

    navigation

    A 2D navigation stack that takes in information from odometry, sensor streams, and a goal pose and outputs safe velocity commands that are sent to a mobile base.

    1. Sending Goals to the Navigation Stack

      The Navigation Stack serves to drive a mobile base from one location to another while safely avoiding obstacles. Often, the robot is tasked to move to a goal location using a pre-existing tool such as rviz in conjunction with a map. For example, to tell the robot to go to a particular office, a user could click on the location of the office in a map and the robot would attempt to go there. However, it is also important to be able to send the robot goals to move to a particular location using code, much like rviz does under the hood. For example, code to plug the robot in might first detect the outlet, then tell the robot to drive to a location a foot away from the wall, and then attempt to insert the plug into the outlet using the arm. The goal of this tutorial is to provide an example of sending the navigation stack a simple goal from user code.

    2. Using rviz with the Navigation Stack

      This tutorial provides a guide to using rviz with the navigation stack to initialize the localization system, send goals to the robot, and view the many visualizations that the navigation stack publishes over ROS.

    3. Adding a GPS sensor to the Robot Pose EKF Filter

      This tutorial describes how to add GPS sensor input to the Robot Pose EKF Filter.

    pr2

    pr2

    1. Getting the current joint angles for the PR2

      This tutorial shows you how to get the current joint angles for the PR2 robot.

    2. Moving the head

      This tutorial shows you how to set a desired pose of the robot head using the existing head trajectory controller.

    3. Moving the arm through a Cartesian pose trajectory using inverse kinematics and the joint trajectory action

      This tutorial teaches you how to move the arm through Cartesian pose trajectories using inverse kinematics and low-level joint controllers (the joint_trajectory_action).

    4. Moving the arm using the Joint Trajectory Action

      This tutorial demonstrates moving the arm using the Joint Trajectory Action which is an interface to the lower-level Joint Trajectory Controller.

    5. Moving the gripper

      This tutorial shows you how to move the PR2 gripper using the pr2_gripper_action (an action that runs the gripper controller).

    6. Moving the torso

      This tutorial shows you how to move the PR2 torso using the single_joint_position_action.

    7. Using the base controller with odometry and transform information

      We move the robot forward by a specified amount by using the low-level base controller together with transform information from odometry.

    8. Using the low-level robot base controllers to drive the robot

      This tutorial teaches you how to start up and control the default robot base controllers (pr2_base_controller and pr2_odometry) directly, rather than at a high level (using move_base).

    pr2_kinematics

    This stack contains an implementation of kinematics for the PR2 robot.

    1. Getting started with kinematics for the PR2

      This tutorial will show you how to get started with computing position forward and inverse kinematics for the PR2.

    2. Getting kinematic solver info from a kinematics node

      This tutorial will show you how to get information about the links and joints that a kinematics solver deals with.

    3. Forward kinematics for the PR2 arms

      This tutorial will show you how to use a kinematics node to solve the forward kinematics and get the cartesian positions for the links on a PR2 arm.

    4. Inverse kinematics for the PR2 arms

      This tutorial will show you how to use a kinematics node to solve the inverse kinematics and get the joint positions for a desired cartesian position of the PR2 arms.

    5. Collision free inverse kinematics for the PR2 arms

      This tutorial will show you how to use a kinematics node to get collision free inverse kinematics solutions for a desired cartesian position of the PR2 arms.

    pr2_mechanism

    The pr2_mechanism stack contains the infrastructure to control the PR2 robot in a hard realtime control loop. The main interface to packages in this stack is through C++, but it is possible to interact with controllers through a ROS API. While the stack is currently aimed at controlling the PR2 robot, it should work on most force-controlled robots.

    1. Adding a PID to a realtime joint controller

      This tutorial teaches you how to add a PID object to a realtime joint controller

    2. Capturing data from a controller

      This tutorial teaches you how to store data in a controller and extract it for offline viewing, debugging, and tuning.

    3. Coding a realtime Cartesian controller with Eigen

      This tutorial gives example code for a realtime Cartesian controller using KDL and Eigen

    4. Coding a realtime Cartesian controller with KDL

      This tutorial gives example code for a realtime Cartesian controller using KDL

    5. Communicating with a realtime joint controller

      This tutorial teaches you how to communicate with a controller over ROS.

    6. Implementing a realtime Cartesian controller

      This tutorial teaches you how to control a robot in Cartesian space

    7. Plotting controller data in matlab or octave

      This tutorial teaches you how to visualize the captured state of a controller in matlab or octave.

    8. Incrementally develop and test a controller in simulation.

      This tutorial walks you through the process of creating s simple custom controller, incrementally adding functionality to it and testing each step in simulation.

    9. Running a realtime Cartesian controller

      This tutorial teaches you how to configure and run an existing Cartesian space controller

    10. Running a realtime joint controller

      This tutorial teaches you how to configure and run an existing joint space controller

    11. Writing a realtime Cartesian controller

      This tutorial teaches you how to control a robot in Cartesian space

    12. Writing a realtime joint controller

      This tutorial teaches you how to write a joint space controller that can be executed in the realtime loop of pr2_controller_manager

    pr2_simulator

    PR2-specific simulation components. These include plugins and launch scripts necessary for running PR2 in simulation.

    1. 2D Navigation Stack in Simulation

      Testing the PR2 2D navigation stack in simulation given an example world with 2 desks as obstacles.

    2. Automated Regression Tests

      Running the Gazebo regression tests on your machine.

    3. Building a Map in Simulation

      Given a simple office environment and PR2 in simulation, how to create a map using the OpenSLAM GMapping package.

    4. Faking Sensor Info in Simulation

      You can get ground truth information from the simulator rather than going through sensors.

    5. Multi-Level Map With Ramps

      An example environment with multiple floor levels and ramps.

    6. PR2 Opens a Door

      Simulated environment for testing autonomous door opening in simulation.

    7. Pendulum Examples

      Simple pendulums examples.

    8. Debugging Gazebo plugins

      You can run gazebo with gdb to debug real time controllers and plugins.

    9. Starting a Separate Sensor Generation Node

      Start up an image sensor generation node when the main simulation node is running headless.

    10. Going from the simulator to the real world

      How to interoperate between the simulator and the physical world.

    11. Starting PR2 in Simulation

      Starting PR2 in Simulation

    12. Teleop PR2 Mobile Base In Simulation

      Controlling PR2 base with keyboard and driving PR2 around in simulation.

    13. Using Custom Maps in Simulation

      How to use a custom map for 2D navigation in Gazebo simulator.

    14. Stereo Processing in Simulation

      Starting the necessary components for generating stereo cloud in simulation with PR2.

    15. Working with Gazebo over ROS

      For the most part, working with Gazebo is the same as working with a robot.

    16. Attaching a ROS Ground Truth Pose Broadcaster to Objects in Simulation

      Attaching a ROS ground truth pose broadcaster to objects in simulation

    robot_model

    robot_model contains packages for modeling various aspects of robot information, specified in the Xml Robot Description Format (URDF). The core package of this stack is urdf, which parses URDF files, and constructs an object model (C++) of the robot.

    1. Using the robot state publisher on your own robot

      This tutorial explains how you can publish the state of your robot to tf, using the robot state publisher.

    2. Adding a Sensor to the PR2 URDF

      This tutorial describes how to add a camera sensor to the PR2 URDF.

    3. Create your own urdf file

      In this tutorial you start creating your own urdf robot description file.

    4. Parse a urdf file

      This tutorial teaches you how to use the urdf parser

    5. Understanding the PR2 Robot Description, Part 1

      This tutorial explains the layout of the top level URDF Xacro file for a complex robot such as PR2.

    6. Understanding the PR2 URDF description, Part 2

      Describes one of the low-level components of the PR2 definition in full detail.

    7. Understanding the PR2 Robot Description Extensions for Gazebo Simulator

      This tutorial explains URDF extensions used by Gazebo simulation.

    8. Start using the KDL parser

      This tutorial teached you how to create a KDL Tree from a URDF file

    9. Retrieving Files

      Demonstrates how to retrieve a file from a URL using the resource_retriever package

    ros_experimental

    Experimental packages for ROS core system development.

    1. Roslisp Basic Usage

      This tutorial gives a brief intro to roslisp. For more, see the API documentation, and the code in the roslisp_examples ROS package.

    ros_pkg_tutorials

    ros_pkg_tutorials is a stack for teaching different aspects of ros-pkg.

    1. Running an Action Server and Client with Other Nodes

      This tutorial covers running the averaging action server and client with another data node then visualizing the channel output and node graph.

    2. Writing a Simple Action Client

      This tutorial covers using the simple_action_client library to create a Fibonacci action client. This example program creates an action client and sends a goal to the action server.

    3. Writing a Threaded Simple Action Client

      This tutorial covers using the simple_action_client library to create a averaging action client. This example program spins a thread, creates an action client, and sends a goal to the action server.

    4. Writing a Simple Action Server using the Execute Callback

      This tutorial covers using the simple_action_server library to create a Fibonacci action server. This example action server generates a Fibonacci sequence, the goal is the order of the sequence, the feedback is the sequence as it is computed, and the result is the final sequence.

    5. Writing a Simple Action Server using the Goal Callback Method

      This tutorial covers using the simple_action_server library to create an averaging action server. This example shows how to use an action to process or react to incoming data from ros nodes. The action server averages data from a ros node, the goal is the number of samples to average, the feedback is the sample number, the sample data, the current average, and current standard deviation, and the result is the average and standard deviation of the requested number of samples.

    6. Writing a Simple Action Client (Python)

      This tutorial covers using the action_client library to create a Fibonacci simple action client in Python.

    7. Writing a Simple Action Server using the Execute Callback (Python)

      This tutorial covers using the simple_action_server library to create a Fibonacci action server in Python. This example action server generates a Fibonacci sequence, the goal is the order of the sequence, the feedback is the sequence as it is computed, and the result is the final sequence.

    ros_tutorials

    ros_tutorials contains packages that demonstrate various features of ROS, as well as support packages which help demonstrate those features.

    1. Publishing messages in rospy

      Writing a simple publisher and subscriber already introduced you to the basics of creating rospy Nodes that publish and receive messages on ROS Topics. As you get more experienced with ROS and rospy, you may wish to learn some advanced syntax for publishing that will save you some typing -- as well as make your code more robust to future changes.

    2. Logging with rospy

      Logging messages to rosout is easy with rospy and encouraged. When you are running many nodes, seeing the command-line output of your node gets very difficult. Instead, it is much easier to publish a debugging message to rosout and then view it with rxconsole. rxconsole is "uber-console" of ROS and lets you view and filter the logging messages from all ROS nodes.

    3. Writing a ROS Python Makefile

      I know what you're saying: "Python... Makefile?" Believe it or not, you do need Makefile (and CMakeLists), even if you just hack Python all day.

    4. Using Parameters in rospy

      This tutorial covers the various ways in which you can get and set Parameters in rospy. Getting, setting and deleting parameters from a rospy Node is fairly simple.

    5. Setting Up Your PYTHONPATH

      Setting up your PYTHONPATH is very easy. You already have to write a manifest.xml file that declares your dependencies, so ROS will use this same manifest file to help you set your PYTHONPATH (we try to use the DRY -- Don't Repeat Yourself -- principle as much as possible).

    6. Writing a Simple Publisher and Subscriber

      This demo will walk you through creating a ROS package as well as creating two simple rospy nodes. The "talker" node will broadcast a message on topic "chatter", while the "listener" node will receive and print that message.

    7. Writing a Simple Service and Client

      This tutorial covers how to write a service and client node in python.

    8. Using numpy with rospy

      This tutorial covers using numpy with rospy, the ROS Python client library. Numpy is a popular scientific computing package for Python. You will often want to consider using Numpy with rospy if you are working with sensor data as it has better performance and many libraries for manipulating arrays of data.

    9. Accessing Private Names from a NodeHandle

      This tutorial will show you how to access private Names with roscpp's NodeHandle API.

    10. Using Parameters in roscpp

      This tutorial will show you the NodeHandle parameter API, allowing you to manipulate parameters from the Parameter Server.

    11. Understanding Timers

      This tutorial explains roscpp Timers, which allow you to schedule a callback to happen periodically.

    12. Using Class Methods as Callbacks

      Most of the tutorials use functions in their examples, rather than class methods. This is because using functions is simpler, not because class methods are unsupported. This tutorial will show you how to use class methods for subscription and service callbacks.

    13. Writing a Simple Publisher and Subscriber

      This tutorial covers how to write a publisher and subscriber node in c++.

    14. Writing a Simple Service and Client

      This tutorial covers how to write a service and client node in C++.

    simulator_gazebo

    Wrappers for using ROS with the Gazebo simulator.

    1. Adding Objects to the World

      Objects and robots are described using the URDF language, and added to a running Gazebo instance via ROS.

    2. Working with the Gazebo GUI

      Describes basic interactions with Gazebo GUI, rotating view angles, selecting/moving models, selecting/applying forces on objects.

    3. Manipulating Objects in the World

      This tutorial explains how to set object pose in simulation using the gazebo_ros_sim_iface plugin

    4. Running Simulator Headless

      Running simulation without a graphics card or GLX support.

    5. Creating and Spawning URDF Objects in Simulation

      Creating and Spawning URDF objects in simulation

    6. Installing and Starting Gazebo

      How to get Gazebo up and running.

    7. Erratic Simulation

      Simulating differential drive Erratic robot in 3D simulator and drive it around using ROS.

    8. 3D Willow Garage Map

      Example 3D world generated from the Willow Garage map.

    simulator_stage

    2D simulation using the Stage multi-robot simulator.

    1. Simulating One Robot in Stage

      This tutorial shows you how to use the Stage simulator to simulate a single, Erratic-like robot, roaming an environment that looks a lot like the Willow Garage building.

    slam_gmapping

    slam_gmapping contains the gmapping package, which provides SLAM capabilities. GMapping is a Creative-Commons-licensed open source package provided by OpenSlam.

    1. How to Build a Map Using Logged Data

      This tutorial shows you how to create a 2-D map from logged transform and laser scan data.

    sound_drivers

    This stack is the common place for all sound related drivers. Currently the only driver is sound_play, which can be used to play WAV and OGG files, synthesize speech and play builtin sounds, over any device supported by pygame (SDL).

    1. How to Configure and Use Speakers with sound_play

      This tutorial is an introduction to setting up and using USB speakers connected to a desktop computer. After reading it, you should be able to bring up the speakers, configure the speakers, and play sounds.

    trajectory_filters

    This stack contains a set of filters to work with joint trajectories. It also contains a trajectory filter server which is a ROS node that exposes a ROS service interface to a chain of filters.

    1. Filtering joint trajectories using the trajectory_filter_server

      This tutorial will show you how to use the trajectory filtering service provided by the trajectory filter server.

    2. Generating collision free cubic spline trajectories

      In this tutorial, you will learn to configure the joint trajectory filter node to generate collision free cubic spline trajectories.

    ua_controllers

    This stack contains higher level controllers for the Wubble Robot, which generally depend on packages in the ua_drivers stack for interfacing with the hardware. Thus, packages in this stack provide a higher level of abstraction for Wubble Robot subsystems than ua_drivers.

    1. How to control a Crust Crawler Smart Arm with Dual Gripper using the smart_arm node

      This tutorial describes how to control your Crust Crawler Smart Arm using the smart_arm node.

    2. How to use a Crust Crawler Smart Arm with Dual Gripper with the smart_arm node

      This tutorial describes how to configure the smart_arm node for use with your Crust Crawler Smart Arm with Dual Gripper. The next tutorial will describe how to control the Smart Arm through the smart_arm node.

    ua_drivers

    This stack contains ROS drivers for Phidgets pressure, RFID and accelerometer sensors, Dynamixel AX-12 servos, and two interfaces for the Videre STOC camera.

    1. Testing a Phidget Accelerometer

      This tutorial shows you how to connect a Phidget accelerometer and view axes data changes published to a ROS topic.

    2. Testing a Phidget RFID Reader

      This tutorial shows you how to test a Phidget RFID reader and view tag data changes published to a ROS topic.

    vision_opencv

    opencv c++ and python libraries.

    1. Using CvBridge to convert between ROS images and OpenCV images

      This tutorial describes how to interface ROS and OpenCV by converting ROS images into OpenCV images, and vice versa, using CvBridge. Included is a sample node that can be used as a template for your own node.

    Tutorials with no stack

    1. 2d Navigation on an Erratic

      This tutorial describes how to run a 2d-navigation stack on erratic robots with different laser configurations.

    2. Build and Bringup of the Navigation Stack

      This tutorial provides a step-by-step guide to building and running the navigation stack on a PR2 robot. Before you begin this tutorial, please make sure that you follow the PR2/StartRobot. We assume that you successfully brought up everything from that step.

    3. Addings objects to the planning environment

      The tutorial describes the process of adding an object to the planning environment, which should allow for collision checking against the object as well as point cloud filtering around the object.

    4. Towers of Hanoi Usage

      This tutorial covers how to run the Towers of Hanoi puzzle

    5. ROS パッケージのビルド

      このチュートリアルではパッケージをビルドする rosmake とシステムに依存関係をインストールする rosdep についてカバーします.

    6. ROS メッセージとサービスの作成

      このチュートリアルでは ROS メッセージ(msg)とサービス(srv) ファイルの作成方法と,rosmsgやrossrv・roscp・rosmake といったコマンドライン-ツールの使用法についてカバーします.

    7. ROS パッケージの作成

      このチュートリアルでは,新しいパッケージを作成する roscreate-pkg とパッケージの依存関係をリスト化する rospack コマンドについてカバーします.

    8. シンプルな発行者と購読者の検査

      このチュートリアルでは,起動しているシンプルな配信者と購読者について検査します.

    9. シンプルなサービスとクライアントの検査

      このチュートリアルでは,起動中のシンプルなサービスとクライアントについて検査する

    10. ROS wiki の使い方

      このチュートリアルでは,ROS wiki (ros.org)のレイアウトについて説明し,あなたが知りたいことの見つけかたについてお話します.

    11. ROS ノードについて理解する

      このチュートリアルでは ROS グラフの概念について議論します.また,roscorerosnode・rosrun といったコマンドライン-ツールの使用法についてもカバーします.

    12. ROS サービスとパラメータについて理解する

      このチュートリアルでは,ROS サービスとパラメータ, rosservicerxparam コマンドライン-ツールについて紹介します.

    13. ROS トピックについて理解する

      このチュートリアルでは,ROS トピックについて, rostopicrxplot コマンドライン-ツールを使いながら紹介します.

    14. ROS のファイルを編集する rosed の使い方

      このチュートリアルでは,編集を楽にする rosed の使い方を紹介します.

    15. rxconsole と roslaunch を使う

      このチュートリアルでは,デバッグに rxconsole と rxloggerlevel を使います.また,たくさんのノードを一度に起動するために, roslaunch を使います.

    16. シンプルな配信者と購読者を書く (C++)

      このチュートリアルでは,c++ による配信者と購読者の書き方を説明します.

    17. ノードハンドルからプライベートネームで接続する

      このチュートリアルでは,roscpp のノードハンドルAPIを用いて,プライベートネームに接続する方法について説明します.

    18. シンプルな配信者と購読者を書く

      このチュートリアルでは,C++ によるサービスやクライアントの作り方について説明します.

    19. シンプルなサービスとクライアントを書く

      このチュートリアルでは,C++ によるサービスやクライアントの作り方について説明します.

    20. Annotating image through action interface

      The tutorial walks through the process of launching ROS action to annotate images and creating a simple client that sends images for annotation.

    21. Annotating images through command line tools

      The tutorial demonstrates cv_mech_turk2 command line tools - the easiest way to annotate images in bulk.

    22. Basic image annotation tutorial

      This tutorial walks through the process of creating a simple task and annotation session; submitting images, doing manual grading and retrieving the results.

    23. Creating new image annotation tasks

    24. Installing annotation server for Mechanical Turk

      The tutorial describes how to install the annotation server, setup testing fixtures, run unit tests against the server and create user accounts.

    25. Moving the PR2 arm using command line

      This tutorial is a brief introduction on how to start up motion planning for the arm.

    26. How to collect data

      How to collect data

    27. All of the deprecated tutorials in one place.

      All of the text from the deprecated tutorials.

    28. Processing Results with the Stair Vision Library

      Processing results using the Stair Vision Library

    29. Simulating the 2dnav Stack

      This tutorial describes how to simulate a 2d-navigation stack in gazebo.

    30. Running PR2 Self Test

      The PR2 Self Test system is designed to examine and test the hardware of the PR2. The self test system can examine joints, motors, sensors and computers.

    31. Controlling the Camera Pan/Tilt Joints of the Wubble Robot.

      This tutorial describes how to control the camera pan tilt joints of the Wubble Robot by publishing angle information to the controller.

    32. Controlling the Laser Tilt Joint of the Wubble Robot.

      This tutorial describes how to control the laser tilt joint of the Wubble Robot by publishing angle and number of cycles information to the controller.

Wiki: AllTutorials (last edited 2009-12-04 23:12:49 by MeloneeWise)