Giter Site home page Giter Site logo

real-stanford / decentralized-multiarm Goto Github PK

View Code? Open in Web Editor NEW
132.0 6.0 25.0 130.01 MB

[CoRL 2020] Learning a Decentralized Multiarm Motion Planner

Home Page: https://multiarm.cs.columbia.edu/

License: Apache License 2.0

Python 100.00%
multiagent-reinforcement-learning robotics deep-learning motion-planning pytorch

decentralized-multiarm's People

Contributors

huy-ha avatar jingxixu 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  avatar  avatar  avatar  avatar

decentralized-multiarm's Issues

How to continue training after being interrupted?

Hi @huy-ha ,

Thank you for reviewing this issue!

python main.py --config configs/default.json --tasks_path tasks/ --expert_waypoints expert/ --num_processes 8 --name multiarm_motion_planner_test

When I was training the network, the training was terminated due to a memory error

Traceback (most recent call last):
  File "main.py", line 83, in <module>
    simulate(args, config)
  File "main.py", line 73, in simulate
    remaining_observations=remaining_observations)
  File "main.py", line 41, in step_env
    for obs, env_id in ray.get(step_retval):
  File "/home/robot/anaconda3/envs/multiarm_local/lib/python3.7/site-packages/ray/worker.py", line 1452, in get
    raise value.as_instanceof_cause()
ray.exceptions.RayTaskError(RayOutOfMemoryError): ray::RRTSupervisionEnv.step() (pid=3255, ip=127.0.1.1)
  File "python/ray/_raylet.pyx", line 444, in ray._raylet.execute_task
  File "/home/robot/anaconda3/envs/multiarm_local/lib/python3.7/site-packages/ray/memory_monitor.py", line 140, in raise_if_low_memory
    self.error_threshold))
ray.memory_monitor.RayOutOfMemoryError: More than 95% of the memory on node robot-desktop is used (14.92 / 15.61 GB). The top 10 memory consumers are:

PID	MEM	COMMAND
3252	3.07GiB	ray::SACLearner.get_update()
3149	2.46GiB	python main.py --config configs/default.json --tasks_path tasks/ --expert_waypoints expert/ --num_pr
3259	0.92GiB	ray::RRTSupervisionEnv.step()
3256	0.92GiB	ray::RRTSupervisionEnv
3254	0.92GiB	ray::RRTSupervisionEnv
3253	0.9GiB	ray::RRTSupervisionEnv
3257	0.89GiB	ray::RRTSupervisionEnv
3258	0.7GiB	ray::TaskLoader
3260	0.7GiB	ray::RRTSupervisionEnv.step()
3250	0.7GiB	ray::RRTSupervisionEnv.step()

In addition, up to 0.07 GiB of shared memory is currently being used by the Ray object store. You can set the object store size with the `object_store_memory` parameter when starting Ray.
---
--- Tip: Use the `ray memory` command to list active objects in the cluster.
---

I want to start a new training task again based on the results when I stopped training.
For example:
The training mission was aborted for various reasons and the result is runs/multiarm_motion_planner/ckpt_multiarm_motion_planner_00101.
So I want to continue training for multiarm_motion_planner base on the result runs/multiarm_motion_planner/ckpt_multiarm_motion_planner_00101

I found '--curriculum_level', type=int, parameter in the code, but it does not seem to solve the problem.

Can you give me some suggestions?

ERROR worker.py:772 -- Exception raised in creation task: The actor died because of an error raised in its creation task, ray::TaskLoader.__init__()

Hi, @huy-ha

Thank you for your open source!

When I try to run python main.py --mode benchmark --tasks_path benchmark/ --load ours/ours.pth --num_processes 2 --gui, I get the follow errors. I try to fix them, but fail.

At first, the error is:

(TaskLoader pid=111640) 2023-04-12 22:54:24,948	ERROR worker.py:772 -- Exception raised in creation task: The actor died because of an error raised in its creation task, ray::TaskLoader.__init__() (pid=111640, ip=192.168.160.188)
(TaskLoader pid=111640)   File "/home/xhr/xhr/mulit_arm/decentralized-multiarm-main/environment/tasks.py", line 342, in __init__
(TaskLoader pid=111640)     assert len(self.files) > 0
(TaskLoader pid=111640) AssertionError

In the end, the error is:

Traceback (most recent call last):
  File "main.py", line 83, in <module>
    simulate(args, config)
  File "main.py", line 55, in simulate
    observations = ray.get([e.reset.remote() for e in envs])
  File "/home/xhr/anaconda3/envs/multiarm2/lib/python3.7/site-packages/ray/_private/client_mode_hook.py", line 105, in wrapper
    return func(*args, **kwargs)
  File "/home/xhr/anaconda3/envs/multiarm2/lib/python3.7/site-packages/ray/_private/worker.py", line 2380, in get
    raise value.as_instanceof_cause()
ray.exceptions.RayTaskError: ray::ParallelBenchmarkEnv.reset() (pid=111642, ip=192.168.160.188, repr=<environment.benchmarkEnv.ParallelBenchmarkEnv object at 0x7f48e1a42dd0>)
  File "/home/xhr/xhr/mulit_arm/decentralized-multiarm-main/environment/baseEnv.py", line 582, in reset
    self.setup_task()
  File "/home/xhr/xhr/mulit_arm/decentralized-multiarm-main/environment/baseEnv.py", line 617, in setup_task
    min_task_difficulty=self.min_task_difficulty)
  File "/home/xhr/xhr/mulit_arm/decentralized-multiarm-main/environment/tasks.py", line 282, in setup_next_task
    self.task_loader.get_next_task.remote())
ray.exceptions.RayActorError: The actor died because of an error raised in its creation task, ray::TaskLoader.__init__() (pid=111640, ip=192.168.160.188)
  File "/home/xhr/xhr/mulit_arm/decentralized-multiarm-main/environment/tasks.py", line 342, in __init__
    assert len(self.files) > 0
AssertionError

My conda environment is created from the provided environment.yml file. My system is ubuntu20.04.

Can you get me some suggestions? I need your help.

wget downloading problem

Hi @huy-ha, when I used wget to download raining tasks and expert demonstration dataset, it said, "Fail: reject the connection." Is there any other way to download raining tasks and expert demonstration dataset?

Command to run bin placing task?

Hey, does this code currently include the bin placing task with the gripper?

I saw your comment here #1 (comment), but I wasn't sure.

If not, could that task and/or the command to run it be added?

I would like to know if “” --expert_trajectories“” provides example files. I didn't find in the readme. Thanks!

I didn't find an example of this mode running in the readme documentation
and What are the specific command parameters to run this function.

The exact function run location is here
decentralized-multiarm/policy/utils.py begin from line 149:
def setup_behaviour_clone(args, config, obs_dim, device):
dataset = BehaviourCloneDataset(args.expert_trajectories)

The parameters are defined as follows:
decentralized-multiarm/utils.py begin from line 100:
parser.add_argument('--expert_trajectories', type=str, default=None, help='path to expert trajectories directory' + 'for behaviour cloning')
Thanks!

Questions on Converting .p Files in robot0 Folder and Modifying Task Runners for Custom Tasks

Hello,

I've been working with the [demo] project and encountered a couple of issues that I need some guidance on. I successfully converted initial_configs.p and target_object_names.p in the benchmark folder from .p to .json, modified them, and converted them back to .p, which worked fine. However, I'm facing issues with the .p files in other folders, such as robot0.

Issue with Converting .p Files in robot0 Folder:
I tried a similar approach to convert and modify .p files in the robot0 folder but encountered errors during execution. I suspect that something might be getting lost or misinterpreted during the conversion process. Could you provide insights on what the .p files in these folders should contain or if there's a specific structure or content that I need to maintain while modifying these files?
image

Customizing Task Runners for Specific Tasks:
Additionally, I am interested in using this model to plan tasks where only the initial state and goal pose are provided, without the need for grasping and manipulating objects. Is it possible to modify the prepare_task_runners function to configure tasks based solely on initial states and goal poses? If yes, could you provide some guidance or examples on how to achieve this?

Any assistance or pointers on these matters would be greatly appreciated. Thank you for your support and for the great work on this project.

Under what conditions will the program end training?

Hi @huy-ha ,

Decentralized-multiarm is interesting work. Thank you for your work.

I read the code carefully and didn't find any indicator to stop training.

Will the program automatically stop training?

Or check whether the reward value reaches a certain value?

Evaluation error, tasks.py", line 342 assert len(self.files) > 0 AssertionError

Hi

I am getting the following error when I run the evaluation code, could you please help?

This is on Ubuntu 16.04, the following is the environment info: -

(multiarm) abdu@grasp-uoit:~/decentralized-multiarm$ python
Python 3.7.9 (default, Aug 31 2020, 12:42:55) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.__version__)
1.6.0
>>> torch.version.cuda
'10.2'
>>> torch.cuda.is_available()
True
>>> torch.cuda.current_device()
0
>>> torch.cuda.device(0)
<torch.cuda.device object at 0x7fa815a19c10>
>>> torch.cuda.device_count()
1
>>> torch.cuda.get_device_name(0)
'GeForce GTX 1080'
>>> 
(multiarm) abdu@grasp-uoit:~/decentralized-multiarm$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

The output:-

(multiarm) abdu@grasp-uoit:~/decentralized-multiarm$ python main.py --mode benchmark --tasks_path benchmark/ --load ours/ours.pth --num_processes 1 --gui
pybullet build time: Jun 13 2021 11:25:20
[Setup] Parallelizing across 1 processes
2021-06-16 09:42:44,178	INFO services.py:1166 -- View the Ray dashboard at http://127.0.0.1:8265
[Setup] Creating task loader...
[Setup] Creating environments...
(pid=6025) pybullet build time: Jun 13 2021 11:25:20
(pid=6019) pybullet build time: Jun 13 2021 11:25:20
(pid=6025) [TaskLoader] WARNING: not repeating tasks.
(pid=6019) [BenchmarkEnv] config:
(pid=6019) 	episode_length:400
(pid=6019) 	action_interval:0.05
(pid=6019) 	simulation_time:20
(pid=6019) startThreads creating 1 threads.
(pid=6019) starting thread 0
(pid=6019) started thread 0 
(pid=6019) argc=2
(pid=6019) argv[0] = --unused
(pid=6019) argv[1] = --start_demo_name=Physics Server
(pid=6019) ExampleBrowserThreadFunc started
(pid=6019) X11 functions dynamically loaded using dlopen/dlsym OK!
(pid=6019) X11 functions dynamically loaded using dlopen/dlsym OK!
(pid=6019) Creating context
(pid=6019) Created GL 3.3 context
(pid=6019) Direct GLX rendering context obtained
(pid=6019) Making context current
(pid=6019) GL_VENDOR=NVIDIA Corporation
(pid=6019) GL_RENDERER=GeForce GTX 1080/PCIe/SSE2
(pid=6019) GL_VERSION=3.3.0 NVIDIA 440.33.01
(pid=6019) GL_SHADING_LANGUAGE_VERSION=3.30 NVIDIA via Cg compiler
(pid=6019) pthread_getconcurrency()=0
(pid=6019) Version = 3.3.0 NVIDIA 440.33.01
(pid=6019) Vendor = NVIDIA Corporation
(pid=6019) Renderer = GeForce GTX 1080/PCIe/SSE2
(pid=6019) b3Printf: Selected demo: Physics Server
(pid=6019) startThreads creating 1 threads.
(pid=6019) starting thread 0
(pid=6019) started thread 0 
(pid=6019) MotionThreadFunc thread started
(pid=6019) ven = NVIDIA Corporation
(pid=6019) ven = NVIDIA Corporation
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: ee_link
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: base
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: tool0
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: ee_link
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: base
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: tool0
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: ee_link
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: base
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: tool0
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: ee_link
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3P
2021-06-16 09:42:51,956	ERROR worker.py:1018 -- Possible unhandled error from worker: ray::TaskLoader.__init__() (pid=6025, ip=10.128.19.62)
  File "python/ray/_raylet.pyx", line 484, in ray._raylet.execute_task
  File "python/ray/_raylet.pyx", line 438, in ray._raylet.execute_task.function_executor
  File "/home/abdu/decentralized-multiarm/environment/tasks.py", line 342, in __init__
    assert len(self.files) > 0
AssertionError
(pid=6019) rintf: base
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: tool0
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: ee_link
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: base
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: tool0
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: ee_link
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: base
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: tool0
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: ee_link
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: base
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: tool0
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: ee_link
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: base
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: tool0
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp,126]:
(pid=6019) 
(pid=6019) b3Printf: No inertial data for link, using mass=1, localinertiadiagonal = 1,1,1, identity local inertial frame
(pid=6019) b3Printf: b3Warning[examples/Importers/ImportURDFD
(pid=6019) 	position_tolerance:0.02
(pid=6019) 	orientation_tolerance:0.1
(pid=6019) [BaseEnv] Setting up ray: Actor(ParallelBenchmarkEnv,7bbd902801000000)
Traceback (most recent call last):
  File "main.py", line 83, in <module>
    simulate(args, config)
  File "main.py", line 55, in simulate
    observations = ray.get([e.reset.remote() for e in envs])
  File "/home/abdu/anaconda3/envs/multiarm/lib/python3.7/site-packages/ray/worker.py", line 1428, in get
    raise value.as_instanceof_cause()
ray.exceptions.RayTaskError(AssertionError): ray::ParallelBenchmarkEnv.reset() (pid=6019, ip=10.128.19.62)
  File "python/ray/_raylet.pyx", line 484, in ray._raylet.execute_task
  File "python/ray/_raylet.pyx", line 438, in ray._raylet.execute_task.function_executor
  File "/home/abdu/decentralized-multiarm/environment/baseEnv.py", line 582, in reset
    self.setup_task()
  File "/home/abdu/decentralized-multiarm/environment/baseEnv.py", line 617, in setup_task
    min_task_difficulty=self.min_task_difficulty)
  File "/home/abdu/decentralized-multiarm/environment/tasks.py", line 282, in setup_next_task
    self.task_loader.get_next_task.remote())
ray.exceptions.RayTaskError(AssertionError): ray::TaskLoader.get_next_task() (pid=6025, ip=10.128.19.62)
  File "python/ray/_raylet.pyx", line 445, in ray._raylet.execute_task
  File "python/ray/_raylet.pyx", line 479, in ray._raylet.execute_task
  File "python/ray/_raylet.pyx", line 483, in ray._raylet.execute_task
  File "python/ray/_raylet.pyx", line 484, in ray._raylet.execute_task
  File "python/ray/_raylet.pyx", line 438, in ray._raylet.execute_task.function_executor
  File "/home/abdu/decentralized-multiarm/environment/tasks.py", line 342, in __init__
    assert len(self.files) > 0
AssertionError
(pid=6021) [SAC] loading networks from  ours/ours.pth
(pid=6021) [SAC] Continuing from time step  667534701  and update step  750000
(pid=6021) StochasticActor(
(pid=6021)   (seq_net): LSTM(107, 256, batch_first=True)
(pid=6021)   (net): Sequential(
(pid=6021)     (0): Linear(in_features=256, out_features=128, bias=True)
(pid=6021)     (1): Tanh()
(pid=6021)     (2): Linear(in_features=128, out_features=64, bias=True)
(pid=6021)     (3): Tanh()
(pid=6021)     (4): Linear(in_features=64, out_features=12, bias=True)
(pid=6021)     (5): Tanh()
(pid=6021)   )
(pid=6021) )
(pid=6021) Q(
(pid=6021)   (seq_net): LSTM(107, 256, batch_first=True)
(pid=6021)   (net): Sequential(
(pid=6021)     (0): Linear(in_features=262, out_features=128, bias=True)
(pid=6021)     (1): Tanh()
(pid=6021)     (2): Linear(in_features=128, out_features=64, bias=True)
(pid=6021)     (3): Tanh()
(pid=6021)     (4): Linear(in_features=64, out_features=1, bias=True)
(pid=6021)   )
(pid=6021) )

or

(multiarm) abdu@grasp-uoit:~/decentralized-multiarm$ python benchmark_dynamic.py --mode benchmark --tasks_path benchmark/ --load ours/ours.pth --num_processes 1 --gui
pybullet build time: Jun 13 2021 11:25:20
2021-06-16 09:42:12,381	INFO services.py:1166 -- View the Ray dashboard at http://127.0.0.1:8265
[TaskLoader] WARNING: not repeating tasks.
Traceback (most recent call last):
  File "benchmark_dynamic.py", line 48, in <module>
    repeat=False)
  File "/home/abdu/decentralized-multiarm/environment/tasks.py", line 342, in __init__
    assert len(self.files) > 0
AssertionError

A promblem

When I run the following command:
python main.py --mode benchmark --tasks_path benchmark/ --load ours/ours.pth --num_processes 1 --gui

The question is that:

Fatal Python error: Aborted
Stack (most recent call first):
  File "F:\anaconda\envs\multiarm\lib\site-packages\ray\worker.py", line 1244 in connect
  File "F:\anaconda\envs\multiarm\lib\site-packages\ray\worker.py", line 768 in init
  File "F:\anaconda\envs\multiarm\lib\site-packages\ray\_private\client_mode_hook.py", line 47 in wrapper
  File "F:\Graduate\decentralized-multiarm-main\utils.py", line 378 in initialize_ray
  File "F:\Graduate\decentralized-multiarm-main\utils.py", line 448 in setup
  File "main.py", line 50 in simulate
  File "main.py", line 83 in <module>

Direct error, resulting in the program can not run。

AttributeError: 'NoneType' object has no attribute 'rsample'

Hi, @huy-ha

Thank you for your open source!

When I try to run python main.py --config configs/default.json --tasks_path tasks/ --expert_waypoints expert/ --num_processes 1 --name multiarm_motion_planner, I get the follow error. I try to fix it, but fail.

Traceback (most recent call last):
  File "main.py", line 83, in <module>
    simulate(args, config)
  File "main.py", line 68, in simulate
    for observation in observations]
  File "main.py", line 68, in <listcomp>
    for observation in observations]
  File "C:\1 learning a decentralized multiarm motion planner\decentralized-multiarm\policy\SAC.py", line 165, in act
    reparametrize=self.reparametrize)
  File "C:\anaconda3\envs\multiarm\lib\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
    result = self.forward(*input, **kwargs)
  File "C:\1 learning a decentralized multiarm motion planner\decentralized-multiarm\policy\BaseNet.py", line 187, in forward
    actions = dist.rsample()
AttributeError: 'NoneType' object has no attribute 'rsample'

My python version is pytorch 1.7.0 py3.7_cuda110_cudnn8_0.

I have to use pytorch 1.7.0 because cuda 11 no pytorch 1.6.0 .

Can you get me some suggestion?

About pretrained weights

Hi @huy-ha ,
Decentralized-multiarm is an impressive work
thank you for your sharing.
I want to know the pretrained weights are trained by RL or just behavior clone?
In addition, is the checkpoint.pth in demo/ the final weight?

Add a license like apache 2?

This looks interesting! Is there any chance you can add a license like a so we can download run and modify the code without legal concerns?

One suggested choice is Apache 2, which is the one used by tensorflow and is compatible with pytorch. Here is a summary:
https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)

Here is the text:

Apache License, Version 2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License.

Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License.

Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution.

You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

You must give any other recipients of the Work or Derivative Works a copy of this License; and You must cause any modified files to carry prominent notices stating that You changed the files; and You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions.

Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks.

This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty.

Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability.

In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability.

While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


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.