Giter Club home page Giter Club logo

furniture-bench's Introduction

FurnitureBench: Reproducible Real-World Furniture Assembly Benchmark

Paper | Website | Documentation

FurnitureBench

FurnitureBench is the real-world furniture assembly benchmark, which aims at providing a reproducible and easy-to-use platform for long-horizon complex robotic manipulation.

It features

  • Long-horizon complex manipulation tasks
  • Standardized environment setup
  • Python-based robot control stack
  • FurnitureSim: a simulated environment
  • Large-scale teleoperation dataset (200+ hours)

Please check out our website for more details.

FurnitureBench

We elaborate on the real-world environment setup guide and tutorials in our online document.

FurnitureSim

FurnitureSim is a simulator based on Isaac Gym. FurnitureSim works on Ubuntu and Python 3.8+. Please refer to Installing FurnitureSim and How to Use FurnitureSim for more details about FurnitureSim.

Citation

If you find FurnitureBench useful for your research, please cite this work:

@inproceedings{heo2023furniturebench,
    title={FurnitureBench: Reproducible Real-World Benchmark for Long-Horizon Complex Manipulation},
    author={Minho Heo and Youngwoon Lee and Doohyun Lee and Joseph J. Lim},
    booktitle={Robotics: Science and Systems},
    year={2023}
}

References

furniture-bench's People

Contributors

ankile avatar anthonysimeonov avatar minoring avatar youngwoon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

furniture-bench's Issues

Sim steps calculation error

It seems dividing by substeps is not correct in this case as per the IsaacGym documentation:

What is the difference between dt and substep?
dt is the time increment of the simulation. Every time you step the simulation via gym.simulate(...) you more the sim forward in time by dt. The substep is how many slices this dt is split into in order to do the simulation. The more substeps, the finer the slicing of time and the greater the accuracy of the simulation, but the more computationally intensive it becomes. For example: say your dt is 1/60 and your substep is 2. When you call gym.simulate(...) the physics is propagated forward 1/60th of a second in two time steps of 1/120th of a second each. You do not have access to the results of these 1/120th of a second time steps, only the total result at 1/60th of a second can be retrieved by calling gym.fetch_results(...). This is probably a consequence of certain numerical integration methods.

/ sim_config["sim_params"].substeps

The fix should be to just delete this line if you believe this issue to be correct. I'd be happy to make a simple PR for this as well if preferable!

Best, Lars

Missing dependencies when installing furniture-bench?

After running the installation instructions outlined here, I still found that I had to pip install more things (e.g., hydra-core and omegaconf).

Also, I might be wrong about this, but to be able to run the pretrained BC policy, one needs to explicitly run the script install_model_deps.sh from the root of the repo (which can be a bit convoluted if installing through pip install furniture-bench).

If you could advise me on the above, and whether I've been installing the wrong way, I'd be very thankful!

Inquiry on IQL Performance with One-Leg Assembly Task

Dear Authors,

First and foremost, I would like to express my gratitude for the exceptional work on this repository, which serves as a valuable benchmark for long-horizon assembly tasks!

I am reaching out to seek your insight regarding an issue I encountered with the Implicit Q-Learning (IQL) algorithm's performance on the one-leg assembly task. Following the instructions provided in your tutorial, I executed the example evaluation code using the command:

python implicit_q_learning/test_offline.py --env_name=FurnitureSimImageFeature-v0/one_leg --config=implicit_q_learning/configs/furniture_config.py --ckpt_step=1000000 --run_name one_leg_full_iql_r3m_low_sim_1000 --randomness low

Subsequently, I downloaded the pre-trained model one_leg_full_iql_r3m_low_sim_1000.42. Apart from a single adjustment made to address a bug—modifying _, params = variables.pop('params') to params = variables.pop('params') at this line (modify it to solve a small bug) — I adhered strictly to the provided setup. However, I've observed that the model's performance is suboptimal. Specifically, it occasionally completes only the first two phases (Grasp tabletop and Place it to corner) or even fails to progress through the first phases.

Included below are two screenshots capturing the moments when the robot arm becomes stuck during the task execution:
2024-04-08 04-17-57 的屏幕截图
2024-04-08 04-19-56 的屏幕截图

Given these observations, I am eager to hear your suggestions and recommendations. Is the issue rooted in the model itself, or is there a possibility that I've overlooked a critical step?

Thank you once again for developing and sharing this invaluable resource. I look forward to your guidance and advice!

Best regards,
Pengzhi

Isaacgym installation error

I'm following the instructions at https://clvrai.github.io/furniture-bench/docs/getting_started/installing_furniture_sim.html as closely as possible, but I'm running into the following errors when running the pip install -e python command:

Installing collected packages: isaacgym
  Running setup.py develop for isaacgym
    error: subprocess-exited-with-error
    
    × python setup.py develop did not run successfully.
    │ exit code: 1
    ╰─> [32 lines of output]
        ['isaacgym']
        running develop
        running egg_info
        /home/azureuser/miniconda3/lib/python3.8/site-packages/setuptools/dist.py:320: InformationOnly: Normalizing '1.0.preview4' to '1.0rc4'
          self.metadata.version = self._normalize_version(
        /home/azureuser/miniconda3/lib/python3.8/site-packages/setuptools/command/develop.py:40: EasyInstallDeprecationWarning: easy_install command is deprecated.
        !!
        
                ********************************************************************************
                Please avoid running ``setup.py`` and ``easy_install``.
                Instead, use pypa/build, pypa/installer or other
                standards-based tools.
        
                See https://github.com/pypa/setuptools/issues/917 for details.
                ********************************************************************************
        
        !!
          easy_install.initialize_options(self)
        /home/azureuser/miniconda3/lib/python3.8/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
        !!
        
                ********************************************************************************
                Please avoid running ``setup.py`` directly.
                Instead, use pypa/build, pypa/installer or other
                standards-based tools.
        
                See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
                ********************************************************************************
        
        !!
          self.initialize_options()
        error: Cannot update time stamp of directory 'isaacgym.egg-info'
        [end of output]
    
    note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

Using the Isaacgym install script that creates a new conda environment is not working for me either as it just spends hours on Solving environment without ever finishing. Any hints would be greatly appreciated!

Bug in 6D to quaternion rotation conversion

Hi @minoring !

Thanks for implementing the 6D rotation control in the environment! However, I noticed that IsaacGym and pytorch3d use different conventions for quaternions that lead to trouble:

  • IsaacGym represents quaternions as (x, y, z, w)
  • pytorch3d represents quaternions as (w, x, y, z)

From pytorch3d source:

def quaternion_to_matrix(quaternions):
    """
    Convert rotations given as quaternions to rotation matrices.

    Args:
        quaternions: quaternions with real part first,
            as tensor of shape (..., 4).

From IsaacGym documentation:

classisaacgym.gymapi.Quat
Quaternion representation in Gym
dtype= dtype([('x', '<f4'), ('y', '<f4'), ('z', '<f4'), ('w', '<f4')])

Therefore, I believe this piece of code in the FurnitureSimEnv:

elif self.act_rot_repr == "rot_6d":
import pytorch3d.transforms as pt
# Create "actions" dataset.
rot_6d = action[:, 3:9]
rot_mat = pt.rotation_6d_to_matrix(rot_6d)
quat = pt.matrix_to_quaternion(rot_mat)
action_quat = quat[env_idx]

Should be something more like this:

elif self.act_rot_repr == "rot_6d":
    import pytorch3d.transforms as pt

    # Create "actions" dataset.
    rot_6d = action[:, 3:9]
    rot_mat = pt.rotation_6d_to_matrix(rot_6d)

    # pytorch3d has the real part first (w, x, y, z)
    quat = pt.matrix_to_quaternion(rot_mat)
    action_quat = quat[env_idx]

    # IsaacGym expects the real part last (x, y, z, w)
    action_quat = torch.cat([action_quat[1:], action_quat[:1]])

Or, maybe there's a nicer way to make sure the conventions align!

Thank you!

Lars

Migration to Isaac Sim in Nvidia Omniverse?

Are there any plans to migrate to Nvidia Omniverse and Isaac Sim? It seems Isaac Gym standalone won't be supported anymore and this is the way to go: isaac-sim/OmniIsaacGymEnvs#14

Besides improvements in Nvidia Omniverse, this would also allow to update the python version to something higher than 3.8 and newer ubuntu versions.

Updated development roadmap

Hey! I'm enjoying learning to use the benchmark! However, I'm wondering about the plan to support multi-environment training. It says it's on the agenda, but would you happen to know what timeline we're looking at?

Alternatively, what are the guidelines for contributing, or are there specific things you'd like outside support on? I'm not necessarily the person to provide this, but it could be helpful to anyone interested in using the benchmark.

Best, Lars

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.