Skip to content

CoMMALab/ActVineSimPy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contact-Biased Sampling-based Planning as Design for Soft Growing Robots

Yitian Gao1*, Lucas Chen 1*, Priyanka Bhovad2, Sicheng Wang2, Zachary Kingston1, and Laura H. Blumenschein2

1 Department of Computer Science, Purdue University

2 Department of Mechanical Engineering, Purdue University

*Equal Contribution

title

Vine robots are inflatable soft robots that can robustly interact with dynamic environments. They can make contact with the environment at no risk (unlike rigid robots), which makes them great for planning and design optimization tasks.

Previous work has focused on planning under contact for passively deforming vines, but here we investigate active steering, which is needed for more complex environments. We develop a unified modeling framework that integrates many physical parameters: growth, bending, actuation, and obstacle contact.

We apply our model in a design optimization task to synthesize vine robots that can navigate through cluttered environments, identifying designs that minimize the number of required actuators by exploiting environmental contacts. Finally, we fabricate the best vine in real life and successfully deploy it in a obstacle course.

Install

# If you don't have CUDA capability then remove the jaxlib=*=*cuda*
conda create -n vine jax 'numpy<2' scipy numba matplotlib pandas flax line_profiler "jaxlib=*=*cuda*" jaxopt scikit-learn
conda activate vine

pip install pygame ompl

Run

This repo is divied into multiple parts

  • geometric The geometric motion planner that finds approximate but dense solutions for the design in order to guide the kinodynamic planner.
  • kinodynamic The physically accurate (but slower) planner that uses the vine simulator to explore feasible trajectories.
  • pbd_vine.py A JAX vine simulator that finds the forward time evolution of vine states, using Position Based Dynamics to find stable solutions for soft bodies.
  • sPAM The (inverse) sPAM model, which finds the design parameters to produce a vine that curves at a given angle. Contains a numerical solver and neural surrogate.
  • experiments Code for experiments; robustness tests, planner comparisons, and plots.
  • envs All environment files.

For planning

export PYTHONPATH=$(pwd)
python kinodynamic/sst.py --env envs/divider.txt

Runs the geometric planner followed by the kinodynamic planner which jointly find vine designs to solve the given env file. It runs indefinitely in its search for better solutions. Hit ctrl + c to stop it. You can check stats like the minimum solution cost on the top right.

The solutions are saved to cache/. View them using

python kinodynamic/view_solutions.py

Troubleshooting

If you are getting angry yellow warnings about "invalid start state" from rrt, despite the start state being prefectly collision free -- this is not a logic error nor OMPL issue. It's something to do with Numba cache. Go to _isStateValid in kinodynamic/fast_geo/biarc_rrtstar.py, add some random print(), run the code once so Numba recompiles it, then remove the print() and it should be good.

Common Install Issues

RuntimeWarning: Your system is avx2 capable but pygame was not built with support for it. The performance of some of your blits could be adversely affected. Consider enabling compile time detection with environment variables like PYGAME_DETECT_AVX2=1 if you are compiling without cross compilation. Remove pygame from conda and install via pip instead

About

Automatically synthesize vine robots to solve mazes!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages