I can't believe you've broken down something I was so intimidated about into really lovely trigonometry. Treating each solved distance as a black box for later trig makes it so elegant. Thank you for teaching real skills in your videos. I really appreciate the work you do!
Yes, simple examples can be solved with trig, but if you want to get into more advanced robots with high dof's and redundancy, you'll need to rely on numerical methods and understanding of transformation matrices to solve the problem
I love how with channels like this even the ad portion is interesting. No crummy mobile game ad, but actually relevant and useful companies as sponsors
Your skill with all facets of robotics is truly impressive- concept, 3D design and printing, assembly, math and coding, testing and refinement. So impressed!
I had to learn the maths for my EPQ project last year and I didn't entirely understand it. Now it makes sense!!! Great video and can't wait for the next one!
Got a recommendation on youtube to watch some of your videos about robotics and I didn't know why given all my recent searches are for procedural animation. A few hours later youtube recommends this to me and now I understand. I see your tricks youtube.
I teach High School Engineering (in the states) and seeing you break down robotics into simple Trig allows me to show the students how Geometry is applied in robotics at this basic level. I hope this will inspire some students to go into robotics.
You sir, are making the world a better place with your videos. The inverse kinematics you showed was far simpler than how I imagined it to be. I was over here trying to use MatLab to create Differential Equations and then setup a robotic simulation with moments of inertia, COM, etc. Your video ultimately brought me back to the realization that 'baby steps first' would be my best move instead of just leaping into the deep end. That said, there is nothing that teaches like a project does, and yours are always fun to watch and learn from (like when you built a camera that follows you or the backpack disc that spins to balance you on a beam walk)
I love how this is even used in video games for almost anything dynamically animated. The best example is VR, inverse kinematics is used to calculate where the elbow should be located based off of your shoulders and hands in-game. Thanks so much for this video! It really helps introduce me to IK which I was always scared of learning, great job breaking down the math behind it to make it sound really simple and straight forward.
Brilliant! TH-cam served up your reverse kinematics demo deo up to me, which led me to this video, (right in the middle of your process), and it all made perfect sense, because you are a gifted teacher. Subscribed!
Hi James, have you tried using the Jacobian matrix? It makes solving inverse kinematics pretty easy. Just describe the coordinates of the end effector as a function of the joint angles once and from then on out it's a matter of simple linear algebra!
It's not _just_ a matter of linear algebra, because the forward mapping is nonlinear. Yes, you can still use the inverse Jacobian to run some Newton-Raphson steps, but this isn't exactly _easier_ than, if possible as in this example, directly computing the exact solution with trigonometry tricks. Especially when using a low-powered microcontroller, it's quite advantageous to need only one computation step.
...Though then again, it isn't really necessary to directly compute the target parameters _at all_ - instead, depending on the application it can make a lot of sense to compute only _directions_ of movement, which the Jacobian can directly offer. Then physically following the directions is essentially a mechanical way of solving the nonlinear equations.
Thanks so much for this James. I've been watching through a bunch of your videos again while at work (I'm a D.E. teacher - coding of various kins, and robotics (using Robbo)). I had bought one of those cheap robotic arm kits from Lazada, to which I added the servos and an Arduino. At first I coded it to work sequentially, which was all I knew how to do, so arm rotation, then vertical arm movement, then the claw. It randomly selects a position by choosing numbers in the pre-defined range of movement for each servo. But, while watching this video, and others, I worked out a way to program simultaneous movement. I'm not using timing, or anything like that. It takes the current position for each servo, and the newly selected position, calculates the difference for each servo, then divides by 100. I then have a loop of 100 iterations that adjusts the position of each servo in the required direction be adding or subtracting the number and writing to the servo for each iteration of the loop. So, I have a relatively smooth transition of all three servos from current to new position. The claw is changed separately after the arm finishes moving. The servos for this arm are SG90s, so they're a bit rough a jittery, but they do the job. I've also added LEDs that light up when each part of the code is being executed and I hope to add a 2 row LCD display to show the position numbers for each servo while it is operating. The robot is mounted on the back wall of my classroom purely as a demo piece, so serves no practical functionality except the most important one - to inspire my students. Thanks again for your awesome channel! I actually feel like building a bigger arm now from scratch, perhaps using PVC piping and 3D printed joints, or metal joints, like in your example here. Hmmm!
Thanks a lot for this very informative and inspiring video James! The first thing I was thinking of when I saw the gripper was: 'Why not use suction?'. Also learned a thing or two about inverse kinematics. Maybe I'll give it a try in the future!
Oh my gosh, Thank you so much James, i've struggled to wrap my head around IK for so long on how it works, I'm doing game dev in uni but could never understood how IK actually works. I've watched videos working with unity but none of them explained this in an easy way like you have, been subscribed to your channel for a while now and was not expecting to learn something i've been wanting to learn in game dev from you. So thank you so much sir! ahaha
Your videos are clearly made to inspire. But the Components you use (especially the motors) are more of the pricey variety. I would like to see a video, where you go over your "standard components" and explain, why you chose them and not other - I guess oftentimes it's because it was what you had at hand. On the other hand, I would love even more a video where you challenge yourself to only use small 3$ nano-servos and/or 28BYJ-48 Stepper with ULN2003 driver modules --- you know, stuff that kids could afford. These have limited capabilities, but it would be nice to see what they can do in their limits when someone like you uses them.
This is very inspiring! I've been wanting to make something similar recently and I've also been taking trigonometry in college right now, so seeing how you implemented it in inverse kinematics was awesome to see and providing the code too! I find this helpful.
This might be good to have right before the wind tunnel part since that was very sensitive to how the balls enter, and this is probably gonna be the most reliable part.
@@xxportalxx. that being said, the fact that the arm can move at different speeds allows it to "throw" balls, and since the static accelerator is a gimmick anyway, it doesn't get as much speed as it should and may fail. also, it's a Coanda effect staircase. a wind tunnel is a very different thing.
@@xxportalxx. although it may be difficult to code, I think the fact it is so reliable once you get the coding down makes up for it, whereas the ball accelerator is much more mechanical based, and therefore more unreliable.
I've noticed one little thing which is not entirely correct at 11:15 If anyone is building a robotic arm, then keep this in mind: It is true that in most cases it will move in a straight line. I believe this is true for the points you use in this example. But there are cases where the arm has to contract and later extend again. For example at 9:00 you can see the elbow making a sharper angle as it gets down, but towards the end it starts to extend a little bit again. If it would go down further it would rotate in the other direction more. So going from the starting position to the end position would cause it to skip most of its movement which means it won't go in a straight line down. You can also see that the servos don't move at the same speed the whole time. While the arm is going down the elbow servo moves very quickly at the beginning but it slows down near the end. One way to solve this is to interpolate several coordinates between point A and B and then use the ramp library to interpolate the servo speed between these points. Make sure you're not executing the code faster than the arm can move though. But without feedback on the current position it's hard to make everything move smooth. I'd suggest to make the movements slow at the beginning so you don't run into problems caused by slow servos. Otherwise it may look like your code isn't working properly even though you're going over the servo's limit :)
From a software point of view, when working with IK, it's always a good idea to write the forward side as well and check that the results match (within rounding errors). What's shown here is calculated_angles = IK(demand_position). What you would add is calculated_position = K(calculated_angles) where K is a new function to calculation position from angles. Then you check that demand_position = calculated_position (allowing for rounding error). The reason to do this is it will find mistakes in your IK code, if that equality doesn't hold then either IK or K is buggy. Also the K side is often the simpler of the two.
11:00 does that same library have a function to interpolate in a sigmoidal shape instead of linearly? A smoothed (sigmoidal) curve would probably look better, be more energy-efficient and expose the objects it moves to less forces
I swear at any moment james could just OWN the r/arduinoprojects or r/3dprinting subreddits an absolute legend thanks for the introduction into inverse kinematics btw
i went from a pretty meh math student in middle/highschool to studying physics / tutoring and to be fair, if im not studying physics or tutoring at the moment i couldnt care less about trigonometry (technically, i still do :^)) but when i do, its pretty essential to have u gotta remember that the majority of people learning trig in school prob wont be using it unless their job is tech or science related
thank you very much this is very helpful as this is quite similar to a scara arm(here z-x and in scara x-y by 2 joints) which is my final year project.
Many thanks for this video. It has answered a few more questions regarding robot arm movement. One thought, if I may, to make a more interesting display. Have the movement, down the rail, and raising the ball to its upmost position occur in the same time period.
Thank you for this video, it was excellent. So far, I've only been taught the very basics of kinematics at Uni as it is not really my field. I don't know why, but it didn't occur to me that trigonometry was being used so extensively to control robots. All these applications for triangle calculations never cease to amaze me. I will have to try and build this myself immediately 😎👍
1:31 Could you tell us WHERE to source WHAT parts go into your V-wheel Rollers (that already have bearings inside) as well as the V-slot Extrusion TRACK that the Rollers roll along? Thanx!
This is great stuff! I was hoping for the linear algebra of IK, which I didn't get, but I did get a very nice project doing one task well, with all the details and intermediate steps shown, which is really great. Might use this to show the kid how even a simple task robot has a lot of parts and steps.
I like that servo, big bold 20 kg cm, which is 0.2 Newton meters. That means a 2 cm diameter primary spur gear would yield about 18.79 kg of force, however, keep in mind that it is at the servo's rated rpm, which is probably very slow to give such high torque.
I don't know why the arm is dropping the ball so high. The servo can take it lower, and the upper arm should be able to drop the ball softer and closer to the ground.
First of, thanks for the video! Code for the absolute coordinate is a bit weird. You computed the shoulderAngle2Degrees and shoulderAngle1Degrees but did not do angle arithmetic to calculate the final angle. Instead, you converted both to pwm secs and subtracted the two values in servo write which can be easily overlooked.
Brilliant! Thanks! Defo more inverse kinematics. A follow on with an arm rotation axis would be great (or even bring in/demo with the slider, so all happens at same time rather than being 2 discrete sets of movement). Still not sure I totally followed (not the maths, good with trig, more the algorithm/process) but will grab the code and see if the comments help and maybe try it out on some servos with taped on pencils or something. There was also another good one you did on minidog for this
Im working through your code and am in the encoder area, can you tell me what sort of motor you are using is please Ive never used an encoded DC motor before. Ive sorted the servos
Hy James awesome video as always. But I have one question for you -> How much time required while making this project. I am asking this because for me sometimes even a very small project takes one or two weeks to complete and then I start to wonder that I am not doing anything wrong.
I have been trying to create a robot dog however when I try to move the legs it doesn't move in a straight line. Is there something I am missing that would fix this?
The interesting thing is if you model on real life - what is the mix in a human/animal between the maths of moving a limb to the right place and the feedback/touch/visual etc that its in the right place? What would you say - 50/50 or more like 60% feedback, 40% muscle position?
After finally capturing reverse kinematics, the gods decided that his punishment would last for all eternity. He would have to move a ping pong ball from one place to another; upon dropping the ball, the ball would be placed back at the starting position again, leaving reverse kinematics to start over. James sees reverse kinematics as the absurd hero who lives life to the fullest, hates death, and is condemned to a meaningless task. One must imagine reverse kinematics happy.
I happen, to know there are other personalities on this site, named James. Allow me, to introduce myself, I'm the other James. There's another one, he's in Canada somewhere.
I think this would make a great distribution point where the arm can deliver balls to different sections, just by stopping it's linear axis at different locations. i.e. the static ball accelerator or the coanda effect section
Loved the math for this one - would it be possible to add in the kinematics equations to use the arm to toss a ball into the air and then catch it by matching its trajectory with the arm (likely needing a much better feedback/encoding system)?
Hi :) I don't really understand the concept with the 45' offset. Sorry, I am new to servos, the milliseconds PWM basically tells the motor to turn for a certain amount of time and that equals the angle that we calculated? So I understand how the shoulder angle inside the first triangle is calculated, but I do not understand how that information is converted into usable information for the servo, because for the right triangle from the shown picture I assume that the servo is a 0 degrees and if you want to move the arm forward it has to turn for a certain amount of degrees, but that angle is not the same as the "shoulder angle" from the right triangle from the starting position, is it? So I think my question is how do you convert the calculated shoulder angle to the rotation of the servo trigonometrically?
How it will move in straight line while interpolating servos with linear ramp while actual change in degrees cannot be linear when end effector moving in straight line?
Another excellent, excellent video! Well explained and demonstrated AND most importantly, your teaching methods are very encouraging, and give the viewers (me!) the idea that I too can attain the same results with a reasonable amount of work. Well done, or as you Brits say, "Brilliant!" Now we just have to teach you guys that there is no such noun as 'Mathematic'. :))
Amazing simple explanation!!! Also quite easy build, probably could be done also with a 3D Printer Stepper for the belt and cheaper servos for the arm as the forces are not so big?
I keep swapping kinematics and inverse kinematics around. Luckily my robot has both built in. This is a nice and simple example and looks like a scara robot that is tilted 90 deg. on the X-axis. Programming a robot in cartesian coordinates can be difficult due to "singularities". I've had a few errors where the robot controller (Kuka KR180) would report a singularity error and not move at all but I have also had some strange movements that resulted in an overload on one of the axes. At that time, the robot performs an abrupt E-stop which is not that funny when 50 kg of mass is being moved... I actually checked the massive bolts that are used to mount the robot on the floor to see if they were not damaged.
You could add a rotation axis to the base of the arm and make this bit a hub to randomly select different paths for the balls to take. All of which, eventually, end up back here at the hub. Either way, this is a great explanation and demonstration.
I can't believe you've broken down something I was so intimidated about into really lovely trigonometry. Treating each solved distance as a black box for later trig makes it so elegant. Thank you for teaching real skills in your videos. I really appreciate the work you do!
Yes, simple examples can be solved with trig, but if you want to get into more advanced robots with high dof's and redundancy, you'll need to rely on numerical methods and understanding of transformation matrices to solve the problem
I love how with channels like this even the ad portion is interesting. No crummy mobile game ad, but actually relevant and useful companies as sponsors
thanks, trying to keep them relevant if poss.
@@jamesbruton I tend to actually watch them, was interesting to see they make parts not just circuit boards. Didn't know that.
Your skill with all facets of robotics is truly impressive- concept, 3D design and printing, assembly, math and coding, testing and refinement. So impressed!
I had to learn the maths for my EPQ project last year and I didn't entirely understand it. Now it makes sense!!!
Great video and can't wait for the next one!
Got a recommendation on youtube to watch some of your videos about robotics and I didn't know why given all my recent searches are for procedural animation. A few hours later youtube recommends this to me and now I understand. I see your tricks youtube.
I teach High School Engineering (in the states) and seeing you break down robotics into simple Trig allows me to show the students how Geometry is applied in robotics at this basic level. I hope this will inspire some students to go into robotics.
This robot is missing an important feature: googly eyes.
@Cooper Cole shut it bot
@Flynn Skyler shut it bot
I agree
You sir, are making the world a better place with your videos. The inverse kinematics you showed was far simpler than how I imagined it to be. I was over here trying to use MatLab to create Differential Equations and then setup a robotic simulation with moments of inertia, COM, etc.
Your video ultimately brought me back to the realization that 'baby steps first' would be my best move instead of just leaping into the deep end.
That said, there is nothing that teaches like a project does, and yours are always fun to watch and learn from (like when you built a camera that follows you or the backpack disc that spins to balance you on a beam walk)
Just need a 2nd one and they can go forever playing “your ball! No! Your ball!”
I'm your 69 th like lol
すごい!シンプルな設計だがプログラムに無駄がなく制御がしっかりしていて尊敬します。
I love how this is even used in video games for almost anything dynamically animated. The best example is VR, inverse kinematics is used to calculate where the elbow should be located based off of your shoulders and hands in-game.
Thanks so much for this video! It really helps introduce me to IK which I was always scared of learning, great job breaking down the math behind it to make it sound really simple and straight forward.
"What is my purpose?"
...
"Oh my god..."
"You drop balls."
Brilliant! TH-cam served up your reverse kinematics demo deo up to me, which led me to this video, (right in the middle of your process), and it all made perfect sense, because you are a gifted teacher.
Subscribed!
This is one of the simplest practical demonstrations of inverse kinematics i have ever seen. Hats of to you James!
12:09 What the robot hears:
"Standard insertion for a nonstandard specimen. Go ahead, Gordon. Slot the carrier into the analysis port."
Hi James, have you tried using the Jacobian matrix? It makes solving inverse kinematics pretty easy. Just describe the coordinates of the end effector as a function of the joint angles once and from then on out it's a matter of simple linear algebra!
It's not _just_ a matter of linear algebra, because the forward mapping is nonlinear. Yes, you can still use the inverse Jacobian to run some Newton-Raphson steps, but this isn't exactly _easier_ than, if possible as in this example, directly computing the exact solution with trigonometry tricks. Especially when using a low-powered microcontroller, it's quite advantageous to need only one computation step.
...Though then again, it isn't really necessary to directly compute the target parameters _at all_ - instead, depending on the application it can make a lot of sense to compute only _directions_ of movement, which the Jacobian can directly offer. Then physically following the directions is essentially a mechanical way of solving the nonlinear equations.
Thanks so much for this James. I've been watching through a bunch of your videos again while at work (I'm a D.E. teacher - coding of various kins, and robotics (using Robbo)). I had bought one of those cheap robotic arm kits from Lazada, to which I added the servos and an Arduino. At first I coded it to work sequentially, which was all I knew how to do, so arm rotation, then vertical arm movement, then the claw. It randomly selects a position by choosing numbers in the pre-defined range of movement for each servo. But, while watching this video, and others, I worked out a way to program simultaneous movement. I'm not using timing, or anything like that. It takes the current position for each servo, and the newly selected position, calculates the difference for each servo, then divides by 100. I then have a loop of 100 iterations that adjusts the position of each servo in the required direction be adding or subtracting the number and writing to the servo for each iteration of the loop. So, I have a relatively smooth transition of all three servos from current to new position. The claw is changed separately after the arm finishes moving. The servos for this arm are SG90s, so they're a bit rough a jittery, but they do the job. I've also added LEDs that light up when each part of the code is being executed and I hope to add a 2 row LCD display to show the position numbers for each servo while it is operating. The robot is mounted on the back wall of my classroom purely as a demo piece, so serves no practical functionality except the most important one - to inspire my students. Thanks again for your awesome channel! I actually feel like building a bigger arm now from scratch, perhaps using PVC piping and 3D printed joints, or metal joints, like in your example here. Hmmm!
Thanks a lot for this very informative and inspiring video James! The first thing I was thinking of when I saw the gripper was: 'Why not use suction?'. Also learned a thing or two about inverse kinematics. Maybe I'll give it a try in the future!
“The great ball contraption”
“The high voltage ball accelerator”
Great naming scheme Monsieur Bruton
Oh my gosh, Thank you so much James, i've struggled to wrap my head around IK for so long on how it works, I'm doing game dev in uni but could never understood how IK actually works. I've watched videos working with unity but none of them explained this in an easy way like you have, been subscribed to your channel for a while now and was not expecting to learn something i've been wanting to learn in game dev from you. So thank you so much sir! ahaha
wow, i am just learning the math behind the movements in my robotic career
Your videos are clearly made to inspire. But the Components you use (especially the motors) are more of the pricey variety. I would like to see a video, where you go over your "standard components" and explain, why you chose them and not other - I guess oftentimes it's because it was what you had at hand. On the other hand, I would love even more a video where you challenge yourself to only use small 3$ nano-servos and/or 28BYJ-48 Stepper with ULN2003 driver modules --- you know, stuff that kids could afford. These have limited capabilities, but it would be nice to see what they can do in their limits when someone like you uses them.
This is very inspiring! I've been wanting to make something similar recently and I've also been taking trigonometry in college right now, so seeing how you implemented it in inverse kinematics was awesome to see and providing the code too! I find this helpful.
This might be good to have right before the wind tunnel part since that was very sensitive to how the balls enter, and this is probably gonna be the most reliable part.
Although didn't they need to be sorta thrown into that? So perhaps the static accelerator would be better
@@xxportalxx. that being said, the fact that the arm can move at different speeds allows it to "throw" balls, and since the static accelerator is a gimmick anyway, it doesn't get as much speed as it should and may fail. also, it's a Coanda effect staircase. a wind tunnel is a very different thing.
@@Bigwings2043 idk I think it would be difficult to have it throw a ball, but perhaps that's the solution.
@@xxportalxx. although it may be difficult to code, I think the fact it is so reliable once you get the coding down makes up for it, whereas the ball accelerator is much more mechanical based, and therefore more unreliable.
@@Bigwings2043 the ball accelerator is purely electrostatic, the only mechanical part is a belt being turned against a brush lmfao
I've noticed one little thing which is not entirely correct at 11:15
If anyone is building a robotic arm, then keep this in mind:
It is true that in most cases it will move in a straight line. I believe this is true for the points you use in this example. But there are cases where the arm has to contract and later extend again. For example at 9:00 you can see the elbow making a sharper angle as it gets down, but towards the end it starts to extend a little bit again. If it would go down further it would rotate in the other direction more. So going from the starting position to the end position would cause it to skip most of its movement which means it won't go in a straight line down.
You can also see that the servos don't move at the same speed the whole time. While the arm is going down the elbow servo moves very quickly at the beginning but it slows down near the end.
One way to solve this is to interpolate several coordinates between point A and B and then use the ramp library to interpolate the servo speed between these points. Make sure you're not executing the code faster than the arm can move though. But without feedback on the current position it's hard to make everything move smooth. I'd suggest to make the movements slow at the beginning so you don't run into problems caused by slow servos. Otherwise it may look like your code isn't working properly even though you're going over the servo's limit :)
cant wait for the 1m special! hope it will be soon
Really like the end effector design. Pretty simple but works very well.
From a software point of view, when working with IK, it's always a good idea to write the forward side as well and check that the results match (within rounding errors).
What's shown here is calculated_angles = IK(demand_position).
What you would add is calculated_position = K(calculated_angles) where K is a new function to calculation position from angles.
Then you check that demand_position = calculated_position (allowing for rounding error).
The reason to do this is it will find mistakes in your IK code, if that equality doesn't hold then either IK or K is buggy. Also the K side is often the simpler of the two.
hello suicidal robot from the secret santa in the background. Glad he is still physically alive!
how do you not have more subscribers.... this is some real amazing stuff you are doing! keap up the good work
Jurassic Park robotic arm.
Remember?
Egg? Do you breed velociraptors?
11:00 does that same library have a function to interpolate in a sigmoidal shape instead of linearly? A smoothed (sigmoidal) curve would probably look better, be more energy-efficient and expose the objects it moves to less forces
Fantastic video with a perfect ratio of entertainment and education
I swear at any moment james could just OWN the r/arduinoprojects or r/3dprinting subreddits an absolute legend thanks for the introduction into inverse kinematics btw
WOW! No words can explain how impressed I am by this! GREAT Explanation!!!!!!!!!!!!!!!!!!
highschool student: trig are useless
i went from a pretty meh math student in middle/highschool to studying physics / tutoring
and to be fair,
if im not studying physics or tutoring at the moment
i couldnt care less about trigonometry (technically, i still do :^))
but when i do, its pretty essential to have
u gotta remember that the majority of people learning trig in school prob wont be using it unless their job is tech or science related
@@officer_baitlyn said so well 👑
@Officer_Baitlyn, you also forgot the vast majority of trades; trig is literally used daily for construction, without it, buildings would be wonky
To them, it is
The mechanical engineer who designed you car and electronic engineer your cellphone agree that you are the man. Satellites are useless too.
really good video, nicely explained. Well done
thank you very much this is very helpful as this is quite similar to a scara arm(here z-x and in scara x-y by 2 joints) which is my final year project.
Genius Video ! Thank you so much
So you’ve essentially built a pick and place machine. Really cool!
"What is my purpose?"
You pick up ping-pong balls and drop them somewhere else.
It's simple but still interesting to watch.
Thank you too much,for the basic,clear,interactive education..
Big fan of the break down video of the madness that happens in the background of all of your other videos!!
Many thanks for this video. It has answered a few more questions regarding robot arm movement. One thought, if I may, to make a more interesting display. Have the movement, down the rail, and raising the ball to its upmost position occur in the same time period.
I could see that robot moving balls all day long on my desk. It has some kinda funny action. Simple and clean.
This is fantastic, if I can understand your code Im going to have a go at implementing this in Meccano. Thank you for sharing your knowledge,
Thank you for this video, it was excellent. So far, I've only been taught the very basics of kinematics at Uni as it is not really my field. I don't know why, but it didn't occur to me that trigonometry was being used so extensively to control robots. All these applications for triangle calculations never cease to amaze me. I will have to try and build this myself immediately 😎👍
1:31
Could you tell us WHERE to source WHAT parts go into your V-wheel Rollers (that already have bearings inside) as well as the V-slot Extrusion TRACK that the Rollers roll along?
Thanx!
This is great stuff! I was hoping for the linear algebra of IK, which I didn't get, but I did get a very nice project doing one task well, with all the details and intermediate steps shown, which is really great. Might use this to show the kid how even a simple task robot has a lot of parts and steps.
James, this is so super useful for me! Thank you! How much more complicated do the maths get when adding a rotation to one of the joints as well?
Could you feed in the horizontal axis and have the arm start reaching before it comes to a stop? Another ramp smoothing between instructions.
Sounds like an optimization: IF there’s another ball waiting…
12:30 Why is this section so mesmerizing? in lockdown perhaps. I need a 30min video of the balls going round in a looped track
Something like, the wintergarten, marble machine ?
I like that servo, big bold 20 kg cm, which is 0.2 Newton meters. That means a 2 cm diameter primary spur gear would yield about 18.79 kg of force, however, keep in mind that it is at the servo's rated rpm, which is probably very slow to give such high torque.
12:04 it's beautiful. I have looked at this for 5 hours now...
I don't know why the arm is dropping the ball so high. The servo can take it lower, and the upper arm should be able to drop the ball softer and closer to the ground.
Thank You. My Math's sucks.. So this is a very good tutorial for me as I am trying to build a Similar system to yours. .. Thanks Again.
First of, thanks for the video! Code for the absolute coordinate is a bit weird. You computed the shoulderAngle2Degrees and shoulderAngle1Degrees but did not do angle arithmetic to calculate the final angle. Instead, you converted both to pwm secs and subtracted the two values in servo write which can be easily overlooked.
This is the exact sort of project I've been looking at learning about new 3d printer on order soon 🤘
This is the 10th time I’ve watched this trying to understand this.
Best. Channel. On. TH-cam.
Brilliant! Thanks! Defo more inverse kinematics. A follow on with an arm rotation axis would be great (or even bring in/demo with the slider, so all happens at same time rather than being 2 discrete sets of movement). Still not sure I totally followed (not the maths, good with trig, more the algorithm/process) but will grab the code and see if the comments help and maybe try it out on some servos with taped on pencils or something. There was also another good one you did on minidog for this
Im working through your code and am in the encoder area, can you tell me what sort of motor you are using is please Ive never used an encoded DC motor before. Ive sorted the servos
excellent .. kinematique was crazy very good job Master
What type of v slot extrusion do you use and plz send link for the motor and v wheels, thanks!
and plz send link for skrews and bolts and nuts too
This is why we have youtube
Brilliant description
Thanks for sharing
Awesome work... love you James
have you considered using the esp8266 or esp32 as cheaper boards which could be bought in bulk for class rooms, they take the same code youre writing
Liked and subscribed. Amazing video, I love how you broke down every facet of the biuld.
hey james have you seen the 3d printed linear actuator retsetman posted?, it lifts over 20kg! would be really cool to see a set tried out on project X
Hy James awesome video as always. But I have one question for you -> How much time required while making this project.
I am asking this because for me sometimes even a very small project takes one or two weeks to complete and then I start to wonder that I am not doing anything wrong.
I have been trying to create a robot dog however when I try to move the legs it doesn't move in a straight line. Is there something I am missing that would fix this?
The interesting thing is if you model on real life - what is the mix in a human/animal between the maths of moving a limb to the right place and the feedback/touch/visual etc that its in the right place?
What would you say - 50/50 or more like 60% feedback, 40% muscle position?
This is amazing information for free. Thanks dude.
After finally capturing reverse kinematics, the gods decided that his punishment would last for all eternity. He would have to move a ping pong ball from one place to another; upon dropping the ball, the ball would be placed back at the starting position again, leaving reverse kinematics to start over. James sees reverse kinematics as the absurd hero who lives life to the fullest, hates death, and is condemned to a meaningless task. One must imagine reverse kinematics happy.
I'm interested how we could incorporate animation curves, and if they help even more to smooth out the motion.
Yep - the Ramp library does all sorts of curve reponses too.
I finally managed to get ros2 installed and working. my brain hurts already. damn you and your inspiration James, damn you!
I happen, to know there are other personalities on this site, named James. Allow me, to introduce myself, I'm the other James. There's another one, he's in Canada somewhere.
You should add gate(s) with special cutout, the profile of the arm. So the arm must be in that exact position to pass through the gate.
Thank you so much sir been waiting for this . Really appreciate it
Great video. the math is a lot easier than I thought it would be.
I think this would make a great distribution point where the arm can deliver balls to different sections, just by stopping it's linear axis at different locations. i.e. the static ball accelerator or the coanda effect section
Good idea - it could be longer also
Loved the math for this one - would it be possible to add in the kinematics equations to use the arm to toss a ball into the air and then catch it by matching its trajectory with the arm (likely needing a much better feedback/encoding system)?
Hi :) I don't really understand the concept with the 45' offset. Sorry, I am new to servos, the milliseconds PWM basically tells the motor to turn for a certain amount of time and that equals the angle that we calculated? So I understand how the shoulder angle inside the first triangle is calculated, but I do not understand how that information is converted into usable information for the servo, because for the right triangle from the shown picture I assume that the servo is a 0 degrees and if you want to move the arm forward it has to turn for a certain amount of degrees, but that angle is not the same as the "shoulder angle" from the right triangle from the starting position, is it? So I think my question is how do you convert the calculated shoulder angle to the rotation of the servo trigonometrically?
Oddly enough I think this is my favorite robot ! it's really cool and seems somehow more accessible (still love the dogs !)...cheers.
It feel so easy with you ! Great job very good for education !
How it will move in straight line while interpolating servos with linear ramp while actual change in degrees cannot be linear when end effector moving in straight line?
you can use mathlab ,inverse keynematics tool box to generate joint simulations.
Sir you are absolute genius
Hi, do you have any suggestions for a manipulater that can pickup a small , 6mm dia by 18mm tall, item? Thanks
Another excellent, excellent video! Well explained and demonstrated AND most importantly, your teaching methods are very encouraging, and give the viewers (me!) the idea that I too can attain the same results with a reasonable amount of work. Well done, or as you Brits say, "Brilliant!" Now we just have to teach you guys that there is no such noun as 'Mathematic'. :))
bro get this man back on the algorithm
Really appreciate your work!
Can you add some more similar vids about the sensing responding mechanisms
BUT what about the SLIP model usde by agility robotics?
Very well explained!
Amazing simple explanation!!! Also quite easy build, probably could be done also with a 3D Printer Stepper for the belt and cheaper servos for the arm as the forces are not so big?
Brilliant, do you still have the code for the manual control with potentiometers ?? Thanks :D
7:26 - Couldn't you just calculate z2 by using z2 = sqrt( x² + z² ) instead of calculating "shoulderAngle2a" ?
I keep swapping kinematics and inverse kinematics around. Luckily my robot has both built in.
This is a nice and simple example and looks like a scara robot that is tilted 90 deg. on the X-axis.
Programming a robot in cartesian coordinates can be difficult due to "singularities". I've had a few errors where the robot controller (Kuka KR180) would report a singularity error and not move at all but I have also had some strange movements that resulted in an overload on one of the axes. At that time, the robot performs an abrupt E-stop which is not that funny when 50 kg of mass is being moved... I actually checked the massive bolts that are used to mount the robot on the floor to see if they were not damaged.
You could add a rotation axis to the base of the arm and make this bit a hub to randomly select different paths for the balls to take. All of which, eventually, end up back here at the hub. Either way, this is a great explanation and demonstration.
Cool, I'd love to see the same done with a typical ramps board and gcode as well