Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] 3 link pendulum #10

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open

[WIP] 3 link pendulum #10

wants to merge 8 commits into from

Conversation

tarzzz
Copy link
Contributor

@tarzzz tarzzz commented Jun 19, 2013

No description provided.

#For storing Inertia for each link :
Ixx = symbols('Ixx:'+str(N_links))
Iyy = symbols('Iyy:'+str(N_links))

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A general inertia matrix has 9 entries: three moments of inertia and 6 products of inertia. You are only introducing the moments of inertia about the x and y axes. Where are the other entries? Is the link assumed symmetric? Depending on the symmetry you can reduce the inertia down to the three moments of inertia but since you have no Z inertia at all this seems problematic. I'd prefer you to add all of the inertia tensor entries here and then if you assume symmetry about various planes you can set the appropriate products of inertia equal to zero when you get to the numerical simulation.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only 6 entries will be unique, inertia matrices are always symmetric (i.e., Ixy == Iyx, Ixz == Izx, Iyz == Izy). If you create a 3x3 with 9 unique entries and somehow you accidentally make it non-symmetric, it won't be representative of an inertia matrix and is probably a mistake. The inertia() function in mechanics may be useful here.


inertia_link1 = inertia(A, Ixx[0], Iyy[0], Izz[0], ixy = Ixy[0], iyz = Iyz[0], izx = Ixz[0])
inertia_link2 = inertia(B, Ixx[1], Iyy[1], Izz[1], ixy = Ixy[1], iyz = Iyz[1], izx = Ixz[1])
inertia_link3 = inertia(C, Ixx[2], Iyy[2], Izz[2], ixy = Ixy[2], iyz = Iyz[2], izx = Ixz[2])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not write a loop to do these three lines?

@moorepants
Copy link
Member

Tarun,

The derivation looks correct to me. You'll have to simulated it to see if behaves correctly. Please make a figure (or find a creative commons licensed one) to include and add more detail to the read me.

@ghost ghost assigned moorepants Jun 24, 2013
@tarzzz
Copy link
Contributor Author

tarzzz commented Jun 24, 2013

i am rather more aligned on writing some javascripts, for simulation.
it would be nice to see the pendulums in a 3D version ...

On 6/24/13, Jason Moore [email protected] wrote:

Tarun,

The derivation looks correct to me. You'll have to simulated it to see if
behaves correctly. Please make a figure (or find a creative commons licensed
one) to include and add more detail to the read me.


Reply to this email directly or view it on GitHub:
#10 (comment)

@moorepants
Copy link
Member

The simulation (ode integration) should happen in Python (I don't know of any ode tools in javascript). You don't get any free visualization without simulation.

I think if you do a one-off simulation/visualization for this problem it will be a good exercise in understanding what methods you will need to develop for the final API. So please go ahead a do an example visualization of this more complicated problem. And use what you learn in the process to flesh out the python and javascript api designs that you are working on.

@moorepants
Copy link
Member

BTW, I'll merge this example as soon as you add the figure and beef up the readme.

@moorepants
Copy link
Member

Oh yeah and one more thing: switch to no loops or loops in the problem derivation so that it is consistent with itself.

Fix those three things and we will merge this in.

@tarzzz
Copy link
Contributor Author

tarzzz commented Jun 24, 2013

yes simulation would be in python only. i should have used the word
animation there.
so i will work on this problem + webgl simulation, then it can be
merged. i would also write rough(more specific to this problem)
implementations of functions/methods which are mentioned in this
particular problem, so that we know how things go off.

On 6/24/13, Jason Moore [email protected] wrote:

Oh yeah and one more thing: switch to no loops or loops in the problem
derivation so that it is consistent with itself.

Fix those three things and we will merge this in.


Reply to this email directly or view it on GitHub:
#10 (comment)

@tarzzz
Copy link
Contributor Author

tarzzz commented Jun 24, 2013

yes simulation would be in python only. i should have used the word
animation there.
so i will work on this problem + webgl Animation(there, i corrected it
:) ), then it can be merged. i would also write rough(more specific to
this problem) implementations of functions/methods which are mentioned
in this particular problem, so that we know how things go off.

On 6/24/13, Jason Moore [email protected] wrote:

Oh yeah and one more thing: switch to no loops or loops in the problem
derivation so that it is consistent with itself.

Fix those three things and we will merge this in.


Reply to this email directly or view it on GitHub:
#10 (comment)

@moorepants
Copy link
Member

Here are some suggestions for the visualization:

Attach some shape to each bob (dont' use a sphere, make it more general like an ellipsoid). Attach different shapes to each pendulum arm. But also try to attach a shape to a reference frame/point other than the CoM of these objects. Maybe try to attach cubes to your pendulum arm to make it look like a cross. I think making more general choices of shapes and their locations will show you the need for some of the methods we've been talking about on the python side. Make sure that you generate all of the equatiosn necessary to describe the shapes's locations on the python side. Only data should flow into your javascript.

@tarzzz
Copy link
Contributor Author

tarzzz commented Jun 24, 2013

noted.
if it is fine i would like to spend some time on this one. two days perhaps.
it basically defines how we proceed with the project.

On 6/24/13, Jason Moore [email protected] wrote:

Here are some suggestions for the visualization:

Attach some shape to each bob (dont' use a sphere, make it more general like
an ellipsoid). Attach different shapes to each pendulum arm. But also try to
attach a shape to a reference frame/point other than the CoM of these
objects. Maybe try to attach cubes to your pendulum arm to make it look like
a cross. I think making more general choices of shapes and their locations
will show you the need for some of the methods we've been talking about on
the python side. Make sure that you generate all of the equatiosn necessary
to describe the shapes's locations on the python side. Only data should flow
into your javascript.


Reply to this email directly or view it on GitHub:
#10 (comment)

@moorepants
Copy link
Member

I'm fine with that. Like I said, I think doing so will help define your API design. So the goal will be to animation the 3 link conical pendulum and then rework your API design to reflect what was learned. We can discuss the API at that time hopefully coming to a final decision.

@moorepants
Copy link
Member

Outstanding issues:

  • Add a figure
  • More detail in the readme
  • Fix the kinematical differential equation definitions so that you get correct EoM

@moorepants
Copy link
Member

This needs to be merged into one directory with the stuff in PR #11.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants