flex-and-flip: The project demonstrates an advanced dynamic manipulation strategy by soft gripper called flex-and-flip. The technique is targeted at flexible, thin objects and applied to obtaining secure, pinch grasps on them. Initially, the flexible object (a strip of paper) is placed on a tabletop. The robotic hand approaches and deforms the object (the “flex” phase of the operation), and then the deformed object is tucked into the gap between the fingers (the “flip” phase). Finally, a pinch grasp is obtained and the page turning task (or other secondary manipulation tasks) can be performed. The technqiue could be further extented to turning planar deformable objects and back-to-back page turning.
Video: video1
Authors: Chunli Jiang, Abdullah Nazir, Ghasem Abbasnejad and Jungwon Seo (All members are from HKUST Robotic Manipulation Lab.)
Contributor: Jiming Ren
Related Paper: Dynamic Flex-and-Flip Manipulation of Deformable Linear Objects (Contributed Paper Accepted by IROS2019 Macau)
If you use flexflip or its sub-modules for your reasearch or application, please star this repo and cite our related paper.
The contents of the following paragraph are not applicable any more as the codes have been changed. May be we can just refer the readers to the flex flip theory
directory - AN
Modeling and Manipulating a Linear Deformable Object :
The directory DFF-Manipulation-master/modeling
contains 1) a MATLAB
function to generate minimum bending energy curves given the MATLAB
scripts that considers a set of feasible right endpoint locations and obtains the minimum bending energy curve for each. Simultaneously, the magnitude of total surface energy as well as the minimum coefficient of friction required to maintain contact #2 is computed. The following figure was generated using this script.
Knowledge of variation of bending energy and the minimum coefficient of friction can help in planning the path of contact #2 such as shown in the following figure.
The following figure shows the setup on sight. Our gripper is, mounted on UR10, is to be controlled to turn the paper strip, localized autonomously through AprilTag. Range of the initialconfigurations of the hand to be tested in our page-turning experiments. And here are listed iterms we adopted for experiments:
- Robot arm: Universal Robot UR10
- 3D printed soft gripper: Stl files and descriptive drawings for manufacturing are in mesh folder. The soft pneumatic finger is 3D printed by 95A hardness thermoplastic polyurethane (TPU) on Ultimaker 3 Extended. Thickness of each layer is set as 0.08mm and the printing speed as 35mm/s for high precision. Mounting parts are printed by polylactide (PLA) on the same machine.
- USB camera: Logitech C525 Webcam
- Arduino: Arduino Mega
- DAC module
- Two SMC ITV 0030 series electro-pneumatic regulators
- Ubuntu and ROS:Our system is devevloped in Ubuntu 16.04, ROS Kinetic.
- Robot Arm Control: ROS UR modern driver and ROS universal_robot package are used to control UR10 with the IK solvers provided by MoveIt!.
- Visual Perception: Monocular Camera drived by ROS package usb_cam provides transform between the object and center of camera ROS package apriltags_ros. The pregrasping pose is set based on this perception information.
- End Effector Control: We use ROS package rosserial_arduino to setup the communication between ROS and Arduino board. DAC module connect with Arduino will convert PWM signal to analog for pneumatic pressure control.
The following steps will help to test and debug :
start a ROS core and setup connection with Arduino:
roscore
rosrun rosserial_python serial_node.py /dev/you_serial_node
test the gripper:
rostopic pub soft std_msgs/UInt16 1 --once
Note: if the serial port permission denied:
sudo chmod a rw /dev/ttyACM0
run apriltag with usb_cam:
roslaunch usb_cam usb_cam-test.launch
ROS_NAMESPACE=usb_cam rosrun image_proc image_proc
roslaunch apriltags_ros example.launch
rostopic echo /tag_detections
launch robot driver and moveit planner:
roslaunch ur_modern_driver ur10_bringup.launch robot_ip:=your.robot.ip [reverse_port:=REVERSE_PORT]
roslaunch ur10_moveit_config ur10_moveit_planning_execution.launch limited:=true
roslaunch ur10_moveit_config moveit_rviz.launch config:=true
subsrcibe to the gripper frame:
rosrun soft_gripper_page_turning soft_gripper_frame.py
run python script:
rosrun soft_gripper_page_turning page_turning_1D_aug_demo.py
Note: A shell script paper_turning.sh is written to setup the environment automatically at home directory:
./paper_turning.sh
Chunli JIANG ([email protected]) Abdullah NAZIR([email protected])