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 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!
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!
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)
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.
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! UA-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!
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!
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.
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.
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!
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.
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.
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.
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 :)
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
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.
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.
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
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.
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.
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 😎👍
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
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?
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
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 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.
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!
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.
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.
Awesome video, James! As always. I'm curious as to how long it took you to program this thing? Was there any problem solving or are you very comfortable with these kinds of projects now? :) Thank you!
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?
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'. :))
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.
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 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.
@James_Bruton i love where everything is going.... i was wondering since you have incorporated NERF blaster in past projects could you consider a nerf magazine auto loader... i think this would be a very commercially viable project i have thought of different forms this could take .... 1.rolling robot that picks up nerf darts and loads magazines !! THAT WOULD BE SOMETHING AMAZING !!! 2 a bin you could just throw some darts into that would load magazines 3 a target with a collection box that loads magazines , so you can do target practice and have loaded magazines in the end .. i think #2 +#3 would be the most practical and are about the same thing thanks in advance if you consider this project and keep up the good work
This is really cool. And I am looking forward to seeing the great ball contraption completed. As I watch this, I wonder if it would be easy to change the gripper to be 90 degrees to what it is now, and shaped like a ducks bill, and feed the balls at 90 degrees to what it is doing here to help with it picking the balls up while looking like a duck. :)
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
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?
perhaps it would be better for visualisation for the arm to release the ball at some arbitrary location along the Z=axis to prove that the arm isn't just being programmed to drop it in a fixed location (if they didn't bother to watch this video first)
But what when you want the robot to pick up an object on its own. Like it has a sensor and the robot senses the ball. I just find it really confusing how you would get the position of the sensed object
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
This robot is missing an important feature: googly eyes.
@Cooper Cole shut it bot
@Flynn Skyler shut it bot
I agree
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!
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!
Just need a 2nd one and they can go forever playing “your ball! No! Your ball!”
I'm your 69 th like lol
"What is my purpose?"
...
"Oh my god..."
"You drop balls."
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)
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.
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! UA-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!
12:09 What the robot hears:
"Standard insertion for a nonstandard specimen. Go ahead, Gordon. Slot the carrier into the analysis port."
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
This is one of the simplest practical demonstrations of inverse kinematics i have ever seen. Hats of to you James!
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.
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.
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!
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.
hello suicidal robot from the secret santa in the background. Glad he is still physically alive!
wow, i am just learning the math behind the movements in my robotic career
Jurassic Park robotic arm.
Remember?
Egg? Do you breed velociraptors?
cant wait for the 1m special! hope it will be soon
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.
WOW! No words can explain how impressed I am by this! GREAT Explanation!!!!!!!!!!!!!!!!!!
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.
Really like the end effector design. Pretty simple but works very well.
how do you not have more subscribers.... this is some real amazing stuff you are doing! keap up the good work
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 :)
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.
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
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
really good video, nicely explained. Well done
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
Thank you too much,for the basic,clear,interactive education..
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.
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.
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 😎👍
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,
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
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?
Big fan of the break down video of the madness that happens in the background of all of your other videos!!
I could see that robot moving balls all day long on my desk. It has some kinda funny action. Simple and clean.
Liked and subscribed. Amazing video, I love how you broke down every facet of the biuld.
This is the 10th time I’ve watched this trying to understand this.
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?
So you’ve essentially built a pick and place machine. Really cool!
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 ?
12:04 it's beautiful. I have looked at this for 5 hours now...
Awesome work... love you James
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
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 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.
Thank you so much sir been waiting for this . Really appreciate it
excellent .. kinematique was crazy very good job Master
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.
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!
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.
It feel so easy with you ! Great job very good for education !
This is the exact sort of project I've been looking at learning about new 3d printer on order soon 🤘
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.
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
Can you add some more similar vids about the sensing responding mechanisms
Best. Channel. On. UA-cam.
Thank you for explaining it👍🏻
Awesome video, James! As always.
I'm curious as to how long it took you to program this thing? Was there any problem solving or are you very comfortable with these kinds of projects now? :)
Thank you!
Really appreciate your work!
This is amazing information for free. Thanks dude.
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?
you can use mathlab ,inverse keynematics tool box to generate joint simulations.
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
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'. :))
Very well explained!
"What is my purpose?"
You pick up ping-pong balls and drop them somewhere else.
It's simple but still interesting to watch.
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.
where you get the wires bent?
bro get this man back on the algorithm
This is why we have youtube
Brilliant description
Thanks for sharing
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.
Brilliant, do you still have the code for the manual control with potentiometers ?? Thanks :D
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.
@James_Bruton i love where everything is going....
i was wondering since you have incorporated NERF blaster in past projects
could you consider a nerf magazine auto loader... i think this would be a very commercially viable project
i have thought of different forms this could take ....
1.rolling robot that picks up nerf darts and loads magazines !! THAT WOULD BE SOMETHING AMAZING !!!
2 a bin you could just throw some darts into that would load magazines
3 a target with a collection box that loads magazines , so you can do target practice and have loaded magazines in the end ..
i think #2 +#3 would be the most practical and are about the same thing
thanks in advance if you consider this project and keep up the good work
This is really cool. And I am looking forward to seeing the great ball contraption completed. As I watch this, I wonder if it would be easy to change the gripper to be 90 degrees to what it is now, and shaped like a ducks bill, and feed the balls at 90 degrees to what it is doing here to help with it picking the balls up while looking like a duck. :)
Oddly enough I think this is my favorite robot ! it's really cool and seems somehow more accessible (still love the dogs !)...cheers.
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…
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.
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 for teaching me.
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
This is actually more interesting, then watching a video of a industrial robot, bounce a bowling ball.
Cool, I'd love to see the same done with a typical ramps board and gcode as well
Sir you are absolute genius
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?
perhaps it would be better for visualisation for the arm to release the ball at some arbitrary location along the Z=axis to prove that the arm isn't just being programmed to drop it in a fixed location (if they didn't bother to watch this video first)
But what when you want the robot to pick up an object on its own. Like it has a sensor and the robot senses the ball. I just find it really confusing how you would get the position of the sensed object