This repo provides code for the IEEE ICRA 2024 paper - Soft Fixtures: Practical Caging-Based Manipulation of Rigid and Deformable Objects
Tested with:
Python 3.10
Ubuntu 22.04
You can create a virtual environment using tools like virtualenv or conda.
Please first refer to the official installation instructions
For Ubuntu systems, you could simply do:
1.1 Download the OMPL installation script
1.2 Make it executable:
chmod u+x install-ompl-ubuntu.sh
1.3 Install the latest release of OMPL.app with Python bindings:
./install-ompl-ubuntu.sh --app
You can also choose to install from source.
pip install -r requirements.txt
Here is a table of arguments you could use to customize your algorithm.
Argument | Short Option | Long Option | Default Value | Choices | Description |
---|---|---|---|---|---|
scenario | -c | --scenario | ShovelFish | ShovelFish, MaskEar, StarfishBowl, HookFishHole, HandbagGripper, BimanualRubic | Specify the scenario for the demo. |
planner | -p | --planner | BITstar | BITstar, InformedRRTstar, RRTstar, RRT, AITstar | Specify the optimal planner to use. |
object | -j | --object | Fish | Fish, MaskBand, Starfish, FishHole, Chain, Rubic | Specify the object to cage. |
obstacle | -l | --obstacle | Shovel | Shovel, Ear, LeftHandAndBowl, Hook, 3fGripper | Specify the obstacle that cages the object. |
runtime | -t | --runtime | 30 | N/A | Specify the runtime in seconds. Must be greater than 0. |
visualization | -v | --visualization | True | False, True | Specify whether to visualize the PyBullet GUI. |
A sample command is provided as follows,
python3 src/runScenario.py -c ShovelFish -p BITstar -j Fish -l Shovel -t 30 -v 1
After running it, you will obtain results as following,
Please follow the correspondance in the arguments as below,
Scenario | Object | Obstacle |
---|---|---|
ShovelFish | Fish | Shovel |
MaskEar | MaskBand | Ear |
StarfishBowl | Starfish | LeftHandAndBowl |
HookFishHole | FishHole | Hook |
HandbagGripper | Chain | 3fGripper |
BimanualRubic | Rubic | 3fGripper |
To reproduce our results on a Emika Franka Panda 7-axis robot arm, please
2.1 Refer to Franka FCI instructions and build libfranka
2.2 Copy the cpp script src/franka/generate_cartesian_pose_random_shaking.cpp to the path and add it to CMakeLists.txt
2.3 Rebuild the project
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF ..
cmake --build .
2.4 Run the script
~/libfranka/build$ ./examples/generate_cartesian_pose_motion <robot-ip>
If you find the code useful, please consider cite the following paper
@inproceedings{dong2024quasi,
title={Quasi-static soft fixture analysis of rigid and deformable objects},
author={Dong, Yifei and Pokorny, Florian T},
booktitle={2024 IEEE International Conference on Robotics and Automation (ICRA)},
pages={6513--6520},
year={2024},
organization={IEEE}
}
The code is partly built upon the repo - pybullet_ompl, which provides interface to use OMPL for motion planning inside PyBullet.
Please contact Yifei Dong at [email protected] or Prof. Florian Pokorny at [email protected]
The authors are with the division of Robotics, Perception and Learning, KTH Royal Institute of Technology, 100 44 Stockholm, Sweden. Funded by the European Commission under the Horizon Europe Framework Programme project SoftEnable, grant number 101070600.