Skip to content

AutonoBot-Lab/BestMan_Pybullet

Repository files navigation

GitHub license Ubuntu 20.04 Python 3.8 pre-commit Code style: black Imports: isort

Welcome to the official repository of BestMan, a mobile manipulator simulator (with a wheel-base and arm) built on PyBullet.

💻 Installation

  • Pull the repository and update the submodule
git clone https://github.com/AutonoBot-Lab/BestMan_Pybullet.git --branch master
cd BestMan_Pybullet
git submodule init
git submodule update

☘️ Conda

First install Anaconda / minconda on linux system and then perform the following steps:

  • Run the following script to add the project to the PYTHON search path
cd Install
sudo bash pythonpath.sh
source ~/.bashrc
  • Install ffmpeg to enable video record
sudo apt update && sudo apt install ffmpeg
  • Install shared file (If it already exists, skip this step.)
sudo apt install -y libgl1-mesa-glx libglib2.0-0
sudo mkdir /usr/lib/dri
sudo ln -s /lib/x86_64-linux-gnu/dri/swrast_dri.so /usr/lib/dri/swrast_dri.so
  • Optional: Configure mamba to speed up the conda environment construction
# Install conda-libmamba-solver
conda install -n base conda-libmamba-solver
conda config --set solver libmamba

# Install mamba
conda install mamba -n base -c conda-forge
  • Create conda environment (If mamba is configured, the command uses mamba, otherwise conda)
mamba(conda) env create -f basic_environment.yaml
mamba(conda) activate BestMan

☘️ Docker

Windows

  • Pull docker image from DockerHub
docker pull yk1127/bestman:v1
  • Create docker container
docker run -it --name BestMan yk1127/bestman:v1
  • Install VcXsrv Windows X Server, Start and keep running in the background.

  • Execute echo $DISPLAY inside the container, Make sure the result is host.docker.internal:0 so that it can be visualized on the host machine, if not:

export DISPLAY=host.docker.internal:0

Linux

  • TBD

🔎 Project Structure

cat Asset/project_structure.txt

👨‍💻 Basic Demos

cd Examples/

☘️ Load Kitchens

python load_kitchen.py

☘️ Navigation

python navigation_basic.py
navigation navigation

☘️ Manipulation

python grasp_bowl_in_kitchen.py
python grasp_bowl_from_drawer_in_kitchen.py
manipulation Video 1 Video 2

📘 Documents

☘️ APIs_in_utils.txt: A detailed list of common functions used in the utility scripts

🤝 Reference

If you find this work useful, please consider citing:

@inproceedings{ding2023task,
  title={Task and motion planning with large language models for object rearrangement},
  author={Ding, Yan and Zhang, Xiaohan and Paxton, Chris and Zhang, Shiqi},
  booktitle={2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={2086--2092},
  year={2023},
  organization={IEEE}
}

@article{ding2023integrating,
  title={Integrating action knowledge and LLMs for task planning and situation handling in open worlds},
  author={Ding, Yan and Zhang, Xiaohan and Amiri, Saeid and Cao, Nieqing and Yang, Hao and Kaminski, Andy and Esselink, Chad and Zhang, Shiqi},
  journal={Autonomous Robots},
  volume={47},
  number={8},
  pages={981--997},
  year={2023},
  publisher={Springer}
}