myGL

190 Reputation

9 Badges

20 years, 23 days
Dr. Gilbert Lai is an independent consultant. He is also a mentor for FIRST Robotics team SWAT 771 (http://swat771.com). As a former employee of Maplesoft, he was team lead in the MapleSim simulation engine development team and was technical adviser on various MapleSim add-on toolboxes.

Trained as a Computer Engineer, Dr. Lai’s research interests include robotics control (force feedback teleoperation), aerospace and mechatronics applications (helicopter modelling and control). In his spare time, he enjoys computer games, Sci-Fi movies and quality time with his family.

You can follow @gilbert_lai_phd on Twitter.

MaplePrimes Activity


These are answers submitted by myGL

Thank you for your question.

 

Please find a modified version of your file in the link below:

Tether_mod_July26_20.msim

 

What I have done is to add a "parallel" redundent set of constraint joints (consisting of a revolute-prismatic-revolute joint combination) to connect between the anchor point and the body (in parallel with the TSDA). This represents a breakdown of the degree of freedom in your "flexible pendulum" (previously represented only by the TSDA). What this buys us is the individual degree of freedom breakdown so we can attach the 1D sensors directly to each of the joints (representing each degree-of-freedom of motion). I have put probes at each of these degree of freedom for now. The two revolute joints gives the two angles (alpha and psi) that you are looking for. And the prismatic joint gives the length of your "pendulum" link.

 

The file is created in MapleSim V4. But you could apply similar concepts with earlier versions of MapleSim as well. I am including a screen shot of the model here:

 

In addition to adding the redundent constraint joints, I have made modifications to the orientation of the frames (through the use of the rigid body frame RBF4 and adjustments to the length offset in the hanging body, in RBF1 and RBF2) so that the angle measurements are measured with respect to the vertical axis (I have also adjusted the initial angle of the body to be 45 degrees away from the rod direction, i.e. setting psi = Pi/4, in contrast with the original model where the orientation of the body was specified as the 45 rad).

 

Hope this helps!

 

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

Gilbert Lai, PhD

Senior Applications Engineer, R&D Applications Engineering

Maplesoft

Have you had a chance to look at the sample model that I have posted previously here?

 

In that model, I have tried to illustrate what the flexible beam component represent (when comparing to a rigid "link"). The idea is that the flexible beam component itself is "like" defining a "rigid beam", except with the inertial properties (and deformation characteristics) built-in as part of the component itself.  This is in contrast with a general "rigid link" in that a "link" is defined through/as a rigid body (which defines the inertial properties) and the end point locations are defined through the rigid body frame components... So the flexible beam component is essentially 3-in-1 deal (another way to look at it is: it is a "specialized" component, specifically for modelling a "flexible beam"; while the combination of the rigid body component and the rigid body frame components are general purpose components that you use to assemble more complex mechanisms).

 

Understanding what the flexible beam component represents, we can now answer the question of how to use it. You can now use it the same way as you would if you have used the "link" (a grouped subsystem consisted of 1 rigid body plus 2 rigid body frame components together).  So to adjust the length of the "link", you would go into the two rigid body frame components and adjust the offsets (ideally, you would parameterize the "link" subsystem with a parameter L which you would use to define the offsets as -L/2 and +L/2 respectively for the two rigid body frame components so you only need to change the value in one place), as you normally do.

 

Now similarly for the flexible beam component, to adjust the "link" length, you would go into the beam length parameter of the component ( ?componentLibrary/multibody/bodiesAndFrames/FlexibleBeam ).

 

As for changing the orientation of the beam (flexible or rigid alike), as shown in the sample model, you can attach the base frame of the "link" to a revolute joint, about which the "link" swings (like a pendulum). If you have a fixed orientation (and translation), you can use a separate rigid body frame to define that (again, just attach it to the base frame of the "link").

 

I am not sure I understand completely what you mean by "shape" of the beam. Can you clarify your question (perhaps a concrete example of what you are trying to model would make the context of the question more clear)?

 

Hope this helps!

 

Thanks!

 

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

Gilbert Lai, PhD

Senior Applications Engineer, R&D Applications Engineering

Maplesoft

Thank you for your question.

 

The Rayleigh beam model offers a set of parameters that lets you specify the deformation characteristics for your beam. So, parameters such as the Young's modulus can be specified to control the behaviour of the beam.  Also, keep in mind that the flexible beam includes geometric information (such as the beam length and cross section area), as well as inertia properties (through the beam density, combined with the beam geometry).

 

So for replacing a rigid arm with a flexible arm, my guess is that you would replace the components that correspond to your "link" with the flexible beam component. Typically (as in most of our demo models), a link within MapleSim is modeled with two rigid body frame components, defining the end point of the link, and a rigid body component, which defines the inertial properties. So you would replace these components with a single flexible beam component (with appropriate parameter values).

Here is a screen capture of a simple flexible beam model (side-by-side with a rigid link pendulum) to illustrate my comment above:

 

So the flexible beam component replaces the three components that represent the rigid link.

 

Here is a plot of the simulation result, where I have delibrately adjusted the parameters so that the induced vibrations (from the hard stop in the position trajectory) in the flexible beam is more visible (for illustration purpose).

 

 

I have also uploaded the model file itself. It can be downloaded from the link below:

FlexibleBeam.msim

 

I hope this helps.

 

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

Gilbert Lai, PhD

Senior Applications Engineer, R&D Applications Engineering

Maplesoft

Thank you for your question.

 

The flexible beam component within MapleSim uses the Rayleigh beam model (you can access the help page for the flexible beam component by dragging it into the drawing area, then selecting/highlighting it and press F2).

 

A more detailed reference for the flexible beam model itself can be found here.  The original beam model was developed by Prof. John McPhee and his research group at the University of Waterloo (that link above refers to one of the papers that they have published on the topic).

 

Hope this helps!

 

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

Gilbert Lai, PhD

Senior Applications Engineer, R&D Applications Engineering

Maplesoft

Thank you for your question!

 

The TSDA expects the force magnitude as an input signal.  Natrually, there are many ways you can implement the gravitational force equation within MapleSim. Two direct methods came to mind:

1) Implement the equation "calculations" with signal-flow components (essentially drawing up block diagram for the equation). This is the approach I have used in the Solar system model, which can be downloaded here.

I am including a screenshot of it here:

 

2) The equation can be implemented directly as a custom component (using the custom component template supplied with MapleSim).

In either way, the "input" to the computation is the distance between the two objects which, as you can see from the above image, is obtained from the translation sensor (as a position vector).

 

I hope this helps!

 

Thanks!

 

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

Gilbert Lai, PhD

Senior Applications Engineer, R&D Applications Engineering

Maplesoft

Hello Poyan,

Thank you for your question. Off the top of my head, there are a few options to implement the ball screw:

 

1) There is an "ideal rotation to translation gear" component, found under 1-D Mechanical->Rotational->Common in the component library, which can be set up as a ball screw with 100% efficiency. The relevant equation for this component is r taua + fb = 0 where taua is the applied torque and fb is the applied linear force. The parameter r (referred to as the "transmission ratio") corresponds to 2*Pi/l where l is the ball screw lead. For more details on this component, please take a look at its help page.

 

 

2) Under the same section in the component library, there is a variation of the ideal rotation to translation gear component called "Wheel Axle". It operates practically the same way as the ideal rotation to translation gear, with variations in the way it is parameterized. Here, the force equations is tau_r = r fdir, comparing this to the ideal rotation/translation component, you will see that the parameter r here is defined as the reciprocal of the other "r" (plus the ability to apply a direction factor, dir). Once again, please refer to the help page for more details.

 

3) If you want to model a non-ideal ball screw (with less that 100% efficiency), you could construct it using a combination of joints for coupled linear and rotational motion:

3a) with a revolute and prismatic joint combination, coupled through appropriate motion and force/torque drivers.

3b) with the cylindrical joint, again coupled through appropriate motion and force/torque drivers.

 

4) Finally, you can, of course, implement the ball screw as a custom component (using the desired governing equations).

 

 

I hope this helps! Please let me know of your progress with any of the above suggestions.

 

Gilbert

Perhaps you can try: > lprint( simplify(exp(3)^2) ); Gilbert ================================ Applications Engineer, Maplesoft
I think you can try the prevprime() or the nextprime() function within Maple. To get help on them, type ?prevprime Gilbert ================================ Applications Engineer, Maplesoft
Page 1 of 1