Train robotic agents to learn pick and place with deep learning for vision-based manipulation in PyBullet.

Overview

Ravens - Transporter Networks

Ravens is a collection of simulated tasks in PyBullet for learning vision-based robotic manipulation, with emphasis on pick and place. It features a Gym-like API with 10 tabletop rearrangement tasks, each with (i) a scripted oracle that provides expert demonstrations (for imitation learning), and (ii) reward functions that provide partial credit (for reinforcement learning).


(a) block-insertion: pick up the L-shaped red block and place it into the L-shaped fixture.
(b) place-red-in-green: pick up the red blocks and place them into the green bowls amidst other objects.
(c) towers-of-hanoi: sequentially move disks from one tower to another—only smaller disks can be on top of larger ones.
(d) align-box-corner: pick up the randomly sized box and align one of its corners to the L-shaped marker on the tabletop.
(e) stack-block-pyramid: sequentially stack 6 blocks into a pyramid of 3-2-1 with rainbow colored ordering.
(f) palletizing-boxes: pick up homogeneous fixed-sized boxes and stack them in transposed layers on the pallet.
(g) assembling-kits: pick up different objects and arrange them on a board marked with corresponding silhouettes.
(h) packing-boxes: pick up randomly sized boxes and place them tightly into a container.
(i) manipulating-rope: rearrange a deformable rope such that it connects the two endpoints of a 3-sided square.
(j) sweeping-piles: push piles of small objects into a target goal zone marked on the tabletop.

Some tasks require generalizing to unseen objects (d,g,h), or multi-step sequencing with closed-loop feedback (c,e,f,h,i,j).

Team: this repository is developed and maintained by Andy Zeng, Pete Florence, Daniel Seita, Jonathan Tompson, and Ayzaan Wahid. This is the reference repository for the paper:

Transporter Networks: Rearranging the Visual World for Robotic Manipulation

Project Website  •  PDF  •  Conference on Robot Learning (CoRL) 2020

Andy Zeng, Pete Florence, Jonathan Tompson, Stefan Welker, Jonathan Chien, Maria Attarian, Travis Armstrong,
Ivan Krasin, Dan Duong, Vikas Sindhwani, Johnny Lee

Abstract. Robotic manipulation can be formulated as inducing a sequence of spatial displacements: where the space being moved can encompass an object, part of an object, or end effector. In this work, we propose the Transporter Network, a simple model architecture that rearranges deep features to infer spatial displacements from visual input—which can parameterize robot actions. It makes no assumptions of objectness (e.g. canonical poses, models, or keypoints), it exploits spatial symmetries, and is orders of magnitude more sample efficient than our benchmarked alternatives in learning vision-based manipulation tasks: from stacking a pyramid of blocks, to assembling kits with unseen objects; from manipulating deformable ropes, to pushing piles of small objects with closed-loop feedback. Our method can represent complex multi-modal policy distributions and generalizes to multi-step sequential tasks, as well as 6DoF pick-and-place. Experiments on 10 simulated tasks show that it learns faster and generalizes better than a variety of end-to-end baselines, including policies that use ground-truth object poses. We validate our methods with hardware in the real world.

Installation

Step 1. Recommended: install Miniconda with Python 3.7.

curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -u
echo $'\nexport PATH=~/miniconda3/bin:"${PATH}"\n' >> ~/.profile  # Add Conda to PATH.
source ~/.profile
conda init

Step 2. Create and activate Conda environment, then install GCC and Python packages.

cd ~/ravens
conda create --name ravens python=3.7 -y
conda activate ravens
sudo apt-get update
sudo apt-get -y install gcc libgl1-mesa-dev
pip install -r requirements.txt
python setup.py install --user

Step 3. Recommended: install GPU acceleration with NVIDIA CUDA 10.1 and cuDNN 7.6.5 for Tensorflow.

./oss_scipts/install_cuda.sh  #  For Ubuntu 16.04 and 18.04.
conda install cudatoolkit==10.1.243 -y
conda install cudnn==7.6.5 -y

Alternative: Pure pip

As an example for Ubuntu 18.04:

./oss_scipts/install_cuda.sh  #  For Ubuntu 16.04 and 18.04.
sudo apt install gcc libgl1-mesa-dev python3.8-venv
python3.8 -m venv ./venv
source ./venv/bin/activate
pip install -U pip
pip install scikit-build
pip install -r ./requirements.txt
export PYTHONPATH=${PWD}

Getting Started

Step 1. Generate training and testing data (saved locally). Note: remove --disp for headless mode.

python ravens/demos.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --mode=train --n=10
python ravens/demos.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --mode=test --n=100

To run with shared memory, open a separate terminal window and run python3 -m pybullet_utils.runServer. Then add --shared_memory flag to the command above.

Step 2. Train a model e.g., Transporter Networks model. Model checkpoints are saved to the checkpoints directory. Optional: you may exit training prematurely after 1000 iterations to skip to the next step.

python ravens/train.py --task=block-insertion --agent=transporter --n_demos=10

Step 3. Evaluate a Transporter Networks agent using the model trained for 1000 iterations. Results are saved locally into .pkl files.

python ravens/test.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --agent=transporter --n_demos=10 --n_steps=1000

Step 4. Plot and print results.

python ravens/plot.py --disp=True --task=block-insertion --agent=transporter --n_demos=10

Optional. Track training and validation losses with Tensorboard.

python -m tensorboard.main --logdir=logs  # Open the browser to where it tells you to.

Datasets and Pre-Trained Models

Download our generated train and test datasets and pre-trained models.

wget https://storage.googleapis.com/ravens-assets/checkpoints.zip
wget https://storage.googleapis.com/ravens-assets/block-insertion.zip
wget https://storage.googleapis.com/ravens-assets/place-red-in-green.zip
wget https://storage.googleapis.com/ravens-assets/towers-of-hanoi.zip
wget https://storage.googleapis.com/ravens-assets/align-box-corner.zip
wget https://storage.googleapis.com/ravens-assets/stack-block-pyramid.zip
wget https://storage.googleapis.com/ravens-assets/palletizing-boxes.zip
wget https://storage.googleapis.com/ravens-assets/assembling-kits.zip
wget https://storage.googleapis.com/ravens-assets/packing-boxes.zip
wget https://storage.googleapis.com/ravens-assets/manipulating-rope.zip
wget https://storage.googleapis.com/ravens-assets/sweeping-piles.zip

The MDP formulation for each task uses transitions with the following structure:

Observations: raw RGB-D images and camera parameters (pose and intrinsics).

Actions: a primitive function (to be called by the robot) and parameters.

Rewards: total sum of rewards for a successful episode should be =1.

Info: 6D poses, sizes, and colors of objects.

Comments
  • Question: batch_size=1 for Transporter models?

    Question: batch_size=1 for Transporter models?

    Thanks for open-sourcing this great work!

    I noticed that all the Transporter models are trained with a batch size of 1. Is there anything preventing the use of larger batches other than memory?

    opened by MohitShridhar 4
  • Add option to use EGL rendering for Linux systems when `disp=False`.

    Add option to use EGL rendering for Linux systems when `disp=False`.

    By default, the Environment class was using openGL hardware accelerated rendering. By switching to EGL rendering if using a Linux system, you can get an approximately 10x speedup in each call to the env.step method (9.83x to be precise.) This patch also fixes a visual bug in the spatula URDF which was missing a material definition.

    Tested on my Ubuntu 20.04 machine with a RTX 2080ti:

    | Renderer | Mean | Std dev | |----------------|---------------------|-----------------------| | Default openGL | 0.2252595923267878 | 0.03675561883686646 | | EGL | 0.02291664930695262 | 0.0037472464227214205 |

    Speedup = 9.83x

    cla: yes 
    opened by kevinzakka 3
  • Implement

    Implement "continuous" ravens.

    This PR implements a continuous version of the environments and tasks, which allows us to generate dense trajectories. Specifically it contains:

    • A ContinuousEnvironment class which subclasses the base environment.Environment class and eliminates the "do-it-in-1-step" PickPlace and push primitives.
    • Adds a continuous kwarg to each instance of Task which should be toggled when using ContinuousEnvironment.
    • Implements a continuous version of the oracle which uses planners.PickPlacePlanner for pick-and-place tasks and planners.PushPlanner for pushing tasks to generate intermediate actions given the pick and place poses generated by the discrete version of the oracle. The base Planner class is implemented via splines.

    Here is some example code to illustrate the new API, which closely mimics the discrete one:

    env = environment.ContinuousEnvironment(ASSETS_PATH)
    task = tasks.StackBlockPyramid(continuous=True)
    env.set_task(task)
    env.seed(1)
    agent = task.oracle(env)  # This is now an instance of `ContinuousOracle`.
    obs = env.reset()
    
    info = None
    done = False
    for i in range(100):
        act = agent.act(obs, info)
        obs, rew, done, info = env.step(act)
        if done:
            print(f"Done at step {i}. Exiting.")
            break
    

    This generates the following trajectory for the StackBlockPyramid task:

    https://user-images.githubusercontent.com/10518920/124039895-ac213780-d9b8-11eb-91a2-97577074bbe7.mp4

    You can also increase the density of the steps generated by the oracle, which allows you to generate more intermediate observations. Here is a second demonstration generated via agent = task.oracle(env, steps_per_seg=5):

    https://user-images.githubusercontent.com/10518920/124040871-9ad92a80-d9ba-11eb-9c6b-524be81f5e56.mp4

    cla: yes 
    opened by kevinzakka 3
  • Running demos other than block-insertion fail on urdf loading

    Running demos other than block-insertion fail on urdf loading

    This is a great project -- thanks for open-sourcing it! Looking forward to trying it out, however, only the block-insertion demo seems to be working at present. When trying to run demos.py on any other example, relative paths to description files appear to be causing issues resulting in errors.

    For example for assembling-kits:

    python ravens/demos.py  --assets_root=./ravens/environments/assets/ --disp=True --task=assembling-kits --mode=train --n=10
    
    b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,152]:
    
    b3Printf: URDF file './ravens/environments/assets/assets/kitting/kit.urdf' not found
    
    Traceback (most recent call last):
      File "ravens/demos.py", line 81, in <module>
        app.run(main)
      File "/home/user/.miniconda/envs/ravens/lib/python3.7/site-packages/absl/app.py", line 303, in run
        _run_main(main, args)
      File "/home/user/.miniconda/envs/ravens/lib/python3.7/site-packages/absl/app.py", line 251, in _run_main
        sys.exit(main(argv))
      File "ravens/demos.py", line 62, in main
        obs = env.reset()
      File "/home/user/.local/lib/python3.7/site-packages/ravens-0.1-py3.7.egg/ravens/environments/environment.py", line 168, in reset
        self.task.reset(self)
      File "/home/user/.local/lib/python3.7/site-packages/ravens-0.1-py3.7.egg/ravens/tasks/assembling_kits.py", line 80, in reset
        urdf = self.fill_template(template, replace)
      File "/home/user/.local/lib/python3.7/site-packages/ravens-0.1-py3.7.egg/ravens/tasks/task.py", line 324, in fill_template
        with open(template, 'r') as file:
    FileNotFoundError: [Errno 2] No such file or directory: '/home/user/.local/lib/python3.7/site-packages/ravens-0.1-py3.7.egg/ravens/tasks/../assets/kitting/object-template.urdf'
    

    Have also tried using pip install -e ., but error persists. Example for towers-of-hanoi:

    python ravens/demos.py  --assets_root=./ravens/environments/assets/ --disp=True --task=towers-of-hanoi --mode=train --n=10
    
    int args: [CNSFileIO is not enabled in this build.
    Oracle demonstration: 1/10
    ven = NVIDIA Corporation
    ven = NVIDIA Corporation
    b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,152]:
    
    b3Printf: URDF file './ravens/environments/assets/assets/hanoi/stand.urdf' not found
    
    b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,152]:
    
    b3Printf: URDF file './ravens/environments/assets/assets/hanoi/disk0.urdf' not found
    
    b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,152]:
    
    b3Printf: URDF file './ravens/environments/assets/assets/hanoi/disk1.urdf' not found
    
    b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,152]:
    
    b3Printf: URDF file './ravens/environments/assets/assets/hanoi/disk2.urdf' not found
    
    Traceback (most recent call last):
      File "ravens/demos.py", line 81, in <module>
        app.run(main)
      File "/home/user/.miniconda/envs/ravens/lib/python3.7/site-packages/absl/app.py", line 303, in run
        _run_main(main, args)
      File "/home/user/.miniconda/envs/ravens/lib/python3.7/site-packages/absl/app.py", line 251, in _run_main
        sys.exit(main(argv))
      File "ravens/demos.py", line 62, in main
        obs = env.reset()
      File "/home/user/code/ravens/ravens/environments/environment.py", line 173, in reset
        obs, _, _, _ = self.step()
      File "/home/user/code/ravens/ravens/environments/environment.py", line 193, in step
        while not self.is_static:
      File "/home/user/code/ravens/ravens/environments/environment.py", line 111, in is_static
        for i in self.obj_ids['rigid']]
      File "/home/user/code/ravens/ravens/environments/environment.py", line 111, in <listcomp>
        for i in self.obj_ids['rigid']]
    TypeError: an integer is required (got type NoneType)
    

    Or sweeping-piles:

    python ravens/demos.py  --assets_root=./ravens/environments/assets/ --disp=True --task=sweeping-piles --mode=train --n=10
    
    Traceback (most recent call last):
      File "/home/user/code/ravens/ravens/utils/pybullet_utils.py", line 29, in load_urdf
        return pybullet_client.loadURDF(file_path, *args, **kwargs)
    AttributeError: 'str' object has no attribute 'loadURDF'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "ravens/demos.py", line 81, in <module>
        app.run(main)
      File "/home/user/.miniconda/envs/ravens/lib/python3.7/site-packages/absl/app.py", line 303, in run
        _run_main(main, args)
      File "/home/user/.miniconda/envs/ravens/lib/python3.7/site-packages/absl/app.py", line 251, in _run_main
        sys.exit(main(argv))
      File "ravens/demos.py", line 62, in main
        obs = env.reset()
      File "/home/user/code/ravens/ravens/environments/environment.py", line 152, in reset
        self.ee = self.task.ee(self.assets_root, self.ur5, 9, self.obj_ids)
      File "/home/user/code/ravens/ravens/tasks/grippers.py", line 59, in __init__
        os.path.join(self.assets_root, SPATULA_BASE_URDF), pose[0], pose[1])
      File "/home/user/code/ravens/ravens/utils/pybullet_utils.py", line 30, in load_urdf
        except pybullet_client.error:
    AttributeError: 'str' object has no attribute 'error'
    
    

    Note that this has been tested on all tasks listed in the README.md, and the three examples above cover the extent of errors seen in tasks not mentioned.

    opened by ri-ceres 3
  • Sort by n_steps before plotting

    Sort by n_steps before plotting

    This PR sort the plot data by n_steps instead of file names before plotting. Also, print score and std two digits after the decimal.

    before: 1000 steps: 0.9% ± 0.3% 10000 steps: 1.0% ± 0.2% <---10000 is put in front because of sorting by file names 2000 steps: 1.0% ± 0.2% 5000 steps: 1.0% ± 0.1%

    fixed: 1000 steps: 0.90% ± 0.30% 2000 steps: 0.97% ± 0.17% 5000 steps: 0.99% ± 0.10% 10000 steps: 0.97% ± 0.17%

    cla: yes 
    opened by tony2guo 2
  • Dataset all frames

    Dataset all frames

    Hi, is there a simple way to generate the dataset with all frames (including the intermediate observations while the action is being performed)? The current dataset only gives frames for before and after an action has been performed.

    opened by Advaya24 2
  • cuDNN failed to initialize

    cuDNN failed to initialize

    This is the error that I am getting when trying to run train.py: E tensorflow/stream_executor/cuda/cuda_dnn.cc:328] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

    After googling the error, I tried restarting my PC as well as other steps mentioned; however none helped.

    opened by MeetGandhiMagna 2
  • pybullet.error: Not connected to physics server

    pybullet.error: Not connected to physics server

    I run the code

    python ravens/demos.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --mode=test --n=100

    When disp is True, the p.SHARED_MEMORY is True.

    client = p.connect(p.SHARED_MEMORY if disp else p.DIRECT)

    then run

    `file_io = p.loadPlugin('fileIOPlugin', physicsClientId=client)

    ` print 'pybullet.error: Not connected to physics server.' )

    Something should I run first? Maybe other physics server.

    image

    opened by leeivan1007 2
  • Small typo in README installation step 3

    Small typo in README installation step 3

    Thanks for the code release! Spotted a very minor typo in the setup instruction:

    Step 3. Recommended: install GPU acceleration with NVIDIA CUDA 10.1 and cuDNN 7.6.5 for Tensorflow. First line ./oss_scipts/install_cuda.sh should be ./oss_scripts/install_cuda.sh

    opened by MandiZhao 1
  • [Bugfix] Prevent cumulative reward from exceeding 1.0 in continuous mode.

    [Bugfix] Prevent cumulative reward from exceeding 1.0 in continuous mode.

    This corrects an error I made in returning > 0 reward after the task was complete but the robot was still executing the last movements in a plan (e.g. postplace pose, home pose). The reward is now correctly capped at 1.0 for all tasks.

    cla: yes 
    opened by kevinzakka 0
  • Error: test show nothing

    Error: test show nothing

    I tested the trained checkpoints file, and the following appeared in the terminal. It seems that there is no error. May I ask if this is testing? Where is the .pkl file?

    (ravens) randy@randy-Precision-7920-Tower:/media/randy/299D817A2D97AD94/FTY/ravens$ python ravens/test.py --assets_root=./ravens/environments/assets/ --task=sweeping-piles --agent=transporter --n_demos=10 --n_steps=40000 --gpu=1 2022-03-31 21:14:03.592907: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 pybullet build time: Dec 1 2021 18:33:04 2022-03-31 21:14:05.890125: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcuda.so.1 2022-03-31 21:14:05.921645: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1716] Found device 0 with properties: pciBusID: 0000:73:00.0 name: NVIDIA GeForce RTX 2080 Ti computeCapability: 7.5 coreClock: 1.545GHz coreCount: 68 deviceMemorySize: 10.75GiB deviceMemoryBandwidth: 573.69GiB/s 2022-03-31 21:14:05.922936: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1716] Found device 1 with properties: pciBusID: 0000:a6:00.0 name: NVIDIA GeForce RTX 2080 Ti computeCapability: 7.5 coreClock: 1.545GHz coreCount: 68 deviceMemorySize: 10.76GiB deviceMemoryBandwidth: 573.69GiB/s 2022-03-31 21:14:05.922984: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 2022-03-31 21:14:05.925204: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcublas.so.10 2022-03-31 21:14:05.927267: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcufft.so.10 2022-03-31 21:14:05.927634: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcurand.so.10 2022-03-31 21:14:05.929961: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcusolver.so.10 2022-03-31 21:14:05.931298: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcusparse.so.10 2022-03-31 21:14:05.935541: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudnn.so.7 2022-03-31 21:14:05.937607: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1858] Adding visible gpu devices: 0, 1 text argument:./ravens/environments/assets/ 2022-03-31 21:14:05.981715: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU instructions in performance-critical operations: AVX2 AVX512F FMA To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags. 2022-03-31 21:14:05.999376: I tensorflow/core/platform/profile_utils/cpu_utils.cc:104] CPU Frequency: 2500000000 Hz 2022-03-31 21:14:06.002246: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x561a4ea86030 initialized for platform Host (this does not guarantee that XLA will be used). Devices: 2022-03-31 21:14:06.002293: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version 2022-03-31 21:14:06.107250: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x561a50f62630 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices: 2022-03-31 21:14:06.107330: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): NVIDIA GeForce RTX 2080 Ti, Compute Capability 7.5 2022-03-31 21:14:06.109570: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1716] Found device 0 with properties: pciBusID: 0000:a6:00.0 name: NVIDIA GeForce RTX 2080 Ti computeCapability: 7.5 coreClock: 1.545GHz coreCount: 68 deviceMemorySize: 10.76GiB deviceMemoryBandwidth: 573.69GiB/s 2022-03-31 21:14:06.109647: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 2022-03-31 21:14:06.109721: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcublas.so.10 2022-03-31 21:14:06.109755: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcufft.so.10 2022-03-31 21:14:06.109787: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcurand.so.10 2022-03-31 21:14:06.109818: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcusolver.so.10 2022-03-31 21:14:06.109850: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcusparse.so.10 2022-03-31 21:14:06.109883: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudnn.so.7 2022-03-31 21:14:06.113529: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1858] Adding visible gpu devices: 1 2022-03-31 21:14:06.113604: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 2022-03-31 21:14:06.621545: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1257] Device interconnect StreamExecutor with strength 1 edge matrix: 2022-03-31 21:14:06.621590: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1263] 1 2022-03-31 21:14:06.621613: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1276] 1: N 2022-03-31 21:14:06.623182: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1402] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 10075 MB memory) -> physical GPU (device: 1, name: NVIDIA GeForce RTX 2080 Ti, pci bus id: 0000:a6:00.0, compute capability: 7.5) Loading pre-trained model at 40000 iterations. int args: [

    opened by TriBall3 0
  • Adding new robots

    Adding new robots

    Love the Ravens work & ability to script demonstrations with the provided robot. I'm looking to work on cross-embodiment transfer with language, specifically trying to use the existing Ravens workspace (and as much of the demo scripting code as possible), but with a variety of different robots (e.g., Franka Emika Panda, Sawyer, etc.).

    How straightforward would it be to drop in a new URDF and start generating new demos for a new robot?

    opened by siddk 0
  • Text labels for actions

    Text labels for actions

    Hi,

    Is there a way to generate text labels for actions within demonstrations? For example for the kit task, "Pick M and place onto the M shaped hole"?

    Thanks!

    opened by Advaya24 0
  • Stuck in infinite loop when trying to generate observations for place-red-in-green

    Stuck in infinite loop when trying to generate observations for place-red-in-green

    On trying to generate observations for place-red-in-green, the task reset gets stuck in an infinite loop as the get_random_pose function of Task keeps returning (None, None). Is there a way to fix this?

    By the way, there might be a bug in checking for None in Line 72 of ravens/tasks/place_red_in_green.py, as it should be checking if the elements in the pose tuple are None instead of the tuple being None

    opened by Advaya24 0
  • RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd

    RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd

    I followed the three installation steps for my Ubuntu 18.04 machine to create a conda environment named ravens. The installation seems to have proceeded correctly. However, running the example shows this:

    (ravens) seita@starship:~/ravens (master) $ python ravens/demos.py --assets_root=./ravens/environments/assets/ --disp=True --task=block-insertion --mode=train --n=10
    2021-07-11 20:47:57.446709: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
    pybullet build time: May 11 2021 10:00:39
    RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
    Traceback (most recent call last):
      File "ravens/demos.py", line 25, in <module>
        from ravens import tasks
      File "/home/seita/ravens/ravens/__init__.py", line 18, in <module>
        from ravens import agents
      File "/home/seita/ravens/ravens/agents/__init__.py", line 18, in <module>
        from ravens.agents.conv_mlp import PickPlaceConvMlpAgent
      File "/home/seita/ravens/ravens/agents/conv_mlp.py", line 22, in <module>
        from ravens.models import mdn_utils
      File "/home/seita/ravens/ravens/models/__init__.py", line 18, in <module>
        from ravens.models.attention import Attention
      File "/home/seita/ravens/ravens/models/attention.py", line 21, in <module>
        from ravens.utils import utils
      File "/home/seita/ravens/ravens/utils/utils.py", line 28, in <module>
        import pybullet as p
    ImportError: numpy.core.multiarray failed to import
    

    This error is reported elsewhere, for example:

    • https://github.com/freqtrade/freqtrade/issues/4281
    • https://github.com/uber/causalml/issues/338 and https://github.com/uber/causalml/pull/343
    • Older StackOverflow questions such as this and this.

    Most fixes suggest upgrading the numpy version. Here is the pastebin of the result of conda list showing that I'm using numpy 1.18.5. However, upgrading numpy does not succeed because TensorFlow 2.3.0 has a strict numpy dependency:

    (ravens) seita@starship:~/ravens (master) $ pip install numpy --upgrade
    Requirement already satisfied: numpy in /home/seita/miniconda3/envs/ravens/lib/python3.7/site-packages (1.18.5)
    Collecting numpy
      Downloading numpy-1.21.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.7 MB)
         |████████████████████████████████| 15.7 MB 5.8 MB/s 
    Installing collected packages: numpy
      Attempting uninstall: numpy
        Found existing installation: numpy 1.18.5
        Uninstalling numpy-1.18.5:
          Successfully uninstalled numpy-1.18.5
    ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
    tensorflow 2.3.0 requires numpy<1.19.0,>=1.16.0, but you have numpy 1.21.0 which is incompatible.
    Successfully installed numpy-1.21.0
    

    The strange part is, I can actually run the data collection and training scripts, after upgrading numpy. However, because TensorFlow 2.3.0 is supposed to be incompatible (e.g., see here) it's not clear to me that this is an ideal situation. There may be some silent errors or unexpected code usage with the more recent numpy versions.

    Is anyone able to reproduce this from a clean installation?

    opened by DanielTakeshi 1
ManiSkill-Learn is a framework for training agents on SAPIEN Open-Source Manipulation Skill Challenge (ManiSkill Challenge), a large-scale learning-from-demonstrations benchmark for object manipulation.

ManiSkill-Learn ManiSkill-Learn is a framework for training agents on SAPIEN Open-Source Manipulation Skill Challenge, a large-scale learning-from-dem

Hao Su's Lab, UCSD 48 Dec 30, 2022
PyBullet CartPole and Quadrotor environments—with CasADi symbolic a priori dynamics—for learning-based control and reinforcement learning

safe-control-gym Physics-based CartPole and Quadrotor Gym environments (using PyBullet) with symbolic a priori dynamics (using CasADi) for learning-ba

Dynamic Systems Lab 300 Dec 28, 2022
It helps user to learn Pick-up lines and share if he has a better one

Pick-up-Lines-Generator(Open Source) It helps user to learn Pick-up lines Share and Add one or many to the DataBase Unique SQLite DataBase AI Undercon

knock_nott 0 May 4, 2022
A custom-designed Spider Robot trained to walk using Deep RL in a PyBullet Simulation

SpiderBot_DeepRL Title: Implementation of Single and Multi-Agent Deep Reinforcement Learning Algorithms for a Walking Spider Robot Authors(s): Arijit

Arijit Dasgupta 9 Jul 28, 2022
CLIPort: What and Where Pathways for Robotic Manipulation

CLIPort CLIPort: What and Where Pathways for Robotic Manipulation Mohit Shridhar, Lucas Manuelli, Dieter Fox CoRL 2021 CLIPort is an end-to-end imitat

null 246 Dec 11, 2022
Look Closer: Bridging Egocentric and Third-Person Views with Transformers for Robotic Manipulation

Look Closer: Bridging Egocentric and Third-Person Views with Transformers for Robotic Manipulation Official PyTorch implementation for the paper Look

Rishabh Jangir 20 Nov 24, 2022
ManipulaTHOR, a framework that facilitates visual manipulation of objects using a robotic arm

ManipulaTHOR: A Framework for Visual Object Manipulation Kiana Ehsani, Winson Han, Alvaro Herrasti, Eli VanderBilt, Luca Weihs, Eric Kolve, Aniruddha

AI2 65 Dec 30, 2022
RGB-stacking 🛑 🟩 🔷 for robotic manipulation

RGB-stacking ?? ?? ?? for robotic manipulation BLOG | PAPER | VIDEO Beyond Pick-and-Place: Tackling Robotic Stacking of Diverse Shapes, Alex X. Lee*,

DeepMind 95 Dec 23, 2022
Building Ellee — A GPT-3 and Computer Vision Powered Talking Robotic Teddy Bear With Human Level Conversation Intelligence

Using an object detection and facial recognition system built on MobileNetSSDV2 and Dlib and running on an NVIDIA Jetson Nano, a GPT-3 model, Google Speech Recognition, Amazon Polly and servo motors, I built Ellee - a robotic teddy bear who can move her head and converse naturally.

null 24 Oct 26, 2022
​TextWorld is a sandbox learning environment for the training and evaluation of reinforcement learning (RL) agents on text-based games.

TextWorld A text-based game generator and extensible sandbox learning environment for training and testing reinforcement learning (RL) agents. Also ch

Microsoft 983 Dec 23, 2022
A lightweight Python-based 3D network multi-agent simulator. Uses a cell-based congestion model. Calculates risk, loudness and battery capacities of the agents. Suitable for 3D network optimization tasks.

AMAZ3DSim AMAZ3DSim is a lightweight python-based 3D network multi-agent simulator. It uses a cell-based congestion model. It calculates risk, battery

Daniel Hirsch 13 Nov 4, 2022
This is a vision-based 3d model manipulation and control UI

Manipulation of 3D Models Using Hand Gesture This program allows user to manipulation 3D models (.obj format) with their hands. The project support bo

Cortic Technology Corp. 43 Oct 23, 2022
Self-supervised Deep LiDAR Odometry for Robotic Applications

DeLORA: Self-supervised Deep LiDAR Odometry for Robotic Applications Overview Paper: link Video: link ICRA Presentation: link This is the correspondin

Robotic Systems Lab - Legged Robotics at ETH Zürich 181 Dec 29, 2022
Control-Robot-Arm-using-PS4-Controller - A Robotic Arm based on Raspberry Pi and Arduino that controlled by PS4 Controller

Control-Robot-Arm-using-PS4-Controller You can see all details about this Robot

MohammadReza Sharifi 5 Jan 1, 2022
An example project demonstrating how the Autonomous Learning Library can be used to build new reinforcement learning agents.

About This repository shows how Autonomous Learning Library can be used to build new reinforcement learning agents. In particular, it contains a model

Chris Nota 5 Aug 30, 2022
Doosan robotic arm, simulation, control, visualization in Gazebo and ROS2 for Reinforcement Learning.

Robotic Arm Simulation in ROS2 and Gazebo General Overview This repository includes: First, how to simulate a 6DoF Robotic Arm from scratch using GAZE

David Valencia 12 Jan 2, 2023
This project uses reinforcement learning on stock market and agent tries to learn trading. The goal is to check if the agent can learn to read tape. The project is dedicated to hero in life great Jesse Livermore.

Reinforcement-trading This project uses Reinforcement learning on stock market and agent tries to learn trading. The goal is to check if the agent can

Deepender Singla 1.4k Dec 22, 2022
Axel - 3D printed robotic hands and they controll with Raspberry Pi and Arduino combo

Axel It's our graduation project about 3D printed robotic hands and they control

null 0 Feb 14, 2022