ROS Tutorial: Difference between revisions

From ISRWiki
Jump to navigation Jump to search
No edit summary
Line 236: Line 236:


bla bla
bla bla
= Shadow Robot Stack =
== Installation ==
== Start Using ==
= Cyberglove =
= ROS - OpenRAVE =
= Interfacing Other Robots =

Revision as of 16:13, 27 February 2011

Note: this tutorial is under construction.

Install ROS

To start using ROS meta operating system for robots, we recommend to follow the next steps:

  1. First you must install ROS. There already exist a very good tutorial to do so, and when you reach the part where you have to decide which version of ROS you want to install, we recommend to select the BASE edition. "Base: ROS plus robot-generic stacks (e.g. navigation, visualization". The tutorial is in here(Install ROS Tutorial).
  2. To get a quick and good tutorial for beginners see this page (BEGINNERS TUTORIAL). We recommend to read at least the beginners tutorials.
  3. To start adding stacks FIRST CHECK if the STACK you want is in THIS List, If it is, you can install it easily by the next command, but be careful, because unfortunately, not all stacks in the list (but most of them) can be installed by the following method. The shadow_robot STACK it's one of them. You can install a specific ROS stack in the previous list just replacing underscores with dashes of the stack name with the following:
sudo apt-get install ros-cturtle-STACK-NAME

if your installation fails, then read the next section.

3rd Party Stacks & Packages installations

Source code, stacks and packages are stored in different repositories depending on who is developing the code. Must common repositories are the SVN and Bazar, so, downloading and installation are covered in this tutorial, but first, you must know how to identify these data.

When You are interested in a particular software, as showed in the beginners tutorial, you should search for the topic, and eventually, you will find yourself in a web-page similar to the one that is shown in the Figure below.


In the Figure, it is important that you recognize five features:

  1. Application Name (Green). This name, shows the main functionality of the stack. Sometimes has the same name as the STACK name, but is not always the case.
  2. STACK name (Magenta). This is the actual name of the STACK. the others that are at the right side of the STACK name, are the sub-stacks or packages contained in this STACK. So, before considering to install the stack, first check if you have it already installed.
  3. Dependencies (Yellow). Before starting to install this actual STACK, is very recommended that you first have this stack-dependencies installed. Yes, this means that you have to track back all the dependencies until you find one with all dependencies already installed. (Ros Base has install for you many of the most common, so don't worry so much).
  4. Repository (Blue). Acording to the repository, you will proceed to to the installation. In next subsection we will show how to do Downloading an installation of ROS-PKG (SVN) and Bazar repositories.
  5. SOURCE or trunk link (Red). This is the branch for downloading the SOURCE code.


From ROS-PKG: SVN Repository

ROS-PKG is a community repository for developing libraries that are generally robot agnostic. Many of the capabilities frequently associated with ROS, such as a navigation library and rviz visualizer, are developed in this repository. To see the list of stacks of this Repository, pleas go to this page: ROS-PKG STACKS LIST

In this part of the tutorial we will show how to install the Perception_PCL STACK, but steps are the same for any stack from the ROS-PKG Repository. To install any of the stacks here, do the following:

STACK=perception_pcl

First, make sure that you DON'T have this stack or package already installed. In terminal enter:

rosstack find $STACK

In this case, as the stack has been not installed, there will be a reply. In the case that you have it already installed, the result will be the Directory in which you have the stack installed. You can also search if the code is declared as a PACKAGE, so look for it entering in Terminal the following:

rospack find $STACK

In this case, it will complain again. So, what is next step?... ensure that we have already installed the Dependencies. IN THIS SPECIFIC case, Dependancies are:

  • common
  • common_msgs
  • driver_common
  • geometry
  • ros
  • ros_comm

We know in advance that these stacks, are part of the default ROS Base, so you don't have to track back any stack or package, so we can continue.

Make sure you have SVN installed.

sudo aptitude install subversion

Create the Directory where you want to install the stack, and go there..

mkdir -p $HOME/Ros_Stacks/
cd $HOME/Ros_Stacks/

Then you can checkout the SOURCE (trunk link) from the svn repository listed in the wiki. The trunk if you are curious is the default branch of code in a svn repository, as opposed to the experimental branch. So, when you go to the STACK web page, you will see the something like in the Figure above.

You should pay special attention to the Repository and to the Source lines. The Repository line, indicates the name of the STACK and the source indicates the link to experimental stack. What we want, is to get the whole Stack, so, in order to do that, first, copy the link of the SOURCE line but delete everything after the word " https:......../trunk/ ". then in terminal, save it in a variable, for example:

SOURCE="https://code.ros.org/svn/ros-pkg/stacks/perception_pcl/trunk"

Now that we have the STACK name and the SOURCE, we just do the following in Terminal

svn co $SOURCE $STACK

After downloaded, edit your ROS_PACKAGE_PATH in your .bashrc

export ROS_PACKAGE_PATH=$HOME/Ros_Stacks/$STACK:$ROS_PACKAGE_PATH
echo "export ROS_PACKAGE_PATH=$HOME/Ros_Stacks/$STACK:$ROS_PACKAGE_PATH" >> $HOME/.bashrc

Almost finish. To actually install the stack, you have to enter to the stack directory and install the STACK. to do so, just enter in terminal:

roscd $STACK
rosmake --rosdep-install

Ok, now you can try your STACK.

3rd Party from Bazar Repository

bla bla bla ...

Kinect Stack

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.

Install Drivers

To Install the Kinect STACK, You first need installed the following stacks

To know how to install them, please read ROS-PKG: SVN Repository

As you will see, Kinect STACK is in the GIT repository, so, First install the git and also the easy install tool from ROS, in terminal enter the following:

sudo apt-get install python-setuptools git-core
sudo easy_install -U rosinstall

Now, download the source code by typing in terminal:

mkdir -p $HOME/Ros_Stacks/
cd $HOME/Ros_Stacks/
wget http://github.com/ros-pkg-git/kinect/raw/master/kinect.rosinstall --no-check-certificate
rosinstall $HOME/Ros_Stacks/kinect-devel /opt/ros/cturtle kinect.rosinstall

Now, to set up your environment.

source $HOME/Ros_Stacks/kinect-devel/setup.bash

Build ROS-kinect:

. $HOME/Ros_Stacks/kinect-devel/setup.sh
rosmake kinect --rosdep-install

Now install kinect and visualilzation

sudo apt-get install ros-cturtle-kinect ros-cturtle-visualization

Now plug in Kinect to USB port and open up permissions on usb port by entering in Terminal the following:

sudo chmod 777 -R /dev/bus/usb

Using udev rules, your computer will always be setup to use the kinect. This only needs to be done once. In Lucid, paste the following into /etc/udev/rules.d/53-kinect.rules Hint: use sudo.

sudo gedit /etc/udev/rules.d/53-kinect.rules

And copy the next text into the file and save it.

# /etc/udev/rules.d/53-kinect.rules
# make kinect device mount with writing permissions
#(default is read only for unknown devices)
# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02b0", MODE="0666"

# ATTR{product}=="Xbox NUI Audio"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ad", MODE="0666"

# ATTR{product}=="Xbox NUI Camera"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ae", MODE="0666"

Now Make sure the kinect is disconnected from your computer and run:

sudo service udev reload

Then reconnect your kinect and wait at least 10 seconds (camera initialization). Permissions should be normal (read/write).

To test if the Kinect is publishing in ROS, type:

rxgraph

In a new terminal Launch the Kinect by entering:

. /opt/ros/cturtle/setup.sh
roslaunch kinect_camera kinect_with_tf.launch

Now to Launch the Visualization, create the file /tmp/kinect.vcg

gedit /tmp/kinect.vcg 

...and copy the following text:

Background\ ColorR=0
Background\ ColorG=0
Background\ ColorB=0
Fixed\ Frame=/kinect_depth
Target\ Frame=<Fixed Frame>
Camera.Alpha=0.5
Camera.Enabled=1
Camera.Image\ Topic=/kinect/rgb/image_raw
Camera.Transport\ Hint=raw
Camera2.Alpha=0.5
Camera2.Enabled=1
Camera2.Image\ Topic=/kinect/depth/image_raw
Camera2.Transport\ Hint=raw
Grid.Alpha=0.5
Grid.Cell\ Size=1
Grid.ColorR=0.5
Grid.ColorG=0.5
Grid.ColorB=0.5
Grid.Enabled=1
Grid.Line\ Style=0
Grid.Line\ Width=0.03
Grid.Normal\ Cell\ Count=0
Grid.OffsetX=0
Grid.OffsetY=0
Grid.OffsetZ=0
Grid.Plane=0
Grid.Plane\ Cell\ Count=50
Grid.Reference\ Frame=<Fixed Frame>
Point\ Cloud2.Alpha=0.5
Point\ Cloud2.Billboard\ Size=0.001
Point\ Cloud2.Color\ Transformer=Flat Color
Point\ Cloud2.Decay\ Time=0
Point\ Cloud2.Enabled=1
Point\ Cloud2.Position\ Transformer=XYZ
Point\ Cloud2.Selectable=1
Point\ Cloud2.Style=2
Point\ Cloud2.Topic=/kinect/depth/points2
Point\ Cloud2..Flat\ ColorColorR=1
Point\ Cloud2..Flat\ ColorColorG=1
Point\ Cloud2..Flat\ ColorColorB=1
Point\ Cloud2..IntensityAutocompute\ Intensity\ Bounds=1
Point\ Cloud2..IntensityMax\ ColorR=1
Point\ Cloud2..IntensityMax\ ColorG=1
Point\ Cloud2..IntensityMax\ ColorB=1
Point\ Cloud2..IntensityMax\ Intensity=4096
Point\ Cloud2..IntensityMin\ ColorR=0
Point\ Cloud2..IntensityMin\ ColorG=0
Point\ Cloud2..IntensityMin\ ColorB=0
Point\ Cloud2..IntensityMin\ Intensity=0
Tool\ 2D\ Nav\ GoalTopic=move_base_simple/goal
Tool\ 2D\ Pose\ EstimateTopic=initialpose
Camera\ Type=rviz::OrbitViewController
Camera\ Config=2.88559 6.26704 6.20208 0.118644 2.18674 -0.179489
Property\ Grid\ State=selection=Camera2.Enabled.Camera2.Image Topic;expanded=.Global Options,Point Cloud2.Enabled,Camera.Enabled,Camera2.Enabled;scrollpos=0,0;splitterpos=330,660;ispageselected=1
[Display0]
Name=Grid
Package=rviz
ClassName=rviz::GridDisplay
[Display1]
Name=Point Cloud2
Package=rviz
ClassName=rviz::PointCloud2Display
[Display2]
Name=Camera
Package=rviz
ClassName=rviz::CameraDisplay
[Display3]
Name=Camera2
Package=rviz
ClassName=rviz::CameraDisplay

Close the rxgraph and now in a new Terminal Launch the visualization software RVIZ. Notice that the default launch for rviz is set to display 3 Cameras. If when starting, the window seems to take a lot of memory (and most probably it will), you can release memory by UNCHECKING the Cameras in the left table as shown in the figure.

. /opt/ros/cturtle/setup.sh
rosrun rviz rviz -d /tmp/kinect.vcg&

That's it. You can kill processes and unplug the Kinect.

Test Demos

bla bla

Shadow Robot Stack

Installation

Start Using

Cyberglove

ROS - OpenRAVE

Interfacing Other Robots