Cable Simulation: Problems and features - My findings

Hi all 

Sorry for the long email but hopefully the ones interested in using the new Physics module and specifically the Cable_Simulation feature will appreciate this 'report'.

All comments are very welcome.

=============================================================================

Steps that I've taken for the testing/ simulation (while following the 'Cable Simulation' Tutorial):

1) Create a new 'Solution w/ Station and RobCtrl' (Robot model = IRB6700_150_320_MH3_04)
2) Imported a MockUp_EOAT from my library and attached it to the robot
3) Set Selection Mode to 'Part' and 'Snap mode' to 'Center'
4) Create a cable (following the Tutorial). While adding a 'control point' the preview DOES turn yellow if the cable passes through the robot arm. - all good so far -
5) Jog the robot (axis 6) to check the hose behavior
    - Problem: The hose goes through the robot arm!
    - Tried various things, got some "Kinematics Error" warnings (See end)
    - Some things improved, some worsened
6) Created a NEW station with another Robot model (Robot model = IRB_6620_150_220)
    - This time the behaviour is as expected (?!) although not perfect (understandable and acceptable from a simulation point of view)
    - The cable is going through the EOAT, though
7) Change the EOAT physics behaviour from Inactive to Kinematic
    - After restarting the Sim, the The cable attachment on the EOAT side, just detached.
    - Checked the Physics Tab/ Dynamic obj/ Cable_1: The two attachment points are still there.
    - Tried editing the 'Control points' on the 'Modify_Table' window but the 'Control points' section is no longer visible.
    - Left the original cable in place and created a new cable.
8) It seems that the part that is selected before you Set Selection Mode to 'Part' has an impact on the Control Points being Attached or not (I need more tests to be able to describe this properly).
... encountered several problems... decided to start a new station...

-----------------------------------------------

1) Create (another) NEW station (Robot model = IRB_6620_150_220) + 2 JointTargets and a path (main)
2) No EOAT, nothing else, Just Create Cable (from Axis3 to the wrist Flange):
    - I noticed that, while Selecting the end points for the cable, the Control point was created (by default) as FREE point and not ATTACHED to the link I chose.
    - Tried forcing the ATTACH (on the Create Cable window) and IT DOES NOT WORK because I cannot choose the Parent (nothing shows up on the drop down combo box)
    - The created cable appeared to be hanging on the air... 
3) Press 'Play' and the cable felt 'on the floor' (I was expecting something like that as the control points were not attached).
4) Left the (1st) cable alone (on the floor), started again and this time the control points were (by default) attached !!! (on the Create Cable window) 
5) The simulation of the Cable now is as expected.
6) I confirmed this twice. So, in sumary: First time creating a cable fails but the second time around it works (the attached bit)
7) New station, same robot model, no extras.
   - Create Cable: this time (1st time on the NEW station) the control points were (by default) attached !!! (on the Create Cable window). Sim works ok.
8) Restart RS and try again: 
    - NEW station (Robot model = IRB6640_130_320) + 3 JointTargets and a path (main)
     - Control points are (by default) attached !!! (I'm getting confused now!)
9) Restart RS and try again with a NEW st and the previous model (IRB_6620_150_220) + 2 JointTargets and a path
     - On the first try, control points are (by default) attached... (Maybe the selection mode was not ok on the first try?...)

-----------------------------------------------

Other things I checked/ noticed:
1) While using RS6.05, when opening a station created with RS6.04.01, the robot comes with the physics behavior = Inactive
    For instance: Using the 'Jobs' Demo Cell supplied with RobotStudio_Training_Course (Courseware_6.03) that has 8 different robots to 'play' with, I found that:
           a) If selecting the whole robot (as in Selection mode = Mechanism) ALL 8 robots have [physics behaviour = Inactive]
           b) If selecting the robot's links (as in Selection mode = Part) SOME links on SOME robots have [physics behaviour = Inactive]
                      while others have [physics behaviour option NOT AVAILABLE/ INACTIVE]
2) If I create a station from scratch (using RS6.05/ IRB_6620_150kg_2.20m), the robot comes with the physics behavior = Kinematic (also all the links). 
            Note: Shouldn't the Base link be set to "Fixed" instead of "Kinematic"? (Not that it really matters in this case)

-----------------------------------------------

Other things I checked/ noticed:
After the Cable is created, there is no way to edit the setting like 'Control Points'?
It would be nice to be able to edit these settings.
At the moment, I am deleting the previous cable and creating a new one every time I want to change settings.
Is this the best approach?

-----------------------------------------------

Other things I checked/ noticed:
The cable itself does not have the menu item Physics/ Behaviour.
One would expect the cable itself to have the physics behaviour = Kinematic...
Why am I looking at this setting? Because although the cable behavior is accurate in most cases (it doesn't cross itself) it WILL CROSS ITSELF in extreme situations (like pushing the cable to its limits by rotating axis 6 and 5 to the extremes)

-----------------------------------------------

Other things I checked/ noticed:
Funny enough, watching the SAME simulation over and over again DOES NOT produce exactly the same movements of the cable each time!
(I have triple checked this as 90% of the times it will actually exhibit the same behavior)
This will happen either in play/ stop /play or in repeat mode.

-----------------------------------------------
Other things I checked/ noticed:
--> On the case of the IRB6700_150_320_MH3_04 created in RS6.04:
a) Changing the (whole) robot physics behavior from Inactive to Kinematic creates an Error (see end of this text)
b) While  changing some of its links (as a group) offers no problems, (L4 for ex), others output the same error (L3, for ex).
c) Link4 is a group composed of L4 and the default hose. 
Although the L4 group is set to 'Kinematic', the individual components (L4 itself and the hose) are not.
If I try to set the individual components (L4 itself and the hose) to 'Kinematic', the physics behaviour option is NOT AVAILABLE/ INACTIVE.

--> On the case of the IRB6700_150_320_MH3_04 created in RS6.05:
a) The whole robot comes by default with the physics behavior set to Kinematic.
b) All the individual Links (groups) also come by default set to Kinematic (L1, L2, L3 and L4 are groups in a IRB6700_150_320_MH3_04) .
c) If you select the individual components inside a group, the physics behaviour option is NOT AVAILABLE/ INACTIVE.

-----------------------------------------------

Other things I checked/ noticed:
The menu item Physics/ Collision Geometry/ Show [...] doesn't seem to behave coherently:
It is not active before the creation of the Cable, is activated when you create a cable and stays active even if the cable is deleted...
... I need more tests to be able to describe this properly ...

-----------------------------------------------

Other things I checked/ noticed:
After a simulation is created and saved, sometimes when opening the station again, the cable attachment point(s) seems to be slightly away from the original attachment...
Like if the attachment point had moved...
Not detached tho... the simulation still works as expected.

-----------------------------------------------

Other things I checked/ noticed:
Intro: 
I have an EOAT with several components in a group. 
Some components are groups themselves and the total number of objects (inside the several groups) is probably over 500.
The STEP files for the EOAT I am using in this case sums up to 200+MB (all of the above is 'normal').
a) Changing the EOAT group physics behaviour from Inactive to Kinematic takes +/- 5 minutes with my 8 cores of the 3GHz CPU at 100% (no big impact on memory).
b) Althow the EOAT group has its physics behaviour set to Kinematic, the cable still goes through SOME components! (not all though!)
c) Checking the individual components physics behaviour settings, I can see that they still have their physics behaviour set to Inactive.
d) Setting some of the internal groups (they are too many to set them all individually) to physics behaviour = Kinematic, improved the simulation. 

-----------------------------------------------

Kinematic Errors I got while Changing the (whole) robot physics behaviour from Inactive to Kinematic:

RobotStudio .NET exception: part
============================================
Base exception: ArgumentException
part
   at RobotStudio.Services.Physics.PhysicsSimulation.CreateCollisionGeometry(Part part, RigidBody parentBody, AffineMatrix4x4 matrix)
   at RobotStudio.Services.Physics.PhysicsSimulation.CreateRigidBodyGeometryRec(GraphicComponent gc, RigidBody rb, Matrix4 parentMat)
   at RobotStudio.Services.Physics.PhysicsSimulation.CreateRigidBodyGeometryRec(GraphicComponent gc, RigidBody rb, Matrix4 parentMat)
   at RobotStudio.Services.Physics.PhysicsSimulation.CreateRigidBody(GraphicComponent gc)
   at RobotStudio.Services.Physics.PhysicsSimulation.UpdateRigidBody(GraphicComponent gc)
   at RobotStudio.Services.Physics.PhysicsService.OnPhysicsMotionControlChanged(GraphicComponent gc)
   at ABB.Robotics.RobotStudio.Stations.GraphicComponent.set_PhysicsMotionControl(PhysicsMotionControl value)
   at RobotStudio.UI.Physics.MotionControlCommands.SetMotionControl(GraphicComponent gc, PhysicsMotionControl mc)
   at RobotStudio.UI.Physics.MotionControlCommands.OnExecuteCommand(ExecuteCommandEventArgs e)
   at ABB.Robotics.RobotStudio.Environment.CommandBarButton.<RaiseExecuteCommand>d__49.MoveNext()
ParamName:

-----------------------------------------------

eof 

Comments

  • Hi all

    Just to add some notes as a kind of summary:

    First of all let me say that I consider the Physics addition in RS_6.05 a great feature and I congratulate ABB on this step forward.
    Unfortunately, for those of us desperately needing a realistic cable simulation, this feature is still in its first steps.

    Problems encountered:
    1) After the cable is created, cannot edit settings like control points?
    2) If you create controll points that are attached, you loose the menus 'Longer' and 'Shorter'?
    3) Cable shows erratic /caotic behaviour sometimes (specially if you strech the cable more than what it would be possible in reality).
    4) Inconsistency while repeating the same simulation.
    5) Under extreme circumstances, the loom will cross itself or even solids that are set as Fixed or Kinematic.
    6) Successfully creation of the Start Point depends on what is selected before you start the 'Create Cable' process.
    7) Practically impossible to pre-select objects for the End Point (or the Control points, for that matter) as RS will create the points where ever you 'click'.
    8) Sometimes the control points seem to 'move away' from where originally created (but not detach).  This happens too often and the control points don't always move away in the same direction (seems unpredictable?).
    9) Inconsistencies between robot models created in previous versions of RS versus RS_6.05 in what respects to default physics behavior.
    10) No way to 'unwind/ untangle' the cable if the simulation 'winds/ entangles' the cables around (and sometimes through) something. (Resetting the simulation resets the robot position but not the cable initial state).
    11) Playing with the Modify Cable settings, after changing the length (which has worked fine before), the whole cable just disappeared (!?) I can still find the cable in the Layout browser but the editing window shows [NaN] in the Length box. Changing the cable's properties did not 'bring the cable back'.

    Things that work (fairly) well:
    1) In general, for a simple hose and only two attached points (start and end points), as long as you don't go to extremes, the simulation works fine.
    2) Hose material/ Young's module
    3) Several hoses attached to the robot in different places (apart from the problems already described)
    4) The 'Drag' feature

    Things that would be nice to have:
    1) Apply an attribute like specific mass per length and see its overall weight change when I change the cable length
    2) RS advise to update the payload / armload as and when the cable weight changes
    3) RS to determine which zones of the cable/ hose is rubbing/ hitting more and where (what part of the robot/ what other object) and highlight that area/ zone (kind of a collision detection for hoses).

    Hope these comments will help who ever is developing the Cable Simulator/ Physics Module.

    Any comments are greatly appreciated.

    Regards,
    Rui


  • Johannes Weiman
    Johannes Weiman ABB Sweden admin
    Hi Rui,
    Thanks for the feedback. There are a number of known bugs with cable simulation and some of those will be fixed in 6.05.01. 
    Some notes on your problems:
    1) Not currently, but we would like to add the possibility to at least detach and re-attach the cable. 
    2) Yes, it's not possible to change the length of a cable with 'internal' attachment points. On our to-do list.
    3,5) Since the simulation is discretized (in both time and space) there will be unrealistic behavior in fringe cases. If it's a problem you could try changing the physics time step and/or segment length.
    6) Could you give an example?
    7) Yes, but is it a problem to move the point (by typing or dragging) after you have clicked the object?
    8) When changing the length of an attached cable, one of the endpoints will move. This will be fixed in 6.05.01.
    9) Robot models in 6.05 default to 'Kinematic' and contain pre-generated collision geometries, so it's recommended to use them.
    10) Yes, sometimes physical objects will get stuck inside each other. Sometimes this can be fixed by dragging, but in many cases there is a need to temporarily disable collision detection. On our to-do list.
    11) I haven't seen that exact problem, but it's quite likely to be fixed in 6.05.01.

    Regards,
    Johannes
    Johannes Weiman
    Software Engineer
    RobotStudio Team, ABB Robotics
  • kuv-vokl
    kuv-vokl Germany ✭✭
    Hi,
    Yes, please, add attach / deteach feature for the startpoint and the endpoint very soon, or let me modfiy this points in the modify cable dialog.
    Thank you in advance.
    Klaus Vogel
    Kühne+Vogel Sondermaschinen GmbH
  • ErikHagman
    ErikHagman Göteborg Sweden
    Hi

    I would like to continue on this thread to acknowledge some of the strange things i have seen with the cable.
    I have the latest version of RS, 6.06.01 SP1 (64-bit).

    1: When you jog the robot by freehand, the cable can behave very strange and get stuck in the tool the robot is holding, this also happen when you try to set configurations for the robot. Best thing as i see it would be to have the possibility to "Reset" the cable and robot to the position the cable was created. I guess this is due to the fact that the simulation isn't running when you move the robot. 

    2: When i open a solution the cable have a tendency to detach itself from the robot, in both ends or the start or stop end. When this happens the only solution seems to be to create a new cable. 

    3: Sometimes when a new cable is created there is something wrong and the cable seems to not be attached in the ends and falls to the ground. 

    Still some bugs in the physic-engine, but thank you so much ABB for the hard work you are doing on it!

    /Erik