How to deactivate / change a joint during motion

FloMa93
FloMa93 Altair Community Member
edited October 2020 in Community Q&A

Hi Community,

 

I am fairly new in using MotionView and I am currently trying to simulate a simple arm of a roboter, which picks a cube and rotates 90 degrees.

After rotation, the cube should be dropped and the arm should rotate back to starting position.

 

Now to my first try:

- fixed joint between arm and cube

- marker at the starting point and the end point of the rotation

 

I tried to solved the problem using the tutorial MV-1051 (sequential motion) but it's not exactly like I wanted to. I used a template like in MV-1051 and tried to adapt it, but it didn't work.

 

Could you please advise how to proceed in such a case?

 

Thanks in advance and if you need further information, just let me know.

 

Best regards,

Flo

Answers

  • Chris Coker_21312
    Chris Coker_21312 New Altair Community Member
    edited October 2019

    Hello Flo-

    Sequential simulation (like what was in MV-1051) is the normal approach to setting up something like this.

    Another approach (still using sequential simulation) would be to use forces, rather than joints.

     

    Our MotionSolve examples library has some examples that may be of use to you.

    Take a look at this link:

    https://altairhyperworks.com/motionsolve-models/

    Model MV-04 Robot Arm is probably more complicated that what you are looking for, but should work as a good source for a starting point.

     

    Regards,

    Chris

  • FloMa93
    FloMa93 Altair Community Member
    edited October 2019

    Hi Chris,

    thanks for your quick reply.

     

    I've seen and inspected the MV-04 Robot Arm and I wonder that there's no template used?

     

    I think the easier way to get to the result I am looking for ist the one with the template.

     

    I try to explain my attempt:

    - fixed joint between arm and cube

    - marker at the starting point (center of the cube, linked with cube) and the end point of the rotation (90 degrees difference, linked with ground)

    - Revolute joint between ground and arm, motion on this joint

    - fixed joint between cube and arm

     

    For better explanation I attached my data.

     

    Could you please have a look at it and try to find my mistakes?

     

    Thanks a lot!

     

    Best Regards

    Flo

     

     

    Unable to find an attachment - read this blog

  • Chris Coker_21312
    Chris Coker_21312 New Altair Community Member
    edited October 2019

    I took  a brief look at your model.  There appear to be multiple fixed joints defined constraining the two parts.  This creates and kinematically over-constrained model.

     

    The demo models provided previously show show good methods.  I would recommend understanding those, and trying to replicate those.

     

    Another  (simpler) approach would be to create a graphic that is attached to ground, and define 3D contact between the cube and ground.  Then the cube will rest of the ground due to the contact.  Then you avoid some of the complex things with the templates.

  • FloMa93
    FloMa93 Altair Community Member
    edited November 2019

    Hi Chris,

     

    thanks a lot for your help.

    I think I got it now, I realised it with templates.

     

    I've got some further questions regarding load/force extraction, and some other, but I will open a new topic because it's related to topology optimization.

     

    Regards

    Flo

  • FloMa93
    FloMa93 Altair Community Member
    edited November 2019

    Hi all,

     

    there's another problem now. I changed one part to a flexbody, now the Simulation stops when the joint is deactivated.

    If I change the part back to rigid body, the simulation runs without failure.

    Where could be the problem?

     

    I guess the error comes from the template or the sensor or the combination of these two, see following my current setting:

     

    Sensor:

    `DM({the_model.m_0.idstring},{the_model.m_1.idstring})`

    Signal is lass than VALUE + ERROR

    Return to Command file

     

    and in my template I've got the following:

    <Deactivate
       element_type = 'JOINT'
       element_id   = '5000'
    />

    <Simulate
        analysis_type       = 'Transient'
        end_time            = '12.00'
        print_interval      = '0.01'    
    />

    <Deactivate
       element_type = 'JOINT'
       element_id   = '{j_11.idstring}'
    />

    <Deactivate
       element_type = 'JOINT'
       element_id   = '{j_12.idstring}'
    />

    <Deactivate
       element_type = 'SENSOR'
       element_id   = '{the_model.sen_0.idstring}'
    />

    <Activate
       element_type = 'JOINT'
       element_id   = '5000'
    />

    <Simulate
        analysis_type       = 'Transient'
        end_time            = '20.00'
        print_interval      = '0.01'
    />

    <Stop/>

     

    Following a picture of the Model, the red robot arm is the flexbody.

    <?xml version="1.0" encoding="UTF-8"?>image.thumb.png.a1956c97b4db5da1b5ff35e312b70c47.png

     

    The Roboter lifts the box, rotates for 90 degrees, set the box down to the ground and rotates back. But with the flexbody it's not rotating back due to a failure message.

     

    WARNING: Repeated abnormal return from integrator!

    ERROR: At time=9.877E+00 the integrator failed to proceed.

     

    Any ideas?

     

    Thanks a lot in advance.

     

    Best regards,

    Flo

     

  • Chris Coker_21312
    Chris Coker_21312 New Altair Community Member
    edited December 2019

    Hi Flo-

    have you tried modifying the integrator settings?  Usually when a solution values, you will find a lot of text that will point you in the direction of things to try.  For example tighten (or loosen) integrator tolerance.  Decrease the maximum step size.

     

    Chris

  • FloMa93
    FloMa93 Altair Community Member
    edited January 2020

    Thanks a lot for your help Chris! Now it's working after I changed the Integrator Settings as adviced.

     

    I've got another question, hopefully somebody can help because I couldn't find any tutorials to this theme:

     

    I used a Flexbody to see stresses on the robot arm. Is it possible to create a plot (maybe in HyperGraph) which shows the maximum stress over the time? Further, is it possible to export the data to Excel or another table format?

     

    Regards

    Flo

  • Chris Coker_21312
    Chris Coker_21312 New Altair Community Member
    edited January 2020

    There may be others that have better answers than myself.  You might try posting this on the Hypermesh, or Hypergraph forum.  One 'trick' is that you can load the .h3d file into Hypergraph, and plot element stresses on an element by element basis.  If you load the .h3d into HyperView, you can look at the contour plots during the animation, and I believe you can also visualize the max element stress.  That's the typical way it's done, based on my experience.

     

    The .plt file is an ascii based file format.  You can use that file to plot with other tools.