A workspace for the integration of the SenseGlove into ROS Noetic. This workspace makes use of ros_control for automatically initiating publisher and subscriber nodes for the state of the senseglove.
ROS Noetic | ** ROS 2 ** | |
---|---|---|
DK1 | ✅ v1.0.0 | ❌ |
Nova 1 | ✅ v2.2.0 | 🔜 |
Nova 2 | ✅ v2.2.0 | 🔜 |
✅
Supported❗
Not supported by the latest release and might be lacking features❌
Not supported at all❓
Unknown/untested
src
├── hardware_interface
| ├── senseglove_hardware # Communicates w/ SenseGlove Hardware
| ├── senseglove_hardware_builder # Builds the device in ROS
| ├── senseglove_hardware_interface # The bridge b/w ros_control & SenseGlove hardware
|
├── senseglove
| ├── senseglove_description # Provides the URDFs & .rviz files
| ├── senseglove_finger_distance # Provides distance between finger-tips
| ├── senseglove_haptics # Haptic Implementation (Python API)
| ├── senseglove_launch # Launch files & Bluetooth scripts
| | ├── bluetooth_scripts
| ├── senseglove_shared_resources # Custome messages
|
├── SenseGlove_API # SG-Backend
- System Requirement: Ubuntu 20.04
- Install ros-noetic
- Clone our workspace
git clone https://github.com/Adjuvo/senseglove_ros_ws.git
- Install the following dependencies & update:
sudo apt-get install ros-noetic-ros-control
sudo apt-get install ros-noetic-joint-trajectory-controller
sudo apt-get update
rosdep update
sudo apt-get upgrade
- Navigate to the workspace folder in the terminal
- Make sure to source your workspace
- Build your workspace:
catkin build
orcatkin_make
- Post building, source the workspace itself using
source devel/setup.bash
- The sensegloves are connected either through USB or Bluetooth, depending on the product.
- The
Nova (1 & 2)
has bluetooth communication. - The
DK1
has USB communication.
- The workspace consists of the bash scripts to connect & disconnect your Nova device via bluetooth.
- These scripts are automatically added to the PATH so you can run the scripts from anywhere after sourcing.
glove_connect.sh
glove_disconnect.sh
- For a detailed procedure on connecting a Nova glove(1 & 2)in linux, kindly refer to SenseGlove Docs - Connecting Devices, under Pairing SenseGlove Nova or Wireless Kit -> Linux.
- The main launch file:
senseglove.launch
has args to specify which standalone glove you are about to use. The current implementation allows you to use either of these standalone gloves. Future updates can include simultaneous use of gloves. - Calibration of the Nova-2 device runs on the glove itself. The SenseCom software offers a visual guide to accompany calibration. For more information, go to SenseGlove Docs/Nova-2
-
Source your workspace
-
Make sure your sensegloves are connected through usb or bluetooth
- If you are checking your connection by running a sensecom instance, be sure to exit the application before proceeding to avoid runing multiple instances of sensecom during launch.
-
In the
senseglove.launch
script, make sure you specify the devices being used:use_dk
use_nova
use_nova2
-
Finally, make sure you specify the handedness arguments:
use_left
= trueuse_right
= true
-
Run:
roslaunch senseglove_launch senseglove.launch
- A bash script is called invoking sensecom and running the hardware interface node twice for a left- and a right-handed glove.
- The bash
waits for the user input
to confirm whether the gloves are connected in SenseCom.
- Though the whole infrastructure of this codebase was built upon the use with infinitely many sensegloves, our example launch file only accepts two gloves.
- Moreover, due to our integration into ros-control we require the user to know what type of gloves are connected to the PC.
- As such, the user has to define which glove is connected to the system.
-
Find out if you are dealing with a left or right-handed senseglove.
-
In the
senseglove.launch
script, make sure you specify the devices being used:use_dk
use_nova
use_nova2
-
Finally and most importantly, give proper bool value to glove you are using:
use_left
use_right
-
Run:
roslaunch senseglove_launch senseglove.launch
The finger distance package is designed to publish the distances between fingertips via a ROS node, which can be used to control robotic humanoid hands and grippers.
- Calibration Service: A calibration class is provided as a service server. This service can be easily called using the rqt_service_caller plugin, or through the terminal.
rosservice call /senseglove_finger_distance_left/calibrate left
rosservice call /senseglove_finger_distance_right/calibrate right
- A Calibration Gui will appear. Install PyQt5 if it is not already available.
sudo apt-get install python3-pyqt5
- You can find the defaults/calibrated parameters in the calibration folder.
- ROS-Control for the force-feedback system. Refer to the joints & controllers assigned for each senseglove product in the config folder.
- Refer to the python scripts for haptic implementation in the senseglove_haptics folder.
NOTE for NOVA 2
: The vibration feedback is disabled for the Index, Thumb and the palm locations because of a packet overloading issue. A custom_waveform service will be implemented instead of employing ros-control.
Custom_waveform
service for Nova-2 vibrationsCalibration Profiling
, either from SenseCom (or) as a service call with interactive GUI. This should allow us to access and control the calbration.IMU
access (incl. sensor value if possible)