# content to be included in other tutorials

When working with ROS source code, it is often useful to do so in a "workspace". For the following ROS tutorials you will need an area for working on tutorials and creating new ROS stacks and packages.

[[rosws]] is a tool that provides a uniform interface to various version control systems  such as SVN, Git and Mercurial and for managing all packages installed in a ROS overlay. An extensive tutorial on rosws can be found [[http://www.ros.org/doc/api/rosinstall/html/rosws_tutorial.html|here]].

=== Creating a new workspace ===

The following command creates a new workspace in `~/fuerte_workspace` which extends the set of packages installed in /opt/ros/fuerte:
{{{
rosws init ~/fuerte_workspace /opt/ros/fuerte
}}}

'''Note:''' rosws is part of the [[rosinstall| rosinstall package]], which is not installed by default. The following command downloads it using the Ubuntu package manager:
{{{
sudo apt-get install python-rosinstall
}}}

=== Creating a sandbox directory for new packages ===

New packages need to be put in a path that is in the variable `ROS_PACKAGE_PATH`. All directories that are managed by rosws, i.e. that have been added using rosws are automatically added to the `ROS_PACKAGE_PATH` when the file `setup.bash` of the corresponding workspace is sourced. Although new packages should always be put in repositories that have been installed using rosws, it can be very convenient to have a sandbox directory where for instance packages created during the tutorials can be put without requiring any additional rosws commands. For that we create a new directory sandbox and add it to the hidden `.rosinstall` file with rosws:

{{{
mkdir ~/fuerte_workspace/sandbox
rosws set ~/fuerte_workspace/sandbox
}}}

Every time the entries in the workspace change, it is necessary to re-source `~/fuerte_workspace/setup.bash` to make sure that the updated `ROS_PACKAGE_PATH` is used.

{{{
source ~/fuerte_workspace/setup.bash
}}}

It is very common to replace the line `source /opt/ros/fuerte/setup.bash` to source the setup.bash in `~/fuerte_workspace` or whichever workspace you use most often.

A more complete ROS Workspace tutorial can be found [[fuerte/Installation/Overlays|here]].

=== Confirmation ===
To confirm that your package path has been set, echo the ROS_PACKAGE_PATH variable.

{{{
$ echo $ROS_PACKAGE_PATH
}}}
 
You should see something similar to:

{{{
/home/your_user_name/fuerte_workspace/sandbox:/opt/ros/fuerte/share:/opt/ros/fuerte/stacks
}}}