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

All Tutorials

    MikroKopter

    MikroKopter stack for ROS

    1. Shared Control for a Quadrotor Platform

      This tutorial guides a shared autonomy control scheme for a quadcopter that is suited for inspection of vertical infrastructure. An unskilled operator is assisted by onboard sensing and partial autonomy to safely fly the robot in close proximity to the structure. The operator uses their domain knowledge and problem solving skills to guide the robot in difficult to reach locations to inspect and assess the condition of the infrastructure. The operator commands the robot in a local task coordinate frame with limited degrees of freedom (DOF). For instance: up/down, left/right, toward/away with respect to the infrastructure. We therefore avoid problems of global mapping and navigation while providing an intuitive interface to the operator.

    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. Setting up an XCode Project

      This tutorial show how to create a basic native OSX application for ROS.

    2. No Title

      No Description

    3. Building a ROS Package

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

    4. Creating a ROS package by hand.

      This tutorial explains how to manually create a ROS package.

    5. Creating a Simple Hardware Driver

      This tutorial shows how to create a simple hardware driver that connects via serial to a Parallax RFID Card Reader.

    6. 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.

    7. Creating a ROS Package

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

    8. Defining Custom Messages

      This tutorial will show you how to define your own custom message data types using the ROS Message Description Language.

    9. Examining the Simple Publisher and Subscriber

      This tutorial examines running the simple publisher and subscriber.

    10. Examining the Simple Service and Client

      This tutorial examines running the simple service and client.

    11. Getting started with roswtf

      Basic introduction to the roswtf tool.

    12. Installing and Configuring Your ROS Environment

      This tutorials walks you through installing ROS and setting up your ROS environment on your computer.

    13. Setting up a Mobile Robot with ROS

      How to set up your custom mobile robot in ROS

    14. 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.

    15. Navigating the ROS Filesystem

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

    16. 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.

    17. 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

    18. 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.

    19. Stack Installation

      This tutorial describes how to install 3rd party stacks

    20. Understanding ROS Nodes

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

    21. Understanding ROS Services and Parameters

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

    22. Understanding ROS Topics

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

    23. Using rosed to edit files in ROS

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

    24. Using rxconsole and roslaunch

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

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

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

    26. Writing a Simple Publisher and Subscriber (Python)

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

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

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

    28. Writing a Simple Service and Client (Python)

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

    29. 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.

    30. 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

    31. Add support for a new system dependency

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

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

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

    aaai_lfd_demo

    Infrastructure for the 2011 AAAI-LfD Challenge

    1. Python tutorial to interact with open_loop_object_manipulation_actionserver

      This tutorial will show you how to interact with the drive_to_action_server in Python

    2. Python tutorial to interact with open_loop_object_manipulation_actionserver

      This tutorial will show you how to interact with the open_loop_object_manipulation_actionserver in Python

    android_sensors_driver

    android_sensors_driver

    1. Connecting to a ROS Master

      This tutorial will show you the steps involved in introducing an Android device to your ROS Master.

    arbotix

    This stack provides comprehensive access to the ArbotiX RoboController and associated peripherals.

    1. Installing the ArbotiX Firmware

      This tutorial shows how to install the ROS firmware on the ArbotiX.

    2. Adding a button

      This tutorial shows how to add a push button

    3. Setting Servo IDs

      This tutorial shows how to set servo IDs using the terminal program.

    arm_navigation

    This stack contains packages that permit collision-free arm navigation

    1. Adding Virtual Objects to the Planning Scene

      In this tutorial we show how to add virtual objects to the Planning Scene and to check state validity against the virtual objects.

    2. Attaching Virtual Objects to the Robot

      In this tutorial we describe attaching virtual objects to the robot's body - these are objects that are assumed to move with the robot instead of being static in the environment.

    3. Checking a state for validity

      In this tutorial we show how you can use the planning scene architecture with the environment monitor, as well as code in the planning_environment stack to check state validity - whether or not a given state is within the joint limits, or in collision with the robot's other links or the environment. You'll also see how to publish markers based on this information.

    4. Checking Trajectory Validity

      This tutorial will describe using the Planning Scene Architecture to check whether or not an entire Joint Trajectory is valid: focusing on whether it obeys joint limits and avoids collision.

    5. Understanding the arm navigation Planning Scene Architecture

      This tutorial will go into the new formulation of arm navigation 1.0, focusing particularly on the Planning Scene. It will describe what it is, the design philosophy behind it, and how to use it in different contexts.

    6. Running arm navigation on non-PR2 arm

      This tutorial describes the steps necessary to make arm_navigation stack running on an arm other than PR2

    7. Running the object pickup pipeline

    8. Planning Components Visualizer

      This tutorial explains the planning components visualizer in the move_arm package, and how it may be used to interact with a robot.

    9. Planning Description Configuration Wizard

      This tutorial explains the use of the planning description configuration wizard, which automatically generates a stack containing configuration and launch files used in arm planning.

    10. Understanding and adjusting the auto-generated arm navigation application

      This tutorial will walk you through the launch files generated by the planning description visualization wizard and describe aspects you may wish to change for your robot.

    11. Warehouse Viewer

      Learn to use the planning scene warehouse viewer, a GUI application for editing, loading, and saving planning scenes and trajectories.

    12. 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.

    13. 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.

    14. 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.

    15. 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.

    16. 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.

    17. Calling the kinematics services

      Calling the kinematics services

    18. Configuring kinematics for your arm

      Configuring kinematics for your arm and launching the kinematics node.

    19. Setting up the prerequisites

      Setting up the prerequisites

    20. Before you begin planning: Setting up the Prerequisites

      Before you begin planning: Setting up the Pre-requisites

    21. Calling the joint space planner

      Calling the joint space planner

    22. Configuring a joint space planner

      Configuring a joint space planner

    23. Configuring a kinematics plugin

      Configuring a kinematics plugin

    24. Launching a joint space planner

      Launching a joint space planner

    25. Specifying a start state

      Specifying a start state

    26. Specifying pose goals

      Specifying pose goals

    27. 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.

    arm_navigation_experimental

    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. ''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.

    articulation

    This stack provides software that can recover articulation models given 3D or 6D pose trajectories.

    The articulation_msgs package defines messages and services for exchanging trajectories and kinematic models.

    The articulation_models package provides several nodes for fitting and selecting kinematic models for articulated objects. We employ maximum-likelihood sample consensus (MLESAC) for robustly estimating the kinematic parameters, and the Bayesian information criterion (BIC) for selecting between alternative model classes. The learned model assigns likelihoods to observed trajectories, predict the latent configuration of the articulated object, projects the noisy poses onto the model, predict the Jacobian, etc.

    The articulation_structure package provides a service for fitting and selecting the kinematic model for articulated objects consisting of more than two parts.

    Several tutorials, example launch files and demonstration videos are available in the package articulation_tutorials.

    1. Learning Kinematic Models for Articulated Objects using a Webcam

      This tutorial is a step-by-step guide that instructs users how to learn kinematic models of articulated objects only by using a webcam and a laptop.

    2. Running the articulation perception demo using a Microsoft Kinect sensor

      This tutorial explains how to install and run the articulation perception demo.

    3. Learning Kinematic Models for Articulated Objects using a Webcam

      This tutorial is a step-by-step guide that instructs users how to learn kinematic models of articulated objects only by using a webcam and a laptop.

    4. Getting started with Articulation Models

      This tutorial guides you step-by-step through the available tools for fitting, selecting and displaying kinematic trajectories of articulated objects. We will start with preparing a text file containing a kinematic trajectory. We will use an existing script to publish this trajectory, and use the existing model fitting and selection node to estimate a suitable model. We will then visualize this model in RVIZ.

    5. Learning Kinematic Models from End-Effector Trajectories

      This tutorial demonstrates the process of model fitting and model selection to real data recorded by a mobile manipulation robot operating various doors and drawers.

    6. Using the Articulation Model Library (C++)

      This tutorial demonstrates how to use the articulation model library directly in your programs. This is more efficient than sending ROS messages or ROS services. In this tutorial, a short program is presented that creates an artificial trajectory of an object rotating around a hinge, and then uses the model fitting library to recover the rotational center and radius. Further, the sampled trajectory and the fitted model are publishes as a ROS message for visualization in RVIZ.

    7. Using the Articulation Models (Python)

      In this tutorial, you will create a simple python script that calls ROS services for model fitting and selection. The script will output the estimated model class (like rotational, prismatic, etc.) and the estimated model parameters (like radius of rotation, etc.).

    asctec_drivers

    Driver stack for AscTec Quadrotors including the Pelican and Hummingbird

    1. Running the AscTec driver

      This tutorial goes over how to run the driver for the AscTec quadrotors, which enables communication with the vehicle over ROS.

    asctec_mav_framework

    Framework for data aquisition and position control to be used with the highlevel processor of Ascending Technologies helicopters

    1. Onboard datafusion and position control on Ascending Technologies quadrotors

      This tutorial shows how to use the datafusion and position controller provided in the asctec_hl_firmware package running on the high level processor of Ascending Technologies quadrotors.

    audio_common

    Common code for working with audio in ROS

    1. How to capture, stream, and play audio using audio_capture and audio_play.

      This tutorial covers the audio_capture and audio_play packages. The audio_capture package records audio from a microphone and publishes audio messages on the /audio topic. The audio_play package listens to /audio and outputs the audio messages to speakers.

    2. 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.

    bosch_skin

    Contains the Bosch Sensor Skin driver and demo applications.

    1. Basic Setup of Skin Hardware and Software

      This tutorial guides the user through the setup of the skin hardware as well as the initial installation and configuration of the skin software.

    brown_remotelab

    Infrastructure for remote labs, remote teleoperation, and teleprescence robotics

    1. Using Javascript to control ROS via rosjs

      This tutorial will show you how to write HTML web-pages that interact with ROS.

    2. Ten-Minute Guide to rosbridge

      In ten minutes, this screencast walks through installing rosbridge and the basic operations (publishing and making service calls) used to access the full power of ROS over its simple JSON-based protocol. Captions are available.

    3. Using Javascript to control ROS via rosjs

      This tutorial will show you how to write HTML web-pages that interact with ROS.

    camera_drivers_experimental

    camera_drivers_experimental

    1. How to Calibrate an IEEE 1394 Camera

      This tutorial explains how to calibrate an IEEE 1394 camera.

    2. How to Configure IEEE 1394 Camera Features

      This tutorial explains how to set IIDC feature parameters for an IEEE 1394 digital camera.

    3. How to Connect to an IEEE 1394 Camera

      This tutorial is an introduction to using a digital camera connected to an IEEE 1394 bus. It explains how to connect to a 1394 camera, configure it, and display the images.

    4. How to Set IEEE 1394 Camera Bayer Parameters

      This tutorial explains how to set color decoding parameters for IEEE 1394 cameras with Bayer encoding.

    5. How to Set IEEE 1394 Camera Parameters Dynamically

      This tutorial explains how to use dynamic reconfigure to change IEEE 1394 camera driver parameters.

    6. How to Use Multiple IEEE 1394 Cameras

      This tutorial explains how to handle multiple IEEE 1394 camera streams with ROS.

    7. Using camera_info_manager in a Camera Driver (C++)

      This tutorial shows how to provide calibration information while publishing images.

    camera_pose

    This stack contains a set of tools to work with multiple rgb camera's simultaneoulsy.

    1. Add Kinect camera frame to the PR2 urdf tree

      This tutorial teaches you how to use the camera_pose_urdf_updater package to add the Kinect camera frame as a child into an existed (also already calibrated) PR2 urdf tree.

    2. Calibrate camera pose to the map frame

      Suppose you have a camera mounted somewhere in the room, this tutorial teaches you how to find out the camera pose relative to the map frame.

    3. Simplify the calibration process for multiple cameras

      The camera_pose_toolkits package provides a convenient tool called camera_dispatcher that allows the user to dynamically switch between different cameras. This tutorial shows you how to use it to help manage multiple-camera calibration.

    cart_pushing

    cart_pushing

    1. Configuring a new cart

      This tutorial will describe how to add a new cart to the cart pushing stack.

    2. Running the cart pushing stack on a PR2

      This tutorial will describe how to launch and send goals to the cart pushing stack on a PR2

    3. Running the cart pushing stack in Stage

      How to run cart pushing in the stage simulator

    client_rosjava

    client_rosjava

    1. Building and Running the actionlib_java Tutorial

    2. Installing rosjava

      installing rosjava on your computer

    3. Publication and Subscription

      Hello World: Writing a publisher and subscriber

    4. Building and Running the Tutorial Included in rosjava_core

    cob_command_tools

    The cob_command_tools stack provides tools, for operating Care-O-bot.

    1. Generate a graph from a script

      This tutorial teaches you how to generate a graph from a script and save it as a *.png file.

    2. Live visualization of a script

      This tutorial teaches you how to visualize a running script.

    3. Modifying parameter files

      This tutorial teaches you how to modify parameter files, e.g. for teaching new positions.

    4. Preparing a new script (python)

      This tutorial shows how to write a simple script for grasping and handing over an object using cob_script_server.

    5. Running a simple grasp script

      This tutorial teaches you how to run a script.

    6. Specify execution behaviour (python)

      This tutorial shows how to execute synchronous and asynchronous behaviour.

    7. Using other commands (python)

      This tutorial teaches you how to use other commands beside the move command.

    8. Using the move command (python)

      This tutorial teaches you how to use the move function.

    cob_scenarios

    cob_scenarios

    1. Care-O-bot Environment

      This tutorial show you how to run the simulation of the Care-O-bot on your pc.

    2. Homework 1

      task: you have to generate a video to proof you can run the Care-O-bot simulation

    3. Homework 2

      task: modify the script file to order the Care-O-bot grasping the "jodsalz" object

    4. Installing Software

      This tutorial show you how to install the software on your pc.

    5. Run Scenario Script

      You learn how to launch the Care-O-bot in Simulation an let them do some tasks.

    6. Day 1

      First step with the real Care-O-bot and test your homework on the robot

    7. Day 2

      robot technology day, learn how a real robot move this base

    common_tutorials

    common_tutorials

    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 Callback Based SimpleActionClient

      Example of using callbacks for program flow that's more complicated than a simple, linear script.

    7. Writing a Simple Action Client (Python)

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

    8. 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.

    continuous_ops

    continuous_ops

    1. Create your own task

      This tutorial explains how to create a task for the robot to execute

    2. Schedule your own task on the robot

    cram_pl

    A set of libraries for implementing AI enabled robot control programs.

    1. Controlling turtlesim from Lisp

      In this tutorial you will learn how to control a turtle in turtlesim with CRAM Fluents

    2. Creating a CRAM package

      In this tutorial you will learn how to set up a ROS package to use the CRAM plan language

    3. Implementing simple plans to move a turtle

      In this tutorial you will learn how to implement a simple plan to move a turtle from waypoint to waypoint.

    4. Process modules

      The concept of process modules allows to write plans that are robot independent.

    5. Set-up and first steps with CRAM and the CRAM language

      In this tutorial, you learn how to set up your environment and how to use the CRAM language from the lisp REPL

    crustcrawler_smart_arm

    crustcrawler_smartarm

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

      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.

    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.

    dynamixel_motor

    This stack contains packages that are used to interface with Robotis Dynamixel line of servo motors. This stack was tested with and fully supports AX-12, AX-18, RX-24, RX-28, MX-28, RX-64, EX-106 models.

    1. Connecting to Dynamixel bus

      This tutorial describes how to connect and examine raw feedback from Robotis Dynamixel servos.

    2. Creating a joint controller

      This tutorial describes how to create a joint controller with one or more Robotis Dynamixel motors.

    ecl_core

    A set of tools and interfaces extending the capabilities of c++ to provide a lightweight, consistent interface with a focus for control programming.

    1. Covariance Ellipsoids

      Algorithms for 2d and 3d covariance ellipsoids, typically used in slam.

    2. Function Objects

      Passing functions around as typed class objects.

    3. Parameters

      Avoiding a profusion of get/set.

    4. Reference Wrappers

      When you want to pass a reference, but are only permitted to pass a copy.

    5. Singleton

      The classic singleton design pattern.

    6. Eigen Extensions

      Some extensions the ecl has made in and around eigen.

    7. Using Eigen

      There are quite a few tricks you should be aware of when using eigen...

    8. Arrays

      Introduction to c++ style arrays, both fixed and dynamic.

    9. Buffer Overflow Detection

      Detecting ecl array over/under runs.

    10. Fifo

      A simple first in, first out class.

    11. Stencils

      Windows onto ecl arrays.

    12. Container Utilities

      container formatters and converters.

    13. Numerical Limits

      Fixing a few rough edges around c++ numeric limits.

    14. The 'Is A' Traits

      Temporary fillers for the 'is a xxx' fundamental type traits till C++0x is widespread.

    15. Command Line Parsing with TCLAP

      Introduction to command line parsing with TCLAP.

    16. Using Ecl Formatters

      Introduction to the usage of ecl formatters.

    17. Writing a Custom Formatter

      Writing your own custom formatters.

    18. Priorities

      Setting thread or process scheduling priorities.

    19. Thread

      Threading functionality via composition.

    20. Thread Locks

      Locking threads to protect shared data

    21. Threadable

      Threading functionality via inheritance.

    22. Introduction to Ecl Devices

      Introduces the general framework for ecl devices.

    23. Implementing Concepts

      Writing and using concept check tests.

    24. Simple Math

    25. Input and Output Streams

      General usage notes for input-output streams.

    26. Logging Streams

    27. Manipulators

      Manipulators for ecl streams.

    28. Semaphores

      Locks for multiple processes (use with shared memory).

    29. Shared Memory

      Simplified api-like interface to shared memory storage.

    30. Using Converters

      Demonstrates usage of the ecl converters.

    31. Boolean Logic

      Using compile time boolean types for metaprogramming.

    32. Converters

      Compile time type converters.

    33. Enable If

      An if operator for template type arguments.

    34. Benchmarking

      Tools to assist benchmarking programs.

    35. Sleep

      Classes that put the thread to sleep for fixed or periodic intervals.

    36. Stopwatch

      Devices to record the passing of time.

    37. Timestamps and Durations

      Timestamping and performing arithmetic on timestamps/durations.

    38. Angles

      Convenience class for abstractly storing and representing angles.

    39. Cartesian Points

      Simple object representations for cartesian points.

    40. Polynomials

      Working with polynomials of the n-th degree.

    41. Pose

      2D and 3D representations for poses.

    42. Splines

      Continuously connected functions (splines) and interpolation algorithms.

    43. Debugging Sigslots

      Tools to help debug sigslots problems.

    44. Introduction to Sigslots

      Creating, connecting and triggering signals and slots.

    45. Relaying Signals

      Relaying data from one signaller to the next.

    46. Ecl Exception Handling

      Introduction to the usage of exceptions in the ecl.

    ecl_lite

    The ecl-lite stack includes packages with few dependencies on either system or c++ functionality. This makes it ideal for very embedded builds where many of the usual mechanisms are unavailable.

    • No malloc/new
    • No exceptions
    • Minimal templates

    It also includes a few packages which standardise lower level api (e.g. posix/win32) with drop-ins to make them properly cross-platform,

    1. Custom Platform Detection

      Manually setting platform macros for the ecl on a custom board.

    2. Sigslots for Embedded Boards

      Sigslots designed for very low end boards/dsp's.

    3. Simple Error Handling

      Simple cross-platform error handling macros, flags, asserts used by the ecl.

    4. Debugging Sigslots Lite

      Utility functions for diagnosing lite sigslots.

    5. Using Sigslots Lite

      Shows how to set up signals and slots with ecl_sigslots_lite.

    6. Custom Platform Detection

      Manually setting ecl_config parameters for a custom board configuration.

    7. Assertions in the Ecl

      how to utilise ecl's run-time and compile-time asserts/aborts.

    8. Debug Modes in the Ecl

      Toggling debug/ndebug mode for the ecl.

    9. Error Handling in the ECL

      Shows how the ecl does error handling at the simplest level, with macros and flags.

    ecl_tools

    This stack provides cmake modules, makefiles, tools and build scripts for ecl development.

    1. Link As Needed

      Remove unused library dependencies from being automatically linked by ros.

    2. The Ecl CMake Library

      Lists ecl's cmake library api and demos its usage.

    3. Link as Needed

      Remove unused library dependencies from being automatically linked by ros.

    4. The Ecl CMake Library

      Lists ecl's cmake library api and demos its usage.

    ee_cart_imped

    Stack for a controller that does force/impedance end effector Cartesian control.

    1. Running the Controller

      Explains how to how to run a force controlled trajectory.

    2. Switching Controllers at Run Time (Python)

      Shows how to switch between the force/impedance controller and the arm_navigation suite of controllers at run time. This tutorial is only available in python.

    3. Writing a Force Controller (C++)

      Shows how to use the force/impedance controller for force control using C++.

    4. Writing a Force Controller (Python)

      Shows how to use the force/impedance controller for force control using python.

    5. Writing a Stiffness Controller (C++)

      Shows how to use the force/impedance controller to do stiffness control with the PR2 arm using C++.

    6. Writing a Stiffness Controller (Python)

      Shows how to use the force/impedance controller to do stiffness control with the PR2 arm using python.

    7. Running the Controller

      Explains how to download the action server and controller and how to run a force controlled trajectory.

    8. Writing a Force Controller

      Shows how to use the force/compliance controller for force control.

    9. Writing a Stiffness Controller

      Shows how to use the force/compliance controller to do stiffness control with the PR2 arm.

    10. Writing a Stiffness Controller (Python)

      Shows how to use the force/compliance controller to do stiffness control with the PR2 arm.

    elektron_robot

    elektron_robot

    1. Running showcase applications

      Short tutorial on running some apps ready to launch as showcase.

    eros

    This stack includes supporting components to enable ros development on embedded boards.

    1. Full Cross

      Cross-compiling in a cross-compiled ros.

    2. Install/Uninstall Targets

      This shows how to add install/uninstall targets to your package. This is most useful when building strictly c++ packages (no ros) within the ros build environment and you want a regular install step.

    3. Installing with Unison

      This tutorial covers a simple method to filter (create binary images) and deploy ros stacks to an embedded board or a fakeroot.

    4. Partial Cross

      Outlines how to use the ros build environment as a cross-compile environment for embedded development (doesn't actually cross-compile ros itself).

    5. Toolchain Bridge

      Convert an existing toolchain into an ros-ready toolchain.

    6. Ubuntu in a Chroot

      Part two of a three part tutorial illustrating how to install, maintain and deploy a stripped down ubuntu (lucid) on pen drives for intel atoms using an i686 intel build platform. This one covers maintainence in a chroot.

    7. Ubuntu for Intel Atoms

      Part one of a three part tutorial illustrating how to install, maintain and deploy a stripped down ubuntu (lucid) on pen drives for intel atoms using an i686 intel build platform.

    8. Ubuntu on Pen Drives

      Part three of a three part tutorial illustrating how to install, maintain and deploy a stripped down ubuntu (lucid) on pen drives for intel atoms using an i686 intel build platform. This one covers bulletproofing deployment on pen drive using a union filesystem.

    executive_smach

    The executive_smach stack contains the SMACH library, together with tools for introspection and a ROS integration package.

    1. CBState

      This tutorial gives an example of how to use CBState, a state that simply executes a callback when it is active.

    2. Calling Actions from a State Machine (ROS)

      This tutorial teaches you how to call action servers from within a SMACH state machine.

    3. Concurrence container

      This tutorial teaches you how to use the Concurrence container.

    4. Concurrent State Machine

      This tutorial shows an example of running two states in parallel.

    5. Create a Hierarchical State Machine

      This tutorial teaches you how to nest different state machines, creating a hierarchical state machine.

    6. Generic State

      This tutorial show how to implement a generic SMACH State

    7. Getting Started with smach

      This tutorial guides you through the very first steps of using smach.

    8. Iterator container

      This tutorial teaches you how to use the Iterator container.

    9. MonitorState (ROS)

      Monitor a state!

    10. Nesting State Machines

      This tutorial gives an example of nesting a state machine in another state machine, creating a hierarchical state machine.

    11. Sequence container

      This tutorial teaches you how to use the Sequence container.

    12. ServiceState (ROS)

      This tutorial shows how to represent the execution of a service as a SMACH state.

    13. Simple Action State (ROS)

      This tutorial shows an example of states that call directly into the actionlib interface.

    14. Simple State Machine

      This tutorial shows how to put together a simple state machine with two states.

    15. SimpleActionState (ROS)

      This tutorial show how to use the SimpleActionState to directly call an action interface using SMACH

    16. Viewing State Machines (ROS)

      This tutorial shows you how to use the smach viewer, a simple tool to monitor state machines and get introspection into the data flow between states.

    17. State Preemption Implementation

      This tutorial shows how to implement simple flag-based preemption in SMACH states.

    18. StateMachine container

      This tutorial teaches you how to use the StateMachine container.

    19. Passing User Data between States

      This tutorial teaches you how to pass data from one state(machine) to the next state(machine).

    20. User Data Passing

      This tutorial gives an example of two states passing user data to each other.

    21. Wrapping a Container With actionlib

      This tutorial explains how to serve out a SMACH plan as an action over actionlib.

    22. Writing Custom Container Classes

      Most tasks can be performed without writing new types of container classes, but this tutorial explains how to write a new one.

    23. Writing Custom State Classes with User-defined Callbacks

      Sometimes you want to create a state class like smach.SimpleActionState which receives user callbacks as arguments. If these callbacks change the SMACH interface of a state (outcomes, userdata keys), then the callbacks need to be annotated with this information.

    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

    find_object

    find_object

    1. Bringing up the find object system

      How to start up and control the system

    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. Time travel with tf (C++)

      This tutorial teaches you about advanced time travel features of tf

    8. Time travel with tf (Python)

      This tutorial teaches you about advanced time travel features of tf

    9. Using Stamped datatypes with tf::MessageFilter

      This tutorial describes how to use tf::MessageFIlter to process Stamped datatypes.

    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.

    geometry_experimental

    The experimental geometric and math libraries used in ros.

    1. Adding a frame (C++)

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

    2. Adding a frame (Python)

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

    3. Debugging tf2 problems

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

    4. Introduction to tf2

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

    5. Converting Datatypes

      This is a quick description of the changes in syntax for converting datatypes.

    6. Migrating a TransformBroadcaster from tf to tf2

      This is a guide for converting a tf TransformBroadcaster class to a tf2 Listener class

    7. Migrating a TransformListener from tf to tf2

      This is a guide for converting a tf TransformListener class to a tf2 Listener class

    8. Time travel with tf2 (C++)

      This tutorial teaches you about advanced time travel features of tf2

    9. Time travel with tf2 (Python)

      This tutorial teaches you about advanced time travel features of tf2

    10. Transforming your own datatypes

      This tutorial explains which methods you need to implement to make tf2 transform your own datatypes.

    11. Using Stamped datatypes with tf2::MessageFilter

      This tutorial describes how to use tf2::MessageFIlter to process Stamped datatypes.

    12. Writing a tf2 broadcaster (C++)

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

    13. Writing a tf2 broadcaster (Python)

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

    14. Writing a tf2 listener (C++)

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

    15. Writing a tf2 listener (Python)

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

    16. Learning about tf2 and time (C++)

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

    17. Learning about tf2 and time (Python)

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

    gps_umd

    This stack provides a ROS binding for the GPS receivers that are supported by the GPSd software (http://gpsd.berlios.de/).

    1. Getting Started with gpsd_client (C++)

      Detailed tutorial for running gpsd_client in ROS

    2. Writing a Subscriber for gpsd_client (C++)

      This tutorial illustrates a sample code in C++ to get gps data using gpsd_client. We use class methods to bring the gps data to the main function.

    hector_slam

    hector_slam contains ROS packages related to performing SLAM in unstructed environments like those encountered in the Urban Search and Rescue (USAR) scenarios of the RoboCup Rescue competition

    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.

    2. How to set up hector_slam for your robot

      This tutorial shows you how to set frame names and options for using hector_slam with different robot systems.

    humanoid_walk

    This stack gathers tools to generate walking movements for humanoids robots. It provides both C++ interfaces through walk_interfaces, ROS interfaces through walk_msgs and pattern generators algorithms.

    1. Getting started

      Generating a simple trajectory from footprints.

    2. Loading a pre-computed trajectory

      How to use the generator node to load a stored trajectory.

    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. Writing a simple image processor

      This code snippet shows how to modify and create a sensor_msgs/Image.

    2. Choosing Good Stereo Parameters

      This tutorial walks you through a real-world example of tuning a running stereo_image_proc instance to get the best stereo results, using stereo_view and rviz for visual feedback.

    3. 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.

    4. 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. 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.

    3. 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.

    4. 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.

    5. 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.

    6. 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.

    7. 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.

    8. 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.

    9. 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.

    10. 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.

    11. 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.

    12. 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.

    kinect

    ROS Kinect is an open source project focused on the integration of the Microsoft Kinect sensor with ROS. The kinect ROS stack contains low-level drivers, visualization launch files, and PCL/OpenCV tutorials/demos.

    1. Adding a Kinect to an iRobot Create/Roomba

      This tutorial has step by step instructions for modifying the iRobot Create/Roomba to power a Kinect.

    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.

    lse_communication

    Communication stack holding some useful tools for serial port communication, CerealPort, as well as a package for communication between robots, WifiComm.

    1. Download and install wifi_comm

      This tutorial will guide you through the process if downloading and installing wifi_comm as well as olsrd.

    2. How to run wifi_comm

      This tutorial guides you through the process of running wifi_comm.

    lse_roomba_toolbox

    Useful tools for the Roomba robots used at the LSE including popular tf setups, Stage world files and 2D navigation parameters and example launch files for the real and simulated robots.

    1. Assembling the Roomba

      This tutorial guides you through the process of assembling a typical LSE Roomba.

    2. Installing the software for a Roomba

      This tutorial will guide you through the process of installing all the necessary software to run a LSE Roomba on its netbook.

    3. Simulating a Roomba on Stage

      This tutorial will guide you through the process of simulating a single Roomba equipped with a laser range finder on Stage, and how to use the navigation stack with it.

    4. Running the navigation stack on the Roomba

      This tutorial guides you through the process of setting up the navigation stack for the Roomba robot.

    mapping

    Collection of routines and functions for 3D mapping@IAS.

    1. Running pointcloud_registration

      This tutorial show how to use the pointcloud_registration package.

    mini_max

    1. Grasping an Object

      This tutorial shows how to detect an object using ar_kinect and then grasp the object using simple_arm_server.

    2. Moving the Arm

      This tutorial shows how to move the arm on Mini Maxwell using the simple_arm_server.

    3. Moving the Base

      This tutorial will show you how to move the robot base.

    4. Pointing the Head

      This tutorial shows step by step how to point the head at a point in space.

    5. Starting Up Mini Maxwell

      This tutorial guides you step by step through starting the Mini Maxwell robot

    6. Using the Buttons

      This tutorial shows how to access the state of the buttons on Mini Maxwell

    7. Assembling the Body

      This tutorial shows how to assemble the base, torso and head for Mini Maxwell

    8. Netbook Setup

      This tutorial will show you how to setup a netbook to control Mini Maxwell.

    9. Wiring Mini Maxwell

      This tutorial shows how to wire and program the servos.

    motion_analysis_mocap

    This stack provides a bridge between the Cortex software from Motion Analysis and ROS. The bridge relies on evart-stream and evart-client software written by Anthony Mallet.

    1. EVaRT setup

      How to setup evart-stream and evart_bridge?

    2. Getting started

      Basic use of evart_bridge

    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. Adding known objects to the motion planning environment

      This tutorial will introduce the topic of adding known objects to the collision environment. Known objects are shapes that have been recognized by a semantic perception pipeline or are known to exist at particular positions by a system designer.

    2. Attaching objects to the robot's body

      This tutorial describes methods by which known objects can be attached to a robot's body. Attaching an object to the body means that the object will move when the robot moves; this functionality allows motion planners and the trajectory monitor to deal with situations where the robot has grasped something and avoiding collisions between the grasped object and the environment becomes important.

    3. Making collision maps from self-filtered laser data

      This tutorial introduces the processing pipeline that takes scans from the tilting laser on the PR2, self-filters the robot from the data, and constructs a collision map that can then be used for checking potential collisions.

    4. Checking collisions for a given robot state

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

    5. 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.

    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. Basic Navigation Tuning Guide

      This guide seeks to give some standard advice on how to tune the ROS Navigation Stack on a robot. This guide is in no way comprehensive, but should give some insight into the process. I'd also encourage folks to make sure they've read the ROS Navigation Tutorial before this post as it gives a good overview on setting the navigation stack up on a robot wheras this guide just gives advice on the process.

    2. 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.

    3. 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.

    4. 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.

    netft

    netft

    1. Running NetFT node

      Tutorial describing how to configure Linux network to communicate with NetFT sensor. It also describes running NetFT ROS node and provides some troubleshooting tips.

    2. Using NetFT plugin with pr2_etherCAT

      Configuring and using NetFT plugin with pr2_etherCAT

    3. Running NetFT example controller

      Describes using and troubleshooting controller that uses AnalogIn data from netft_ethercat_hardware plugin.

    nodelet_core

    Nodelets library and tools. Nodelets are a plugin architecture for roscpp that enable dynamic loading of multiple 'nodelets' into a single ROS node instance.

    1. Porting nodes to nodelets

    2. Running a nodelet

      This will show you how to run a nodelet already in the system.

    nxt

    This stack has basic interfaces for interacting with ROS and NXT. The software in this stack is intended to run on top of the default NXT firmware provided by lego.

    1. Creating a simple robot model using lxf2urdf.py

      This tutorial demonstrates how to convert a Lego Digital Designer file (*.lxf and *.ldr) to a ROS robot model file (*.urdf).

    2. Creating an full robot in NXT-ROS

      This tutorial shos you how to create an nxt_ros.yaml file for you nxt robot and launch it to view the data.

    3. Getting started with NXT-ROS

      This tutorial describes how to start using ROS on your NXT robot.

    object_manipulation

    Functionality for performing object pickup and placing, while avoiding collisions with the environment. This stack is designed to be robot independent. It contains a complete interface for pickup and place tasks, as well as general implementation of most of the needed functionality.

    1. Install the household_objects_database on your local database server

      Shows how to create the household_objects_database on your local database server, and how to populate it using a backup file from Willow Garage.

    2. Use the household_objects_database remotely from a Willow Garage server

      Shows how to use the household_object_database remotely, by using the services provided by a database wrapper node running on a Willow Garage server.

    octomap_mapping

    The OctoMap library implements a 3D occupancy grid mapping approach, providing data structures and mapping algorithms. The map implementation is based on an octree. This stack contains the actual OctoMap package and additional code for ROS integration.

    1. Creating an OctoMap from existing 3D (mesh) data

    opencupboard

    opencupboard

    1. Running the Action Client

      Shows how to run opencupboard_action

    2. Writing the Action Client

      Shows how to use opencupboard_action

    orocos_kinematics_dynamics

    orocos_kinematics_dynamics

    1. Frame transformations (Python)

      This tutorials gets you started with KDL Frames, Vectors, Rotations, etc

    p2os

    This stack provides the p2os driver supporting any robot that uses either P2OS or ARCOS firmware. This stack also includes urdf definitions for visualization and examples to control the robot.

    1. Getting Started with p2os

      A quick tutorial for installing and running p2os with ROS

    patrol

    Multi-Robot Patrol-Related Stack from the ISR Coimbra.

    1. Running patrolling_sim

      This tutorial describes how to run the patrolling_sim package in Stage/ROS. An example is presented for ease of understanding.

    penn_lightweight_teleop

    penn_lightweight_teleop

    1. Write a node that performs analog input and output operations.

      Setup a node to use the Sensoray 626 for analog input and output operations.

    perception_pcl

    This contains the Point Cloud Library (PCL), its 3rd party dependencies, and a ROS interface for PCL nodelets.

    1. Turning a PointCloud into an Image

      This tutorial is a simple guide to turning a dense point cloud into an image message

    2. ConvexHull planar surface reconstruction

      ConvexHull planar surface reconstruction

    3. ExtractPolygonalPrismData segmentation

      ExtractPolygonalPrismData segmentation

    4. PassThrough filtering

      PassThrough filtering

    5. SACSegmentationFromNormals planar segmentation

      SACSegmentationFromNormals planar segmentation

    6. VoxelGrid filtering

      VoxelGrid filtering

    polonius

    polonius

    1. How to compose a script for use with Polonius

      A tutorial describing how to write a script for use with Polonius

    portrait_bot

    The portrait_bot stack enables the PR2 draw faces recognized in camera images.

    1. Running the portrait bot

      A tutorial on how to run the portrait_bot stack on the PR2 and the basestation.

    2. Reconfiguring the experience based parameter selector

      This tutorial describes how the experience based parameter selector can be reconfigured to give out results with different properties.

    3. Using face_contour_detector without the other packages in the portrait_bot stack

      This tutorial describes how to send the face_contour_detector requests without the rest of the tools in the portrait_bot stack.

    pr2_calibration

    Provides a toolchain running through the robot calibration process. This involves capturing pr2 calibration data, estimating pr2 parameters, and then updating the PR2 URDF. Note that the only support API for the stack is the tutorial for calibrating the PR2. All of the internal APIs are not considered to be stable.

    1. Calibrating a new sensor on the PR2

      The pr2_calibration stack is configured to work out-of-the-box with the PR2's standard sensor suite. The stack, however, also provides hooks for adding new sensors. These hooks are not fully documented or supported, but it is in fact possible to add a new sensor to the full robot calibration.

    2. PR2 Full System Calibration

      Calibrating the PR2's cameras, and kinematic parameters

    3. Calibrating the PR2's Cameras

      Calibrate the PR2's Narrow Stereo, Wide Stereo, Forearm Cams & Prosilica

    4. Kinect URDF Calibration (Experimental)

      Calibrate the Kinect Sensor into PR2's URDF

    5. Null Chain Kinect URDF Calibration

      Calibrate the Kinect sensor that is not part of any calibration chain into PR2's URDF (practically for every mount point but head).

    6. Using PR2 Auto Calibration (Experimental)

      This tutorial will show you how to use auto calibration on the PR2

    pr2_controllers

    Contains the controllers that run in realtime on the PR2 and supporting packages.

    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_ethercat_drivers

    This stack contains drivers for the ethercat system and the peripherals that connect to it: motor control boards, fingertip sensors, texture projector, hand accelerometer.

    1. Changing the packet timeout and number of process data retries for pr2_etherCAT

      Changing the packet timeout and retries for pr2_etherCAT

    2. Setting up communication with a new EtherCAT device

      Second part of tutorial. Shows how to setup process communication with new device.

    3. Using the 3-axis accelerometer on the PR2 gripper

      Introduction to the 3-axis accelerometer on the PR2 gripper

    4. Writing a controller for the gripper accelerometer.

      Writing a real-time controller for the gripper accelerometer.

    5. Integrating a new type of EtherCAT device with ROS.

      First part of tutorial. Provides minimal code needed to get pr2_etherCAT to recognize a new type of device.

    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. Simple URDF-Controller Example

      This tutorial shows you how to build a simple model with URDF, and how to link it with the controller. In addition, useful tips on building and verifying of the created robot model are given.

    12. Writing a realtime Cartesian controller

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

    13. 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_object_manipulation

    Contains PR2-specific implementations of some of the generic functionality needed for pickup and place tasks.

    1. Force Control with the PR2 Gripper

      This tutorial teaches the user how to use the pr2_gripper_sensor_action package to do force control with the PR2 gripper.

    2. Grab and Release an Object Using pr2_gripper_sensor_action

      This tutorial will show you how to get the gripper to delicately grab an object, then after a certain amount of time automatically look for a contact event (hopefully the contact of the object and the surface you wanted to place it on), and release the object after contact.

    3. Object Manipulation using find_contact, slip_servo, event_detector, and gripper_action

      Advanced tutorial on how to use the low-level actions in the pr2_gripper_sensor_action package

    4. Using the PR2 gripper's reactive actions and services

      This tutorial teaches you to call the actions and services contained in pr2_gripper_reactive_approach: reactive grasp, reactive approach, reactive lift, reactive place, compliant close, and grasp adjustment.

    5. Using the PR2 gripper's grasp planner for point clusters

      This tutorial teaches you how to use the pr2_gripper_grasp_planner_cluster to find grasps of unknown objects (as 3D point clouds from the narrow stereo).

    pr2_robot

    This stack collects PR2-specific components that are used in bringing up a robot.

    1. Adding a Hokuyo to the PR2

      Demonstrates how to add a Hokuyo to the side of the PR2. This includes modifying the URDF, and editing the robot's default launch configuration.

    2. PR2 dashboard

      This tutorial teaches you how to run the PR2 dashboard

    3. PR2 diagnostics system

      This tutorial teaches you about the PR2 diagnostics system.

    4. PR2 logger

      This tutorial teaches you how to use the PR2 logging system

    5. Modifying the Diagnostic Analyzers on a PR2

      This tutorial shows you how to modify the diagnostic analyzers on a PR2. This is useful for modified robots.

    6. Power system

      This tutorial teaches you about the PR2 power system

    7. PR2 run stops

      This tutorial teaches you about the PR2 run stops

    8. PR2 safety system

      This tutorial teaches you about the PR2 safety system.

    9. Starting up the PR2

      This tutorial guides you step by step through starting the PR2 robot

    10. Upgrading WGE100 Firmware on the PR2

      Updating and verifying the firmware for all WGE100 cameras on the PR2.

    11. Types of EtherCAT packet loss

      How to determine what is causing EtherCAT packet loss.

    12. How to run pr2_etherCAT

      How to run pr2_etherCAT for non-typical setups.

    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. PR2 Simulator Workshop

      This tutorial explores basic PR2 interfaces while using the PR2 in simulation.

    4. Building a Map in Simulation

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

    5. Faking Sensor Info in Simulation

      fake_localization node usage is introduced. It provides transform between base_link frame and the map frame.

    6. Multi-Level Map With Ramps

      An example environment with multiple floor levels and ramps.

    7. PR2 Opens a Door

      Simulated environment for testing autonomous door opening in simulation.

    8. PR2 Opens a Door

      Simulated environment for testing autonomous door opening in simulation.

    9. PR2 Plugs Itself In

      Simulate environment for testing autonomous PR2 plugging in.

    10. Pendulum Examples

      Simple pendulums examples.

    11. Running Simulator with GDB cturtle

    12. Running Simulator with GDB diamondback

    13. Starting a Separate Sensor Generation Node

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

    14. PR2 Pick and Place Demo

      PR2 Pick and Place Demo in Simulation Using the Grasping Pipeline

    15. Starting PR2 in Simulation

      Starting PR2 in Simulation

    16. Teleop PR2 arm in simulation

      This tutorial will give you keyboard teleop control of the PR2 arm

    17. Teleop PR2 Mobile Base In Simulation

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

    18. Using Custom Maps in Simulation

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

    19. Stereo Processing in Simulation

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

    20. Working with Gazebo over ROS

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

    21. Adding a GazeboRosForce gazebo ros plugin to a simulated object

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

      Attaching a ROS ground truth pose broadcaster to objects in simulation

    pr2_tabletop_manipulation_apps

    Brings together manipulation and perception for complete task execution using the PR2 robot.

    1. Starting the Manipulation Pipeline on the PR2 robot

      Covers bringing up the manipulation pipeline on the PR2 robot, to the point where it is ready to service pick and place requests.

    2. Writing a Simple Pick and Place Application

      Shows how to write a simple application where the PR2 will pick up an object from a table that's in front of it, move it to the side and then place it back down.

    3. A Simple Pick And Place Example Using The Pick And Place Manager

      This tutorial teaches you how to use the pick and place manager to pick up the object nearest to a specified point on a table, and then place it in a specified region. (Python)

    4. The Pick and Place Keyboard Interface

      A simple keyboard interface allowing the user to request the execution of pick and place tasks for the PR2. Written in C++.

    5. The Pick And Place Autonomous Demo

      A demo where the robot will autonomously move objects from one part of a table to the other and back, ad infinitum. Also has a keyboard interface for doing each step separately. Written in Python.

    prosilica_driver

    This stack contains the ROS driver and SDK for AVT/Prosilica cameras.

    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.

    qt_ros

    This stack provides templates, tutorials and other resources that assist qt on ros development.

    1. Mingw Qt-Ros Packages

      How to create qt-ros packages that can also be compiled by the mingw_cross compiler.

    2. Qt App Templates

      Speeding app development with quickstart templates via roscreate-qt-pkg.

    3. Qt App Templates

      Speeding app development with quickstart templates via roscreate-qt-pkg.

    reinforcement_learning

    Reinforcement Learning framework. Repositories of agents and environments. ROS interface for reinforcement learning algorithms. Includes the TEXPLORE algorithm and real-time architecture for model-based RL. Developed by Todd Hester and Peter Stone at the University of Texas at Austin.

    1. Reinforcement Learning Tutorial

      This tutorial explains how to use the rl-texplore-ros-pkg to perform reinforcement learning (RL) experiments. It will explain how to compile the code, how to run experiments using rl_msgs, how to run experiments using rl_experiment, and how to add your own agents and environments. This package was developed by Todd Hester and Peter Stone at the University of Texas at Austin.

    remote_lab

    A stack of tools for remote control, tele-op and remote labs.

    1. Using interactive markers with rosjs

      This tutorial describes using interactive markers in wviz

    2. Writing a simple 3D visualization for rosjs

      This tutorial covers using rosjs to write a simple 3D visualization in the browser.

    roar_stack

    ROS Opensource Audio Recognizer Stack

    1. Detecting a new audio event using the ROAR detector

      This tutorial teaches you how to use the ROAR package to detect learned audio-event models

    2. Learning a new audio event using the ROAR trainer

      This tutorial teaches you how to use the ROAR package to create and train a new model for audio-event detection

    3. Pre-Recording audio for training and testing with ROAR

      This tutorial gives instructions on how to record audio .wav files and use them for training and testing with the ROAR package

    roboearth

    ROS packages for the RoboEarth project.

    1. Create a point cloud object model

      Create a point cloud model from an object using a Kinect camera and a marker pattern

    2. Download object models and use them for object detection

      Download object models from the RoboEarth database and use them for object detection

    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 Physical and Collision Properties to a URDF Model

      Learn how to add collision and inertial properties to links, and how to add joint dynamics to joints.

    3. Adding a Sensor to the PR2 URDF

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

    4. Building a Movable Robot Model with URDF

      Learn how to define movable joints in URDF

    5. Building a Visual Robot Model with URDF from Scratch

      Learn how to build a visual model of a robot that you can view in Rviz

    6. Create your own urdf file

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

    7. Parse a urdf file

      This tutorial teaches you how to use the urdf parser

    8. 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.

    9. Understanding the PR2 URDF description, Part 2

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

    10. Understanding the PR2 Robot Description Extensions for Gazebo Simulator

      This tutorial explains URDF extensions used by Gazebo simulation.

    11. Using Xacro to Clean Up a URDF File

      Learn some tricks to reduce the amount of code in a URDF file using Xacro

    12. Using urdf with robot_state_publisher

      This tutorial gives a full example of a robot model with URDF that uses robot_state_publisher. First, we create the URDF model with all the necessary parts. Then we write a node which publishes the JointState and transforms. Finally, we run all the parts together.

    13. Start using the KDL parser

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

    14. Retrieving Files

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

    15. Exporting URDF to COLLADA

      This tutorial teaches you how to export an URDF file to a COLLADA document

    16. Working Directly with COLLADA

      This tutorial shows how to visualize COLLADA XML files and use the in the ROS system as an alternative to URDF XML files.

    17. Converting SimMechanics To URDF!

      A step by step tutorial.

    robotino

    ROS Stack for Robotino

    1. View camera images

      A guide on how to view camera images from Robotino using the image_view package.

    2. Mapping with Robotino

      Explains how to build a map with Robotino using gmapping

    3. Navigation with Robotino

      Autonomous navigation of a known map with Robotino

    ros_comm

    ROS communications-related packages, including core client libraries (roscpp, rospy, roslisp) and graph introspection tools (rostopic, rosnode, rosservice, rosparam).

    1. 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.

    2. 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.

    3. Roslisp Basic Usage

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

    4. Organizing files for roslisp

      This tutorial explains how the ASDF standard is used in roslisp, with a few added conventions.

    5. Producing filtered bag files

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

    6. 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

    ros_experimental

    Experimental packages for ROS core system development.

    1. Enabling ROS Epic Fail for a Hudson Build

      Enable ROS Epic Fail for a Hudson build, so that tests can use ROS Epic Fail

    2. Enabling ROS Epic Fail for a Package

      Enable ROS epic fail for a package

    3. Enabling ROS Epic Fail for a Test

      Use ros_epic_fail to catch bag files from a randomly failing test.

    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++.

    roslisp_common

    Common libraries to control ROS based robots. This stack contains an implementation of actionlib (client and server) in Common Lisp, a transformation library and an implementation of tf in Common Lisp.

    1. Writing actionlib servers

      This tutorial presents the macros offered by actionlib_lisp.

    2. Basic usage of actionlib with actionlib_lisp

      This tutorial gives a brief intro to writing clients for actionlib servers

    3. Basic usage of CL_TF

      This tutorial describes the tf client that allows easy access to transformations in the ROS TF framework

    roslisp_support

    Support stack for roslisp that brings in required sbcl runtime

    1. Unit Testing with RT

      This explains how to create unit tests with RT, also for rostest

    rosserial

    ROS Serial is a point-to-point version of ROS communications over serial, primarily for integrating low-cost microcontrollers (Arduino) into ROS. ROS serial consists of a general p2p protocol, libraries for use with Arduino, and nodes for the PC/Tablet side (currently in both Python and Java).

    1. Arduino IDE Setup

      This tutorial shows step-by-step how to setup up the Arduino IDE to use rosserial.

    2. Arduino Oscilloscope

      In this tutorial, we will be making a poor man's oscilloscope using the Arduino's ADC (analog to digital converter) and rxplot.

    3. Blink (example subscriber)

      This tutorial shows step by step how to use rosserial with subscribers.

    4. BlinkM Tutorial

      Control a BlinkM through ROS using an Arduino and rosserial

    5. CMake with rosserial_arduino

      This tutorial shows how to use the CMake build system with rosserial_arduino.

    6. Hello World (example publisher)

      This tutorial shows step by step how to create a publisher using rosserial.

    7. IR Ranger Tutorial

      Using an IR Ranger with rosserial and an Arduino

    8. Temperature Sensor

      Measuring Temperature using the TMP102

    9. Push Button

      Monitor a push button and publish its state in ROS

    10. SRF08 Ultrasonic Ranger

      In this tutorial, we will use an Arduino and a SRF08 Ultrasonic Ranger as a Range Finder.The SRF08 communicates with an Arduino over SPI/I2C.

    11. Servo Controller Example

      Tutorial for controlling an R/C servo with rosserial and an Arduino

    12. Using Time and TF

      This tutorial shows how to use ros::Time and TF to create a tf publisher on the Arduino.

    13. Adding Support for New Hardware

      This tutorial contains details about the custom code required to get rosserial_client working on your hardware.

    14. Generating Message Header File

      This tutorial shows how to generate message header files for using new message packages with rosserial.

    15. Using rosserial with AVR and UART

      This tutorial will show you how to get the rosserial_arduino Hello World (example publisher) tutorial running on an AVR.

    16. An Example rosserial_xbee Network

      A guide to building a simple rosserial_xbee network

    17. ROS RC Car

      controlling an a small robot base with rosserial_xbee

    shadow_robot

    This stack regroups the different ros interfaces developped for Shadow Robot's Hardware. It provides an interface to both simulated and real hardware.

    1. Creating a package to interact with our robots.

      This tutorial will show you how to create a package to interact with our robots. This is the "clean" way of working with the robots.

    2. Running the Hand and Arm Interface

      This tutorial is an introduction on how to run the Hand and Arm interface. It explains how to change from the simulated to the real interface.

    3. Moving the Robot

      First examples on how to interact with the Robot, through a GUI or simple programs.

    4. Recording a movement and replaying it.

      Uses rxbag to record and replay a movement.

    5. Using the Object Manipulation Stack with the Shadow Robot Hand.

      Using the Shadow hand / arm to do some automatic pickup and place. The 3D sensor we're using is a Microsoft kinect.

    6. Setting new Controller Parameters

      Learn how to change the PID parameters value on our real hardware using ROS.

    7. Simulation: Using the Gazebo interface

      This tutorial will get you started with our Gazebo interface.

    8. Starting different nodes on different machines

      This will show you how to easily start different nodes on different machines.

    9. Getting Data

      Getting data from the tactile sensors.

    10. Using the Real Tactile Sensors

      If you want to learn how to run the real tactile sensors interface on our hand.

    11. Using Simulated Tactile Sensors

      Learn how to use the two different simulated tactile sensors: the dummy tactile sensors, and the simulated tactile sensors in the Gazebo simulator.

    12. Create a new Controller for the Shadow Hand

      Create a new controller for the Shadow Robot Hand (EtherCAT or simulated in Gazebo).

    13. Controlling the Shadow Hand with a Cyberglove

      In this tutorial you'll learn how to easily control a Shadow Dexterous Hand using the Cyberglove.

    shadow_robot_etherCAT

    This stack contains the drivers and the controllers for Shadow Robot's EtherCAT Hand.

    1. Starting the EtherCAT Hand

      How to start the etherCAT Hand ROS driver.

    2. Controlling the EtherCAT Hand

      How can you send targets to the EtherCAT hand.

    3. Starting a set of Controllers

      How do we start a given set of controllers, to move the joint by controlling their positions, their velocity, or the forces applied.

    simple_arms

    1. Moving an Arm

      This tutorial shows step-by-step how to move an ArbotiX-based arm controlled by the simple arm server.

    simulator_gazebo

    Wrappers, tools and additional API's for using ROS with the Gazebo simulator.

    1. Simulate a Spinning Top

      Simulate a Spinning Top

    2. Gazeb Plugin Intro

      A basic tutorial that shows users how to create a gazebo plugin.

    3. Gazebo ROS API for C-Turtle

      Gazebo ROS API for C-Turtle. Manipulate and interact with simulation and simulated objects.

    4. List of Materials

      This page simply lists the available materials in Gazebo.

    5. Running Simulator Headless

      Running simulation without a graphics card or GLX support.

    6. Creating and Spawning Custom URDF Objects in Simulation

      Creating and Spawning Custom URDF objects in simulation

    7. Installing and Starting Gazebo

      How to get Gazebo up and running.

    8. Erratic Simulation

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

    9. 3D Willow Garage Map

      Example 3D world generated from the Willow Garage map.

    simulator_plumesim

    Odor plume simulator for ROS.

    1. Downloading and installing PlumeSim

      This tutorial guides you through the process of downloading and installing PlumeSim.

    2. How to export a Fluent log file for PlumeSim

      This tutorial teaches how to export a Fluent log file to be used in PlumeSim.

    3. Using PlumeSim with virtual_nose

      This tutorial teaches how to use virtual_nose with PlumeSim to simulate a virtual nose.

    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.

    slam_karto

    SLAM using KARTO from SRI International

    1. How to activate loop closure optimization (tutorial2.cpp)

      This tutorial describe how to set the internal solver inside Karto to activate the loop closure mechanism. It's based on the file tutorial2.cpp

    2. How to use Karto stand-alone (tutorial1.cpp)

      This tutorial presents how to create a localized range scan

    sql_database

    Provides an easy way to use SQL databases from the ROS environment.

    1. Installation of a PostgreSQL server

      A step-by-step "cheat-sheet" for installing a PostgreSQL server on a Ubuntu machine. Does not cover any advanced installation procedures, just a very simple installation with no additional options. After installing the server, you can set up multiple databases, restore them from backup files, etc.

    2. Introduction to using the SQL database interface

      This is a step-by-step introduction to using the SQL database interface. We will create a new class for holding our data, retrieve data from a database and write back modified fields.

    3. The SQL database interface: advanced concepts

      This tutorial shows some of the advanced concepts of using the SQL database interface, such as objects spanning multiple tables, sequences, and binary data fields.

    symbolic_planning

    The symbolic_planning stack contains symbolic planners (currently TFD/M), domain descriptions and additional packages for integration into ROS.

    1. Running the continual planning navigation demo

      This tutorial shows how to run the navigation demo for continual planning.

    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. Learn how to create your own trajectory filter

      Learn how to create your own trajectory filter

    2. 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.

    3. 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.

    turtlebot

    The turtlebot stack provides all the basic drivers for running and using a TurtleBot.

    1. Advanced Networking for Turtlebot

      Advanced methods for setting up networking on your turtlebot

    2. How to control your TurtleBot from an Android device

      This will walk you through how to control your TurtleBot from an Android phone or tablet.

    3. Environment Setup

      This tutorials steps you through setting up your desktop environment.

    4. Visualizing TurtleBot Kinect Data

      This tutorial shows you how to look at data coming from the kinect camera.

    5. TurtleBot Care and Feeding

      This tutorials explains how to charge and maintain your TurtleBot.

    6. Turtlebot Ubuntu Installer

      Using and Regenerating the Turtlebot Ubuntu Installer

    7. TurtleBot Bringup

      How to start the TurtleBot software.

    turtlebot_apps

    turtlebot_apps is a group of simple demos and exmaples to run on your TurtleBot to help you get started with ROS and TurtleBot.

    1. The TurtleBot Follower Demo

      This describes how to run the TurtleBot Follower Demo on your TurtleBot.

    2. TurtleBot Teleoperation

      How to teleoperate your TurtleBot with a keyboard, joystick, or rviz.

    3. Teleoperate a Turtlebot with the PS3 Joystick

      Teleoperate a Turtlebot with the PS3 Joystick

    4. TurtleBot Odometry and Gyro Calibration

      This will show you how to calibrate or test the calibration of a TurtleBot which is highly recommended when running any navigation based application.

    5. Autonomous Navigation of a Known Map with TurtleBot

      This tutorial describes how to use the TurtleBot with a previously known map.

    6. SLAM Map Building with TurtleBot

      How to generate a map using gmapping

    turtlebot_arm

    The turtlebot_arm package provides bringup, description, and utilities for using the TurtleBot arm.

    1. Assembling the TurtleBot Arm

      Instructions on how to assemble the TurtleBot arm.

    2. Installation Instructions for TurtleBot Arm

      Installing the software for the TurtleBot Arm, both on the TurtleBot and on the local machine.

    3. Setting up TurtleBot Arm Servos

      This tutorial walks through setting the correct IDs for the servos, confirming that the power to the board works correctly, and testing the arm.

    4. Calibrating a Kinect to the TurtleBot Arm for Manipulation

      This tutorial will describe how to calibrate the physical position of the kinect to the TurtleBot arm, when the kinect is positioned either on-board the TurtleBot or off-board.

    5. Using TurtleBot Arm Interactive Markers

      Learn to control the TurtleBot arm through interactive markers in rviz, including doing trajectory control and individual joint control.

    6. TurtleBot Arm Block Manipulation Demo

      This tutorial will walk you through picking and placing blocks on a level surface using user input from rviz.

    turtlebot_simulator

    Turtlebot specific simulation components.

    1. Installing the TurtleBot Simulator

      This tutorial will step you through installing the TurtleBot simulator on your Ubuntu desktop.

    2. Running the TurtleBot Simulator

      This tutorials demonstrates how to start the TurtleBot simulator and drive the TurtleBot in simulation.

    turtlebot_viz

    turtlebot_viz

    1. TurtleBot Teleoperation Using Interactive Markers

      A tutorial describing how to use rviz interactive markers for controlling the TurtleBot.

    twoLevelMTTD_stack

    Stack for the tracking and detection of multiple targets using the twoLevelMTTD algorithm

    1. Running a twoLevelMTTD simulation in ROS (using stageros)

      This tutorial allows and explain how to simulate (and use) the twoLevelMTTD OROCOS components using MTTD_interface for ROS.

    2. Running twoLevelMTTDExamples - Experiment 1

      This tutorial explain, step by step, how to run the first experiment in twoLevelMTTDExamples

    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 use controllers to control motor joints for the Wubble's head, laser and (smart) arm.

      How to use controllers to control motor joints for the Wubble's head, laser and (smart) arm.

    ua_drivers

    This stack contains ROS drivers for Phidgets pressure, RFID and accelerometer sensors, Phidgets InterfaceKit, Dynamixel servos, Videre Stereo cameras. Also includes low level C++ serial port interface via Gearbox project.

    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.

    3. Configuring a Multiple Joystick System

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

    vision_opencv

    Packages for interfacing ROS with OpenCV, a library of programming functions for real time computer vision.

    1. Projecting a TF frame onto an image (C++)

      This tutorial shows how to use image_geometry together with tf to project a tf frame onto a live image stream.

    2. Converting between ROS images and OpenCV images (Python)

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

    3. Converting between ROS images and OpenCV images (C++)

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

    vision_visp

    This stack wraps ViSP, the virtual visual servoing platform into ROS. In particular, visp_tracker allows online object tracking.

    1. Fine tuning of the tracking parameters

      Modifying offline and online the tracking parameters.

    2. Getting started with the ViSP moving edge tracker

      How to track an object using a recorded video sequence.

    3. Tracking your own model

      How to track a custom object.

    visualization

    Visualization tools for robots. Currently just rviz, a 3d visualization environment for robots using ROS, as well as rxbag_plugins, which extend the visualization capabilities of rxbag.

    1. Interactive Markers: Basic Controls

      This tutorial explains how the basic_controls tutorial code works.

    2. Interactive Markers: Getting Started

      This tutorial explains what Interactive Marker are and teaches you some of the basic concepts.

    3. Interactive Markers: Writing a Simple Interactive Marker Server

      This tutorial explains how to setup a minimalist server which manages a single interactive marker.

    4. Markers: Points and Lines (C++)

      Teaches how to use the visualization_msgs/Marker message to send points and lines to rviz.

    vslam

    Visual SLAM with sparse bundle adjustment

    1. Running VSLAM on Stereo Data

      A tutorial that explains how to use the stereo_vslam_node to get point and odometry information from stereo images.

    2. Introduction to Sparse Bundle Adjustment

      This tutorial introduces Sparse Bundle Adjustment (SBA), its uses, and some basic concepts.

    3. Performing SBA on Data from File

      This tutorial shows how to perform SBA on data from a file.

    4. Setting up an SBA System

      How to create an SBA system from an external source of data, perform SBA, and then visualize the results.

    warehousewg

    warehouse

    1. Running the warehouse

      How to start up and configure the Mongo DB server

    2. Using the C++ client library

      How to use the C++ client library to talk to the warehouse

    3. Using the Python client library

      How to use the Python client library to talk to the warehouse

    web_interface

    This stack contains the packages and utilities required to run the web user interface.

    1. Web App Basics

      The basics of making/using Web Apps

    wg_hardware_test

    Hardware testing tools and utilities. Willow Garage use only.

    1. Running Qualification System

      Running the WG Hardware Qualification System.

    2. Using Test Manager

      Covers using, debugging and running Test Manager.

    3. Using mtrace_plot

      Using mtrace_plot to view MotorTrace messages

    wg_robots_gazebo

    This stack contains a variety of tests and demos launch scripts in simulation.

    1. Simulating the 2dnav Stack

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

    wge100_driver

    This stack contains the ROS driver and firmware for the WGE100 camera used on the PR2 robot.

    1. 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.

    2. 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.

    3. Running the WGE100 camera in externally triggered mode

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

    win_ros

    Setup and utilities for ros on windows.

    1. Mingw Build Environment

      a cross-compiling build environment for mingw programs.

    2. Mingw Packages

      How to create ros packages that can also be compiled by the mingw_cross compiler.

    3. Mingw Qt-Ros Packages

      How to create qt-ros packages that can also be compiled by the mingw_cross compiler.

    4. Visual Studio Build Environment

      Compiling ros packages with rosbuild2 and the ms visual studio compiler.

    5. Visual Studio SDK

      Installing, configuring and verifying the windows sdk.

    6. Visual Studio SDK Projects

      Setting up projects in Visual Studio that use the sdk.

    7. Mingw Build Environment

      A cross-compiling build environment for mingw programs.

    8. Mingw Cross and Native Mingw Compatibility

      Often you'll need to transfer some mingw_cross built libs to a native mingw windows environment so that you can finish development. Either its because your colleagues are using windows, or you have other libraries already built in the native mingw environment that you cant rebuild with mingw_cross. This guide was written based on Guillaume Walck's experiences.

    9. Mingw Packages

      How to create ros packages that can also be compiled by the mingw_cross compiler.

    10. Mingw Qt-Ros Packages

      How to create qt-ros packages that can also be compiled by the mingw_cross compiler.

    world_db_model

    world_db_model is a framework for creating and maintaining a consistent and persistent state of the world. The idea is to record raw sensor data in bags and provide the results an interface to spatially query detector results. The results of detector plug-ins are calculated on demand and cached in an sqlite3 database. world_db_model provides a core node that contains the basic functionality to load plug-ins, record data into bags and play them back and store detection results. Further, it provides a plug-in for recording the tf-tree which is essential for spatial indexing in the bags, and a library for the easy creation of detector plug-ins.

    1. Integrating a detector

      This tutorial describes how to integrate a custom detector into world_db_model.

    zeroconf_implementations

    Convenient wrappers around platform-dependant implementations whose purpose are both to expose a fairly standard sort of api as well as a ros api (topics and services) where practical. The only implementation it doesn't include is the android (will eventually merge back in here if ubuntu starts officially including adk packages).

    1. Zeroconf Avahi Tutorials

      Tutorials for an avahi (linux) implementation of zeroconf.

    2. Zeroconf Jmdns Tutorials

      Tutorials for a java (android) implementation of zeroconf.

    3. Understanding Service Types

      Explains the zeroconf service type formats.

    4. Debugging with Avahi Command Line Tools

      Some tips on how to use the avahi tools to debug zeroconf services.

    5. Discover Ros Masters with Avahi

      Illustrates how to discover ros master services with avahi.

    6. Publishing a Ros Master with Avahi

      Illustrates how to publish a zeroconf service for your ros master with avahi.

    7. Zeroconf Using Ros Api with Avahi

      Illustrates how to do generic publishing/discovery of zeroconf services using a ros style api with avahi.

    8. Publishing Services

      Illustrates how to use the zeroconf_jmdns api to publish services.

    9. Service Discovery via Callbacks

      Shows how to do service discovery with jmdns using callbacks.

    10. Service Discovery via Polling

      Shows how to do service discovery with jmdns using a simple polling method.

    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. How to use ROSARIA with ActivMedia/MobileRobots/Adept robots

      This tutorial describes how to get started using ROSARIA with ActivMedia/MobileRobots/Adept robots (supported with Aria library). Using an iPhone's inertial sensing like a joystick to drive the robot is demonstrated.

    4. Dashboard

      This tutorial show you how to run the simulation of the Care-O-bot on your pc.

    5. Running showcase applications

      Short tutorial on running some apps ready to launch as showcase.

    6. Using USB flash drive for bag files storage

      Simple how-to on using USB flash drive for storing bag files (as EeePC internal HDD has very limited capacity)

    7. CMake for avr_bridge

      cmake compilation and programming for arduinos using avr_bridge

    8. Hello World

      The avr_bridge hello world using an arduino

    9. Setting Up Eclipse for avr_bridge

      How To set up Eclipse IDE for compiling and programming the avr_bridge avr code

    10. How to train and use the BiGG object detector

      This tutorial presents a brief description of the steps needed to train and use the BiGG object detector

    11. Using cob_arm_navigation to plan collision-free arm movements for Care-O-bot 3.

      This tutorial will explain which launch files need to be started to plan collision-free movements for the care-o-bot mobile manipulator.

    12. Train a new object

      This tutorial teaches you how to train a new object with the IPA object detection package.

    13. Contour Initialization

      In this tutorial you will learn how to initial the contour of a given object in an image or in a video.

    14. Tracking

      In this tutorial you will learn how to use the CCD algorithm to track the motion of a moving object in a sequence of images, e.g. a video.

    15. Segmentation

      In this tutorial you will learn how to use the CCD algorithm to segment an observed object in a static image

    16. Set-up of CCD and parameters initialization

      In this tutorial, you learn how to install the CCD and set up the parameters which control the run-time behaviour

    17. How to Write Your First .cfg File

      This tutorial will familiarize you with .cfg files that allow you to use dynamic_reconfigure.

    18. Setting Up Dynamic Reconfigure for a Node

      Setting Up Dynamic Reconfigure for a Node

    19. Setting up Dynamic Reconfigure for a Node(cpp)

      How to make a node dynamically reconfigureable in C++.

    20. Setting up Dynamic Reconfigure for a Node (python)

      How to make a node dynamically reconfigureable in python

    21. Using the Dynamic Reconfigure Python Client

      This tutorial cover basic setup and usage of the dynamic_reconfigure client.

    22. Learning templates online

      In this tutorial we learn how to write a program that learns and detects dominant orientation templates.

    23. Loading and detecting previously learned templates

      In this tutorial we learn how to write a program that loads and detects templates.

    24. 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.

    25. Debug the grasp evaluation service

      This tutorial teaches you how to debug the grasp evaluation server with visualized results

    26. Towers of Hanoi Usage

      This tutorial covers how to run the Towers of Hanoi puzzle

    27. ICRA manipulation demo sync point hierarchy

      A list of the sync points used to pause the demo when using the demo joystick controller.

    28. Install the model database server and data on a new robot or machine

      Describes how to install and start the PostgreSQL server on a robot. Does not show how to load the actual database onto this server.

    29. One-line key points to mention during the manipulation demo

      A simpler form of the main demo page which describes all the functionality in detail. Think of it as a "cheat-sheet" for remembering the main points that the audience might be interested in.

    30. Running the ICRA manipulation demo

      This tutorial explains how to run the ICRA manipulation demo.

    31. Set up the source code tree for the ICRA manipulation demo

      Easy-to-follow instructions for downloading and building all the code you need for the manipulation demo on a robot.

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

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

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

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

    34. ROS パッケージの作成

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

    35. シンプルな配信者と購読者の検査

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

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

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

    37. ROS wiki の使い方

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

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

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

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

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

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

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

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

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

    42. rxconsole と roslaunch を使う

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

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

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

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

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

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

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

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

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

    47. ROS 파일시스템 돌아다니기

      이 자습서는 ROS 파일시스템 개념을 소개하고, roscd, rosls, rospack 명령행 도구 사용법을 다루고 있습니다.

    48. 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.

    49. Annotating images through command line tools

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

    50. 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.

    51. Creating new image annotation tasks

    52. 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.

    53. Moving the PR2 arm using command line

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

    54. Using the move_arm_service package

      Explains how to use the services to make simpler calls to move_arm and interpolated_ik_motion_planner.

    55. Cross-Compiling ROS for the Nao

      This tutorial covers the steps necessary for cross-compiling ROS for the Nao's AMD Geode platform.

    56. Cross-Compiling ROS for the Nao (cturtle on NaoQI 1.6)

      This tutorial covers the steps necessary for cross-compiling ROS cturtle for the Nao's AMD Geode platform (NaoQI 1.6).

    57. Assisted Teleop Video Demo

      This is the demo shown in the announcement video.

    58. Building a Database From a Set of Images

      This tutorial describes how to create a database for ODUfinder from set of images. The database is stored into binary files, which can than be used by ODUfinder in order to recognize objects.

    59. Detecting Objects

      This tutorial describes how to use ODUfinder in order to detect objects in the camera images

    60. Getting Started with openning the cupboard

      These tutorial will show you how to use the GraspHandleAction

    61. How to write a simple client for opendoors action server

      This tutorial shows how to write a simple client for the GraspHandleAction

    62. Writing the Action Client

    63. Writing the action Client

    64. How to collect data

      How to collect data

    65. All of the deprecated tutorials in one place.

      All of the text from the deprecated tutorials.

    66. Processing Results with the Stair Vision Library

      Processing results using the Stair Vision Library

    67. Writing and Using a Simple Plugin

      This tutorial describes how to create and then load a simple plugin using pluginlib.

    68. Calling Grasp Adjustment

    69. 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.

    70. 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.

    71. 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.

    72. 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.

    73. 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.

    74. Customizing a Joystick Configuration

    75. Remote Operation of a PR2

    76. Running PR2 Counterbalance Check

      Shows how to run the counterbalance adjustment test on the PR2.

    77. Adding a new detector to the recognition infrastructure

      This tutorial shows how to add a new detector to the recognition infrastructure

    78. Testing the teleoperation pipeline

      A tutorial about how to set up and use the teleoperation pipeline with REEM. The pipeline can be tested using a Kinect or a provided bag file containing an example captured operator motion.

    79. Adding a new detector to the recognition infrastructure

      This tutorial shows how to add a new detector to the recognition infrastructure

    80. Using multiple cameras

      Describes how to set up udev rules and launch files to use several robotino_cams

    81. Calibrating the Robotino grappler

      Steps on how to calibrate the grappler on Robotino

    82. A More Advanced Publisher/Subscriber

      A tutorial to show how to change control values via ROS Publishers and Subscribers

    83. Basic Interaction with ROS and TouchOSC

      Interacting with some of the capabilities of ROS and OSC

    84. Setting up ROSOSC

      Setting up an environment to use ROSOSC and TouchOSC

    85. Loading TouchOSC Layouts with ROS

      Basics of TouchOSC and loading custom layouts to iOS devices.

    86. Using Tabpage Handlers (Teleop)

      How to use pre-built tabpage handlers in the ROSOSC stack. In particular, the teleoperation tabpage handler.

    87. Using Tabpage Handlers (Diagnostics)

      How to use pre-built tabpage handlers in the ROSOSC stack. In particular, the diagnostics tabpage handler.

    88. Using the Default tabpage handler to interact with TouchOSC layouts

      How to use the default tabpage handler to interact with TouchOSC layouts

    89. 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

    90. 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

    91. Getting Started with rosserial_java

      How to get started with rosserial_java on Android

    92. How to run rosworldwind

      This tutorial covers how to visualize a Marker on a virtual globe.

    93. Installing rosworldwind

      This tutorial will guide you through the process of installing rosworldwind

    94. Writing your own controller.

      It is relatively easy to write a new controller.

    95. Running a stand-alone Shadow Hand

      Describes steps needed to get Shadow Hand running stand-alone.

    96. Plot mtrace data from Shadow Hand device

      Plot mtrace data from Shadow Hand device

    97. Detailed Explanation

      This tutorial gives you detailed explanation about the SRS tutorials.

    98. Get the milk

      This tutorial teaches you how to run the get milk script.

    99. Installing stacks for SRS tutorials

      This tutorial teaches you how to install stacks for the srs tutorials.

    100. Testing the grasp action server.

      This tutorial teaches you how to test the grasp action server

    101. Introduction to Stage Controllers

      Stage (ver 3.0.0 and above) is equipped to work as standalone, wherein controllers integrated into stage enables motion, behaviour and processes for the robot(s). This tutorial discusses two such stage controllers.

    102. Making Maps Using Stage's Wander Controller

      This tutorial uses stage's wander controller to obtain a map of the robot's environment in an incremental manner.

    103. 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.

    104. First Flight

      This tutorial walks through the first 'flight' using starmac-ros-pkg. This is done using the simple quadrotor simulator provided by flyer_sim and so you can do this tutorial without an actual robot.

    105. Installing starmac-ros-pkg

      This tutorial provides a guide to installing starmac-ros-pkg and its dependencies

    106. Download and install swissranger_camera

      This tutorial guides you through the process of downloading and installing all the software needed to run your Swissranger 3D Camera.

    107. Cabinet Handle Detection

      This tutorial explains how to run tabletop_for_cabinet to find a handle on a cabinet door. It also shows how to see the handle in rviz.

    108. Recognition Node

      This tutorial explains how to start a ROS recognition node and recognize objets

    109. Recognizing tools

      This tutorial explains how to recognize objects using tod_detecting

    110. Training Base Creation

      A guide to creating a training base suitable for textured object recognition from a prerecorded bag.

    111. recording a training bag

    112. Connecting the XV-11 Laser to USB

      This tutorial will show you how to remove the XV-11 vacuum cleaner's built in laser and connect it as a stand alone laser scanner through USB.

    113. Running the XV-11 Laser Node

      This tutorial will walk you through installing and running the XV-11 Laser Node so that you get laser scans in rviz.

    114. The Underlying XV-11 Protocol Explained

      This tutorial will walk you through one entire message sent from the XV-11 laser and will tell you exactly what gets output from the unit. This is an advanced tutorial for those interested in the raw data formatting. This is for the older firmware only.

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