Node for using the Geomagic Touch X connected via ethernet with the Robot Operating System (ROS). Currently tested and working with ROS Noetic (Ubuntu 20.04).
This assumes you have installed the driver software provided by 3D Systems for the device in the default location.
$ cd catkin_ws/src/
$ git clone git@github.com:RViMLab/geomagic_touch_x_ros_driver.git geomagic_touch_x_ros
$ catkin build -s
- Plug in the device to your computer via Ethernet.
- Setup a new connection:
- Name: Haptic TouchX
- IPv4 Method: "Link-Local Only"
- IPv6 Method: "Link-Local Only"
This assumes you have installed the driver software provided by 3D Systems for the device in the default location.
Run this each time you use the device.
- Plug in the device to your computer via Ethernet.
- Ensure the correct wired connection is selected.
$ cd /path/to/geomagic_touch_x_ros_driver
$ bash pair.sh
- Click "Rescan for Devices", this should ensure we can find the device.
- Click "Pairing", and just after click the pairing button on the device.
- The device should successfully pair.
- Click "Apply" and then "Ok".
If this doesn't work, then see the official documentation provided with your device.
Run this each time you use the device after the device has been paired (see previous section).
$ cd /path/to/geomagic_touch_x_ros_driver
$ bash calibrate.sh
- Click the "Select" tab.
- Then click the next button (right arrow) at the bottom of the dialog box.
- Move the stylus in each axis (X, Y, Z) to properly calibrate the device.
- Once each axis is calibrated, its icon will turn green.
- Step through each other test, and then once each is complete, click the cross to exit the diagonostic setup.
If this doesn't work, then see the official documentation provided with your device.
This is the main ROS node you need to launch to set/get the state of the haptic device.
~device_name
(string): the name of the device, this can be set during pairing (see above)
~cmd_force
(geometry_msgs/Wrench
): the force that should be commanded at the device end-effector. Note, only the linear part is used for the Touch X device.
~twist
(geometry_msgs/Twist
): the linear and angular velocity of the device end-effector.~joint_states
(sensor_msgs/JointState
): the joint states of the device.
The transform of the device end-effector is broadcast using the tf2
library.
The base frame is touch_x_base
and the child frame is touch_x_ee
.