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

cinematic motion algorithm #64

Closed
mkeyno opened this issue Aug 4, 2017 · 16 comments
Closed

cinematic motion algorithm #64

mkeyno opened this issue Aug 4, 2017 · 16 comments

Comments

@mkeyno
Copy link

mkeyno commented Aug 4, 2017

hi, sorry to open ticket for my question , but actually I'm little lost to find the methods can convert input location (Cartesian , polar) to the optimized cinematic motions of each axis? for example how to defined the best path from A to B coordinates and how it converted the cinematic motion for each axis? what is the optimization function & type ?how to define cinematic motion parameters of specific arms? I really appreciated for your hint

@i-make-robots
Copy link

what do you mean when you say "cinematic" motion?

@i-make-robots
Copy link

Thor does not, at this time, afaik, have a motion planning software that would, say, let you plot lines in space and then move the arm to meet those points, like this: https://www.youtube.com/watch?v=AO57-fZUWho

@mkeyno
Copy link
Author

mkeyno commented Aug 5, 2017

sorry I mean kinematic , you know, every robot has its own physical parts and degree of freedom so to define path between two given points we need the calculate some dynamic equations to find this patch and other parameters(like velocity and acceleration ) , however there is no unique path between two given points , thus some optimization algorithm applied to find the best and smooth path , I saw couple of repo use the CNC planner code to implemented this path but not find yet the path optimization algorithm

@i-make-robots
Copy link

i-make-robots commented Aug 5, 2017

Frequently the shortest path is taken. I know the number of steps each motor must take and the speed of the slowest motor. I then step all motors so that they arrive simultaneously at the destination. There are times when this solution is bad - it does not take into account impossible geometries or singularities BUT if you can avoid them it works great.

@i-make-robots
Copy link

sorry, to calculate the kinematics is how you get the number of steps of each motor. I have some examples in https://github.com/MarginallyClever/Robot-Overlord-App/ for 4 and 5 DOF arms. Maybe that will help? I don't remember atm if THOR is supported yet, but I'd like to see it happen.

@AngelLM
Copy link
Owner

AngelLM commented Aug 7, 2017

Hi! Sorry for the late reply.
Currently Thor moves using Forward Kinematics (at least mine). The calculations involved in the movement are responsibility of the firmware (GRBL). At this time there is not implemented neither a control using Inverse Kinematics nor movement optimization.
If it helps here it's the solution for the Forward Kinematics. And here the solution of the Inverse Kinematics of Thor.
Also, @Danny-VdH were developing a GUI to control robotic arms. You can chek it out too ;)

Hope it helps!

@i-make-robots
Copy link

If I have the relative distance between each joint in the system and an simplified STL of each THOR part I could add it to Robot Overlord. Then it would send FK commands to the arm, much as it does with my other robots. If that's of interest to you, make it so. I could get it implemented before the end of August.

@AngelLM
Copy link
Owner

AngelLM commented Aug 7, 2017

@i-make-robots That sounds good! I think that you have all the distances you need in this image.

@i-make-robots
Copy link

i-make-robots commented Aug 7, 2017 via email

@AngelLM
Copy link
Owner

AngelLM commented Aug 8, 2017

Hi @i-make-robots
I just upload the STL files of each articulation
Also, the distances are the following, understanding global positions as the XYZ coordinates of the space and the local position as the XYZ coordinates of the piece. Both coordinates are expressed in mm.

  • Base
    • Global position (X,Y,Z): 0,0,0
    • Rotation axis: None
    • Rotation axis local position (X,Y,Z): None
  • Articulation 1
    • Global position (X,Y,Z): 0,0,49
    • Rotation axis: Z
    • Rotation axis local position (X,Y,Z): 0,0,0
  • Articulation 2
    • Global position (X,Y,Z): 0,0,137
    • Rotation axis: Y
    • Rotation axis local position (X,Y,Z): 0,0,65
  • Articulation 3
    • Global position (X,Y,Z): 0,0,295
    • Rotation axis: Y
    • Rotation axis local position (X,Y,Z): 0,0,64
  • Articulation 4
    • Global position (X,Y,Z): 0,0,377,5
    • Rotation axis: Z
    • Rotation axis local position (X,Y,Z): 0,0,0
  • Articulation 5&6
    • Global position (X,Y,Z): 0,0,510
    • Art 5 Rotation axis: Y
    • Art 5 Rotation axis local position (X,Y,Z): 0,0,47
    • Art 6 Rotation axis: Z
    • Art 6 Rotation axis local position (X,Y,Z): 0,0,0

I don't really know if the STL of the last 2 articulation will work (because of coupled movements). Probably splitting it into 2 pieces (the column + gears for the 5th and the rest for the 6th) would make the work. I'll do it now, just in case.

@AngelLM
Copy link
Owner

AngelLM commented Aug 8, 2017

Split done.
The new distances would be:

  • Articulation 5
    • Global position (X,Y,Z): 0,0,510
    • Art Rotation axis: Y
    • Art Rotation axis local position (X,Y,Z): 0,0,47
  • Articulation 6
    • Global position (X,Y,Z): 0,0,610.431
    • Art Rotation axis: Z
    • Art Rotation axis local position (X,Y,Z): 0,0,0

@i-make-robots
Copy link

i-make-robots commented Aug 8, 2017 via email

@i-make-robots
Copy link

i-make-robots commented Aug 8, 2017 via email

@i-make-robots
Copy link

i-make-robots commented Aug 8, 2017 via email

@i-make-robots
Copy link

i-make-robots commented Aug 8, 2017 via email

@AngelLM
Copy link
Owner

AngelLM commented Aug 8, 2017

I saw it! Awesome work!
Expect some contributions and feedback from my side! :)

@AngelLM AngelLM closed this as completed Aug 9, 2021
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

No branches or pull requests

3 participants