Alvaro-RV-HAPTICROS01
- Project name: Turtlebot robot indoor navigation
- Dates: July 2013 -
- Degree: Summer Research Residence
- Author: Jose Álvaro Fernández Álvarez
- Contact: jferna08@estudiantes.unileon.es
- Tags: ROS, Haptics, Arduino
- Technologies: ROS, Phantom Omni, Arduino
- Status: Ongoing
Contents
ROS Fuerte & ROS Groovy Installation on Ubuntu 12.04
Sources.list Configuration
For the computer accept packages.ros.org must enter in the terminal the next line.
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'
Keys Configuration
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
Installation
- ROS Fuerte
We make sure that the server ROS.org is indexed.
sudo apt-get update
Install the library package and complete tools: ROS, rx, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception.
sudo apt-get install ros-fuerte-desktop-full
Also you can install independently the libraries, tools and stacks.
- ROS Groovy
We make sure that the server ROS.org is indexed.
sudo apt-get update
Install the library package and complete tools: ROS, rx, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception.
sudo apt-get install ros-groovy-desktop-full
Also you can install independently the libraries, tools and stacks.
Rosdep Initialization (Only ROS Groovy)
Before of to use ROS we must initialize rosdep which allows us easily to install the source system dependencies that we want to compile and also is necessary for execute some basic components of ROS.
sudo rosdep init
rosdep update
Enviroment Configuration
- ROS Fuerte
For the enviroment variables are added each time you start the computer type this lines
echo "source /opt/ros/fuerte/setup.bash" >> ~/.bashrc
. ~/.bashrc
We can check if we have added typing gedit ~/.bashrc and looking at end of file
IMPORTANT!!! If there is more than one ROS distribution installed in the file ~/.bashrc must only contain the version you're using
- ROS Groovy
For the enviroment variables are added each time you start the computer type this lines
echo "source /opt/ros/fuerte/setup.bash" >> ~/.bashrc
. ~/.bashrc
We can check if we have added typing gedit ~/.bashrc and looking at end of file
IMPORTANT!!! If there is more than one ROS distribution installed in the file ~/.bashrc must only contain the version you're using
Independent Tools
- ROS Fuerte
Rosinstall and rosdep are used often in the terminal, but they are distributed individually. Rosinstall allows you to download source code trees for packages and ROS stacks. Rosdep allows easy installation of the system dependencies for the source code to be compiled.
For install those tools, you write in the terminal the next line
sudo apt-get install python-rosinstall python-rosdep
- ROS Groovy
Rosinstall is used often in the terminal, but it is distributed individually. Rosinstall allows you to download source code trees for packages and ROS stacks. For install this tool, you write in the terminal the next line
sudo apt-get install python-rosinstall
Create a ROS Workspace in ROS Fuerte
- Create a new workspace
With the next command we go to create a workspace in ~/fuerte_workspace which inherits the set of installed packages in /opt/ros/fuerte
rosws init ~/fuerte_workspace /opt/ros/fuerte
NOTE: rosw is a type of rosintall package which doesn't install default. if we haven't installed rosintall in the last steps, we must do with the next command
sudo apt-get install python-rosinstall
- Create a sandbox directory for the new packages
When we create a new package we always must put it in a directory that is in the enviroment variable ROS_PACKAGE_PATH. All the directories that are added with rosw is added automatically to this variable. For this. we create a sandbox directory to which we will add the hide file .rosinstall with rosw
We create the sandbox directory in our workspace created before and we add to the workspace
mkdir ~/fuerte_workspace/sandbox
rosws set ~/fuerte_workspace/sandbox
Each time that the entries of workspace change it, is necessary to do a re-source
source ~/fuerte_workspace/setup.bash
Also, it is advisable to add the last line to the file ~/.bashrc just after the line to which already added at the beginning of installation for haven't execute each time we starts our computer.
To confirm that our path has been modified we can execute the next line
$ echo $ROS_PACKAGE_PATH
and we must obtain a output similar to this
/home/your_user_name/fuerte_workspace/sandbox:/opt/ros/fuerte/share:/opt/ros/fuerte/stacks
Create a ROS Workspace in ROS Groovy
- Create a new workspace
With the next command we go to create a workspace in ~/catkin_ws which inherits the set of installed packages in /opt/ros/groovy
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
Initially our workspace is empty, only have a CmakeList.txt in the src directory. For make the workspace execute
cd ~/catkin_ws/
catkin_make
Finally, we configure the enviroment variabble to take into consideration our new workspace, for this execute
source ~/catkin_ws/devel/setup.bash
For to do this change continuous we can add the previous line to end of file ~/.bashrc
Phantom Omni Package Installation on ROS Fuerte & ROS Groovy
Requirements
Phantom Omni Device
OpenHaptics SDK, you can download here.
Go to Software Downloads in Linux Drivers section and download the version 3.0
PDD Installation and Configuration (Phantom Device Drivers)
- Installation
For install the drivers we go to directory OpenHapticsAE_Linux_v3_0/OpenHaptics-AE 3.0/32-bit from terminal and execute the next command (if our computer warns us that alien isn't installed we can install it with sudo apt-get install alien)
sudo dpkg -i phantomdevicedrivers_4.3-3_i386.deb
- Phantom Haptic Device Interface Installation by IEEE1394 Fireware port
In this point is where we would to load raw1394 module in the kernel. Due to the change of the old driver stack (video1394, raw1394, etc) for the new driver stack (firewire.core, firewire-ohci). From the Ubuntu vesion 11.04, we will download the new beta drivers adapted to the new drivers stack.
We can donwnload it from forums of Sensable
Once downloaded we must to copy the file included in the package "libPHANToMIO.so.4.3" into /usr/lib directory and overwrite the old file.
sudo cp libPHANToMIO.so.4.3 /usr/lib
Create symbol links to the previous library with the libraries called libPHANToMIO.so and libPHANToMIO.so.4 into /usr/lib directory
sudo ln -s libPHANToMIO.so.4.3 libPHANToMIO.so
sudo ln -s libPHANToMIO.so.4.3 libPHANToMIO.so.4
(if you can't overwrite old files, delete them previously)
Copy the new configuration application PHANToMConfiguration which is adapted to the new firewire drivers into /usr/sbin directory.
sudo cp PHANToMConfiguration /usr/sbin
Install freeglut and several libraries which are necessary with the next commands
sudo apt-get install freeglut3-dev
sudo apt-get install x11proto-gl-dev
sudo apt-get install libmotif-dev
sudo apt-get install mesa-utils
Download the libGLw libraries with the motif links already compiled from here and copy the files that contains into /usr/lib directory with the command
sudo cp libGLw* /usr/lib
Create a symbol link into /usr/lib/i386-linux-gnu/ directory to the libraw1394.so.11 library (the directory can change depends of your linux version, for to look for where is located you can use the command locate libraw1394). This is necessary because the drivers requires libraw.so.8 to which already is obsolete.
sudo ln -s libraw1394.so.11 libraw1394.so.8
If when we use the PHANToMTest or other application of OpenHaptics only we can execute as root or the haptic can't initialize we must give permissions to port /dev/fw* , for this we must follow the instructions of paragraph Permissions and ownership for /dev/fw* in this link
one way to assign permissions fast (although each time that restart our computer the permissions are restored) is the next command
sudo chmod 777 /dev/fw*
- PHANToM Configuration
For to use any haptic application we must specify the model which we are using, for this, initialize the PHANToMConfiguration, it's important initialize with the flag LANG=en_us because if our system language is different to english and, we initialize without flag after the haptic doesn't work correctly
LANG=en_us /usr/sbin/PHANToMConfiguration
The options must be as in the capture
IMPORTANT: If not shows the serial number, must change the fireware wire to the other port and push in the default button.
Finally, push apply and later in OK. Now,must to calibrate and test if the haptic works, for this, execute
LANG=en_us /usr/sbin/PHANToMTest
In the Select section we choose the configuration which we have made in PHANToMConfiguration
Push next until Read encoders and test that the stylus buttons work correctly, for this, push the buttons and see the status change between ON and OFF.
Push next until Box Test and test that the haptic can't take out the ball of the box
PHANToMTest_BoxTest
Finally, push next for finish
OpenHaptics Toolkit Installation
Go to OpenHapticsAE_Linux_v3_0/OpenHaptics-AE 3.0/32-bit directory and execute
sudo dpkg -i openhaptics-ae_3.0-2_i386.deb
Now, install the library libncurses5-dev
sudo apt-get install libncurses5-dev
Finally, must change etc/enviroment adding next line at end of the file
3DTOUCH_BASE=/usr/share/3DTouch
Phantom Omni Package Installation
- ROS Fuerte
Make a clone of the repository in your sandbox directory using the rosbuild branch from repository
git clone -b rosbuild https://github.com/bgromov/sensable_phantom.git
After to clone, execute
rospack profile
Go to sensable_phantom directory which you download in your sandbox directory and compile it. Before to compile a new package make sure that you have made rospack profile
roscd sensable_phantom
rosmake sensable_phantom
If you have problems because you can't do rosmake by denegation permissions, you must see the user who create the package downloaded with ls -all, if the user isn't you, must change it. For this, execute next command replacing the parameters
sudo chown -R your_user directory_to_change
- ROS Groovy
Make a clone of the repositories in your src directory of your workspace
cd ~/catkin_ws/src
git clone https://github.com/danepowell/omni_description
git clone https://github.com/danepowell/phantom_omni
After clonation, execute
rospack profile
Go to root directory of your workspace and compile it executing
cd ~/catkin_ws
catkin_make