This code implements the algorithm in the 2020 IEEE RA-L paper Object-Centric Task and Motion Planning in Dynamic Environments.
@article{migimatsu2019objectcentric,
title={Object-Centric Task and Motion Planning in Dynamic Environments},
author={Toki Migimatsu and Jeannette Bohg},
journal={IEEE Robotics and Automation Letters},
year={2020},
volume={5},
number={2},
pages={844-851},
doi={10.1109/LRA.2020.2965875},
}
logic-opt uses the Ipopt solver with MA-57. Because it is a proprietary
solver, it needs to be downloaded separately.
Obtain an academic license for the full HSL library: http://www.hsl.rl.ac.uk/ipopt/
Once the download link is emailed to you, save the coinhsl.tgz file into the
logic-opt repository.
Before compiling Ipopt, make sure the necessary packages are installed.
sudo apt install pkg-config gfortran automake liblapack-dev libmetis-devWith coinhsl.tgz in the logic-opt repository, run the install script.
./install_ipopt.shBefore compiling logic-opt, make sure the following packages are installed.
sudo apt install python3-dev curl redis-serverNext, download the Rust compiler.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shThe following line should be added to your .bashrc.
source $HOME/.cargo/envFinally, build logic-opt with cmake.
mkdir build # from the logic-opt folder
cd build
cmake .. # first time may take around 5 min
makeThe visualizer uses redis-gl, a browser-based interface.
git clone https://github.com/tmigimatsu/redis-gl.gitFollow the installation instructions in redis-gl's README.md.
The planner, visualizer, and robot controller communicate via Redis. First, make sure the server is running.
redis-serverNext, run the visualizer server from the redis-gl repo.
pipenv run ./server.pyOpen the visualizer in the browser at http://localhost:8000.
Next, run the robot controller in the logic-opt/bin folder. This program can
remain running in the background.
./franka_panda_opspaceIn the visualizer, you should now be able to perturb the robot by ctrl-clicking or shift-clicking a link on the robot.
Finally, we can run the TAMP solver with the Workspace Reach demo.
./lgp ../resources/reach_config.yamlThis will play all the candidate plans in the visualizer in order of optimization completion time.
The Towers of Hanoi demo can be run with a different config file.
./lgp ../resources/hanoi_config.yamlRecent versions of the collision checker, ncollide, seem to cause instability issues with the nonlinear optimizer. We are currently working to improve the optimization stability.