stepjam / RLBench

A large-scale benchmark and learning environment.
https://sites.google.com/corp/view/rlbench
Other
1.11k stars 226 forks source link

swap arm in imitation learning #58

Closed superggb closed 4 years ago

superggb commented 4 years ago

I'm trying to to change the arm to Mico in imitation learning script. But I got some problems as:

File "/home/ggb/.local/lib/python3.6/site-packages/pyrep/robots/end_effectors/gripper.py", line 146, in get_touch_sensor_forces
    raise NotImplementedError('No touch sensors for this robot!')
    NotImplementedError: No touch sensors for this robot!

I tried mico,jaco,swayer in several tasks, all they went wrong with no touch sensor error. So I set the obs_config/gripper_touch_forces to False and try ReachTarget task since I think this task may not need touch sensors. But it come to the second problem.

 Warning: SBL: Skipping invalid goal state (invalid bounds)
         at line 310 in /home/marc/Documents/ompl-1.4.2-Source/src/ompl/base/src/Planner.cpp
Warning: SBL: Skipping invalid goal state (invalid bounds)
         at line 310 in /home/marc/Documents/ompl-1.4.2-Source/src/ompl/base/src/Planner.cpp

the arm has no action and the scene keeps changing. I think it may because the get_demos() function cannot get proper planning.

So can you give me some advice for how I can adjust task to different arms in imitation learning to get right demos.

stepjam commented 4 years ago

As you pointed out, not all the arms have touch sensors. This is why the example sets that observation to false: https://github.com/stepjam/RLBench/blob/master/examples/swap_arm.py#L21

Regarding your second point: this is expected behaviour. The Mico has a very short workspace area due to the arm link lengths, and so many of the task configurations will not be valid for that arm. With the reacher, the mico can do some of the configurations (it will keep resetting the task until a valid configuration is found). However, when you swap this out to a more complex task (i.e. the open oven task) then this will most likely throw an exception because that task is impossible to do with the Mico.

Hope that helps :)