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!
@kevinwoodrobotics Жыл бұрын
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
@DaisyAjay3 жыл бұрын
This robot is missing an important feature: googly eyes.
@thebanananacam3 жыл бұрын
@Cooper Cole shut it bot
@thebanananacam3 жыл бұрын
@Flynn Skyler shut it bot
@thebanananacam3 жыл бұрын
I agree
@bournemaking17683 жыл бұрын
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!
@Benlucky133 жыл бұрын
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
@jamesbruton3 жыл бұрын
thanks, trying to keep them relevant if poss.
@WistrelChianti3 жыл бұрын
@@jamesbruton I tend to actually watch them, was interesting to see they make parts not just circuit boards. Didn't know that.
@jonathancohen25063 жыл бұрын
Your skill with all facets of robotics is truly impressive- concept, 3D design and printing, assembly, math and coding, testing and refinement. So impressed!
@Diamonddrake3 жыл бұрын
Just need a 2nd one and they can go forever playing “your ball! No! Your ball!”
@monkemoonman68052 жыл бұрын
I'm your 69 th like lol
@0dWHOHWb03 жыл бұрын
"What is my purpose?" ... "Oh my god..."
@GeneralChangFromDanang3 жыл бұрын
"You drop balls."
@timothysands5537 Жыл бұрын
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)
@OpsFox2453 жыл бұрын
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.
@maxfranciscorbett21838 ай бұрын
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.
@JonathanDavidsonn3 жыл бұрын
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.
@IBIS_main10112 жыл бұрын
すごい!シンプルな設計だがプログラムに無駄がなく制御がしっかりしていて尊敬します。
@lloydrmc2 жыл бұрын
Brilliant! KZbin 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!
@GunGryphon3 жыл бұрын
12:09 What the robot hears: "Standard insertion for a nonstandard specimen. Go ahead, Gordon. Slot the carrier into the analysis port."
@MarinusMakesStuff3 жыл бұрын
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!
@kingarthurthe5th3 жыл бұрын
“The great ball contraption” “The high voltage ball accelerator” Great naming scheme Monsieur Bruton
@grudge5793 жыл бұрын
This is one of the simplest practical demonstrations of inverse kinematics i have ever seen. Hats of to you James!
@StenOuborg3 жыл бұрын
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!
@leftaroundabout3 жыл бұрын
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.
@leftaroundabout3 жыл бұрын
...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.
@josiahmitchell5303 жыл бұрын
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.
@davestinyworkshopotherprojects3 жыл бұрын
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!
@NoirPhoenix3 жыл бұрын
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
@Schwuuuuup3 жыл бұрын
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.
@tlange50913 жыл бұрын
hello suicidal robot from the secret santa in the background. Glad he is still physically alive!
@xabier16983 жыл бұрын
wow, i am just learning the math behind the movements in my robotic career
@RandomPerson494-12c3 жыл бұрын
Jurassic Park robotic arm. Remember? Egg? Do you breed velociraptors?
@joran46123 жыл бұрын
cant wait for the 1m special! hope it will be soon
@DIYRobotGirl Жыл бұрын
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.
@raagamparmar1793 жыл бұрын
WOW! No words can explain how impressed I am by this! GREAT Explanation!!!!!!!!!!!!!!!!!!
@GordonWrigley3 жыл бұрын
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.
@navid98523 жыл бұрын
Really like the end effector design. Pretty simple but works very well.
@staleif3 жыл бұрын
how do you not have more subscribers.... this is some real amazing stuff you are doing! keap up the good work
@AnimilesYT2 жыл бұрын
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 :)
@oldcowbb3 жыл бұрын
highschool student: trig are useless
@officer_baitlyn3 жыл бұрын
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
@ryanengle9725 Жыл бұрын
@@officer_baitlyn said so well 👑
@Jim-sz7wz Жыл бұрын
@Officer_Baitlyn, you also forgot the vast majority of trades; trig is literally used daily for construction, without it, buildings would be wonky
@travisjohnson8540 Жыл бұрын
To them, it is
@williamtarabalka492010 ай бұрын
The mechanical engineer who designed you car and electronic engineer your cellphone agree that you are the man. Satellites are useless too.
@Koushakur3 жыл бұрын
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.3 жыл бұрын
Although didn't they need to be sorta thrown into that? So perhaps the static accelerator would be better
@Bigwings20433 жыл бұрын
@@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.3 жыл бұрын
@@Bigwings2043 idk I think it would be difficult to have it throw a ball, but perhaps that's the solution.
@Bigwings20433 жыл бұрын
@@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.
@xxportalxx.3 жыл бұрын
@@Bigwings2043 the ball accelerator is purely electrostatic, the only mechanical part is a belt being turned against a brush lmfao
@ayanvaidya27273 жыл бұрын
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.
@Zhaymoor3 жыл бұрын
Genius Video ! Thank you so much
@David-kq4co3 жыл бұрын
really good video, nicely explained. Well done
@adil.90642 жыл бұрын
Fantastic video with a perfect ratio of entertainment and education
@dumbtex61073 жыл бұрын
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
@دابراهيمالضيفي5 ай бұрын
Thank you too much,for the basic,clear,interactive education..
@newburypi3 жыл бұрын
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.
@rpavlik13 жыл бұрын
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.
@campbellmorrison8540 Жыл бұрын
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,
@johnwick71753 жыл бұрын
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 😎👍
@campbellmorrison8540 Жыл бұрын
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
@Geeksmithing3 жыл бұрын
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?
@D-Khaz3 жыл бұрын
Big fan of the break down video of the madness that happens in the background of all of your other videos!!
@ikocheratcr3 жыл бұрын
I could see that robot moving balls all day long on my desk. It has some kinda funny action. Simple and clean.
@nickmegert46623 жыл бұрын
Liked and subscribed. Amazing video, I love how you broke down every facet of the biuld.
@stingraymaster8773 жыл бұрын
This is the 10th time I’ve watched this trying to understand this.
@redtec77512 жыл бұрын
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?
@HERETIC5293 жыл бұрын
So you’ve essentially built a pick and place machine. Really cool!
@reg25903 жыл бұрын
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
@jameshamaker93213 жыл бұрын
Something like, the wintergarten, marble machine ?
@manuelmbscorreia3 жыл бұрын
12:04 it's beautiful. I have looked at this for 5 hours now...
@SaintAngerFTW2 жыл бұрын
Awesome work... love you James
@WistrelChianti3 жыл бұрын
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
@maartendj27243 жыл бұрын
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
@UFO_researcher3 жыл бұрын
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.
@jubaerhasan47233 жыл бұрын
Thank you so much sir been waiting for this . Really appreciate it
@azizrizki16642 жыл бұрын
excellent .. kinematique was crazy very good job Master
@plymouthrovadventures.646 Жыл бұрын
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.
@johnberry60773 жыл бұрын
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!
@Palamdrone3 жыл бұрын
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.
@MrCraftNmine3 жыл бұрын
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.
@toysnic97693 жыл бұрын
It feel so easy with you ! Great job very good for education !
@rooley1233 жыл бұрын
This is the exact sort of project I've been looking at learning about new 3d printer on order soon 🤘
@lukakvlogs14783 жыл бұрын
What type of v slot extrusion do you use and plz send link for the motor and v wheels, thanks!
@lukakvlogs14783 жыл бұрын
and plz send link for skrews and bolts and nuts too
@دابراهيمالضيفي5 ай бұрын
Can you add some more similar vids about the sensing responding mechanisms
@christianparker93153 жыл бұрын
Best. Channel. On. KZbin.
@mandar35673 жыл бұрын
Thank you for explaining it👍🏻
@smashino3 жыл бұрын
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!
@johnclarke79603 жыл бұрын
Really appreciate your work!
@bbogdanmircea3 жыл бұрын
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?
@vocaldeviation2 жыл бұрын
This is amazing information for free. Thanks dude.
@JAYTHEGREAT3558 ай бұрын
you can use mathlab ,inverse keynematics tool box to generate joint simulations.
@andrewbarnard32293 жыл бұрын
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
@rdyer87643 жыл бұрын
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'. :))
@Vaxtin2 жыл бұрын
"What is my purpose?" You pick up ping-pong balls and drop them somewhere else. It's simple but still interesting to watch.
@MacEvoyING3 жыл бұрын
Very well explained!
@hetthummar95823 жыл бұрын
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.
@pirasmatteod3 жыл бұрын
where you get the wires bent?
@mychkyl3 жыл бұрын
bro get this man back on the algorithm
@AaronAlso3 жыл бұрын
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.
@robertmiosga55472 жыл бұрын
Brilliant, do you still have the code for the manual control with potentiometers ?? Thanks :D
@KiteTurbine3 жыл бұрын
This is why we have youtube Brilliant description Thanks for sharing
@bradhoward97013 жыл бұрын
I finally managed to get ros2 installed and working. my brain hurts already. damn you and your inspiration James, damn you!
@jameshamaker93213 жыл бұрын
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.
@crazyphrog62893 жыл бұрын
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. :)
@FSK11383 жыл бұрын
@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
@andymouse3 жыл бұрын
Oddly enough I think this is my favorite robot ! it's really cool and seems somehow more accessible (still love the dogs !)...cheers.
@PPYTAO3 жыл бұрын
Could you feed in the horizontal axis and have the arm start reaching before it comes to a stop? Another ramp smoothing between instructions.
@mr_tom_1_03 жыл бұрын
Sounds like an optimization: IF there’s another ball waiting…
@NickCombs3 жыл бұрын
I'm interested how we could incorporate animation curves, and if they help even more to smooth out the motion.
@jamesbruton3 жыл бұрын
Yep - the Ramp library does all sorts of curve reponses too.
@sharedinventions3 жыл бұрын
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.
@almosthuman4457 Жыл бұрын
thank you so much for teaching me.
@WilliamPriola3 жыл бұрын
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
@jamesbruton3 жыл бұрын
Good idea - it could be longer also
@jameshamaker93213 жыл бұрын
This is actually more interesting, then watching a video of a industrial robot, bounce a bowling ball.
@notsonominal3 жыл бұрын
Cool, I'd love to see the same done with a typical ramps board and gcode as well
@cepi242 жыл бұрын
Sir you are absolute genius
@zinthezweihander20533 жыл бұрын
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)
@RubyRed-bu6sm2 жыл бұрын
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?
@risingmermo3 жыл бұрын
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