Repository: stepjam/RLBench
Issue: Question regarding the capability of the simulator

Hi, Awesome framework :)! It would be great if you can clarify some points about the simulator. 

- In the complex task tutorial, it is mentioned that "As previously mentioned, the physics engine runs far faster and smoother when all shapes for which it makes calculations are non-convex." I am not completely sure how having non-convex objects lead to faster simulations. Should the objects rather be convex as then calculations like collision detection would be must faster? Also, this seems to contradict the next line in the document "If a merge would result in a non-convex object being created, potential problems arise." Am I missing something here? Can you please also elaborate on what the potential problems are?

- Related to the earlier question, can you please elaborate on "In this case, a merging would result in a non-convex shape, so we could instead make the mug body a child of the handle and hope that the body never has a force applied onto it that is not also applied to the handle" What could one expect to happen when a dynamic force is applied on the body of the cup?

- It is mentioned that "Rather than rely on friction and reactionary force as a person would when picking something up, RLBench and PyRep simplify physics calculations (and thus speed up and smooth out simulation) by making any object upon which the Panda's gripper closes on a child of the Panda tip, as long as said object has been registered as graspable in the python file." I assume there must be some kind of distance threshold being set between the object and the tip of the gripper. Am I correct in assuming that the relative size of the gripper and the object does not matter here if the size threshold is set correctly i.e. something larger than the gripper can also be grasped? Further, if a distance threshold is calculated, is it based on the nearest coordinate in the object mesh or just the object centroid? I am asking this as the later case could be problematic with objects like stick which have skewed dimensions? Lastly, does the angle between the gripper and the object matter?
 
- Also what kind of forces and constraints come into play for an object with hinges, for example, the door? (It would be great if there is some tutorial describing how to make such a task :)) Are unmovable part of the objects assumed to be static and unaffected by any force. Also, will the simulator ignore any actions that would potentially lead to violation of the "hinge constraint" like pulling the door when grasped? Further, what kind of forces come into play in the "rope" manipulation example? Can the simulator also handle some spring constrains?

Thanks in advance! Pardon me if this info is already available somewhere else.




Hi,

- Yes, this is a typo in the documentation. It should read: "As previously mentioned, the physics engine runs far faster and smoother when all shapes for which it makes calculations are non-convex.". I'll update this in version 1.0.6.

- I did not actually write the tutorial, so not exactly sire what is trying to be conveyed here. But regardless, it doesn't seem important. I will go through the tutorials for version 1.0.6 and try and clean them up.

- The 'fake' grasping behaviour is done by using a proximity sensor that is located in the gripper. If at any point a registered 'graspable' object is located proximity sensor when a close gripper command is sent, then the gripper will close until hitting some maximum force, and the object will be attached as a child to the gripper. To answer your specific questions:
  - yes a larger objects could in theory be grasped. This is a trade off between realistic grasps and task feasibility. 
  - No it is any point on the object, not the centroid. (this is how the proximity sensors work). 
  - The angle does not matter 

- Yes there objects that are assumed to be static (i.e. respondable but not dynamic). Yes there are joint limits; so in the door case, the door joint can only range from 0 to ~ 40 degrees. The rope is modelled via a series of spherical joints connected via dynamic objects that are able to intersect with each other (using collision masks). Yes there are sprint constraints in CoppeliaSim; you can set a joint to mass/spring mode via the joint dynamics properties, where you can directly specify the spring constant and the damping coefficient. I will take your door 'tutorial' feature request on board, but am quite busy with general maintenance and my own research, so cannot give a timeline sorry. 

Will close, but feel free to re-open if you have any other questions.

Best,
Stephen

Is there a possibility of overriding the fake grasping behavior to give more realistic results?