Inverted Double Pendulum
Purpose
The purpose of this example is to introduce students to the interface of Amesim and how to navigate through the software to build a simple example using Amesim’s Planar mechanical library.
Learning Outcome
After following this example, the students will be able to navigate through Amesim and its modes comfortably and will also become familiar with the Planar mechanical library.
Introduction to the problem
Inverted double pendulum is a simple and classic example in the rigid body dynamics field. The system consists of two rigid bodies connected via a pivot junction. One node of one of the bodies is connected to a fixed pivot junction while one end of the other body is a free end. After releasing the system from an initial position, the two bodies move about their respective pivots under the influence of gravitational force.
1. Sketch Mode
Whenever we fire up Amesim, we start off in the Sketch mode by default.
Now, from the Library tree on the right side of your screen, find and double-click on the ‘Planar Mechanical’ library.
Then, the Planar Mechanical library will open up and you will be able to see all of its components.
To know what each component is, hover your mouse cursor over the component for a couple of seconds
And to know more about any component, right-click on the component and click on ‘Help’
Now, we proceed to sketch our model. To do this, we need bring all the necessary components to our sketch area. We can do this in two ways:
- Drag and drop
- Click on the component once, move your cursor onto the sketch area and place it by clicking again.
You will see a sketch similar to the following image. The numbers on the either side of the component block are its ports. More about ports later.
Now, we proceed to sketch our model. To do this, we need bring all the necessary components to our sketch area. We can do this in two ways:
- Drag and drop
- Click on the component once, move your cursor onto the sketch area and place it by clicking again.
You will see a sketch similar to the following image. The numbers on the either side of the component block are its ports. More about ports later.
After you complete importing all the required components to your sketch it should look like this:
Before connecting all our components, which ports of each component needs to be connected to another component. So, it is always a good convention to make sure that the output port number is greater than that of the input. And because the end restraint is the only fixed component in the sketch, we can start from there.
So, we want the output of the end restraint to be connected to the input of the pivot junction. We can always rotate a component by using the Ctrl + R shortcut. Then, arrange your components such that input port number is 1.
Now, we need to make the connections. To do this click near the port of one component to see your cursor turn to a black plus symbol. Now you should be able to see a green dot-dashed line following your cursor. Move your cursor close to the port of the component to which you want to connect your first component until you see a green square appear. Then, click again. Now, both the components are connected together. Follow the same procedure to connect all the components.
At the end of it, your sketch should look like this:
You can always drag any component to rearrange your sketch. Note that you cannot rotate or flip (Ctrl + M) your components after making the connections.
Now, our sketch is ready. Using Ctrl+S, save the file to a local drive and make sure that the file name does not have any spaces, and it should also not start with a number.
Before we windup our sketch, we need two more supplementary components which are not a part of our problem, but are necessary for our simulation. Those are the assembly component from the Planar mechanical library and the gravity icon from the Mechanical library.
2. Sub-model Mode/ Step2
After completing the assembly of our components, the next step in building our model is the Sub-model mode.
After we switch to this mode, we will see that some components get highlighted. This means that those components have multiple sub-models from which we can select one. By selecting different sub-models, we are choosing a more complex mathematical representation of the same component.
We can see the list of sub-models of a particular component by double-clicking on the highlighted component.
Here, we can see that the pivot junction component has two sub-models. Generally, the sub-models are listed in the order of increasing complexity i.e. PLMPIV01 is more complex than PLMPIV00.
If we just want all the simplest mathematical models for all the components which have multiple sub-models, we can do so by directly selecting the Premier Sub-model option.
3. Parametric Mode/ Step3
Now that we have defined how each component is mathematically represented, the next step is to define the parameters of each component. We do this in the Parametric mode.
Parameters of every component can be seen on the right hand side of the screen, after clicking on the component of interest. In the following image we can see the parameters of the end restraint component.
For the problem of interest, we do not change any of these parameters as we want the end restraint to serve as the origin, relative to which we will define the components connected to it.
Next, we set the parameters for the pivot junction. Ideally, a pivot should not have any stiffness or damping associated with it. So, to make things simple when we try to validate our simulations with hand-written solutions, it is better to set these parameters to 0. Make sure to do this for both the pivot junctions.
Then, we have to define the parameters of the PLM body-1. Whenever dealing with most of the components in the Planar mechanical library, it is important to visualize these components in a coordinate plane, and the parameters that we set will define their position in that coordinate plane.
Let the following be the parameters for the two bodies in our problem
Parameter |
Magnitude |
Length of body-1 |
1 m |
Mass of body-1 |
1 kg |
Orientation of body-1 |
00 |
Length of body-2 |
1 m |
Mass of body-2 |
1.5 kg |
Orientation of body-2 |
300 |
Because the length of our Body-1 is 1 m, the parameter ‘x position at port 2’ should be set to 1 m. This is because port 1 is attached to the pivot which in turn is attached to the end restraint (our origin), so naturally port 2 should be the length of the body. As a consequence, the center of gravity parameter ‘G: initial relative x position’ should be 0.5, assuming that our body is uniformly distributed.
Following the formula, , for Moment of inertia of a rod, we can set the parameter ‘moment of inertia around Gz axis’
Now, we need to follow the same procedure to set the parameters for our Body-2. Before we do that, we need to look at another parameter: coordinates reference. If this parameter is set to relative, then it means that the coordinates for this particular body need not be calculated from the origin. In this case, port 1, becomes the new origin and so the parameters of the body can be set in the same manner as we did for Body-1. If we have the ‘coordinates reference’ as absolute, the x position at port 1 will be 1 m and x position at port 2 will be 2 m.
4. Simulation Mode/ Step4
At this stage, we have built our sketch, chose the mathematical representation of the components, and finally defined the parameters of all the components. Next step is to run the simulation.
As soon as we click on the simulation mode button, Amesim compiles the model that we have built and creates a simulation program
If we have built our model correctly, then we will see the ‘Completed’ message after system compilation.
We can change the parameters of our simulation, by clicking on the ‘Run parameters’ button
For the example in consideration, we need not change any of these parameters.
Then, we click on the ‘Start simulation’ button to run the model.
If we haven’t made any mistakes in building our model, then the simulation will run to 100% without any errors.
5. Visualizing Results
Now that we have successfully run our simulation without any errors, it is time to visualize and analyze the parameters of interest. The outputs/variables of any component can be seen on the right, bottom corner of the screen.
Suppose we want to visualize how the angular position of Body-2 has changed over time, we need to plot it.
In Amesim, plotting any result is as easy as a drag and drop. Click on Body-2 to display its variables. Now, click on ‘absolute angular position’ and drag it on to the sketch and release the mouse button.
Now, we will be able to see a plot of ‘absolute angular position [degree] vs Time [s]’
You can follow the same procedure to plot any variable of any component in your model.
There is one feature in Amesim which is specific to the Planar mechanical library: PLM-Assembly. In any other library, we can visualize the functioning of our system by building a 3d representation using Amesim’s Animation feature, but the PLM-Assembly block automatically builds the animation using the parameters that we set.
You can open the animation by double-clicking on the PLM-Assembly component.
Here, you can see that all the components that we had used to build our model have been represented in the animation.
You can click on the play button on top of the animation window to visualize the functioning of our double pendulum system.
Example By: Sai Krishna Sumanth Nakka