GithubHelp home page GithubHelp logo

bharatm11 / geomagic_touch_ros_drivers Goto Github PK

View Code? Open in Web Editor NEW
63.0 2.0 35.0 1.61 MB

This repository consists of the ROS Drivers for 3D Systems Geomagic Touch haptic device. This repository has been forked from the original repository by @fsuarez6 for the Phantom Omni (https://github.com/fsuarez6/phantom_omni).

CMake 5.25% Makefile 0.53% Shell 4.29% C 0.47% C++ 89.46%

geomagic_touch_ros_drivers's Introduction

3D Systems Geomagic Touch ROS Driver

ROS Packages for connecting one or more 3D Systems Geomagic Touch (previously known as Phantom Omni) haptic devices, USB version.

This repository has been forked from the original repository by Francisco Suárez Ruiz, http://fsuarez6.github.io for the Sensable PHANToM haptic device (https://github.com/fsuarez6/phantom_omni).

ROS packages developed by the Group of Robots and Intelligent Machines from the Universidad Politécnica de Madrid. This group is part of the Centre for Automation and Robotics (CAR UPM-CSIC).

Installation

  1. Install Dependencies
sudo apt-get install --no-install-recommends freeglut3-dev g++ libdrm-dev libexpat1-dev libglw1-mesa libglw1-mesa-dev libmotif-dev libncurses5-dev libraw1394-dev libx11-dev libxdamage-dev libxext-dev libxt-dev libxxf86vm-dev tcsh unzip x11proto-dri2-dev x11proto-gl-dev x11proto-print-dev
  1. Download and Extract OpenHaptics and Haptic Device drivers

Download drivers using instructions at: https://3dsystems.teamplatform.com/pages/102863?t=fptvcy2zbkcc
If you cannot access that page, use Old device drivers on the bottom of this README

  1. Install Openhaptics
cd ~/openhaptics_3.4-0-developer-edition-amd64/
sudo ./install
# This gets installed in the following directory
/opt/OpenHaptics/ 
  1. Install Geomagic Driver
cd ~/geomagic_touch_device_driver_2015.5-26-amd64/
sudo ./install
# This gets installed in the following directory:
/opt/geomagic_touch_device_driver/ 
  1. (Only For 64-bit Systems) Create Symbolic Links to OpenHaptics SDK Libraries
sudo ln -s /usr/lib/x86_64-linux-gnu/libraw1394.so.11.0.1 /usr/lib/libraw1394.so.8
sudo ln -s /usr/lib64/libPHANToMIO.so.4.3 /usr/lib/libPHANToMIO.so.4
sudo ln -s /usr/lib64/libHD.so.3.0.0 /usr/lib/libHD.so.3.0
sudo ln -s /usr/lib64/libHL.so.3.0.0 /usr/lib/libHL.so.3.0 
  1. Device setup

The haptic device always creates a COM Port as /dev/ttyACM0 and requires admin priviliges

chmod 777 /dev/ttyACM0

Run Geomagic_Touch_Setup in /opt/geomagic_touch_device_driver/

Ensure that the device serial number is displayed

  1. Device Diagnostics

Run Geomagic_Touch_Diagnostic in /opt/geomagic_touch_device_driver/

This can be used to calibrate the device, read encoders, apply test forces etc.

  1. Launch ROS Node

Clone and build this repository.

cd <ROS_workspace>/devel
source setup.bash
roslaunch omni_common omni_state.launch 

Data from the haptic device can be read from the following topics:

/phantom/button

/phantom/force_feedback

/phantom/joint_states

/phantom/pose

/phantom/state

Use Multiple Devices

Multiple devices can be connected by adding a unique name to each device. Following settings need to be made every time the devices are reconnected:

  1. Run Geomagic_Touch_Setup in /opt/geomagic_touch_device_driver/

  2. Add a new name by pressing Add... button in Device Name section and typing that name in the pop-up window

  3. Select that name in the drop-down list of Device Name

  4. Select Port Num of the device which you want to add that name to

  5. Press Apply

Example to run two devices (Left Device and Right Device):

roslaunch omni_common dual_phantom.launch

Resources

https://3dsystems.teamplatform.com/pages/102863?t=fptvcy2zbkcc

https://fsuarez6.github.io/projects/geomagic-touch-in-ros/

https://github.com/fsuarez6/phantom_omni

http://dsc.sensable.com/viewtopic.php?t=5730&sid=9866fe798e24bc745fdb7fce08ee99eb

Old device drivers https://drive.google.com/drive/folders/1WJY6HpdtGh5zeyASfb4FYJFFG-QGItd6?usp=sharing

Citation

Please cite these papers in your publications if this repository helps your research.

@INPROCEEDINGS{8941790,
  author={Mathur, Bharat and Topiwala, Anirudh and Schaffer, Saul and Kam, Michael and Saeidi, Hamed and Fleiter, Thorsten and Krieger, Axel},
  booktitle={2019 IEEE 19th International Conference on Bioinformatics and Bioengineering (BIBE)}, 
  title={A Semi-Autonomous Robotic System for Remote Trauma Assessment}, 
  year={2019},
  volume={},
  number={},
  pages={649-656},
  doi={10.1109/BIBE.2019.00122}}
  
@inbook{doi:10.1137/1.9781611975758.2,
author = {B. Mathur and A. Topiwala and H. Saeidi and T. Fleiter and A. Krieger},
title = {Evaluation of Control Strategies for a Tele-manipulated Robotic System for Remote Trauma Assessment},
booktitle = {2019 Proceedings of the Conference on Control and its Applications (CT)},
chapter = {},
pages = {7-14},
doi = {10.1137/1.9781611975758.2},
URL = {https://epubs.siam.org/doi/abs/10.1137/1.9781611975758.2},
eprint = {https://epubs.siam.org/doi/pdf/10.1137/1.9781611975758.2}}

geomagic_touch_ros_drivers's People

Contributors

bharatm11 avatar fsuarez6 avatar pazeshun avatar ykawamura96 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

geomagic_touch_ros_drivers's Issues

/phantom/pose Geomagic Touch values

[Hi @bharatm11 ,

While using the driver, I noticed that the x y z position of the Geomagic doesn't change when manipulating the stylus (seen on the topic /phantom/pose). They stay fixed at the values showed in the picture below (0; 0.035; -0.11).
This in contrast to the orientation parameters which are varying continuously.

In order to get the pose of the stylus in another way, I opt using a tf2 transformation on the joint states. But either they are getting the value of 0 at the waist, shoulder and elbow. I also added a screenshot of this below.

I tried figuring out why this is happening by going over the code, but could not find a solution. I mentioned an unknown calibration status when launching the ''omni_state.launch''. Could this be the problem?

Thank you in Advance.

pose_GeomagicTouch
JointStates
launch GeomagicTouch

Problems with diagnotics

I have set up the device connection successfully using LAN.
image
But there is still a problem when I diagnose the device.
image
Could you help me solve this?

Touch USB Connection Issue

Dear @bharatm11

I have installed all the drivers and your repository in three different computers with all the USB ports however I have not managed to get the haptic devices connected in Ubuntu 16.04 with any of them. First of all 3D Systems suggest that the vendor ID and device ID must be 0301:2988, but ID's of my device are 2988:0302.
Screenshot from 2020-07-07 13-03-56
When I first open the Geomagic Touch Setup, a serial number is shown on the screen, however when I click on "Apply" serial number disappears and it says "No devices found instead. Geomagic Touch Diagnostic cannot initialize the the device at all.
Screenshot from 2020-07-07 13-04-39
Screenshot from 2020-07-07 13-06-06
Testing any of the OpenHaptics example codes causes the following error.
Screenshot from 2020-07-07 13-07-33
Finally, running "roslaunch omni_common omni_state.launch" causes the following error.
Screenshot from 2020-07-07 13-10-12
I have two devices, and I have separately tested them in all the USB ports of 3 different computers (2 laptops and 1 desktop). On Windows everything works fine on the same computers but in Ubuntu 16.04 I get the same errors for both devices in all of the computers. I have checked similar errors in 3D systems forums but none of the solutions worked. Do you know any solution for this problem?

The Purpose of Position in OmniFeedback.msg

Dear @bharatm11,

I wanted to ask what the purpose of the position variable in the OmniFeedback message type.

I tried playing around with the value when publishing to the topic and was unable to see any difference in behaviour with different values, and I found the description provided in the file a bit cryptic since the Touch itself would already know its own end effector position.

My intuition from browsing the code was that it is a "point" in the Touch's coordinate frame, where closer you get to it more force is applied, but that makes me think we'd be passing an array of such points to generate a 3D plane/surface which provides more feedback the more you try to push past it (much like the example in the diagnostic).

Or is the "robot arm" in question an external arm that is being teleoperated with haptic feedback by the Touch whose positions we are feeding back into the Touch?

Thank you for your help.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.