A workspace for the integration of the SenseGlove into ROS Melodic. This workspace makes use of ros_control for automatically initiating publisher and subscriber nodes for the state of the senseglove.
Florent Audonnet has done some work on support for ROS2 Galactic. In case you are interested, have a look at https://github.com/09ubberboy90/senseglove_ros_ws/tree/ros2
If you are totally unfamiliar with ROS we advise you to take a look at the ROS-wiki for a quick startup guide. We especially recommend the following tutorials:
- http://wiki.ros.org/melodic/Installation/Ubuntu
- http://wiki.ros.org/ROS/StartGuide
- http://wiki.ros.org/ROS/Tutorials
A large part of understanding/working with ROS is the ability to search for the issues you are dealing with. In our experience, simply googling for an error or issue you have can do the trick. Do keep in mind that there exists a vast amount of documentation, though it can be tedious to sort through its information.
- Make sure you are on a Ubuntu 18.04 system (not necessary, but all code has been checked with docker images running in ubuntu).
- Download ros-melodic as described in the ros-wiki.
- clone our workspace by either using
git clone https://github.com/Adjuvo/senseglove_ros_ws.git
or through the webbrowser here on the Github website. - install the following dependencies:
sudo apt-get install ros-melodic-ros-control
sudo apt-get install ros-melodic-joint-trajectory-controller
- Run:
sudo apt-get update
- Run:
rosdep update
- Run:
sudo apt-get upgrade
- navigate, in the terminal, to the workspace folder
- source your workspace:
source /opt/ros/melodic/setup.bash
- Build your workspace:
catkin build
- or if you prefer a different build tool use:
catkin_make
- or use:
colcon build
- or if you prefer a different build tool use:
- after building, you can source the workspace itself by using
source devel/setup.bash
This repository is meant to present a solid foundation for using the senseglove in ROS Melodic. As such it provides no concrete example projects. It does however provide the user with a few launch files, hardware.launch and senseglove_demo.launch which initiate the sensegloves. The senseglove_hardware_interface nodes which are called by these launch files do nothing more than using the senseglove API in a ROS /ros_control "sanctioned" manner.
Important: Run the sensecom application, present in the SenseGlove_API folder, when using hardware.launch! The launching of sensecom has been taken care of in senseglove_demo.launch in the bash script.
Users are advised to develop their own applications outside this package and make use of the provided topics. If users do find the need to write additions to this package, beware that this repository is still subject to changes and pulling this repo again might override your own code.
If you, as a user, find a bug or have an issue with getting the workspace up and running, we suggest you leave this as an issue on this repository. This practice will allow others to troubleshoot their own problems quicker.
- source your workspace
- make sure your sensegloves are connected through usb or bluetooth
- if you checked your connection with sensecom, be sure to exit the application before proceeding
- run:
roslaunch senseglove_demo.launch
A bash script is called invoking sensecom and running the hardware interface node twice for a left- and a right-handed glove. If all is well, your invocation of the roslaunch command should have started a roscore session and all necessary nodes providing intefaces to the senseglove. In a second (properly sourced) terminal you can verify that these nodes are publishing by invoking: rostopic list you can further test the application by checking that these topics get published by invoking: rostopic echo /topic_name
Though the whole infrastructure of this codebase was built upon the use with infinitely many sensgloves, 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
- remove the non-existing glove from the senseglove_hardware_demo.launch file, such that only your left/right-handed glove remains.
- save the launch file
- build you workspace
- source your workspace
- proceed as if you were dealing with 2 sensegloves
This is a small to do list for the upcoming features in this repository these will be added as issues as well.
- Custom Exceptions for easy debugging
- Provide specialized script for using a single senseglove
- Provide speed and acceleration data of the fingertippositions as well as for the encoder data.