ROS Tutorial: Difference between revisions
Lestergarcia (talk | contribs) |
|||
(20 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Note: ''this tutorial is under construction''. | Note 1: ''this tutorial is under construction''. | ||
Note 2: ''for the '''past distribution of ROS C-Turtle''', please review [http://mediawiki.isr.ist.utl.pt/wiki/ROS_C_Turtle this link]'' | |||
= Install ROS = | = Install ROS = | ||
Line 5: | Line 7: | ||
To start using ROS meta operating system for robots, we recommend to follow the next steps: | To start using ROS meta operating system for robots, we recommend to follow the next steps: | ||
# 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 | # 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 '''"Desktop-Full Install"'''. An easy to follow tutorial on how to install ROS is in here([http://www.ros.org/wiki/diamondback/Installation/Ubuntu ROS Installation]). | ||
# To get a quick and good tutorial for beginners see this page ([http://www.ros.org/wiki/ROS/Tutorials BEGINNERS TUTORIAL]). We recommend to read at least the beginners tutorials. | # To get a quick and good tutorial for beginners see this page ([http://www.ros.org/wiki/ROS/Tutorials BEGINNERS TUTORIAL]). We recommend to read at least the beginners tutorials. | ||
# To start adding stacks | # To start adding stacks please read next section. | ||
= 3rd Party Stacks & Packages installations = | = 3rd Party Stacks & Packages installations = | ||
Line 80: | Line 78: | ||
Ok, now you can try your STACK. | Ok, now you can try your STACK. | ||
== | == From Bazar (bzr) Repository == | ||
First, make sure that you have the bazar installed in your pc | |||
sudo apt-get install bzr | |||
Then prepare the directory where you want to install the STACK. | |||
mkdir -p $HOME/Ros_Stacks/ | |||
cd $HOME/Ros_Stacks/ | |||
Get the SOURCE code, that is the link of the web-page, example | |||
== | SOURCE="lp:sr-ros-interface" | ||
STACK="shadow_robot" | |||
bzr branch $SOURCE | |||
mv sr-ros-interface/shadow_robot . | |||
rm -r sr-ros-interface | |||
Export the PATH to $ROS_PACKAGE_PATH | |||
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 | |||
finally, build the STACK | |||
roscd $STACK | |||
rosmake --rosdep-install | |||
== From Mercurial (hg) Repository == | |||
First, make sure that you have the Mercurial installed in your pc | |||
sudo apt-get install | sudo apt-get install mercurial | ||
Then prepare the directory where you want to install the STACK. | |||
mkdir -p $HOME/Ros_Stacks/ | mkdir -p $HOME/Ros_Stacks/ | ||
cd $HOME/Ros_Stacks/ | cd $HOME/Ros_Stacks/ | ||
Get the SOURCE code, that is the link of the web-page. As a example , we install the [http://www.ros.org/wiki/control '''control STACK'''] | |||
STACK="control" | |||
SOURCE="https://bitbucket.org/sglaser/control" | |||
cd $HOME/Ros_STACKS | |||
hg clone $SOURCE | |||
Export the path | |||
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 | |||
Finally, build the Stack | |||
roscd $STACK | |||
rosmake --rosdep-install | |||
= 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 == | |||
In the C-Turtle distribution, the use of Kinect was done trough the Kinect Stack, now, in Diamondback, it is done by the [http://www.ros.org/wiki/ni ni STACK]. let us see how to install it. | |||
First, we need to have installed the following STACKS. To know how to install them, please read [http://mediawiki.isr.ist.utl.pt/wiki/ROS_Tutorial#3rd_Party_Stacks_.26_Packages_installations 3rd Party stacks installation]. | |||
[[ | * [http://www.ros.org/wiki/camera_drivers camera_drivers] | ||
* [http://www.ros.org/wiki/perception_pcl perception_pcl] | |||
* [http://www.ros.org/wiki/perception_pcl_addons perception_pcl_addons] | |||
[http://www.ros.org/wiki/openni_kinect openni_kinect] | |||
= Shadow Robot Stack = | = Shadow Robot Stack = | ||
Line 245: | Line 153: | ||
To Install the full shadow_robot STACK, You first need installed the following stacks: | To Install the full shadow_robot STACK, You first need installed the following stacks: | ||
* [http://www.ros.org/wiki/bosch_drivers bosch_drivers] | |||
* [http://www.ros.org/wiki/pr2_common pr2_common] | * [http://www.ros.org/wiki/pr2_common pr2_common] | ||
* [http://www.ros.org/wiki/pr2_mechanism pr2_mechanism] | * [http://www.ros.org/wiki/pr2_mechanism pr2_mechanism] | ||
* [http://www.ros.org/wiki/control control] | * [http://www.ros.org/wiki/trajectory_msgs trajectory_msgs PACKAGE] (use roscd trajectory_msgs to check if is already installed) | ||
* [http://www.ros.org/wiki/control control] (it's in Mercurial Repository) | |||
* [http://www.ros.org/wiki/pr2_controllers pr2_controllers] | * [http://www.ros.org/wiki/pr2_controllers pr2_controllers] | ||
* [http://www.ros.org/wiki/pr2_simulator# pr2_simulator] | * [http://www.ros.org/wiki/pr2_simulator# pr2_simulator] | ||
Because the developer of this STACK Ugo Cupcic recommend it, instead of just installing the whole STACK at once, we first download the full STACK and then begin installing the [http://www.ros.org/wiki/sr_hand sr_hand PACKAGE], | Because the developer of this STACK Ugo Cupcic recommend it, instead of just installing the whole STACK at once (that will give several errors), we first download the full STACK and then begin installing the [http://www.ros.org/wiki/sr_hand sr_hand PACKAGE], then the sr_control_gui PACKAGE, and finally we will add the rest of the packages. | ||
As you will see in the, the shadow_robot STACK and [http://www.ros.org/wiki/sr_hand sr_hand PACKAGE], the repository is in Bazar, so, first make sre that you have the bazar installed. | As you will see in the, the shadow_robot STACK and [http://www.ros.org/wiki/sr_hand sr_hand PACKAGE], the repository is in Bazar, so, first make sre that you have the bazar installed. | ||
Line 278: | Line 188: | ||
echo "export ROS_PACKAGE_PATH=$HOME/Ros_Stacks/$STACK:$ROS_PACKAGE_PATH" >> $HOME/.bashrc | echo "export ROS_PACKAGE_PATH=$HOME/Ros_Stacks/$STACK:$ROS_PACKAGE_PATH" >> $HOME/.bashrc | ||
Until now, we just downloaded the whole STACK, and as Ugo Cupcic recommended, we will install first the sr_hand PACKAGE, so, to do that, in Terminal enter: | Until now, we just downloaded the whole STACK, and as Ugo Cupcic recommended, '''we will install first the sr_hand PACKAGE''', so, to do that, in Terminal enter: | ||
PACKAGE="sr_hand" | PACKAGE="sr_hand" | ||
roscd $PACKAGE | |||
rosmake --rosdep-install | |||
Now, let us procede with the '''sr_control_gui PACKAGE''' | |||
PACKAGE="sr_control_gui" | |||
roscd $PACKAGE | |||
rosmake --rosdep-install | |||
Now, build the '''cyberglove PACKAGE''' | |||
PACKAGE="cyberglove" | |||
roscd $PACKAGE | |||
rosmake --rosdep-install | |||
Now. build the '''dataglove STACK'''. To do so, enter the following in Terminal: | |||
STACK="dataglove" | |||
export ROS_PACKAGE_PATH=$HOME/Ros_Stacks/shadow_robot/$STACK:$ROS_PACKAGE_PATH | |||
echo "export ROS_PACKAGE_PATH=$HOME/Ros_Stacks/shadow_robot/$STACK:$ROS_PACKAGE_PATH" >> $HOME/.bashrc | |||
roscd $STACK | |||
rosmake --rosdep-install | |||
Now install the '''dataglove_processing PACKAGE''' | |||
PACKAGE="dataglove_processing" | |||
roscd $PACKAGE | |||
rosmake --rosdep-install | |||
Now build the '''sr_remappers''' | |||
PACKAGE="sr_remappers" | |||
roscd $PACKAGE | roscd $PACKAGE | ||
rosmake --rosdep-install | rosmake --rosdep-install | ||
Line 304: | Line 242: | ||
Now, start the GUI Interface | Now, start the GUI Interface | ||
rosrun sr_control_gui sr_control_gui | rosrun sr_control_gui sr_control_gui | ||
''' UPDATE ''' | |||
roslaunch sr_hand sr_arm_motor.launch | |||
roslaunch sr_hand rviz_motor.launch | |||
rosrun sr_control_gui sr_control_gui | |||
roslaunch cyberglove cyberglove.launch | |||
roslaunch sr_remappers remapper_glove.launch | |||
'''VER EL TOPIC''' | |||
rostopic echo /srh/shadowhand_data | |||
This is a helpfull link. [http://www.ros.org/doc/api/sr_hand/html/ sr_hand Documentation] | This is a helpfull link. [http://www.ros.org/doc/api/sr_hand/html/ sr_hand Documentation] | ||
'''SETING UP THE CYBERGLOVE''' | |||
print mac adress | |||
hcitool scan | |||
Bind the mac adress to the rfcomm0 ('''00:80:25:12:E7:57''' WCGII-3024) | |||
sudo rfcomm bind rfcomm0 00:80:25:12:E7:57 1 | |||
= Cyberglove = | = Cyberglove = | ||
= ROS - OpenRAVE = | = ROS - OpenRAVE = | ||
To see a Complete tutorial of OpenRAVE, please review this link: [http://mediawiki.isr.ist.utl.pt/wiki/OpenRAVE_Tutorial OpenRAVE Tutorial] | |||
= Interfacing Other Robots = | = Interfacing Other Robots = | ||
= Streaming images from USB cameras = | |||
I used the ros-electric-brown-perception DEB package, in combination with ROS Electric Emys, Ubuntu 11.04 and a Logitech webcam. | |||
Once this package is installed, to start the streaming you need to (1) have the roscore running, (2) set one environment variable and (3) run gscam. | |||
roscore | |||
roscd gscam | |||
cd bin | |||
export GSCAM_CONFIG="v4l2src device=/dev/video0 ! video/x-raw-rgb ! ffmpegcolorspace" | |||
rosrun gscam gscam | |||
You can display the image stream with image_view: | |||
rosrun image_view image_view image:=/usb_cam/image_raw | |||
As and alternative to setting the environment variable, you can create a launch file for gscam: | |||
cd ros/electric/stacks/brown_perception/gscam | |||
mkdir launch | |||
nano launch/gscam.launch | |||
The content of the launch file should be: | |||
<launch> | |||
<env name="GSCAM_CONFIG" value="v4l2src device=/dev/video0 ! video/x-raw-rgb ! ffmpegcolorspace"/> | |||
<node pkg="gscam" name="gscam" type="gscam" output="screen"/> | |||
</launch> | |||
You can then run this command to start the streaming (this also starts the roscore, should that be needed): | |||
roslaunch gscam gscam.launch |
Latest revision as of 11:06, 19 April 2012
Note 1: this tutorial is under construction.
Note 2: for the past distribution of ROS C-Turtle, please review this link
Install ROS
To start using ROS meta operating system for robots, we recommend to follow the next steps:
- 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 "Desktop-Full Install". An easy to follow tutorial on how to install ROS is in here(ROS Installation).
- To get a quick and good tutorial for beginners see this page (BEGINNERS TUTORIAL). We recommend to read at least the beginners tutorials.
- To start adding stacks please read 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:
- 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.
- 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.
- 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).
- 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.
- 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.
From Bazar (bzr) Repository
First, make sure that you have the bazar installed in your pc
sudo apt-get install bzr
Then prepare the directory where you want to install the STACK.
mkdir -p $HOME/Ros_Stacks/ cd $HOME/Ros_Stacks/
Get the SOURCE code, that is the link of the web-page, example
SOURCE="lp:sr-ros-interface" STACK="shadow_robot" bzr branch $SOURCE mv sr-ros-interface/shadow_robot . rm -r sr-ros-interface
Export the PATH to $ROS_PACKAGE_PATH
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
finally, build the STACK
roscd $STACK rosmake --rosdep-install
From Mercurial (hg) Repository
First, make sure that you have the Mercurial installed in your pc
sudo apt-get install mercurial
Then prepare the directory where you want to install the STACK.
mkdir -p $HOME/Ros_Stacks/ cd $HOME/Ros_Stacks/
Get the SOURCE code, that is the link of the web-page. As a example , we install the control STACK
STACK="control" SOURCE="https://bitbucket.org/sglaser/control" cd $HOME/Ros_STACKS hg clone $SOURCE
Export the path
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
Finally, build the Stack
roscd $STACK rosmake --rosdep-install
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
In the C-Turtle distribution, the use of Kinect was done trough the Kinect Stack, now, in Diamondback, it is done by the ni STACK. let us see how to install it.
First, we need to have installed the following STACKS. To know how to install them, please read 3rd Party stacks installation.
Shadow Robot Stack
Installation
In this section we present some useful steps to install the shadow_robot STACK, although this stack is still under development, installation steps should be similar in future releases.
To Install the full shadow_robot STACK, You first need installed the following stacks:
- bosch_drivers
- pr2_common
- pr2_mechanism
- trajectory_msgs PACKAGE (use roscd trajectory_msgs to check if is already installed)
- control (it's in Mercurial Repository)
- pr2_controllers
- pr2_simulator
Because the developer of this STACK Ugo Cupcic recommend it, instead of just installing the whole STACK at once (that will give several errors), we first download the full STACK and then begin installing the sr_hand PACKAGE, then the sr_control_gui PACKAGE, and finally we will add the rest of the packages.
As you will see in the, the shadow_robot STACK and sr_hand PACKAGE, the repository is in Bazar, so, first make sre that you have the bazar installed.
sudo apt-get install bzr
Then prepare the directory where you want to install the STACK.
mkdir -p $HOME/Ros_Stacks/ cd $HOME/Ros_Stacks/
Get the SOURCE code..:
SOURCE="lp:sr-ros-interface" STACK="shadow_robot" bzr branch $SOURCE mv sr-ros-interface/shadow_robot . rm -r sr-ros-interface
If that fails, this is an alternative way to download the SOURCE code .
wget http://launchpad.net/sr-ros-interface/release1.2/1.2.0/+download/release1.2.tar.gz tar xvvzf release1.2.tar.gz mv release1.2/shadow_robot . rm -r release1.2
Now, export the path to the ROS_PACKAGE_PATH
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
Until now, we just downloaded the whole STACK, and as Ugo Cupcic recommended, we will install first the sr_hand PACKAGE, so, to do that, in Terminal enter:
PACKAGE="sr_hand" roscd $PACKAGE rosmake --rosdep-install
Now, let us procede with the sr_control_gui PACKAGE
PACKAGE="sr_control_gui" roscd $PACKAGE rosmake --rosdep-install
Now, build the cyberglove PACKAGE
PACKAGE="cyberglove" roscd $PACKAGE rosmake --rosdep-install
Now. build the dataglove STACK. To do so, enter the following in Terminal:
STACK="dataglove" export ROS_PACKAGE_PATH=$HOME/Ros_Stacks/shadow_robot/$STACK:$ROS_PACKAGE_PATH echo "export ROS_PACKAGE_PATH=$HOME/Ros_Stacks/shadow_robot/$STACK:$ROS_PACKAGE_PATH" >> $HOME/.bashrc roscd $STACK rosmake --rosdep-install
Now install the dataglove_processing PACKAGE
PACKAGE="dataglove_processing" roscd $PACKAGE rosmake --rosdep-install
Now build the sr_remappers
PACKAGE="sr_remappers" roscd $PACKAGE rosmake --rosdep-install
Here there are other useful links:
Start Using NOT FINISHED
This Launchs the Node
roslaunch sr_hand srh_motor.launch
Now Display the Hand with the RVIZ
roslaunch sr_hand rviz_motor.launch
The RVIZ will not display automatically the Hand, because you have to add it to the display interface, To do this, click on Add at the bottom left of rviz, then select Robot Model. You can also visualize the targets of the hand by using a second robot_model in rviz. Don't forget to specify the correct topics:
- To display the hand position: set Robot Description to hand_description and TF Prefix to /srh/position (on the left hand side, in the parameters of your robot_model).
- To display the hand targets: set Robot Description to hand_description and TF Prefix to /srh/target.
Now, start the GUI Interface
rosrun sr_control_gui sr_control_gui
UPDATE
roslaunch sr_hand sr_arm_motor.launch
roslaunch sr_hand rviz_motor.launch
rosrun sr_control_gui sr_control_gui
roslaunch cyberglove cyberglove.launch
roslaunch sr_remappers remapper_glove.launch
VER EL TOPIC
rostopic echo /srh/shadowhand_data
This is a helpfull link. sr_hand Documentation
SETING UP THE CYBERGLOVE
print mac adress
hcitool scan
Bind the mac adress to the rfcomm0 (00:80:25:12:E7:57 WCGII-3024)
sudo rfcomm bind rfcomm0 00:80:25:12:E7:57 1
Cyberglove
ROS - OpenRAVE
To see a Complete tutorial of OpenRAVE, please review this link: OpenRAVE Tutorial
Interfacing Other Robots
Streaming images from USB cameras
I used the ros-electric-brown-perception DEB package, in combination with ROS Electric Emys, Ubuntu 11.04 and a Logitech webcam. Once this package is installed, to start the streaming you need to (1) have the roscore running, (2) set one environment variable and (3) run gscam.
roscore
roscd gscam cd bin export GSCAM_CONFIG="v4l2src device=/dev/video0 ! video/x-raw-rgb ! ffmpegcolorspace"
rosrun gscam gscam
You can display the image stream with image_view:
rosrun image_view image_view image:=/usb_cam/image_raw
As and alternative to setting the environment variable, you can create a launch file for gscam:
cd ros/electric/stacks/brown_perception/gscam mkdir launch nano launch/gscam.launch
The content of the launch file should be:
<launch> <env name="GSCAM_CONFIG" value="v4l2src device=/dev/video0 ! video/x-raw-rgb ! ffmpegcolorspace"/> <node pkg="gscam" name="gscam" type="gscam" output="screen"/> </launch>
You can then run this command to start the streaming (this also starts the roscore, should that be needed):
roslaunch gscam gscam.launch