This repo porivdes our implementation of Human Control, Autonomous Control and Shared Control for leveraging RISO grippers with 7-DoF Franka Emika Panda robot arm.
You need to have the following libraries with Python3:
For controlling the pressure regulators, you need the following modules for Arduino
- Adafruit 12-bit I2C DAC
- Adafruit MCP4725 Library
- DFRobot Gravity:2-channel I2C DAC
- DFRobot_GP8403 Library
To install this repo use the command
git clone https://github.com/VT-Collab/RISO_ScienceRobotics.git
In this control approach, the user is in complete control of the robot and the gripper. The user operates the gripper and the robot using a handheld controller.
For the RISO gripper, the user controls the rigid gripper as well as the pressure in the soft adhesives for soft grasping. For the Granular gripper [1] and SoftGripper [2], the user only controls the pressure in the gripper. For ease of controlling the pressure and force that the gripper applies, we provide a GUI that shows the pressure and force values to the user when performing the task.
The approach can be implemented by running the following code:
cd /home/<path_to_dir>/RISO_ScienceRobotics/Human
python3 fully_remote.py --gripper <gripper_type> --user test
Replace the <gripper_type> with 'riso', 'granular' or 'modular' based on the gripper being used and <path_to_dir> with your folder path to this directory
Using this control strategy, the robot autonomously detects the objects and plans its trajectory to perform the grasp without any human feedback.
The robot leverages an Intel RealSense D435 depth camera to detect the objects present in its workspace. It determines the object to grasp based on the area of the object, i.e., the robot picked up the object with the largest area first. The grasp type for RISO was determined based on the height of the object to grasp. If the height if the object was greater that 7.5 cm, the robot used the rigid mechanism for the grasp, and soft adhesives otherwise.
For all the soft grasps, i.e. for RISO (soft adhesive), Granular gripper [1] and SoftGripper [2], the robot used preset pressure values to perform the grasps. We performed multiple tests with different pressure values and selected the best performing pressure values for performing the autonomous tests.
The approach can be implemented by running the following code:
cd /home/<path_to_dir>/RISO_ScienceRobotics/Autonomous
python3 fully_auton.py --gripper <gripper_type> --des_force -25 --user test
Replace the <gripper_type> with 'riso', 'granular' or 'modular' based on the gripper being used and <path_to_dir> with your folder path to this directory
Here, we implement the shared control algorithm outlined in Section 2.4 of the manuscript.
Leveraging the RGB-D camera mounted at its end-effector, the robot gets the positions of all the objects in its workspace. The user inputs the grasp type to the robot using the controller before starting the experiment. As the user starts moving the robot, the robot uses Equation (2):
to update its belief over the object the user is trying to reach. Once the robot is confident about the object the human is reaching for, the robot starts taking actions to assist the user based on Equation (3):
We get the final actions to be taken by blending the robot actions with the human actions as
Once the robot reaches the objects and the user completes the final alignment of the gripper with the object, the robot takes over and performs the grasp using the grasp type selected by the user. For the soft grasps using RISO the robot uses preset pressure and force values similar to Autonomous Control.
The approach can be implemented by running the following code:
cd /home/<path_to_dir>/RISO_ScienceRobotics/Shared
python3 bayesian_code.py --user test
Replace <path_to_dir> with your folder path to this directory
[1] Dobot Magician SoftGripper - 3 Fingers
[2] Eric Brown et el. “Universal robotic gripper based on the jamming of granular material”. In:Proceedings of the National Academy of Sciences 107.44 (2010), pp. 18809–18814.