Skip to content

Installation with the Geomagic Touch

Oriane Dermy edited this page Jun 22, 2017 · 17 revisions

Installation notes (on wall-e)

Software

Linux drivers and development tools are available at http://dsc.sensable.com/index.asp (if this link does not work anymore try http://developer.geomagic.com or google "openhaptics". This is a forum, one must be logged in to see the content.

Installed software so far (june 3rd 2016):

  • the driver for ubuntu 14.04 using the default install script. 2 utilities are provided: setup and diagnostic.

Look for geomagic_touch_device_driver_2016.1-1-amd64.tar.gz or similar, then run the provides install script (as root).

  • the sdk. It seems to work when the proper environment variable is defined. Look for openhaptics_3.4-0-developer-edition-amd64.tar.gz and launch the provided install script (as root).

Warning

  • The Geomagic driver ships with an outdated version of QT5 that is installed in its lib/ path. Here we suggest you a way to avoid this version to not interfere with other QT programs (iCub GUIs for instance).

  • Explanation about this version of Qt:

In the "install" script that you launch to install the Geomagic, you can read the following lines:

 #Set path for GTDD_HOME, LD_LIBRARY_PATH, QT_PLUGIN_PATH
 echo -n "SETTING ENVIRONMENT VARIABLES ..... "
 echo "export GTDD_HOME=/opt/geomagic_touch_device_driver" > /etc/profile.d/geomagic.sh
 echo "export LD_LIBRARY_PATH=/opt/geomagic_touch_device_driver/lib" >> /etc/profile.d/geomagic.sh
 echo "export QT_PLUGIN_PATH=/opt/geomagic_touch_device_driver/lib/plugins" >> /etc/profile.d/geomagic.sh

So, even if you choose a folder to install the software, it will add the QT path and change the LD_LIBRARY_PATH thanks to the file geomagic.sh (which is launch directly when you open a terminal). Then, this is this old QT5 version that is used.

  • Solution:
    You can move this geomagic.sh file in another directory (e.g. not in /etc/profile.d) and create a script that launch either this geomagic.sh and your program.

  • Another environment variable to take care:
    The doc for the yarp drivers says:

In Linux, remember to set LC_NUMERIC=en_US.UTF-8 in the environment, prior to pairing the device. This will make the driver work outside US.

Do it ! even if everything seems to work fine (geomagic tools, yarpdev running happily...), not doing it results in wrong (or fixed) positions for the arm.

System

A "link-local" connection linked with the USB-ethernet adapter has been created. It should be automatically configured when the device is connected.

Instructions for a standard ubuntu 14.04:

  • create a new connection (look for the network manager icon then edit connections..., then add a new one)
  • choose and create an Ethernet connection
  • choose a meaningful name for the connection (geomagic)
  • in the Ethernet tab: choose the device MAC address (most probably the one associated with eth1 on a standard laptop)
  • in the IPv4 Settings tab, choose the Link-Local Only method
  • save

Plug the device. The connection may take a few seconds to be active.

Important information about our haptic device: Device serial number: 15089002443

As specified in the README, you have to "pair" the device using /opt/geomagic_touch_device_driver/Geomagic_Touch_Setup (see the doc in /opt/geomagic_touch_device_driver/hardware_documentation/Geomagic Touch_User_Guide.pdf part RUN GEOMAGIC TOUCH SETUP TO IDENTIFY AND PAIR THE DEVICE) Also, you have to calibrate the geomagic with /opt/geomagic_touch_device_driver/Geomagic_Touch_Diagnostic. To summarize, do: /opt/geomagic_touch_device_driver/Geomagic_Touch_Setup An GUI is then open. In this GUI, do: Add a "Device Name" that correspond to the connection (geomagic). Then, click on the "Pairing" button. on the haptic device, click on the "Pairing" button (on its back, as shown in this photo. The connexion should be done, in the GUI click on "Apply" and then "Ok". Next time, you will have to select this device name and re-do the pairing. By launching /opt/geomagic_touch_device_drie/Geomagic_Touch_Diagnostic and by following the instruction, you should calibrate the Haptic Device and see how to use it.

Hardware

  • Power supply
  • ethernet using provided usb-to-ethernet device

There is no on/off button, unplug if necessary... :-(

Usage

Before being able to use it with yarp and iCub, you need to install:

  • yarp (from github bleeding edge)

  • yarp haptic devices (from github: https://github.com/robotology/haptic-devices) Note: you will have to modify $hapticdevice_DIR/share/hapticdevice/context/geomagic/geomagic.xml to put in the id parameter the name of your device (geomagic)

  • icub main

  • icub contrib

  • gazebo 7 (or more recent)

yarp drivers

Run

 yarpserver

Then, launch the script geomagic.sh:

export GTDD_HOME=/opt/geomagic_touch_device_driver
export LD_LIBRARY_PATH=/opt/geomagic_touch_device_driver/lib
export QT_PLUGIN_PATH=/opt/geomagic_touch_device_driver/lib/plugins
export LC_NUMERIC=en_US.UTF-8

and run

/opt/geomagic_touch_device_driver/Geomagic_Touch_Setup

Normally, if your computer is well connected to the geomagic touch, the device model is Geomagic Touch, then click on "pairing" and click on the geomagic button on its back, as shown in this photo. Now run

/opt/geomagic_touch_device_driver/Geomagic_Touch_Diagnostic

Click on the right arrow until the calibration is done. If there are problems, for example network errors, go back to the Setup, create a new device of type "geomagic touch", with a new name (for example "geo") and redo the scan and pairing. You should then run the diagnostic again and check that it is done with this new device with the new name you chose. The calibration setup will make you test the geomagic (kinematics, force feedback, etc). Finally launch:

 yarprobotinterface --context geomagic --config geomagic.xml

A couple of ports are created, you can see the device state (a vector of size 8: position, orientation, button1, button2) by reading state:o.

with iCub_SIM

First launch:

yarpserver # do the Setup and calibration of the geomagic too
yarprobotinterface --context geomagic --config geomagic.xml
iCub_SIM
simCartesianControl --robot icubSim
iKinCartesianSolver --part left_arm

In order to test this setup it might be a good idea to try tutorial_cartesian_interface from motorControlAdvanced in icub-tutorials. If the left hand is moving happily in circles then all should be ok.

Now build the sample from https://github.com/inria-larsen/geomagic_touch:

git clone https://github.com/inria-larsen/geomagic_touch.git
cd geomagic_touch/test_geomagic_yarp
mkdir build
cd build
cmake ../
make
./bin/test_simple --robot icubSim --part left_arm

If all is well the left arm in the simulator should follow the haptic device (a bit slowly at the moment....). The movements should mimic the movements of the user's left arm (e.g. it might be simpler to have the haptic arm on your left)

with gazebo

First launch:

yarpserver # do the Setup and calibration of the geomagic too
yarprobotinterface --context geomagic --config geomagic.xml 
gazebo # the insert an icub in the scene
wholeBodyDynamicsTree --autoconnect --robot icubGazeboSim   #see edit message
simCartesianControl --robot icubGazeboSim
iKinCartesianSolver --robot icubGazeboSim --part left_arm

The cartesian controller is using a bunch of ini files (see share/iCub/contexts/simCartesianControl/ ) that are meant to be used with iCub_SIM, not gazebo. You may have to change:

  • the robot name to icubGazeboSim
  • PositionControl to on instead of off in simCartesianLeftArm.ini and simCartesianRightArm.ini (and put this copy files into the directory from where you launch simCart/iKinCart).

In order to test this setup it might be a good idea to try tutorial_cartesian_interface from motorControlAdvanced in icub-tutorials. Don't forget to use --robot icubGazeboSim If the left hand is moving happily in circles then all should be ok.

Now build the sample from https://github.com/inria-larsen/geomagic_touch:

git clone https://github.com/inria-larsen/geomagic_touch.git
cd geomagic_touch/test_geomagic_yarp
mkdir build
cd build
cmake ../
make
./bin/test_simple --robot icubGazeboSim --part left_arm

If all is well the left arm in the simulator should follow the haptic device (a bit slowly at the moment....). The movements should mimic the movements of the user's left arm (e.g. it might be simpler to have the haptic arm on your left)